УРОВЕНЬ ТЕХНИКИ
В качестве одной из форм организации сети повышенной популярности в основном можно назвать системы дистанционной презентации, которые могут использовать такие протоколы, как протокол удаленного рабочего стола (RDP) и архитектура независимых вычислений (ICA), для совместного использования рабочего стола и других прикладных программ, исполняемых на сервере, с удаленным клиентом. Такие вычислительные системы обычно передают нажатия клавиатуры и щелчки кнопкой мыши или выборы от клиента в сервер, ретранслируя обновления экрана обратно в другом направлении по сетевому соединению (например, Интернет). По существу, пользователь имеет ощущение, как будто его или ее машина действует полностью локально, когда в действительности в клиентское устройство только посылаются снимки экрана рабочего стола или прикладных программ, по мере того как они появляются на стороне сервера.
В операционной среде удаленного рабочего стола данные, представляющие графику, которые должны передаваться клиенту, обычно сжимаются сервером, передаются из сервера клиенту через сеть и разуплотняются клиентом и отображаются на локальном дисплее пользователя. Процесс кодирования данных обычно требует значительных вычислительных циклов процессора для сжатия и разуплотнения данных. Такие требования обработки могут иметь прямое влияние на задержку кодирования и декодирования из сервера клиенту и отрицательно воздействовать на ощущения удаленного пользователя.
СУЩНОСТЬ ИЗОБРЕТЕНИЯ
Одна из проблем систем дистанционной презентации состоит в том, что такие системы стремятся способствовать сжатию данных за счет производительности процессора. Многие системы предполагают, что полоса пропускания с большой вероятностью ограничена, и, таким образом, жертвуют быстродействием процессора для достижения более высоких уровней сжатия данных и, тем самым, для уменьшения количества данных, которые необходимо передавать по линии связи с ограниченной полосой пропускания. Однако в настоящее время многие клиенты дистанционной презентации представляют собой устройства более низкого уровня, которые могут использовать менее быстродействующие процессоры, но которые могут иметь доступ к широкой полосе пропускания. В таких случаях суммарная производительность и ощущение пользователя могут быть улучшены посредством использования более простого устройства сжатия и методов сжатия, требующих меньше вычислений, даже если это означает, что сжатие уменьшено.
В различных вариантах осуществления раскрываются способы и системы для быстрого энтропийного кодера/декодера для использования при сжатии изображений в реальном масштабе времени. Например, способ обработки графических данных для передачи в удаленное вычислительное устройство может содержать прием графических данных, представляющих экран клиента, который необходимо визуализировать, прием информации, показывающей доступную полосу пропускания для передачи, и, основываясь на этой информации, определение того, удовлетворяет ли доступная полоса пропускания заранее заданному порогу, и энтропийное кодирование графических данных с использованием потока кодирования с фиксированным размером в битах, при этом серии нулей кодируются в варьируемом количестве блоков с фиксированным размером в битах, и буквенные значения кодируются с использованием информационной записи в кэш-памяти недавно использованных буквенных значений, или в варьируемом количестве блоков с фиксированным размером в битах.
КРАТКОЕ ОПИСАНИЕ ЧЕРТЕЖЕЙ
Системы, способы и считываемые компьютером носители для графических данных для передачи в удаленное вычислительное устройство согласно настоящему описанию далее описаны со ссылками на сопровождающие чертежи.
Системы, способы и считываемые компьютером носители для изменения перспективного вида в виртуальной операционной среде согласно настоящему описанию в дальнейшем поясняются описанием конкретных вариантов его осуществления со ссылками на сопровождающие чертежи, на которых:
фиг.1 и 2 изображают иллюстративную компьютерную систему, в которой могут быть реализованы аспекты настоящего раскрытия,
фиг.3 изображает операционную среду для аспектов практической реализации настоящего раскрытия,
фиг.4 изображает операционную среду для аспектов практической реализации настоящего раскрытия,
фиг.5 иллюстрирует компьютерную систему, включающую в себя схемы для реализации услуг удаленного рабочего стола,
фиг.6 иллюстрирует компьютерную систему, включающую в себя схемы для реализации дистанционных услуг,
фиг.7 иллюстрирует пример процесса декодирования,
фиг.8 иллюстрирует пример процесса кодирования,
фиг.9 иллюстрирует пример последовательности операций для обработки графических данных для передачи в клиентский компьютер,
фиг.10 иллюстрирует пример последовательности операций для обработки графических данных для передачи в клиентский компьютер,
фиг.11 изображает иллюстративную систему для обработки графических данных для передачи в клиентский компьютер.
ПОДРОБНОЕ ОПИСАНИЕ ПРЕДПОЧТИТЕЛЬНЫХ ВАРИАНТОВ ОСУЩЕСТВЛЕНИЯ
Вычислительные операционные среды в общем виде
Некоторые специфические детали излагаются в последующем описании и фигурах, чтобы обеспечить полное понимание различных вариантов осуществления раскрытия. Некоторые хорошо известные детали, часто ассоциированные с вычислительной технологией и программным обеспечением, не излагаются в последующем описании, чтобы избежать ненужного затенения различных вариантов осуществления раскрытия. Кроме того, специалистам должно быть понятно, что они могут осуществлять на практике другие варианты осуществления раскрытия без одной или нескольких деталей, описанных ниже. Наконец, хотя различные способы описаны со ссылкой на этапы и последовательности в следующем раскрытии, описание как таковое предназначено для обеспечения четкого выполнения вариантов осуществления раскрытия, и этапы и последовательности этапов могут не выполняться так, как требуется для практического осуществления настоящего раскрытия.
Должно быть понятно, что различные описанные здесь методики могут осуществляться в связи с аппаратными средствами или программным обеспечением, или, при необходимости, с комбинацией их обоих. Таким образом, способы и устройства по настоящему раскрытию или некоторым его аспектам или частям могут принимать форму программного кода (то есть, инструкции), воплощенного в материальных носителях данных, таких как гибкие диски, компакт-диски CD-ROM, накопители на жестких дисках или любые другие считываемые компьютером носители; причем, когда программный код загружается в машину или исполняется машиной, такой как компьютер, машина становится устройством для практического осуществления настоящего раскрытия. В случае исполнения программного кода на программируемых компьютерах, вычислительное устройство обычно включает в себя процессор, носитель, считываемый процессором (включая энергозависимые и энергонезависимые запоминающие устройства и/или элементы хранения), по меньшей мере одно устройства ввода и по меньшей мере одно устройства вывода. Одна или несколько программ могут выполнять или использовать процессы, описанные в связи с настоящим раскрытием, например, через использование интерфейса прикладного программирования (API), многоразовые средства управления или подобное. Такие программы предпочтительно осуществляются на процедурном языке высокого уровня или языке объектно-ориентированного программирования для связи с компьютерной системой. Однако, при желании, программы могут быть реализованы на ассемблере или машинном языке. В любом случае, язык может быть транслируемым языком или интерпретируемым языком и может быть объединен с реализацией в аппаратных средствах.
Система удаленного рабочего стола представляет собой компьютерную систему, которая поддерживает приложения, которые могут исполняться дистанционно клиентскими компьютерными системами. Входные данные вводятся на клиентской компьютерной системе и переносятся по сети (например, с использованием протоколов, основанных на семействе протоколов международного союза связи (ITU) T.120, таких как протокол удаленного рабочего стола (RDP)) в приложение на терминальном сервере. Приложение обрабатывает входные данные, как если бы входные данные вводились на терминальном сервере. Приложение генерирует выходные данные в ответ на принятые входные данные, и выходные данные переносятся по сети в клиентскую компьютерную систему.
Варианты осуществления могут выполняться на одном или нескольких компьютерах. Фиг.1 и 2 и последующее описание предназначены, чтобы обеспечить краткое общее описание подходящей вычислительной операционной среды, в которой раскрытие может быть реализовано. Специалистам должно быть понятно, что компьютерные системы 200, 300 могут иметь все или некоторые из компонентов, описанных в отношении компьютера 100 по фиг.1 и 2.
Термин «схемы», используемый по всему описанию, может включать в себя компоненты аппаратных средств, такие как аппаратные контроллеры прерываний, накопители на жестких дисках, сетевые адаптеры, графические процессоры, аппаратные средства, основанные на видео/аудио кодеках, и встроенные программы (firmware)/программное обеспечение, используемое для функционирования с такими аппаратными средствами. Термин «схемы» также может включать в себя микропроцессоры, сконфигурированные для выполнения функций посредством встроенного программного обеспечения или посредством переключателей, установленных некоторым способом, или одним или несколькими логическими процессорами, например, одним или несколькими ядрами многоядерного центрального процессора. Логические процессоры в данном примере могут быть сконфигурированы посредством инструкций программного обеспечения, воплощающих логику, функционирующую для выполнения функций, которые загружаются из памяти, например, оперативного запоминающего устройства (RAM, ОЗУ), постоянного запоминающего устройства (ROM, ПЗУ), встроенного программного обеспечения и/или виртуальной памяти. В иллюстративных вариантах осуществления, где схемы включают в себя комбинацию аппаратных средств и программного обеспечения, разработчик может записывать исходный код, воплощающий логику, которая по существу транслируется в считываемый машиной код, который может быть выполнен логическим процессором. Поскольку специалист может понять, что состояние уровня техники развилось до той точки, где существует небольшая разница между аппаратными средствами, программным обеспечением или комбинацией аппаратных средств/программного обеспечения, выбор аппаратных средств против программного обеспечения для выполнения функций является просто конструктивным выбором. Таким образом, поскольку специалист может понять, что процесс программного обеспечения может быть преобразован в эквивалентную структуру аппаратных средств и структура аппаратных средств сама по себе может быть преобразована в эквивалентный процесс программного обеспечения, выбор осуществления в аппаратных средствах против осуществления в программном обеспечении является тривиальным и остается за разработчиком.
Фиг.1 изображает иллюстративную компьютерную систему, которая конфигурируется для реализации аспектов настоящего раскрытия. Компьютерная система может включать в себя компьютер 20 или подобное устройство, включающее в себя процессор 21, системную память 22 и системную шину 23, которая соединяет различные компоненты системы, включая соединение системной памяти с процессором 21. Системная шина 23 может быть любого из нескольких типов структур шин, включая шину памяти или контроллер памяти, периферийную шину и локальную шину, использующую любую из множества архитектур шин. Системная память включает в себя постоянное запоминающее устройство (ROM, ПЗУ) 24 и оперативное запоминающее устройство (RAM, ОЗУ) 25. Базовая система ввода/вывода (BIOS) 26, содержащая базовые подпрограммы, которые помогают переносить информацию между элементами внутри компьютера 20, как, например, во время пуска, сохраняется в ПЗУ 24. Компьютер может дополнительно включать в себя накопитель 27 на жестких дисках для считывания с жесткого диска или для записи на него (не показан), дисковод 28 магнитного диска для считывания со съемного магнитного диска 29 или для записи на него и дисковод 30 оптического диска для считывания со съемного оптического диска 31 или для записи на него, такой как CD ROM или другой оптический носитель. В некоторых иллюстративных вариантах осуществления исполняемые компьютером инструкции, осуществляющие аспекты настоящего раскрытия, могут сохраняться в ПЗУ 24, на жестком диске (не показан), в ОЗУ 25, на сменном магнитном диске 29, оптическом диске 31 и/или в кэш-памяти процессора 21. Накопитель 27 на жестких дисках, дисковод 28 магнитного диска и дисковод 30 оптического диска подсоединяются к системной шине 23 посредством интерфейса 32 накопителя на жестких дисках, интерфейса 33 дисковода магнитного диска и интерфейса 34 дисковода оптического диска, соответственно. Дисководы и накопители и ассоциированные с ними считываемые компьютером носители обеспечивают энергонезависимое хранение считываемых компьютером инструкций, структур данных, программных модулей и других данных для компьютера 20. Хотя операционная среда, описанная здесь, использует жесткий диск, сменный магнитный диск 29 и сменный оптический диск 31, специалистам должно быть понятно, что в такой операционной среде также могут быть использованы другие типы считываемых компьютером носителей, которые могут хранить данные, которые доступны для компьютера, такие как магнитные кассеты, платы флэш-памяти, цифровые видеодиски, картриджи со съемным магнитным диском Бернулли, ОЗУ устройства, ПЗУ устройства и подобные.
Несколько программных модулей может храниться на жестком диске, магнитном диске 29, оптическом диске 31, ПЗУ 24 или ОЗУ 25, включая операционную систему 35, одну или несколько прикладных программ 36, другие программные модули 37 и данные 38 программ. Пользователь может вводить команды и информацию в компьютер 20 через устройства ввода, такие как клавиатура 40 и координатно-указательное устройство 42. Другие устройства ввода (не показаны) могут включать в себя микрофон, джойстик, игровой пульт, спутниковую антенну, сканер и т.п. Эти и другие устройства ввода часто подсоединяются к процессору 21 через интерфейс 46 последовательного порта, который связан с системной шиной, но могут быть подсоединены другими интерфейсами, такими как параллельный порт, игровой порт или универсальная последовательная шина (USB). Дисплей 47 и другие типы устройств отображения также могут быть подсоединены к системной шине 23 через некоторый интерфейс, такой как видеоадаптер 48. В дополнение к дисплею 47, компьютеры обычно включают в себя периферийные устройства вывода (не показаны), такие как громкоговорители и принтеры. Система по фиг.1 также включает в себя хост-адаптер 55, шину 56 интерфейса малых компьютерных систем (SCSI) и внешнее запоминающее устройство 62, подсоединенное к SCSI шине 56.
Компьютер 20 может функционировать в сетевой среде с использованием логических соединений с одним или несколькими удаленными компьютерами, такими как удаленный компьютер 49. Удаленный компьютер 49 может представлять собой другой компьютер, сервер, маршрутизатор, сетевой ПК, одноранговое устройство или другой сетевой узел, виртуальную машину и обычно включает в себя многие или все из элементов, описанных выше относительно компьютера 20, хотя на фиг.1 иллюстрируется только запоминающее устройство 50. Логические соединения, показанные на фиг.1, могут включать в себя локальную сеть (LAN) 51 и глобальную сеть (WAN) 52. Такие сетевые среды обычно имеют место в офисах, компьютерных сетях масштаба предприятия, интрасетях и сети Интернет.
При использовании в сетевой среде LAN компьютер 20 может быть подсоединен к сети LAN 51 через сетевой интерфейс или адаптер 53. При использовании в сетевой среде WAN, компьютер 20 обычно включает в себя модем 54 или другое средство для установления связи по глобальной сети 52, такой как Интернет. Модем 54, который может быть внутренним или внешним, может быть подсоединен к системной шине 23 через интерфейс 46 последовательного порта. В сетевой среде программные модули, показанные относительно компьютера 20 или его частей, могут сохраняться в удаленном запоминающем устройстве. Должно быть понятно, что сетевые соединения являются примерами и что можно использовать другие средства для установления линии связи между компьютерами. Более того, хотя предполагается, что многочисленные варианты осуществления настоящего раскрытия особенно хорошо подходят для компьютерных систем, ничего в этом документе не предназначено, чтобы ограничить раскрытие этими вариантами осуществления.
Обратимся теперь к фиг.2, на которой изображен другой вариант осуществления иллюстративной компьютерной системы 100. Компьютерная система 100 может включать в себя логический процессор 102, например, исполнительное ядро. Хотя иллюстрируется один логический процессор 102, в других вариантах осуществления компьютерная система 100 может иметь многочисленные логические процессоры, например, многочисленные исполнительные ядра на одной подложке процессора и/или многочисленные подложки процессора, каждая из которых может иметь многочисленные исполнительные ядра. Как показано на данной фигуре, различные считываемые компьютером носители 110 могут быть соединены между собой одной или несколькими системными шинами, которые подсоединяют различные компоненты системы к логическому процессору 102. Системные шины могут быть любого типа из нескольких типов структур шин, включая шину памяти или контроллер памяти, периферийную шину и локальную шину, использующую любую из разнообразного множества архитектур шин. В иллюстративных вариантах осуществления считываемые компьютером носители 110 могут включать в себя, например, оперативное запоминающее устройство (ОЗУ) 104, запоминающее устройство 106, например, электромеханический накопитель, твердотельный накопитель, например, встроенное программное обеспечение 108, например, перепрограммируемое ПЗУ или ОЗУ, и сменные запоминающие устройства 118, как, например, CD-ROM диски, дискеты, диски DVD, флэш-накопители, внешние запоминающие устройства и т.д. Специалистам должно быть понятно, что могут быть использованы другие типы считываемых компьютером носителей, такие как магнитные кассеты, платы флэш-памяти, цифровые видеодиски, картриджи со съемным магнитным диском Бернулли.
Считываемые компьютером носители обеспечивают энергонезависимое хранение исполняемых процессором инструкций 122, структур данных, программных модулей и других данных для компьютера 100. Базовая система ввода/вывода (BIOS) 120, содержащая базовые подпрограммы, которые помогают переносить информацию между элементами внутри компьютерной системы 100, как, например, во время пуска, могут сохраняться во встроенном программном обеспечении 108. Несколько программ могут храниться во встроенном программном обеспечении 108, в запоминающем устройстве 106, в ОЗУ 104 и/или в сменных запоминающих устройствах 118 и могут исполняться логическим процессором 102, включая операционную систему и/или прикладные программы.
Команды и информация могут приниматься компьютером 100 через устройства 116 ввода, которые могут включать в себя клавиатуру и координатно-указательное устройство, но не ограничиваются ими. Другие устройства ввода могут включать в себя микрофон, джойстик, игровой пульт, сканер и т.п. Эти и другие устройства ввода часто подсоединяются к логическому процессору 102 через интерфейс с последовательным портом, который связан с системной шиной, но могут быть подсоединены другими интерфейсами, такими как параллельный порт, игровой порт или универсальная последовательная шина (USB). Дисплей или другие типы устройств отображения также могут быть подсоединены к системной шине через некоторый интерфейс, такой как видеоадаптер, который может быть подсоединен к графическому процессору 112 или быть его частью. В дополнение к дисплею, компьютеры обычно включают в себя периферийные устройства вывода (не показаны), такие как громкоговорители и принтеры. Иллюстративная система также включает в себя хост-адаптер, шину интерфейса малых компьютерных систем (SCSI) и внешнее запоминающее устройство, подсоединенное к SCSI шине.
Компьютерная система 100 может функционировать в сетевой среде с использованием логических соединений с одним или несколькими удаленными компьютерами, такими как удаленный компьютер. Удаленный компьютер может представлять собой другой компьютер, сервер, маршрутизатор, сетевой ПК, одноранговое устройство или другой сетевой узел и обычно включает в себя многие или все из элементов, описанных выше относительно компьютерной системы 100.
При использовании в сетевой среде LAN или WAN компьютерная система 100 может быть подсоединена к LAN или WAN сети через сетевую интерфейсную плату (NIC) 114. Плата NIC 114, которая может быть внутренней или внешней, может быть подсоединена к системной шине. В сетевой среде программные модули, показанные относительно компьютерной системы 100 или ее частей, могут сохраняться в удаленном запоминающем устройстве. Должно быть понятно, что описанные здесь сетевые соединения являются примерами и что можно использовать другие средства для установления линии связи между компьютерами. Более того, хотя предполагается, что многочисленные варианты осуществления настоящего раскрытия особенно хорошо подходят для компьютерных систем, ничего в этом документе не предназначено, чтобы ограничить раскрытие этими вариантами осуществления.
Система удаленного рабочего стола представляет собой компьютерную систему, которая поддерживает приложения, которые могут исполняться дистанционно клиентскими компьютерными системами. Входные данные вводятся на клиентской компьютерной системе и переносятся по сети (например, с использованием протоколов, основанных на семействе протоколов международного союза связи (ITU) T.120, таких как протокол удаленного рабочего стола (RDP)) в приложение на терминальном сервере. Приложение обрабатывает входные данные, как если бы входные данные вводились на терминальном сервере. Приложение генерирует выходные данные в ответ на принятые входные данные, и выходные данные переносятся по сети в клиентскую компьютерную систему. Клиентская компьютерная система выдает выходные данные. Таким образом, на клиентской компьютерной системе принимаются входные данные и выдаются выходные данные, тогда как обработка фактически происходит на терминальном сервере. Сеанс может включать в себя программную оболочку и пользовательский интерфейс, такой как рабочий стол, подсистемы, которые отслеживают перемещение курсора мыши на рабочем столе, подсистемы, которые преобразуют щелчок кнопкой мыши на пиктограмме в команды, которые приводят в исполнение определенный этап программы, и т.п. В другом иллюстративном варианте осуществления сеанс может включать в себя некоторое приложение. В этом примере, хотя приложение визуализируется, среда, реализующая концепцию рабочего стола, может по-прежнему генерироваться и оставаться скрытой от пользователя. Должно быть понятно, что предшествующее описание являются иллюстративным и что раскрываемое изобретение может быть реализовано в различных операционных средах клиента/сервера и не ограничивается конкретным продуктом терминальных служб.
В большинстве, если не во всех удаленных средах, реализующих концепцию рабочего стола, входные данные (вводимые на клиентской компьютерной системе) обычно включают в себя данные мыши или клавиатуры, представляющие команды в некоторое приложение, и выходные данные (сгенерированные приложением на терминальном сервере) обычно включают в себя видеоданные для отображения на устройстве вывода видеоданных. Многие удаленные среды, реализующие концепцию рабочего стола, также включают в себя функциональные возможности, которые распространяются на перенос других типов данных.
Каналы связи могут быть использованы для расширения RDP протокола, позволяя сменным платам переносить данные по RDP соединению. Функциональные возможности, такие как перенаправление принтера, перенаправление буфера обмена, перенаправление порта и т.д., используют технологию канала связи. Таким образом, в дополнение к входным данным и выходным данным может существовать много каналов связи, которые должны переносить данные. Соответственно, могут иметь место внеплановые запросы на перенос выходных данных и один или несколько запросов для переноса других данных, соперничающих за доступную сетевую полосу пропускания.
Обратимся теперь к фиг.3 и 4, на которых изображены высокоуровневые блок-схемы компьютерных систем, сконфигурированных для реализации виртуальных машин. Как показано на этих фигурах, компьютерная система 100 может включать в себя элементы, описанные на фиг.1 и 2, и компоненты, функционирующие для осуществления виртуальных машин. Одним из таких компонентов является гипервизор 202, который в уровне технике также может упоминаться как монитор виртуальных машин. Гипервизор 202 в изображенном варианте осуществления может конфигурироваться для управления и арбитража доступа к аппаратным средствам компьютерной системы 100. Вообще говоря, гипервизор 202 может генерировать среды исполнения программ, называемые разделами, с дочернего раздела 1 по дочерний раздел N (где N - целое число, большее или равное 1). В некоторых вариантах осуществления дочерний раздел может рассматриваться как базовый блок изоляции, поддерживаемой гипервизором 202, то есть каждому дочернему разделу может быть поставлен в соответствие набор ресурсов аппаратных средств, например, память, устройства, логические процессоры и т.д., которые находятся под управлением гипервизора 202 и/или родительского раздела, и гипервизор 202 может изолировать один раздел от доступа ресурсов других разделов. В вариантах осуществления гипервизор 202 может быть автономным программным продуктом, частью операционной системы, встроенным программным обеспечением материнской платы, специализированной интегральной схемой или их комбинацией.
В вышеупомянутом примере компьютерная система 100 включает в себя родительский раздел 204, который также может считаться доменом 0 в сообществе открытого исходного кода. Родительский раздел 204 может быть сконфигурирован, чтобы обеспечивать ресурсы для гостевых операционных систем, исполняющихся в дочерних разделах 1-N, посредством использования поставщиков 228 услуг виртуализации (VSP), которые также известны как внутренние конечные драйверы в сообществе открытого исходного кода. В этой иллюстративной архитектуре родительский раздел 204 может управлять доступом к базовым аппаратным средствам. Поставщики VSP 228 могут быть использованы для мультиплексирования интерфейсов в отношении ресурсов аппаратных средств посредством клиентов услуг виртуализации (VSC), которые также известны как внешние конечные драйверы в сообществе открытого исходного кода. Каждый дочерний раздел может включать в себя один или несколько виртуальных процессоров, таких как виртуальные процессоры 230-232, в отношении которых гостевые операционные системы 220-222 могут выполнять управление и планирование логических соединений для выполнения на них. В основном, виртуальные процессоры 230-232 представляют собой исполняемые инструкции и ассоциированную информацию состояния, которые обеспечивают представление физического процессора со специфической архитектурой. Например, одна виртуальная машина может иметь виртуальный процессор, имеющий характеристики процессора Intel x86, тогда как другой виртуальный процессор, может иметь характеристики процессора PowerPC. Виртуальные процессоры компьютерной системы в этом примере могут быть поставлены в соответствие логическим процессорам компьютерной системы, так что инструкции, которые реализуют виртуальные процессоры, будут поддерживаться логическими процессорами. Таким образом, в этих иллюстративных вариантах осуществления может одновременно осуществляться множество виртуальных процессоров, тогда как другой логический процессор исполняет инструкции гипервизора. Вообще говоря, и как иллюстрируется на фигурах, комбинация виртуальных процессоров, различных VSC клиентов и памяти в некотором разделе может рассматриваться как виртуальная машина, как, например, виртуальная машина 240 или 242.
В основном, гостевые операционные системы 220-222 могут включать в себя любую операционную систему, такую как, например, операционные системы от Microsoft®, Apple®, сообщества открытого исходного кода и т.п. Гостевые операционные системы могут включать в себя режимы функционирования пользователя/ядра и могут иметь ядра, которые включают в себя планировщики, диспетчеры памяти и т.д. Режим ядра может включать в себя режим исполнения в логическом процессоре, который предоставляет доступ по меньшей мере инструкциям привилегированного процессора. Каждая гостевая операционная система 220-222 может иметь ассоциированные файловые системы, которые могут иметь приложения, хранящиеся в них, такие как терминальные серверы, серверы электронной коммерции, серверы электронной почты и т.п., и гостевые операционные системы как таковые. Гостевые операционные системы 220-222 могут планировать логические соединения для их исполнения на виртуальных процессорах 230-232, и примеры таких приложений могут приводиться в исполнение.
Обратимся теперь к фиг.4, на которой изображена альтернативная архитектура, которая может быть использована для реализации виртуальных машин. Фиг.4 изображает компоненты, подобные компонентам по фиг.3, однако, в этом иллюстративном варианте осуществления, гипервизор 202 может включать в себя поставщиков 228 услуг виртуализации и драйверы 224 устройств, и родительский раздел 204 может содержать утилиты 236 конфигурации. В этой архитектуре гипервизор 202 может выполнять такие же или подобные функции, как гипервизор 202 фиг.3. Гипервизор 202 по фиг.4 может быть автономным программным продуктом, частью операционной системы, встроенным программным обеспечением материнской платы, или часть гипервизора 202 может быть реализована специализированными интегральными схемами. В этом примере, родительский раздел 204 может иметь инструкции, которые могут быть использованы, чтобы конфигурировать гипервизор 202, однако запросы доступа к аппаратным средствам могут обрабатываться гипервизором 202 вместо передачи в родительский раздел 204.
Обратимся теперь к фиг.5, на которой компьютер 100 может включать в себя схемы, сконфигурированные для обеспечения услуг удаленного рабочего стола. В иллюстративном варианте осуществления изображенная операционная система 400 может работать непосредственно на аппаратных средствах, или гостевые операционные системы 220 или 222 могут быть реализованы виртуальной машиной, такой как VM 216 или VM 218. Базовые аппаратные средства 208, 210, 234, 212 и 214 показаны пунктирными линиями, чтобы идентифицировать, какие аппаратные средства могут быть виртуализированы.
Дистанционные услуги могут быть обеспечены по меньшей мере для одного клиента, такого как клиент 401 (хотя изображен один клиент, дистанционные услуги могут быть обеспечены для нескольких клиентов). Иллюстративный клиент 401 может включать в себя терминал компьютера, который реализуется аппаратными средствами, сконфигурированными направлять входные данные пользователя в сеанс удаленного сервера и отображать информацию пользовательского интерфейса, сгенерированную сеансом. В другом варианте осуществления клиент 401 может быть реализован компьютером, который включает в себя элементы, подобные элементам компьютера 100 по фиг.1b. В этом варианте осуществления клиент 401 может включать в себя схемы, сконфигурированные для действия операционных систем, и схемы, сконфигурированные для эмуляции функциональных возможностей терминалов, например, приложение клиента удаленного рабочего стола, которое может исполняться одним или несколькими логическими процессорами 102. Специалисту должно быть понятно, что схемы, сконфигурированные выполнять операционную систему, также могут включать в себя схемы, сконфигурированные для эмуляции терминала.
Каждый подсоединяющийся клиент может иметь сеанс (как например, сеанс 404), который позволяет клиенту осуществлять доступ к данным и к приложениям, хранимым в компьютере 100. В основном, приложения и некоторые компоненты операционной системы могут загружаться в определенную область памяти, присвоенную определенному сеансу. Таким образом, в некоторых случаях некоторые компоненты операционной системы (OS, ОС) могут порождаться N раз (где N представляет собой число текущих сеансов). Эти различные компоненты ОС системы могут запрашивать услуги из ядра 418 операционной системы, которые могут, например, манипулировать памятью; обеспечивать считывание/запись дисков; и конфигурировать логические соединения каждого сеанса для выполнения на логическом процессоре 102. Некоторые иллюстративные подсистемы, которые могут загружаться в пространство сеанса, могут включать в себя подсистемы, которые генерируют операционные среды рабочего стола, подсистемы, которые отслеживают перемещение курсора мыши на рабочем столе, подсистемы, которые преобразуют щелчки кнопкой мыши на пиктограмме в команды, которые реализуют экземпляр программы, и т.п. Процессы, которые реализуют эти услуги, например, отслеживание перемещения курсора мыши, помечаются определенным идентификатором и загружаются в определенную область памяти, которая выделяется для сеанса.
Сеанс может быть сгенерирован диспетчером 416 сеансов, например, процесс. Например, диспетчер 416 сеансов может инициализировать и контролировать каждый дистанционный сеанс посредством генерации идентификатора сеанса для определенного пространства сеанса; посредством присваивания памяти этому пространству сеанса; и посредством генерации переменных среды системы и экземпляров процессов подсистемы в памяти, присвоенной пространству сеанса. Диспетчер 416 сеансов может быть активирован, когда операционная система 400 принимает запрос на сеанс удаленного рабочего стола.
Запрос на соединение может сначала обрабатываться транспортным стеком 410, например, стеком RDP протокола. Инструкции транспортного стека 410 могут конфигурировать логический процессор 102, чтобы он выполнял прослушивание на предмет сообщений соединения на определенном порте и направлял их в диспетчер 416 сеансов. Когда генерируются сеансы, транспортный стек 410 может создавать экземпляр стека протокола удаленного рабочего стола для каждого сеанса. Экземпляр 414 стека является иллюстративным экземпляром, который может генерироваться для сеанса 404. В общем, каждый экземпляр стека протокола удаленного рабочего стола может быть сконфигурирован направлять входные данные в ассоциированный клиент и направлять клиентские входные данные в подсистему 444 операционной среды для соответствующего дистанционного сеанса.
Как показано на данной фигуре, в одном варианте осуществления приложение 448 (хотя показано одно, другие также могут исполняться) может исполняться и генерировать массив битов. Упомянутый массив может обрабатываться графическим интерфейсом 446, который, в свою очередь, может визуализировать битовые карты, например, массивы значений пикселей, которые могут сохраняться в памяти. Как показано на фигуре, может быть создан экземпляр подсистемы 420 дистанционного отображения, которая может захватывать вызовы визуализации и посылать эти вызовы по сети в клиент 401 посредством экземпляра 414 стека для сеанса.
В дополнение к организации дистанционной работы с графическими данными и видеоданными, также может быть создан экземпляр перенаправителя 458 Plug and Play для организации дистанционной работы разнообразных устройств, таких как принтеры, mp3 плееры, клиентские файловые системы, CD-ROM дисководы и т.д. Перенаправитель 458 Plug and Play может принимать информацию от компонента клиентской стороны, который идентифицирует периферийные устройства, подключенные к клиенту 401. Перенаправитель 458 Plug and Play может затем конфигурировать операционную систему 400 загружать драйверы перенаправляемых устройств для периферийных клиентских устройств 401. Драйверы перенаправляемых устройств могут принимать вызовы из операционной системы 400 для осуществления доступа к периферийным устройствам и посылать вызовы по сети клиенту 401.
Как обсуждалось выше, клиенты могут использовать протокол для обеспечения услуг дистанционной презентации, такой как протокол удаленного рабочего стола (RDP), и для подключения к ресурсам, использующим терминальные службы. Когда клиент удаленного рабочего стола подключается к шлюзу терминального сервера, шлюз может открывать гнездовое соединение с терминальным сервером и перенаправлять клиентский трафик на порте дистанционной презентации или на порте, специально предназначенном для услуг удаленного доступа. Шлюз также может выполнять некоторые специфические для шлюза обмены данными с клиентом, использующим протокол шлюза терминального сервера, передаваемый по протоколу защищенной передачи гипертекста (HTTPS).
Обратимся теперь к фиг.6, на которой изображена компьютерная система 100, включающая в себя схемы для реализации дистанционных услуг и для внедрения аспектов настоящего изобретения. Как показано на фигуре, в одном варианте осуществления, компьютерная система 100 может включать в себя компоненты, подобные компонентам, описанным на фиг.2 и фиг.5, и может реализовывать сеанс дистанционной презентации. В одном варианте осуществления настоящего раскрытия сеанс дистанционной презентации может включать в себя аспекты консольного сеанса, например, сеанса, порождаемого для пользователя с использованием компьютерной системы, и дистанционного сеанса. Подобно тому, как описано выше, диспетчер 416 сеансов может инициализировать и контролировать сеанс дистанционной презентации посредством включения/отключения компонентов для реализации сеанса дистанционной презентации.
Один набор компонентов, которые могут загружаться в сеанс удаленной презентации, представляет собой консольные компоненты, которые обеспечивают возможность высокоточной дистанционной передачи, а именно, компоненты, которые имеют преимущества 3D графики и 2D графики, визуализируемой 3D аппаратными средствами.
3D/2D графика, визуализируемая 3D аппаратными средствами, может быть доступна с использованием модели драйвера, которая включает в себя драйвер 522 режима пользователя, интерфейс 520 прикладного программирования (API), ядро 524 графической системы и драйвер 530 режима ядра. Приложение 448 (или любой другой процесс, такой как пользовательский интерфейс, который генерирует 3D графику) может генерировать структуры API и посылать их в интерфейс 520 прикладного программирования (API), такой как Direct3D от компании Microsoft®. В свою очередь, API 520 может осуществлять связь с драйвером 522 режима пользователя, который может генерировать примитивы, например, фундаментальные геометрические формы, используемые в компьютерной графике, представляемые в виде вершин и констант, которые используются как строительные блоки для других форм, и сохраняет их в буферах, например, страницах памяти. В одном варианте осуществления приложение 448 может объявлять, как оно собирается использовать буфер, например, какой тип данных оно собирается сохранять в буфере. Приложение, такое как видеоигра, может использовать динамический буфер для сохранения примитивов для аватара и статический буфер для сохранения данных, которые не будут часто меняться, как, например, данные, которые представляют здание или лес.
Продолжая описание модели драйвера, приложение может заполнять буферы примитивами и выдавать команды на исполнение. Когда приложение выдает команду на исполнение, буфер может присоединяться к списку исполнения посредством драйвера 530 режима ядра и планироваться планировщиком 528 ядра графической системы. Каждый источник графики, например приложение или пользовательский интерфейс, может иметь контекст и свой собственный список исполнения. Ядро 524 графической системы может быть сконфигурировано планировать различные контексты для выполнения на графическом процессоре 112. Планировщик 528 графического процессора может исполняться логическим процессором 102, и планировщик 528 может выдавать в драйвер 530 режима ядра команду визуализировать содержимое буфера. Экземпляр 414 стека может конфигурироваться для приема команд и отправлять содержимое буфера по сети в клиент 401, где содержимое буфера может обрабатываться графическим процессором клиента.
Далее иллюстрируется пример функционирования виртуального графического процессора, который используется в сочетании с приложением, которое вызывает услуги дистанционной презентации. На фиг.6, в одном из вариантов осуществления, сеанс виртуальной машины может генерироваться компьютером 100. Например, диспетчер 416 сеансов может исполняться логическим процессором 102, и может инициализироваться дистанционный сеанс, который включает в себя определенные удаленные компоненты. В этом примере, порожденный сеанс может включать в себя ядро 418 операционной системы, ядро 524 графической системы, драйвер 522 дисплея режима пользователя и драйвер 530 дисплея режима ядра. Драйвер 522 дисплея режима пользователя может генерировать графические примитивы, которые могут сохраняться в памяти. Например, API 520 может включать в себя интерфейсы, которые могут предоставляться процессам, таким как пользовательский интерфейс для операционной системы 400 или приложение 448. Процесс может посылать высокоуровневые команды API, такие как списки точек (Point Lists), списки линий (Line Lists), полосовые линии (Line Strips), списки треугольников (Triangle Lists), полоски треугольников (Triangle Strips) или веера треугольников (Triangle Fans), в API 420. API 520 может принимать эти команды для драйвера 522 режима пользователя, который потом может генерировать вершины и сохранять их в одном или нескольких буферах. Планировщик 528 графического процессора может исполняться и принимать решение визуализировать содержимое буфера. В этом примере, команда для графического процессора 112 сервера может быть захвачена, и содержимое буфера (примитивы) может посылаться в клиент 401 через сетевую интерфейсную плату 114. В одном варианте осуществления API может предоставляться диспетчером 416 сеансов, с которым компоненты могут взаимодействовать, чтобы определять, доступен ли виртуальный графический процессор.
В одном варианте осуществления может быть создан экземпляр виртуальной машины, такой как виртуальная машина 240 на фиг.3 или 4, и эта виртуальная машина может служить в качестве платформы для исполнения для операционной системы 400. В этом примере, операционную систему 400 может воплощать гостевая операционная система 220. Экземпляр виртуальной машины может создаваться, когда по сети принимается запрос на соединение. Например, родительский раздел 204 может включать в себя экземпляр транспортного стека 410 и может конфигурироваться для приема запросов соединения. Родительский раздел 204 может инициализировать виртуальную машину в ответ на запрос соединения наряду с гостевой операционной системой, включающей в себя возможности реализации дистанционных сеансов. Затем запрос соединения может пересылаться в транспортный стек 410 гостевой операционной системы 220. В этом примере, экземпляр каждого дистанционного сеанса может создаваться в операционной системе, которая исполняется своей собственной виртуальной машиной.
В одном варианте осуществления может быть создан экземпляр виртуальной машины, и может исполняться гостевая операционная система 220, воплощающая операционную систему 400. Подобно тому, как описано выше, экземпляр виртуальной машины может создаваться, когда по сети принимается запрос соединения. Дистанционные сеансы могут генерироваться операционной системой. Диспетчер 416 сеансов может быть сконфигурирован определять, что запрос предназначен для сеанса, который поддерживает визуализацию 3D графики, и диспетчер 416 сеансов может загружать консольный сеанс. В дополнение к загрузке консольного сеанса диспетчер 416 сеансов может загружать экземпляр 414' стека для сеанса и конфигурировать систему для получения примитивов, сгенерированных драйвером 522 дисплея режима пользователя.
Драйвер 522 режима пользователя может генерировать графические примитивы, которые могут приниматься и сохраняться в буферах, доступных для транспортного стека 410. Драйвер 530 режима ядра может присоединять буфера к списку исполнения для приложения, и планировщик 528 графического процессора может исполняться и определять, когда выдавать команды визуализации для буферов. Когда планировщик 528 выдает команду визуализации, команда может перехватываться, например, драйвером 530 режима ядра и посылаться в клиент 401 посредством экземпляра 414 стека.
Планировщик 528 графического процессора может исполняться программу и принимать решение выдавать инструкцию визуализировать содержимое буфера. В этом примере, графические примитивы, ассоциированные с инструкцией визуализации, могут посылаться в клиент 401 через сетевую интерфейсную плату 114.
В одном варианте осуществления по меньшей мере один процесс режима ядра может выполняться по меньшей мере одним логическим процессором 112, и по меньшей мере один логический процессор 112 может синхронизировать вершины визуализации, сохраняемые в различных буферах. Например, планировщик 528 графической обработки, который может действовать одновременно с планировщиком операционной системы, может планировать операции графического процессора. Планировщик 528 графического процессора может объединять отдельные буфера вершин в правильный порядок исполнения, так что графический процессор клиента 401 исполняет команды в том порядке, который позволяет им правильно визуализироваться.
Один или несколько логических потоков определенного процесса, такого как видеоигра, могут сопоставлять многочисленные буфера, и каждый поток может выдавать команду отрисовки. Информация идентификации для вершин, например, информация, генерируемая из расчета на каждый буфер, на каждую вершину или на каждую группу вершин в буфере, может посылаться в планировщик 528 графического процессора. Эта информация может сохраняться в таблице наряду с информацией идентификации, ассоциированной с вершинами, из такого же или других процессов и использоваться для синхронизации визуализации различных буферов.
Может исполняться приложение, такое как программа обработки текстов, и оно может объявлять, например, два буфера - один для сохранения вершин для генерации 3D меню и другой, хранящий команды для генерации букв, которые будут заполнять меню. Приложение может отображать буфер и выдавать команды отрисовки. Планировщик 528 графического процессора может определять порядок исполнения двух буферов, так что меню визуализируются наряду с буквами таким способом, чтобы было приятно на них смотреть. Например, другие процессы могут выдавать команды отрисовки в одно и то же или по существу такое же время, и если вершины были бы не синхронизированными вершинами из различных логических потоков различных процессов, то могли бы визуализироваться асинхронно на клиенте 401, тем самым делая окончательное отображаемое изображение выглядящим хаотичным и путанным.
Средство 450 сжатия объемных данных может быть использовано для сжатия графических примитивов прежде отправления потока данных в клиент 401. В одном варианте осуществления средство 450 сжатия объемных данных может представлять собой компонент режима пользователя (не показан) или компонент режима ядра экземпляра 414 стека и может конфигурироваться для поиска подобных комбинаций в потоке данных, который посылается в клиент 401. В этом варианте осуществления, поскольку средство 450 сжатия объемных данных принимает поток вершин, вместо приема многочисленных структур API, из многочисленных приложений, средство 450 сжатия объемных данных имеет больший набор данных вершин для фильтрации, чтобы найти возможности для сжатия. То есть, поскольку вершины для множества процессов являются удаленными, вместо разрозненных вызовов API, имеется больший шанс того, что средство 450 сжатия объемных данных будет способно найти подобные комбинации в заданном потоке.
В одном варианте осуществления графический процессор 112 может конфигурироваться для использования виртуальной адресации вместо физических адресов для памяти. Таким образом, страницы памяти, используемые в качестве буферов, могут перелистываться в ОЗУ системы или на диск из видеопамяти. Экземпляр 414' стека может конфигурироваться для получения виртуальных адресов буферов и для отправления содержимого из виртуальных адресов, когда захватывается команда визуализации из ядра графической системы.
Операционная система 400 может конфигурироваться, например, различные подсистемы или драйверы могут загружаться для захвата примитивов и для отправления их в удаленный компьютер, такой как клиент 401. Подобно тому, как описано выше, диспетчер 416 сеансов может исполняться логическим процессором 102, и может инициализироваться сеанс, который включает в себя удаленные компоненты. В этом примере, порожденный сеанс может включать в себя ядро 418 операционной системы, ядро 524 графической системы, драйвер 522 дисплея режима пользователя и драйвер 530 дисплея режима ядра.
Ядро графической системы может планировать операции графического процессора. Планировщик 528 графического процессора может объединять отдельные буфера вершин в правильный порядок исполнения, так что графический процессор клиента 401 исполняет команды в том порядке, который позволяет им правильно визуализироваться.
Обратимся теперь к фиг.7, на которой изображена блок-схема, иллюстрирующая процесс декодирования, согласно одному варианту осуществления настоящего раскрытия. Процессор кодирования показан на фиг.8. Закодированный мозаичный элемент сначала может прогоняться через RLGR декодер 900 для генерации коэффициента квантованного мозаичного элемента. Указанная операция может выполняться на центральном процессоре.
Деквантование 705 сначала может выполняться на центральном процессоре с использованием SSE2 инструкций. После деквантования десять поддиапазонов трех компонентов мозаичного элемента могут копироваться в три буфера текстур Direct3D формата L16, по одному для каждого из Y, U и V. Эти три текстуры могут пересылаться в графический процессор и могут использоваться на этапе 710 обратного дискретного вейвлет-преобразования (DWT) в качестве входных данных.
Все упомянутые вариации для реализации вышеупомянутых разделов являются только иллюстративными вариантами осуществления, и ничего в этом документе не должно интерпретироваться как ограничивающее раскрытие любого конкретного аспекта виртуализации.
Энтропийное кодирование
В виртуальном рабочем столе или дистанционном сеансе презентации графика и видеоданные пользователя могут визуализироваться на сервере для каждого пользователя. Результирующие битовые карты затем могут посылаться клиенту для отображения и взаимодействия. Чтобы снизить требования к полосе пропускания в сети, битовые карты могут сжиматься перед отправлением клиенту. Желательно, чтобы метод сжатия был эффективным, с низкой задержкой.
Здесь описаны система и способ кодирования и декодирования битовых карт и других графических данных. Система кодирования может включать в себя систему фрагментации изображения с модулем фрагментации изображения, который изначально делит данные исходного изображения на мозаичные элементы данных. Затем модуль дифференцирования кадров может выводить только измененные мозаичные элементы данных в различные модули обработки, которые преобразуют измененные мозаичные элементы данных в соответствующие мозаичные компоненты. Согласно варианту осуществления, квантователь может выполнять процедуру сжатия в отношении мозаичных компонентов, чтобы генерировать сжатые данные согласно регулируемому параметру квантования. Затем адаптивный селектор энтропийного кодера может выбирать один из множества энтропийных кодеров для выполнения процедуры энтропийного кодирования, чтобы, тем самым, производить закодированные данные. Энтропийный кодер также может использовать контур обратной связи для регулировки параметра квантования в свете текущих характеристик ширины полосы пропускания. Упоминаемые здесь процессы сжатия, кодирования и декодирования графических данных могут в основном использовать один или несколько способов и систем, описанных в переуступленном заявителю по настоящей заявке патенте США № 7460725, озаглавленном «System And Method For Effectively Encoding And Decoding Electronic Information», и в патентной заявке США № 12/399302, озаглавленной «Frame Capture, Encoding, And Transmission Management», поданной 6 марта 2009 г., которые полностью включены сюда посредством ссылки.
В различных описанных здесь способах и системах улучшения обработки и управления различных вышеописанных процессов могут быть использованы для обеспечения более эффективной обработки и, тем самым, более своевременных и богатых ощущений пользователя. Способы и системы также обеспечивают улучшения в обеспечении поддержки такой графики, когда ресурсы сети и/или системы обеспечивают адекватную полосу пропускания, и/или клиентское устройство имеет более низкую скорость обработки или ресурсы. Описанные здесь варианты осуществления визуализации, кодирования и передачи графических данных могут быть выполнены с использованием различных комбинаций аппаратных средств и процессов программного обеспечения. В некоторых вариантах осуществления функции могут выполняться полностью в программном обеспечении. В других вариантах осуществления функции могут выполняться с использованием комбинации аппаратных средств и процессов программного обеспечения. Такие процессы могут дополнительно выполняться с использованием одного или нескольких процессоров и/или одного или нескольких специализированных процессоров, таких как графический процессор (GPU) или другие устройства графической визуализации специального назначения.
Более того, хотя следующее описание обеспечивается в контексте удаленных систем презентации, должно быть понятно, что раскрытые варианты осуществления могут выполняться в системе любого типа, в которой графические данные кодируются и сжимаются для доставки по сети.
Различные варианты осуществления могут содержать использование функции дискретного вейвлет-преобразования (DWT) для преобразования компонентов YUV формата мозаичных элементов в соответствующие поддиапазоны YUV формата мозаичных элементов. Функция квантователя может выполнять процедуру квантования посредством использования соответствующих методов квантования для сжатия поддиапазонов мозаичных элементов. Функция квантователя может производить сжатые данные изображения посредством уменьшения скорости передачи битов мозаичных элементов согласно конкретному коэффициенту сжатия, который может задаваться адаптивным параметром квантования, полученным через контур обратной связи из энтропийного кодера.
В одном варианте осуществления GPU процессор может быть обеспечен битовой картой с измененными прямоугольниками, которые необходимо сжимать. Битовая карта дополнительно может расщепляться на логические мозаичные элементы, и только те мозаичные элементы, которые изменяются внутри измененного прямоугольника, кодируются и сжимаются. Таким образом, процесс эффективно выполняет схему кэширования в согласии с клиентом, где результирующее декодированное изображение поддерживается и отображается.
Для уменьшения пропускной способности потока отображения до уровней, которые являются приемлемыми для передачи по локальным сетям, глобальным сетям и по сетям с низкой пропускной способностью, используются алгоритмы сжатия дистанционной презентации. Такие алгоритмы обычно жертвуют временем процессора на стороне сервера в пользу более низкой требуемой пропускной способности.
Могут быть использованы средства сжатия изображения, которые могут применять энтропийный кодер. Функция энтропийного кодера состоит в выполнении процедуры энтропийного кодирования для генерации закодированных данных. В некоторых вариантах осуществления,процедура энтропийного кодирования дополнительно снижает скорость передачи битов данных сжатого изображения посредством подстановки соответствующих кодов для соответствующих битовых комбинаций в данных сжатого изображения, принятых из квантователя.
Энтропийное кодирование, выполняемое в системе дистанционной презентации, в основном уравновешивает характеристики процессора (например, быстродействие) с помощью коэффициента сжатия. Энтропийные кодеры могут быть настроены на хорошее сжатие с приемлемым быстродействием процессора. Типичные энтропийные кодеры включают в себя кодеры по длинам серий, по кодам Хаффмана, арифметические и вариации кодеров Голомба-Райса. Одна из основных проблем в проектировании эффективных энтропийных кодеров для приложений дистанционной презентации состоит в том, что обычно имеются большие вариации в статистике кодируемых блоков целых чисел. Исследования показали, что в большинстве случаев перед квантованием данные имели вероятности распределения, которые могут быть значительно больше сконцентрированы вблизи нуля, чем при гауссовом распределении.
Настоящее раскрытие касается осуществления упрощенного энтропийного кодера, который конфигурируется для улучшения быстродействия кодирования и декодирования при потенциальных издержках потерь сжимаемости. Однако, во многих ситуациях, этот компромисс может быть приемлемым и действительно быть более желательным в сценариях, которые ограничены низким быстродействием процессоров больше, чем пропускной способностью. Конечный результат заключается в том, что может быть обеспечен кодер/декодер, который в два-три раза быстрее, чем современные кодеры/декодеры при потерях сжимаемости порядка от 10% до 20%.
Такой кодер/декодер может быть полезным потому, что он обеспечивает возможность сценариев, в которых оптимизация быстродействия процессора имеет более высокий приоритет, чем сохранение каждого последнего бита полосы пропускания. Например, низкосортные клиентские устройства могут достигать лучшей производительности с более простым средством сжатия, чтобы обеспечить возможность более быстрой обработки. Системы дистанционной презентации обычно оптимизируются для снижения пропускной способности независимо от стоимости и производительности процессора. Во многих современных системах пропускная способность может быть высокой, тогда как клиентские устройства могут быть более простыми устройствами, такими как ТВ тюнеры или «тонкие» клиенты.
В одном варианте осуществления энтропийный кодер может быть конфигурирован так, чтобы избежать использования формата переменного битового потока. Использование переменного битового потока однозначно позволяет более медленно и эффективно кодировать и декодировать. В одном варианте осуществления кодер может быть конфигурирован для использования полубайтовых кодов (также известных как четырехбитовые) для достижения стандартного потока кодирования фиксированного размера. При использовании такого потока поток можно быстрее декодировать и можно декодировать безопасно (с контролем переполнения), с меньшими затратами процессора.
В одной иллюстративной схеме кодер выполняет следующие типы операций:
1) Серии нулей (которые являются обычными входными данными в энтропийный кодер) - серии нулей кодируются в некотором варьируемом количестве четверок битов, согласующихся со статистическим наблюдением того, что большинство серий очень короткие.
2) Буквенные значения - буквенные значения кодируются либо в виде наиболее поздно использованного (LRU) успешного результата в таблице (кэш-памяти) из недавно использованных буквенных значений, либо в виде варьируемого количества четверок битов, снова выгодных с точки зрения статистических свойств, что чем меньше значения, тем более вероятно они встречаются.
В обоих случаях по существу имеется два потока: (а) поток четверок кодов операций и (b) поток больших значений. Некоторые коды операций, либо для длины серии, либо для длины буквенного значения, просто показывают «получить следующее значение в потоке больших значений».
Поток больших значений может кодироваться с помощью базовой схемы многобайтового кодирования, которая использует для малых значений меньше байтов, чем для больших значений, но в то же время гарантируется, что она действует только на границах фиксированного байта. При использовании такой схемы кодирования, как поток четверок кодов, так и поток значений могут быть декодированы без необходимости сложных схем сдвига битов или декодирования переменных битов, таким образом обеспечивая возможность для более быстрой работы, чем более общих/сложных энтропийных кодеров (например, различные схемы, основанные на алгоритме RLGR или кодах Хаффмана). Такой упрощенный кодер может конфигурироваться так, что может кодироваться любое количество битов, например от 1 до 32 битов. При более сложном кодировании декодирование становится проблемным с точки зрения вычислений из-за переменных битов и необходимой обработки, которая обычно требует многих ветвей кодирования и значительной величины учета использования системных ресурсов. Использование этой упрощенной схемы позволяет минимизировать такую сложность посредством использования структур постоянного размера (например, четверок битов). В такой схеме нет выходных символов, состоящих из более чем четырех битов, и данные являются кратными байта без сдвигов или циклических перестановок. Байт может содержать два кода, которые при желании могут обрабатываться параллельно. Более того, если количество четверок известно, то можно избежать переполнения буфера. В испытаниях, использующих типичные сценарии дистанционной презентации, потери только 10-20% сжимаемости были измерены при выигрыше производительности в 2-3 раза с использованием доступных ныне процессоров.
В некоторых вариантах осуществления логика может быть обеспечена для переключения между более сложным/медленным энтропийным кодером и более простым кодером, который здесь описан. Например, на фиг.9 система дистанционной презентации может обеспечить по меньшей мере два кодера 910 и 920. Кодер 910 может быть сложным энтропийным кодером, таким, который выполняет алгоритм RLGR. Кодер 920 может быть упрощенным энтропийным кодером согласно настоящему раскрытию. В зависимости от условий сети 930, для кодирования данных 900 система может выбирать один из кодеров 910 или 920. Например, если условия сети показывают, что сеть перегружена и что доступная полоса пропускания ограничена, то для кодирования данных 900 может быть выбран сложный кодер 910, чтобы минимизировать количество данных, передаваемых по сети 930. Аналогично, если условия сети показывают, что сеть не перегружена, то для кодирования данных 900 может быть выбран упрощенный кодер 920, чтобы обеспечить более быструю работу процессора на клиентском устройстве.
Приложение A обеспечивает иллюстративный вариант осуществления упрощенного декодера согласно настоящему раскрытию.
Фиг.10 изображает иллюстративную последовательность операций для обработки графических данных для передачи в клиентский компьютер, включающую в себя операции 1000, 1002, 1004 и 1006. На фиг.10 операция 1000 начинает последовательность операций, а операция 1002 иллюстрирует прием графических данных, представляющих экран клиента, ассоциированный с сеансом виртуальной машины. Операция 1004 иллюстрирует прием информации, показывающей доступную полосу пропускания для передачи, и, основываясь на этой информации, определение того, удовлетворяет ли доступная полоса пропускания заранее заданному порогу. Операция 1006 иллюстрирует энтропийное кодирование коэффициентов преобразованных графических данных с использованием компактного потока битовых маркеров, выстроенных по границам байта. В одном варианте осуществления серии нулей кодируются в варьируемом количестве блоков с размером, кратным размеру квантования, буквенные значения кодируются с использованием информационной записи в кэш-памяти недавно использованных буквенных значений, и другие значения кодируются с использованием минимального количества блоков с размером квантования. Битовый маркер может представлять собой строку битов, которая задает блок данных. Например, в системе, основанной на полубайтах, используется маркер из четырех битов.
В различных вариантах осуществления размером квантования может быть полубайт. В некоторых вариантах осуществления последовательность операций может включать в себя генерацию потока кодов операций энтропийного кодирования и поток больших значений. Процедура может дополнительно включать в себя энтропийное кодирование потока больших значений с помощью схемы многобайтового кодирования, которая использует для малых значений меньше байтов, чем для больших значений, и деление упомянутых графических данных на мозаичные элементы данных, обработку упомянутых мозаичных элементов данных в мозаичные компоненты и выполнение упомянутого энтропийного кодирования в отношении упомянутых мозаичных компонентов. Схема кодирования может конфигурироваться для действия только на границах фиксированного байта.
Фиг.11 изображает иллюстративную систему для обработки графических данных для передачи в клиентский компьютер, как описано выше. Как показано на фиг.11, система 1100 содержит процессор 1110 и память 1120. Память 1120 дополнительно содержит компьютерные инструкции, сконфигурированные для обработки графических данных для передачи в удаленное вычислительное устройство. Блок 1122 иллюстрирует прием графических данных, представляющих экран клиента, ассоциированный с сеансом виртуальной машины. Блок 1124 иллюстрирует деление упомянутых графических данных на мозаичные элементы данных. Блок 1126 иллюстрирует энтропийное кодирование коэффициентов преобразованных мозаичных элементов данных с использованием потока битовых маркеров, выстроенных по границам байта.
Любой из вышеупомянутых аспектов может быть реализован в способах, системах, считываемых компьютером носителях или в промышленном изделии любого типа. Например, считываемый компьютером носитель может хранить на нем исполняемые компьютером инструкции для обработки графических данных для передачи в клиентский компьютер. Такие носители могут содержать первый поднабор инструкций для приема графических данных, представляющих экран клиента, ассоциированный с сеансом виртуальной машины, и второй поднабор инструкций для энтропийного кодирования коэффициентов преобразованных графических данных с использованием компактного потока битовых маркеров, выстроенных по границам байтов, так что закодированные данные могут декодироваться с использованием процесса байтового декодирования. Специалистам должно быть понятно, что могут быть использованы дополнительные наборы инструкций, чтобы охватить различные аспекты, раскрытые здесь, и что два раскрытых здесь поднабора инструкций могут варьироваться в деталях согласно настоящему раскрытию.
Предшествующее подробное описание может задавать различные варианты осуществления систем и/или процессов через примеры и/или схемы последовательности операций. Постольку, поскольку такие блок-схемы и/или примеры содержат одну или несколько функций и/или операций, специалистам должно быть понятно, что каждая функция и/или операция в таких блок-схемах или примерах может быть реализована отдельно и/или коллективно, посредством широкого диапазона аппаратных средств, программного обеспечения, встроенного программного обеспечения или виртуально любой их комбинации.
Должно быть понятно, что различные методики, описанные здесь, могут быть реализованы с аппаратными средствами или программным обеспечением, или, при необходимости, с комбинацией их обоих. Таким образом, способы и устройства по настоящему раскрытию или некоторым его аспектам или частям могут принимать форму программного кода (то есть, инструкций), воплощенного на материальных носителях, таких как гибкие диски, компакт-диски CD-ROM, накопители на жестких дисках или любые другие считываемые компьютером носители, причем, когда программный код загружается в машину или исполняется машиной, такой как компьютер, машина становится устройством для практического осуществления настоящего раскрытия. В случае исполнения программного кода на программируемых компьютерах вычислительное устройство обычно включает в себя процессор, носитель, считываемый процессором (включая энергозависимые и энергонезависимые запоминающие устройства и/или элементы хранения), по меньшей мере одно устройства ввода и по меньшей мере одно устройства вывода. Одна или несколько программ могут выполнять или использовать процессы, описанные в связи с настоящим раскрытием, например, через использование интерфейса прикладного программирования (API), многоразовые средства управления или подобное. Такие программы предпочтительно реализуются на процедурном языке высокого уровня или языке объектно-ориентированного программирования для связи с компьютерной системой. Однако, при желании, программы могут быть реализованы на ассемблере или машинном языке. В любом случае язык может быть транслируемым языком или интерпретируемым языком и может быть объединен с реализацией в аппаратных средствах.
Хотя изобретение было конкретно показано и описано со ссылкой на некоторые его предпочтительные варианты осуществления, специалисту должно быть понятно, что различные изменения по форме и в деталях могут быть сделаны, не отклоняясь от сущности и не выходя за рамки объема настоящего изобретения, который определяется последующей формулой изобретения. Кроме того, хотя элементы настоящего изобретения могут быть описаны или заявлены в единственном числе, предполагается множественное число, если конкретно не оговорено ограничение для единственного числа.
Изобретение относится к вычислительной технике. Технический результат заключается в повышении быстродействия кодирования и декодирования при потенциальных издержках потерь сжимаемости. Способ обработки графических данных для передачи в удаленное вычислительное устройство, в котором принимают графические данные, представляющие экран клиента, ассоциированный с сеансом виртуальной машины; принимают информацию, показывающую доступную полосу пропускания для упомянутой передачи, и, основываясь на этой информации, определяют, удовлетворяет ли доступная полоса пропускания заранее заданному порогу; и выполняют энтропийное кодирование коэффициентов преобразованных графических данных с использованием компактного потока битовых маркеров, которые образуют группы, которые выстраиваются по границам байтов, при этом серии нулей кодируются в варьируемом количестве блоком с размером, кратным размеру квантования; буквенные значения кодируются с использованием информационной записи в кэш-памяти недавно использованных буквенных значений; и другие значения кодируются с использованием минимального количества блоков с размером, кратным размеру квантования. 3 н. и 7 з.п. ф-лы, 11 ил.
1. Способ обработки графических данных для передачи в удаленное вычислительное устройство, содержащий этапы, на которых:
принимают графические данные, представляющие экран клиента, ассоциированный с сеансом виртуальной машины;
принимают информацию, показывающую доступную полосу пропускания для упомянутой передачи, и, основываясь на этой информации, определяют, удовлетворяет ли доступная полоса пропускания заранее заданному порогу; и
выполняют энтропийное кодирование коэффициентов преобразованных графических данных с использованием компактного потока битовых маркеров, которые образуют группы, которые выстраиваются по границам байтов, при этом:
серии нулей кодируются в варьируемом количестве блоков с размером, кратным размеру квантования;
буквенные значения кодируются с использованием информационной записи в кэш-памяти недавно использованных буквенных значений; и
другие значения кодируются с использованием минимального количества блоков с размером, кратным размеру квантования.
2. Способ по п.1, дополнительно содержащий этап, на котором генерируют коды операций энтропийного кодирования и поток больших значений.
3. Способ по п.2, дополнительно содержащий этап, на котором выполняют энтропийное кодирование потока больших значений с помощью схемы многобайтового кодирования, которая использует для малых значений меньше байтов, чем для больших значений.
4. Способ по п.3, в котором схема кодирования сконфигурирована действовать только на фиксированных границах байта.
5. Способ по п.3, дополнительно содержащий этапы, на которых разделяют упомянутые графические данные на мозаичные элементы данных, обрабатывают упомянутые мозаичные элементы данных в мозаичные компоненты и выполняют упомянутое энтропийное кодирование в отношении упомянутых мозаичных компонентов.
6. Система обработки графических данных для передачи в удаленное вычислительное устройство, содержащая:
вычислительное устройство, содержащее по меньшей мере один процессор;
запоминающее устройство, коммуникационно подсоединенное к упомянутому процессору при функционировании упомянутой системы, причем упомянутое запоминающее устройство имеет сохраненные в нем компьютерные инструкции, которые при их исполнении по меньшей мере одним процессором обеспечивают:
прием графических данных, представляющих экран клиента, ассоциированный с сеансом виртуальной машины;
деление упомянутых графических данных на мозаичные элементы данных;
энтропийное кодирование коэффициентов преобразованных графических данных с использованием потока битовых маркеров, которые образуют группы, которые выстраиваются по границам байтов, при этом:
серии нулей кодируются в варьируемом количестве блоков с размером, кратным размеру квантования;
буквенные значения кодируются с использованием информационной записи в кэш-памяти недавно использованных буквенных значений; и
другие значения кодируются с использованием минимального количества блоков с размером квантования.
7. Система по п.6, дополнительно содержащая передачу закодированных коэффициентов в вычислительное устройство, сконфигурированное для обработки закодированных коэффициентов, основываясь на размере квантования.
8. Система по п.6, в которой закодированные данные могут быть использованы для эффективного декодирования посредством процесса энтропийного декодирования, сконфигурированного для работы на закодированных данных на побайтовой основе.
9. Система по п.6, дополнительно содержащая энтропийное кодирование потока больших значений с помощью схемы многобайтового кодирования, которая использует для малых значений меньше байтов, чем для больших значений.
10. Считываемый компьютером носитель, хранящий исполняемые компьютером инструкции для обработки графических данных для передачи в клиентский компьютер, причем упомянутые инструкции предназначены для:
приема графических данных, представляющих экран клиента, ассоциированный с сеансом виртуальной машины; и
энтропийного кодирования коэффициентов преобразованных графических данных с использованием компактного потока битовых маркеров, которые образуют группы, которые выстраиваются по границам байта, так что закодированные данные могут быть декодированы с использованием основывающегося на байтах процесса декодирования, при этом:
серии нулей кодируются в варьируемом количестве блоков с размером, кратным полубайту;
буквенные значения кодируются с использованием информационной записи в кэш-памяти недавно использованных буквенных значений; и
другие значения кодируются с использованием минимального количества блоков с размером, кратным полубайту.
Приспособление для суммирования отрезков прямых линий | 1923 |
|
SU2010A1 |
Корпус судна | 1978 |
|
SU846373A1 |
Станок для изготовления деревянных ниточных катушек из цилиндрических, снабженных осевым отверстием, заготовок | 1923 |
|
SU2008A1 |
Станок для изготовления деревянных ниточных катушек из цилиндрических, снабженных осевым отверстием, заготовок | 1923 |
|
SU2008A1 |
ЭНТРОПИЙНОЕ КОДИРОВАНИЕ С ПОМОЩЬЮ КОМПАКТНЫХ КОДОВЫХ КНИГ | 2006 |
|
RU2379832C2 |
Авторы
Даты
2016-02-20—Публикация
2011-09-14—Подача