СПОСОБ ПОДГОТОВКИ ОТОБРАЖЕНИЯ ДАННЫХ В СЕРВЕРАХ (ВАРИАНТЫ) И МАШИНОЧИТАЕМЫЙ НОСИТЕЛЬ
METHOD OF PREPARING DATA DISPLAY IN SERVERS (VERSIONS) AND MACHINE-READABLE MEDIUM

ПЕРЕКРЕСТНАЯ ССЫЛКА НА РОДСТВЕННЫЕ ЗАЯВКИ
[0001] Настоящая заявка относится к заявке на патент США с названием "Способ и устройство для распознавания графических примитивов при выборочной передаче на удаленный дисплей" (номер дела А335), имеющей такую же, как у настоящей заявки дату подачи и полностью включенной в настоящее описание посредством ссылки.
ПРЕДПОСЫЛКИ СОЗДАНИЯ ИЗОБРЕТЕНИЯ

[0002] Существующие операционные системы обычно содержат уровень интерфейса графического изображения, к которому имеют доступ приложения для формирования изображений на устройстве отображения, например мониторе. Уровень интерфейса графического изображения обеспечивает для приложений интерфейс программирования приложений для изображений и преобразует изображения, запрашиваемые такими приложениями, в набор графических команд, которые далее поступают на драйвер видеоадаптера. Драйвер видеоадаптера, в свою очередь, принимает графические команды, преобразует их в соответствующие графические примитивы для видеоадаптера и направляет их на видеоадаптер (например, видеокарту, интегрированный видеочипсет и т.д.). Видеоадаптер принимает графические примитивы и немедленно обрабатывает их или сохраняет в буфере обратного магазинного типа (FIFO буфер) для последовательного выполнения с целью обновления буфера кадров в видеоадаптере, который используют для формирования и передачи видеосигнала на связанный внешний монитор. Одним из примеров такого уровня интерфейса графического изображения является интерфейс графических устройств (интерфейс GDI) операционной системы (ОС) Microsoft Windows, который реализован в виде динамически подключаемых библиотек на уровне пользователя и уровне ядра, доступных через ОС Windows.
[0003] По мере развития технологий, например при технологии вычислений на базе сервера (SBC) и инфраструктуры виртуального рабочего стола (VDI), организации способны заменить традиционные персональные компьютеры (PC) исполняемыми копиями рабочих столов, размещенных на удаленных настольных серверах (или в выполняемых на них виртуальных машинах) в информационном центре. Приложение клиент-терминала, установленное на терминале пользователя, подключается к удаленному настольному серверу, который передает графический пользовательский интерфейс сеанса работы операционной системы для воспроизведения на дисплее терминала пользователя. Одним из примеров такого удаленного настольного сервера может служить виртуальная вычислительная сеть (VNC), которая использует протокол удаленного буфера кадров (RFB) для передачи буферов кадров (содержащих значения каждого пиксела, отображаемого на экране) с удаленного настольного сервера клиенту. Для уменьшения количества отображаемых данных, относящихся к графическому пользовательскому интерфейсу, пересылаемому приложению клиент-терминала, удаленный настольный сервер может иметь вторую копию буфера кадров, которая отражает предшествующее состояние буфера кадров. Эта вторая копия обеспечивает возможность сравнения удаленным настольным сервером предшествующего и текущего состояний буфера кадров для распознавания различий отображаемых данных с целью кодирования (сужения ширины полосы пропускания сети) и последующей передачи в сеть приложению клиент-терминала.
[0004] Однако обработка данных до копирования буфера кадров в такой второй буфер кадров может значительно ухудшить производительность удаленного настольного сервера. Например, для непрерывного копирования данных из буфера кадров, поддерживающего разрешающую способность 1920×1200 и глубину цвета 24 бит на пиксел, во второй буфер кадров со скоростью 60 раз в секунду, необходимо копировать более 3,09 Гбит/сек (гигабит в секунду).
СУЩНОСТЬ ИЗОБРЕТЕНИЯ
[0005] При передаче данных на удаленный клиентский терминал отображаемые данные обрабатывают для сужения полосы пропускания. В одном из вариантов реализации изобретения сервер содержит первый буфер кадров для хранения отображаемых данных и видеокодер, в котором использован второй буфер кадров для передачи отображаемых данных на удаленный клиентский терминал. Распознают ограничивающий прямоугольник, который охватывает обновления отображаемых данных в первом буфере кадров, и отмечают элементы, соответствующие ограничивающему прямоугольнику в структуре данных. Каждый элемент структуры данных соответствует различной области в первом буфере кадров, а отмеченные элементы соответствуют областям ограничивающего прямоугольника. Области первого буфера кадров сопоставляют с соответствующими областями второго буфера кадров, а усеченную структуру данных, которая содержит отмеченные элементы только сравниваемых областей с различиями, помещают на видеокодере. Таким образом, видеокодер обладает способностью передавать обновленные отображаемые данные областей второго буфера кадров, которые соответствуют отмеченным элементам в усеченной структуре данных.
[0006] В одном из вариантов реализации изобретения элементы структуры данных после помещения обнуляют для подготовки к последующей передаче отображаемых данных на удаленный терминал. В другом варианте реализации изобретения те области, в которых на этапе сравнения выявляют различия, копируют из первого буфера кадров в соответствующие области второго буфера кадров для предоставления ему обновленных отображаемых данных
КРАТКОЕ ОПИСАНИЕ ЧЕРТЕЖЕЙ
[0007] На фиг.1 приведена функциональная схема удаленного настольного сервера согласно одному из вариантов реализации изобретения.
[0008] На фиг.2 приведена структура данных "передаваемого битового массива" согласно одному из вариантов реализации изобретения.
[0009] На фиг.3 приведена вторая структура данных передаваемого битового массива согласно одному из вариантов реализации изобретения.
[0010] На фиг.4 представлена структурная схема, представляющая этапы передачи запрашиваемых графических изображений от приложения на видеоадаптер согласно одному из вариантов реализации изобретения.
[0011] На фиг.5 представлена структурная схема, представляющая этапы передачи данных из буфера кадров в видеокодер согласно одному из вариантов реализации изобретения.
[0012] На фиг.6 представлена структурная схема, представляющая этапы усечения структуры данных передаваемого битового массива согласно одному из вариантов реализации изобретения.
[0013] На фиг.7 приведен наглядный пример усечения структуры данных передаваемого битового массива согласно одному из вариантов реализации изобретения.
ПОДРОБНОЕ ОПИСАНИЕ
[0014] На фиг.1 приведена функциональная схема удаленного настольного сервера согласно одному или более вариантам реализации изобретения. Удаленный настольный сервер 100 может быть создан на рабочем столе, ноутбуке или платформе аппаратных средств сервера 102, например архитектурной платформе х86. Такая платформа аппаратных средств может содержать центральный процессор 104, оперативную память 106, сетевой адаптер 108, жесткий диск 110 и другие устройства ввода/вывода, например, помимо прочего, мышь и клавиатуру (на фиг.1 не показаны).
1
N
1
N
1
N
1
N
[0015] В дополнение к платформе аппаратных 102 средств установлен уровень программного обеспечения виртуализации, именуемый в дальнейшем гипервизором 124. Гипервизор 124 поддерживает виртуальное пространство выполнения машины 126, внутри которого могут быть одновременно синхронизированы и выполнены множество виртуальных машин (виртуальные машины 128-128). В одном из вариантов реализации изобретения каждая виртуальная машина 128-128 работает с определенным пользователем, удаленно соединенным посредством определенного клиентского терминала. Гипервизор 124 каждой виртуальной машины 128-128 управляет соответствующей виртуальной платформой аппаратных средств (т.е. виртуальными платформами аппаратных средств 130-130), которые содержат эмулируемые аппаратные средства, реализованные в программном обеспечении, например центральный процессор 132, оперативная память 134, жесткий диск 136, сетевой адаптер 138 и видеоадаптер 140. Эмулируемый видеоадаптер 140 резервирует и поддерживает буфер 142 кадров, который представляет собой часть используемой видеоадаптером 140 памяти, хранящей буфер значений пикселей, с помощью которого может быть обновлен видеотерминал (т.е. "кадр"), и буфер 144 обратного магазинного типа (FIFO), который представляет собой часть используемой видеоадаптером 140 памяти, хранящей список графических примитивов, используемых для обновления буфера 142 кадров. В одном из вариантов реализации изобретения буфер 144 представляет собой буфер разделяемой памяти, к которому обеспечен доступ и который поделен между видеоадаптером 140 и драйвером 154 видеоадаптера.
1
1
1
1

[0016] Виртуальная платформа аппаратных средств 130 может выполнять функцию эквивалента стандартной архитектуры аппаратных средств х86 так, что любая операционная система, поддерживающая формат х86, например Microsoft Windows, Linux, Solaris х86, NetWare, FreeBSD, и т.д., может быть установлена в качестве гостевой операционной системы (ОС) 146 для выполнения приложений 148 для виртуальной машины, например виртуальной машины 128. Приложения 148, требующие наличия изображения на дисплее, запрашивают графические изображения через интерфейс программирования приложений, предлагаемый уровнем графического интерфейса 150 (например, Microsoft Windows GDI в одном из вариантов реализации изобретения) который, в свою очередь, преобразует запрашиваемые графические изображения в графические команды и посылает их на драйвер 154 видеоадаптера в уровне 152 драйвера устройства. Как показано в варианте реализации изобретения (см. фиг.1), драйвер 154 видеоадаптера резервирует и поддерживает структуру 156 пространственных данных, именуемую в дальнейшем структурой данных "передаваемого битового массива", которая отслеживает потенциально измененные области буфера 142 кадров видеоадаптера 140. Дополнительные сведения о реализации и использовании структур данных передаваемого битового массива будут описаны далее. Уровень 152 драйвера устройства содержит драйверы дополнительных устройств, например драйвер 158 сетевого адаптера, которые взаимодействуют с эмулируемыми устройствами в виртуальной платформе аппаратных средств 130 (например, виртуальный сетевой адаптер 138 и т.д.) так, словно такие эмулируемые устройства представляют собой действующие физические устройства платформы 102 аппаратных средств. Обычно гипервизор 124 отвечает за прием запросов от драйверов устройств в уровне 152, полученных эмулируемыми устройствами в виртуальной платформе 130, и их преобразование в соответствующие запросы о драйверах реальных устройств в уровне драйвера физического устройства гипервизора 124, который связан с реальными устройствами в платформе аппаратных средств 102.
1
[0017] Для передачи графических пользовательских интерфейсов на дисплей удаленного клиентского терминала виртуально машина 128 дополнительно содержит видеокодер 160, выполненный с возможностью взаимодействия с драйвером 154 видеоадаптера (например, через интерфейс программирования приложений) для приема данных от буфера 142 кадров для кодирования (например, сужения ширины полосы пропускания сети) и последующей их передачи в сеть через драйвер 158 сетевого адаптера (например, через виртуальный сетевой адаптер 138 и, в конечном счете, через физический сетевой адаптер 108). Видеокодер 160 резервирует и поддерживает второй буфер 162 кадров для хранения данных, полученных от буфера 142 кадров, а также его собственной структуры 164 данных передаваемого битового массива (именуемой далее структурой 164 данных передаваемого битового массива, относящейся к кодеру) для распознавания измененных областей во втором буфере 162 кадров. В одном из вариантов реализации изобретения видеокодер 160 непрерывно опрашивает драйвер 154 (например, 30 или 60 раз в секунду) для копирования изменений, произошедших в буфере 142 кадров, во второй буфер 162 кадров и передачи на удаленный клиентский терминал.
1
N
1
N
1
N
1
N
1
N
1
N
[0018] Следует отметить, что, как это понятно специалистам в данной области, различные термины, уровни и классификации, используемые для описания элементов виртуализации (фиг.1), могут быть названы по-другому без выхода за пределы их функциональных возможностей или предмета изобретения. Например, виртуальные платформы аппаратных средств 130-130 можно рассматривать как часть мониторов 166-166 виртуальных машин, которые обеспечивают поддержку виртуальной системы, необходимую для координирования операций между гипервизором 124 и соответствующей виртуальной машиной 128-128. Кроме того, виртуальные платформы 130-130 аппаратных средств можно считать независимыми от мониторов 166-166 виртуальных машин, а мониторы 166-166 виртуальных машин можно считать независимыми от гипервизора 124. В качестве примера гипервизора 124, который может быть использован в варианте реализации изобретения, может быть элемент программы VMware's ESX™, доступной для приобретения в VMware, Inc., Пало Альто, Калифорния. Кроме того, варианты реализации изобретения могут быть применены в других виртуализированных компьютерных системах, например в централизованных виртуальных машинных системах, где помимо операционной системы может быть использован гипервизор.
[0019] На фиг.2 представлена структура данных передаваемого битового массива по одному из вариантов реализации изобретения. Как в драйвере 154, так и в видеокодере 160, использована структура данных передаваемого битового массива для отслеживания измененных областей буфера 142 кадров и второго буфера 162 кадров соответственно. В варианте реализации изобретения, представленном на фиг.2, структура данных передаваемого битового массива представляет собой двумерный битовый вектор, где каждый бит (именуемый также «элементом передаваемого битового массива») в битовом векторе представляет область соответствующего буфера кадров размером N×N. Установленный бит (именуемый также "отмеченным" элементом передаваемого битового массива) в битовом векторе указывает, что по меньшей мере одно значение пиксела в соответствующей области буфера кадров размером N×N было изменено в конкретный интервал времени (например, между запросами видеокодера 160 при опросе). Например, на фиг.2 показан пиксельный блок 200 буфера кадров размером 64х64, где черными точками изображены значения пикселей, которые были изменены в конкретный интервал времени. Битовый вектор 205 размером 8х8 отображает соответствующий блок элементов передаваемого битового массива структуры данных передаваемого битового массива, где каждый бит (или элемент передаваемого битового массива) соответствует области 8х8 в пиксельном блоке 200. Установленный бит (или отмеченный элемент передаваемого битового массива) в битовом векторе 205 обозначают символом "X". Например, отмеченный элемент 210 передаваемого битового массива соответствует области 215 буфера кадров, все значения пикселей в которой были изменены в указанный интервал времени, на что указывают черные точки. На фиг.2 представлены другие отмеченные элементы передаваемого битового массива в битовом векторе 205, соответствующие областям в пиксельном блоке 200 буфера кадров, которые имеют измененные значения пикселей, изображенные черными точками. Отслеживая сходные с вектором 205, показанным на фиг.2, двумерные битовые векторы структуры данных передаваемого битового массива, можно определить области буфера кадров размером N×N, измененные в интервал времени (и пропустить области, которые не были изменены в интервал времени).
N
N
Q
Q
Q
Q
Q
Q
Q
[0020] На фиг.3 представлена вторая структура данных передаваемого битового массива по одному из вариантов реализации изобретения. В варианте реализации изобретения, который приведен на фиг.3, структура данных передаваемого битового массива представляет собой область дерева квадрантов, где каждый уровень дерева отображает битовый вектор с более высоким разрешением блоков пикселей 2×2. На фиг.3 показан пиксельный блок 300 буфера кадров размером 64×64, где черными точками изображены значения пикселей, которые были изменены в конкретный интервал времени. Блок пикселей последовательно подразделяют на все меньшие и меньшие подквадранты так, чтобы каждый измененный пиксел (например, черные точки) мог быть заключен внутри самого маленького подквадранта. В пиксельном блоке 300 самый маленький подквадрант представляет собой область пикселей 8×8, например области 305, 310 и 315. Большие подквадранты включают в себя подквадранты 16×16, например, 320 и 325, а также подквадранты 32×32, например, 330. Дерево квадрантов 335 четырехуровневой области отображает структуру данных передаваемого битового массива, которая соответствует пиксельному блоку 300 буфера кадров размером 64×64. Как видно из фиг.3, каждый уровень области дерева квадрантов 335 может представлять собой битовый вектор, биты которого соответствуют подквадранту конкретного размера в пиксельном блоке 300 с размером от 64×64 до 8×8 в зависимости от уровня битового вектора. Область узла дерева квадрантов 335, который отмечен как "X", указывает, что по меньшей мере одно значение пиксела в соответствующем подквадранте узла в пиксельном блоке 300 изменено в конкретный интервал времени (т.е. имеет черную точку). Например, узел 300 уровня 0 (уровень 64×64) области дерева квадрантов 335 представляет собой блок пикселей размером 64×64 и отмечен как "X", т.к. по меньшей мере одно значение пикселей в блоке 300 может быть изменено. В отличие от этого, узел 330 уровня 1 (уровень 32×32) области дерева квадрантов 335 представляет собой подквадрант 32×32 330 и не отмечен, т.к. не изменены никакие значения пикселей в подквадранте 330. Аналогично, узлы 320 и 325 уровня 2 (уровень 16×16) представляют собой подквадранты 16×16 320 и 325 соответственно и не отмечены, т.к. не изменены никакие значения пикселей в подквадрантах 320 и 325. Узлы 305, 310 и 315 уровня 3 (уровень 8×8) соответствуют областям 8×8 305, 310 и 315 пиксельного блока 300 соответственно и отмечены соответствующим образом. В варианте дерева квадрантов области структуры данных передаваемого битового массива, например, в варианте, представленном на фиг.3, каждый узел в самом глубоком уровне дерева квадрантов области (т.е. уровне, который соответствует самому маленькому подквадранту, например, области пикселей 8×8) представляет собой элемент передаваемого битового массива. Отслеживая вариант дерева квадрантов области структуры данных передаваемого битового массива, можно легко определить, какая из областей 8×8 (или другой подквадрант наименьшего размера) буфера кадров изменен за интервал времени. Кроме того, структура его дерева позволяет быстро пропускать подквадранты в буфере кадров больших размеров, которые не были изменены в интервал времени. Далее, следует отметить, что в варианте дерева квадрантов области структуры данных передаваемого битового массива может быть сохранена память, используемая структурой данных передаваемого битового массива, в зависимости от конкретной реализации дерева квадрантов области. Например, в то время как двумерный вариант битового вектора структуры 205 данных передаваемого битового массива (фиг.2) может расходовать 64 бита независимо от того, сколько областей 8х8 не отмечены, область дерева квадрантов 335 (фиг.3) расходует меньшее количество битов, если отмечено меньшее количество областей 8х8. Видно, что в структуре 205 данных передаваемого битового массива использовано 64 бита, в то время как в структуре 335 данных передаваемого битового массива использовано 33 бита. Следует отметить, что структура 164 данных передаваемого битового массива, относящаяся к кодеру, и структура 156 данных передаваемого битового массива, относящаяся к драйверу, могут быть реализованы с помощью разнообразных структур данных, включая приведенные на фиг.2 и 3, и что в любом конкретном варианте реализации изобретения структура 164 данных может использовать структуру, отличную от структуры 156 данных.
[0021] На фиг.4 представлена структурная схема, которая описывает операции передачи запрашиваемых графических изображений от приложения на видеоадаптер согласно одному из вариантов реализации изобретения. Хотя операции описаны со ссылкой на компоненты удаленного настольного сервера 100 (фиг.1), необходимо отметить, что любая система, которая выполнена с возможностью выполнения операций, может быть в любом порядке совместима с существующим изобретением.
[0022] Согласно варианту реализации изобретения, представленному на фиг.4, на этапе 405 приложение 400 (т.е. одно из приложений 148, работающих на гостевой операционной системе 146), может получить доступ к интерфейсу программирования приложений уровня графического интерфейса 150 (например, интерфейс GDI в Microsoft Windows) для отсылки запрашиваемых графических изображений на экран, например, обновления его графического пользовательского интерфейса в ответ на действие пользователя. На этапе 410 уровень графического интерфейса 150 через гостевую операционную систему 146 принимает запрашиваемые графические изображения и преобразовывает их в графические команды, которые могут быть распознаны драйвером 154. На этапе 415 уровень графического интерфейса 150 передает графические команды драйверу 154. На этапе 420 драйвер 154 принимает графические команды и отмечает элементы структуры 156 данных, указывая, что по меньшей мере часть значений пикселей в областях буфера 142 кадров, соответствующих отмеченным элементам структуры 156 данных, может быть обновлена в результате выполнения графических команд. В одном из вариантов реализации изобретения драйвер 154 вычисляет или иным способом определяет область внутри буфера 142 кадров, например прямоугольник минимального размера, который заключает в себе пикселы, которые могут быть обновлены в результате выполнения графических команд (именуемый также "ограничивающим прямоугольником"). Далее, драйвер 154 обеспечивает возможность распознавания и отметки всех элементов передаваемого битового массива в структуре 156 данных, соответствующих областям буфера 154 кадров, которые содержат значения пикселей определенной области. На этапе 425 драйвер 154 преобразует графические команды в определенные графические примитивы устройства, а на этапе 430 вставляет графические примитивы в буфер 144 (например, в варианте реализации изобретения, в котором буфер 144 поделен между драйвером 154 и видеоадаптером 140). Затем на этапе 435 видеоадаптер 140 может обновить буфер 142 кадров в зависимости от степени готовности к действию графических примитивов (т.е. при достижении этими графическими примитивами края буфера 144).
[0023] На фиг.5 представлена структурная схема, которая описывает операции передачи данных буфера кадров из видеоадаптера в видеокодер согласно одному из вариантов реализации изобретения. Хотя операции описаны со ссылкой на компоненты удаленного настольного сервера 100 (фиг.1), необходимо отметить, что любая система, которая выполнена с возможностью выполнения операций, может быть в любом порядке совместима с существующим изобретением.
[0024] Согласно варианту реализации изобретения, приведенному на фиг.5, видеокодер 160 представляет собой приложение, работающее под управлением гостевой операционной системе 146, которое выполняет непрерывный опрос (например, 30 или 60 раз в секунду) драйвера 154 для приема данных в буфере 154 кадров видеоадаптера 140, их кодирования и передачи в сеть (например, через драйвер 158 сетевого адаптера) для приема терминалом удаленного клиента. На этапе 500 видеокодер 160 через подпрограмму интерфейса программирования приложений, предоставленную драйвером 154, формирует запрос драйверу 154 видеоадаптера на обновление буфера кадров и пересылает ему обращение (например, указатель) к памяти второго буфера 162 кадров, для разрешения драйверу 154 непосредственного обновления второго буфера 162 кадров. На этапе 505 драйвер 154 принимает запрос на обновление буфера кадров, а на этапе 510 он просматривает структуру 156 данных для распознавания отмеченных элементов передаваемого битового массива, которые соответствуют областям буфера 142 кадров, измененным после предыдущего запроса на обновление буфера кадров от видеокодера 160 (в результате графических запросов от приложений, см. фиг.4). Если на этапе 515 будет отмечен активный элемент передаваемого битового массива, то на этапе 520 драйвер 154 запрашивает у видеоадаптера 140 соответствующую область (т.е. значения пиксела в этой области) буфера 142 кадров. На этапе 525 видеоадаптер 140 принимает запрос и пересылает драйверу 154 требуемую область буфера 142 кадров.
[0025] На этапе 530 драйвер 154 принимает требуемую область буфера 142 кадров, а на этапе 535 сравнивает значения пикселей в полученной запрашиваемой области буфера 142 кадров со значениями пикселей соответствующей области во вторичном буфере 162 кадров, которые отражают предыдущее состояние буфера 142 кадров по окончании ответного действия драйвера 154 на предыдущий запрос видеокодера 160 на обновление буфера кадров. Эта операция 535 сравнения позволяет драйверу 154 распознать возможное несоответствие, которое является результатом избыточной передачи (передачи с резервированием) приложениями графических запросов (см. фиг.4). Например, из-за отсутствия внимания к аспектам выполняемых ими функций, связанным с выбором оптимальной графики, некоторые приложения могут на этапе 405 выдавать графические запросы (фиг.4), которые избыточно обновляют весь графический пользовательский интерфейс, даже в случае фактического изменения приложением только небольшой области графического пользовательского интерфейса. Такие графические запросы приводят к отметке элементов структуры 156 данных передаваемого битового массива, относящейся к драйверу, на этапе 420 (фиг.4), даже если области отмеченных элементов передаваемого битового массива соответствующего буфера 142 кадров не должны быть обновлены новыми значениями пикселей (т.е. области соответствуют разделам графического пользовательского интерфейса, которые фактически не изменены). При наличии таких отмеченных элементов передаваемого битового массива на этапе 535 сравнения может быть показано, что области буфера 142 кадров и второго буфера 162 кадров, соответствующие отмеченным элементам передаваемого битового массива, совпадают, поскольку значения пикселей этих областей не меняются из-за неоптимизированных графических запросов приложений (на этапе 405) по завершении реакции драйвера 154 видеоадаптера на предыдущий запрос видеокодера 160 на обновление буфера кадров.
[0026] Таким образом, если этап 535 сравнения на этапе 540 указывает, что области буфера 142 кадров и второго буфера 162 кадров совпадают, то на этапе 545 драйвер 154 видеоадаптера "усекает" структуру 156 данных за счет обнуления отмеченных элементов передаваемого битового массива, чтобы указать, что никакие фактические значения пикселей в соответствующей области буфера 142 кадров не изменены после завершения видеоадаптером 154 ответных действий на предыдущий запрос видеокодера 160 на обновление буфера кадров.
[0027] На фиг.6 представлена структурная схема, которая описывает операции усечения структуры данных передаваемого битового массива согласно одному из вариантов реализации изобретения. Хотя операции описаны со ссылкой на компоненты удаленного настольного сервера 100 (фиг.1), необходимо отметить, что любая система, которая выполнена с возможностью выполнения операций, может быть в любом порядке совместима с существующим изобретением.
[0028] На этапе 600 драйвер 154 принимает графические команды от уровня интерфейса графического изображения 150, а на этапе 605 распознает ограничивающий прямоугольник в буфере 142 кадров, который охватывает все обновления значений пикселей при выполнении графических команд. На этапе 610 драйвер 154 отмечает элементы передаваемого битового массива в структуре 156 данных, которые соответствуют областям буфера 142 кадров (или участкам областей) внутри ограничивающего прямоугольника. Следует отметить, что этапы 605 - 610 соответствуют подэтапам, которые составляют часть этапа 420 (фиг.4). При приеме запроса на обновление буфера кадров от видеокодера на этапе 615 драйвер 154 видеоадаптера на этапе 620 сравнивает области буфера 142 кадров в ограничивающем прямоугольнике (на что указывают отмеченные элементы передаваемого битового массива в структуре 156 данных) с соответствующими областями во втором буфере 164 кадров (который содержит информацию о состоянии буфера 142 кадров по завершении ответного действия драйвера 154 на запрос на обновление буфера кадров). На этапе 625 драйвер 154 видеоадаптера помещает на видеокодере 160 усеченную структуру данных передаваемого битового массива, только отмеченные элементы которой соответствуют сравниваемым на этапе 620 областям, где фактически имеются различия. На этапе 630 драйвер 154 видеоадаптера обнуляет структуру 154 данных всех отмеченных элементов. Следует отметить, что этапы 615-630 обычно соответствуют этапам 505, 535, 560 и 565 (фиг.5) соответственно. На этапе 635 видеокодер 160 принимает усеченную структуру данных передаваемого битового массива, а на этапе 640 передает отображаемые данные в области, которые соответствуют отмеченным элементам в усеченной структуре данных передаваемого битового массива.
[0029] На фиг.7 приведен наглядный пример усечения структуры данных передаваемого битового массива и представлен пиксельный блок 700 буфера 142 кадров 142 размером 88×72. Каждый подразделенный блок, например 705, представляет собой область пикселей размером 8×8, которая соответствует элементу передаваемого битового массива в структуре 156 данных. Как видно из фиг.7, на этапе 600 (фиг.6) драйвер 154 видеоадаптера принимает графические команды, относящиеся к графическим запросам приложения для изображения улыбающегося лица (смайлика) (см. изображение в пиксельном блоке 700). Однако графические команды посылают нечеткий запрос об обновлении изображения пиксельного блока 700 вместо того, чтобы просто запросить изображение конкретных пикселей непосредственно самого смайлика. Таким образом, каждый из элементов передаваемого битового массива в соответствующем блоке 710 передаваемого битового массива размером 11×9 структуры 156 данных передаваемого битового массива, относящейся к драйверу, отмечен драйвером 154 видеоадаптера как при выполнении этапа 610, указанного на фиг.6 (см. отмеченный элемент 715 передаваемого битового массива). Однако при приеме драйвером 154 запроса видеокодера 160 на обновление буфера кадров, как при выполнении этапа 615, драйвер 154 обеспечивает усечение блока 710 передаваемого битового массива, создавая таким образом блок 720 передаваемого битового массива, и воспроизводит на видеокодере 160 блок 710 при выполнении этапов 620 и 625, например, путем обнуления элементов передаваемого битового массива, таких как неотмеченного элемента 725 передаваемого битового массива, соответствующие области которого в буфере 142 кадров фактически не изменены (т.е. не содержат обновленных пикселей смайликов), как при выполнении этапа 545 (фиг.5).
[0030] Однако если при выполнении этапа 540 (см. фиг.5) операция сравнения 535 указывает на тот факт, что области буфера 142 кадров и второго буфера 162 кадров отличны (т.е. фактические значения пикселей в области буфера 142 кадров были изменены в результате графических запросов приложений на этапе 405 по завершении ответного действия на предыдущий запрос видеокодера 160 на обновление буфера кадров), то на этапе 550 драйвер 154 копирует значения пикселей в области буфера 142 кадров в соответствующую область второго буфера 162 кадров для точного воспроизведения во втором буфере 162 кадров измененных значений пикселей в области буфера 142 кадров. Если на этапе 555 драйвер 154 видеоадаптера не закончит просматривать структуру 156 данных, то процесс будет возвращен к выполнению этапа 510. Если на этапе 555 драйвер 154 видеоадаптера завершает просматривание структуры 156 данных, то на этапе 560 драйвер 154 обеспечивает копирование на видеокодер 160 структуры 156 данных, которую именуют структурой 164 данных передаваемого битового массива, относящейся к кодеру. В случае если на этапе 545 отмеченные элементы передаваемого битового массива в структуре 156 данных обнулены, то структура 164 данных отражает более оптимизированное представление областей во втором буфере 162 кадров, которые имеют фактические измененные значения пикселей. На этапе 565 все отмеченные элементы передаваемого битового массива в структуре 156 данных могут быть обнулены драйвером 154 видеоадаптера при подготовке к приему от видеокодера 160 последующего запроса на обновление буфера кадров, а видеокодеру 160 может быть указано на завершение его ответного действия на запрос обновления буфера кадров, посланный на этапе 500.
[0031] После завершения ответного действия драйвера 154 на запрос обновления буфера кадров, посланный видеокодером 160 на этапе 500, второй буфер 162 кадров может содержать все измененные значения пикселей, полученные в результате запросов графических изображений у приложений (на этапе 405, показанном на фиг.4), т.к. завершенное ответное действие на предшествующий запрос видеокодера 160 на обновление буфера кадров и структура 164 данных содержат отмеченные элементы передаваемого битового массива растровых изображений, которые указывают, какие из областей внутри второго буфера 162 кадров содержат такие измененные значения пикселей. При наличии такой информации на этапе 570 структура 164 данных может быть просмотрена видеокодером 160 с точки зрения отмеченных элементов передаваемого битового массива, а извлечены могут быть только те области во втором буфере 162 кадров, которые соответствуют таким отмеченным элементам передаваемого битового массива при кодировании и передаче на дисплей удаленного клиента.
1
[0032] Хотя на фиг.1 приведен вариант изобретения, в котором видеокодер 160 реализован внутри виртуальной машины 1281, следует отметить, что в других вариантах изобретения видеокодер 160 может быть реализован в других компонентах удаленного настольного сервера 100, например внутри монитора виртуальной машины 1661 или другом месте в гипервизоре 124. Аналогично, хотя на фиг.1 приведен вариант изобретения, в котором видеокодер 160 и драйвер 154 могут работать в виртуальной машине 128, связанной с виртуальным видеоадаптером 140 в гипервизоре 124, следует отметить, что эти компоненты могут быть использованы в любой архитектуре удаленного настольного сервера, включая архитектуру вычислительной системы на базе невиртуальных машин. Кроме того, вместо использования видеокодера 160 и виртуального видеоадаптера 140 в качестве компонентов программного обеспечения сервера альтернативные варианты реализации изобретения могут использовать в каждом или любом из них компоненты аппаратных средств ЭВМ. Следует также отметить, что альтернативные варианты изобретения могут не нуждаться в каких-либо виртуальных видеоадаптерах. Вместо этого в таких альтернативных вариантах реализации изобретения, например, драйвер 154 может резервировать и управлять как буфером 142 кадров, так и непосредственно буфером 144. Точно так же в альтернативных вариантах реализации изобретения видеоадаптер 140 может не иметь буфера FIFO, например буфера 140 FIFO, но может обрабатывать входные графические примитивы сразу же после приема. Следует также отметить, что другие описанные здесь разнообразные структуры данных и буферы могут быть зарезервированы и поддержаны компонентами других систем. Например, вместо резервирования и поддержки видеокодером 160 второго буфера 162 кадров и передачи ссылки на ячейку памяти драйверу 154 (см. этап 500 фиг.5) драйвер 154 может резервировать и поддерживать второй буфер 162 кадров (а также структуру 164 данных) и обеспечить доступ к ссылке на ячейку памяти видеокодера 160 в альтернативном варианте. Кроме того, следует отметить, что некоторые выполняемые драйвером 154 функции и операции могут быть реализованы в специальном расширении или компоненте ранее существовавшего или стандартного драйвера видеоадаптера (то есть, видеокодер 160 может быть связан с таким специальным расширением драйвера видеоадаптера, а не с самим драйвером). Следует отметить, что в альтернативных вариантах количество и типы данных, которыми могут обмениваться компоненты системы, могут быть изменены, а также могут быть использованы различные методы оптимизации. Например, на этапе 560 (фиг.5) вместо копирования и предоставления всей структуры 156 данных в качестве структуры 164 данных в альтернативном варианте реализации изобретения видеокодеру 160 могут быть предоставлены только соответствующие части структуры 156 данных или же использована альтернативная структура данных для предоставления видеокодеру 160 таких соответствующих частей структуры 156 данных. Точно так же следует отметить, что для оптимизации обучающих частей может быть использован способ кэширования. Драйвер 154 может поддерживать промежуточный кэш буфера 144 для снижения издержек обработки данных (вычисления), например, на этапе 420 (фиг.4). Точно так же вместо (или в дополнение к) драйвера 154, который выполняет непрерывный опрос, в альтернативных вариантах реализации изобретения видеокодером 160 могут быть приняты обратные вызовы или сигналы прерывания, выдаваемые драйвером 154, при обновлении буфером 142 кадров своего содержания и/или дополнительном приеме запросов отдаленного клиента на обновление буфера кадров.
[0033] В различных рассмотренных здесь вариантах реализации изобретения могут быть использованы различные реализуемые при помощи компьютера операции с данными, хранящимися в вычислительных системах. Например, для выполнения этих операций может быть необходима физическая обработка физических величин, которые, обычно, хотя и не обязательно, могут принимать вид электрических или магнитных сигналов, при этом эти сигналы или их представления допускают хранение, передачу, группирование, сравнивание и другие способы обработки. Кроме того, к видам обработки, о которых идет речь, могут быть отнесены, например, создание, распознавание, определение или сравнение. Любые рассмотренные здесь операции, которые составляют часть одного или более вариантов реализации изобретения, могут представлять собой применимые машинные операции. Кроме того, один или более вариантов реализации изобретения также относятся к устройству или аппаратуре для выполнения этих операций. Устройство может быть разработано специально для конкретных требуемых целей или может представлять собой универсальный компьютер, избирательно активированный или сконфигурированный компьютерной программой, хранящейся в компьютере. В частности, для выполнения необходимых операций, могут быть использованы различные универсальные машины, в которых применены компьютерные программы, написанные в соответствии с изложенным здесь, или наиболее удобным может оказаться создание специализированного устройства.
[0034] Различные рассмотренные здесь варианты реализации изобретения могут быть использованы с компьютерными системами других конфигураций, включая портативные устройства, микропроцессорные системы, микропроцессорную бытовую электронику или бытовую электронику с программным управлением, миникомпьютеры, универсальные ЭВМ и т.п.
[0035] Один или более вариантов настоящего изобретения могут быть реализованы в виде по меньшей мере одной компьютерной программы, либо в виде по меньшей мере одного программного модуля, включенного по меньшей мере в один машиночитаемый носитель данных. Термин машиночитаемый носитель данных относится к любому устройству накопления, в котором могут храниться данные, вводимые впоследствии в машиночитаемый носитель данных, созданный на основе любой существующей или впоследствии разработанной технологии реализации компьютерных программ способом, который может обеспечить считывание компьютером. Примерами машиночитаемых носителей данных могут служить накопитель на жестких дисках, сетевая система хранения данных (NAS), постоянное запоминающее устройство, запоминающее устройство с произвольной выборкой (например, флэш-память), дисковод для компакт-дисков (CD-ROM), CD-R или CD-RW диск, DVD (цифровой универсальный диск), магнитная лента и другие оптические и неоптические устройства хранения данных. Машиночитаемый носитель данных может также храниться в компьютерной системе, связанной с сетью таким образом, что компьютерная программа может быть сохранена и выполнена распределенным способом.
[0036] Хотя один или более вариантов реализации настоящего изобретения описаны более подробно для лучшего понимания, однако очевидно, что в пределах объема притязаний могут быть сделаны некоторые изменения и модификации. Соответственно предложенные варианты реализации изобретения нужно рассматривать как иллюстративные, а не ограничительные, кроме того, объем притязаний не должен быть ограничен приведенными здесь деталями, но может быть изменен в пределах формулы изобретения. Ни формула, ни устройства и операции не подразумевают никакого конкретного порядка работы, если это явно не указано в формуле.
[0037] Кроме того, несмотря на тот факт, что рассмотренные здесь способы виртуализации, как правило, предполагают, что виртуальные машины представляют собой интерфейсы, совместимые с конкретной системой аппаратных средств, специалистам в данной области понятно, что описанные способы могут быть использованы в сочетании с виртуализациями, не соответствующими непосредственно никакой конкретной системе аппаратных средств. Могут быть предусмотрены системы виртуализации, соответствующие различным вариантам, реализованным в виде основных или неосновных вариантов, либо в виде вариантов, которые стремятся стереть различия между этими двумя. Кроме того, в аппаратных средствах могут быть полностью или частично осуществлены различные операции виртуализации. Например, в аппаратной реализации может быть использована справочная таблица модификации запросов на обращение к памяти для защиты данных, не содержащихся на диске.
[0038] Независимо от степени виртуализации возможно большое количество изменений, модификаций, дополнений и усовершенствований. Следовательно, программное обеспечение виртуализации может содержать элементы главной вычислительной машины, пульта управления или гостевой операционной системы, выполняющей функции виртуализации. Множество примеров может быть предусмотрено для компонентов, операций или структур, приведенных здесь в качестве одного примера. И, наконец, границы между различными компонентами, операциями и устройствами хранения данных несколько произвольны, поэтому отдельные операции описаны в контексте конкретных иллюстративных конфигураций. Другие распределения функциональных возможностей могут подпасть под объем притязаний изобретения. Как правило, структуры и функциональные возможности, представленные в конфигурациях, приведенных в качестве примера, в виде отдельных компонентов, могут быть выполнены как комбинированные структура или компонент. Аналогично, структуры и функциональные возможности, представленные в виде одного компонента, могут быть выполнены как отдельные компоненты. Эти и другие изменения, модификации, дополнения и усовершенствования могут подпасть под область притязаний прилагаемой формулы изобретения.