СПОСОБ УПРАВЛЕНИЯ ДОСТУПОМ К МНОЖЕСТВУ ВЫЧИСЛИТЕЛЬНЫХ РЕСУРСОВ
METHOD OF CONTROLLING ACCESS TO MULTIPLE COMPUTER RESOURCES

Способ управления доступом к множеству вычислительных ресурсов
ОБЛАСТЬ ТЕХНИКИ
[0001] Это изобретение относится к иерархической системе объектов в объектно-ориентированной вычислительной среде и, в частности, к системам и способам для управления вычислительными ресурсами, необходимыми системе объектов.
УРОВЕНЬ ТЕХНИКИ
[0002] Многие видеоигры и графические процессоры требуют повышенного объема вычислительных ресурсов. Например, сложная видеоигра может потребовать использования выделенного графического процессора, физического процессора и/или повышенного объема оперативного запоминающего устройства. Большое число видеоигр и графических процессоров разрабатываются в объектно-ориентированных языках программирования, например, в С++, Java либо Python. Одно из преимуществ объектно-ориентированных языков программирования заключается в том, что они предоставляют программисту возможность задавать конкретные типы данных в программе и определять процедуры, которым разрешено осуществлять действия над этими данными.
[0003] Проблемой, которая возникает в сложно-ориентированных приложениях, является совместное использование вычислительных ресурсов, например, графических процессоров, пользовательских интерфейсов и запоминающих устройств между объектами. Например, видеоигра может включать иерархию из сотен либо тысяч объектов, описывающих сложную среду, состоящую из многочисленных различных миров, уровней, персонажей и фонов. Кроме того, каждый мир, уровень, персонаж и фон могут быть заданы с помощью множества объектов, которые определяют формы, шаблоны, текстуры, цвета, варианты поведения либо любой другой аспект объекта более высокого уровня. Визуализация уровней (либо частей уровней) и персонажей может потребовать значительной производительности от графического процессора. Кроме того, так как решение относительно того, какие персонажи либо части уровня должны быть визуализированы, часто зависит от ввода данных пользователем (например, команда перемещения персонажа в определенное место), логика видеоигры может конфигурироваться для визуализации уровней и/или персонажей, которые находятся поблизости от персонажа до приема ввода данных, которые приведут к отображению частей уровня и/или персонажей. Подобные каскадные подходы улучшают общий игровой процесс, но увеличивают требования, налагаемые на вычислительные ресурсы. Кроме того, обработка ввода данных пользователем через устройство с пользовательским интерфейсом и того, какие конкретно устройства с пользовательским интерфейсом должны принимать ввод данных, может зависеть от состояния приложения.
[0004] Из уровня техники известны способы подобных каскадных подходов. Так, например, патент США 8130238, который является наиболее близким аналогом заявленного изобретения, описывает способ создания шаблонов для изображений для последующего использования изображений. Согласно патенту США 8130238, система хранит первое дерево объектов, описывающее графическую сцену в памяти, и создает второе дерево объектов, основанное на первом дереве объектов. Система оптимизирует второе дерево объектов для использования графическим обрабатывающим узлом с целью формирования графической сцены. Далее, система получает сигналы одного или более изменений, связанных с первым деревом объектов, осуществляет одно или более изменений первого дерева объектов и создает совместную команду для соответствующих изменений второго дерева объектов. Однако в данном способе первое дерево объектов и второе дерево объектов являются взаимосвязанными в отношении изменений, то есть изменение первого приводит к изменению второго. Постоянное отслеживание изменений объектов в реальном времени и последующее изменение объектов, соответствующих объектам, подвергнутым изменениям, в сильной степени влияет на загруженность вычислительных устройств и запоминающих памяти.
РАСКРЫТИЕ ИЗОБРЕТЕНИЯ
[0005] Задачей настоящего изобретения является упрощение процесса совместного управления вычислительными ресурсами в объектно-ориентированных приложениях, а также снижение нагрузки на вычислительные устройства, такие как вычислительные процессоры, и запоминающие устройства.
[0006] Соответственно, настоящее изобретение предусматривает систему и методики для управления вычислительными ресурсами в объектно-ориентированном приложении. В качестве используемого в материалах настоящей заявки термин «объект» может упоминаться как экземпляр класса, который определяет тип либо типы данных и/или процедуры, которые работают над данными. Методики включают поддержку двух (либо более) отдельных иерархий объектов, например иерархию исходных объектов и иерархию объектов в памяти. Иерархия исходных объектов содержит объекты, которым назначаются один либо более вычислительных ресурсов, т.е. объекты, которым разрешено использование вычислительных ресурсов. Иерархия объектов в памяти содержит объекты, которым приписаны, но не назначены какие-либо вычислительные ресурсы, т.е. объекты, которым временно запрещен доступ к вычислительным ресурсам. Система может включать контроллер, который управляет иерархией и назначает (либо запрашивает назначение) вычислительных ресурсов для объектов. Так как упоминается конкретный объект, то контроллер может перемещать объект из иерархии объектов в памяти в иерархию исходных объектов и назначать вычислительные ресурсы, которые использует объект, например, графический процессор и пользовательский интерфейс. Когда процесс, упоминающий конкретный объект, завершен, то контроллер отменяет распределение вычислительных ресурсов и перемещает объект в иерархию памяти.
[0007] Технический результат, достигаемый настоящим изобретением, состоит в ускорении обработки отдельных иерархий объектов при управлении вычислительными ресурсами.
[0008] Один аспект изобретения предусматривает способ управления доступом ко множеству вычислительных ресурсов. Способ включает в себя этап, на котором подвергают обработке иерархию объектов в памяти в конечном запоминающем устройстве, включая корневой объект в памяти и один либо более объектов-потомков корневого объекта в памяти. Иерархия объекта в памяти включает объекты, подвергнутые обработке, которым временно запрещено использование вычислительных ресурсов. Способ дополнительно включает этап, на котором подвергают обработке иерархию исходных объектов в конечном запоминающем устройстве, включая исходный корневой объект. Иерархия исходных объектов включает объекты, подвергнутые обработке, которым разрешено использование вычислительных ресурсов. Способ также включает этап, на котором в устройстве обработки принимают запрос для выполнения процесса, соответствующего конкретному объекту в иерархии объектов в памяти, и перемещают конкретный объект в устройстве обработки в иерархию исходных объектов. Способ дополнительно включает этап, на котором в устройстве обработки назначают вычислительный ресурс, соответствующий процессу для конкретного объекта, таким образом разрешая использование вычислительного ресурса конкретным объектом в памяти.
[0009] Варианты осуществления изобретения могут включать один либо более из следующих признаков. В некоторых вариантах осуществления способ дополнительно включает этап, на котором завершают выполнение запрошенного процесса, отменяют назначение вычислительного ресурса для конкретного объекта и удаляют конкретный объект в памяти из иерархии исходных объектов.
[0010] Согласно некоторым вариантам осуществления удаление конкретного объекта в памяти из иерархии исходных объектов включает удаление всех объектов-потомков конкретного объекта из иерархии исходных объектов, удаление любых объектов-предков, которые не требуют вычислительных ресурсов и не имеют других объектов-потомков, которые потребуют вычислительных ресурсов, из иерархии исходных объектов и добавление конкретного объекта, объектов-потомков и объектов-предков к иерархии объектов в памяти.
[0011] Согласно некоторым вариантам осуществления перемещение конкретного объекта включает копирование конкретного объекта и любых объектов-предков конкретного объекта в иерархию исходных объектов.
[0012] Согласно некоторым вариантам осуществления конкретный объект и объекты-предки останутся в иерархии объектов в памяти после копирования.
[0013] Согласно некоторым вариантам осуществления перемещение конкретного объекта включает удаление конкретного объекта из иерархии объектов в памяти, удаление любых объектов-потомков конкретного объекта из иерархии объектов в памяти, удаление любых объектов-предков конкретного объекта из иерархии объектов в памяти, удаление любых объектов-потомков объектов-предков из иерархии объектов в памяти и добавление конкретного объекта, объектов-потомков конкретного объекта, объектов-предков и объектов-потомков объектов-предков к иерархии исходных объектов.
[0014] Согласно некоторым вариантам осуществления назначение вычислительного ресурса включает определение вычислительного ресурса, необходимого для осуществления операции, заданной в конкретном объекте, и запрос назначения вычислительного ресурса на основе определения.
[0015] Согласно некоторым вариантам осуществления способ дополнительно включает этап, на котором запрашивают отмену назначения вычислительного ресурса при завершении выполнения операции, заданной в конкретном объекте.
[0016] Согласно некоторым вариантам осуществления вычислительные ресурсы содержит графический процессор.
[0017] Согласно некоторым вариантам осуществления исходный корневой объект и корневой объект в памяти заданы в статической библиотеке.
[0018] Один аспект изобретения предусматривает компьютерный программный продукт, кодируемый в конечном машиночитаемом носителе данных, содержащий инструкции, которые при выполнении устройством обработки вызывают выполнение устройством обработки операций для управления вычислительными ресурсами вычислительного устройства. Операции включает в себя этап обработки иерархии объектов памяти в запоминающем устройстве, включая корневой объект в памяти и один либо более объектов-потомков корневого объекта в памяти. Иерархия объектов в памяти включает объекты, подвергнутые обработке, которым временно запрещено использование вычислительных ресурсов. Операции дополнительно включают этап, на котором подвергают обработке иерархию исходных объектов в запоминающем устройстве, включая исходный корневой объект. Иерархия исходных объектов включает объекты, подвергнутые обработке, которым разрешено использование вычислительных ресурсов. Операции также включают прием запроса для выполнения процесса, соответствующего конкретному объекту, в иерархии объектов в памяти и перемещение конкретного объекта в иерархию исходных объектов. Операции дополнительно включает назначение вычислительных ресурсов, соответствующих процессу, для конкретного объекта, таким образом, разрешая использование вычислительного ресурса конкретным объектом памяти.
[0019] Согласно некоторым вариантам осуществления операции дополнительно включают завершение выполнения запрошенного процесса, отмену распределения вычислительного ресурса для конкретного объекта и удаление конкретного объекта памяти из иерархии исходных объектов.
[0020] Согласно некоторым вариантам осуществления удаление конкретного объекта в памяти из иерархии исходных объектов включает удаление всех объектов-потомков конкретного объекта из иерархии исходных объектов, удаление любых объектов-предков, которые не требуют вычислительных ресурсов и не имеют других объектов-потомков, которые потребуют вычислительных ресурсов, из иерархии исходных объектов и добавление конкретного объекта, объектов-потомков и объектов-предков к иерархии объектов в памяти.
[0021] Согласно некоторым вариантам осуществления перемещение конкретного объекта включает копирование конкретного объекта и любых объектов-предков конкретного объекта в иерархию исходных объектов.
[0022] Согласно некоторым вариантам осуществления конкретный объект и объекты-предки останутся в иерархии объектов в памяти после копирования.
[0023] Согласно вариантам осуществления перемещение конкретного объекта включает удаление конкретного объекта из иерархии объектов в памяти, удаление любых объектов-потомков конкретного объекта из иерархии объектов в памяти, удаление любых объектов-предков конкретного объекта из иерархии объектов в памяти, удаление любых объектов-потомков объектов-предков из иерархии объектов в памяти и добавление конкретного объекта, объектов-потомков конкретного объекта, объектов-предков и объектов-потомков объектов-предков к иерархии исходных объектов.
[0024] Согласно некоторым вариантам осуществления назначение вычислительного ресурса включает определение вычислительного ресурса, необходимого для осуществления операции, заданной в конкретном объекте, и запрос назначения вычислительного ресурса на основе определения.
[0025] Согласно некоторым вариантам осуществления операции дополнительно включают запрос отмены назначения вычислительного ресурса при завершении выполнения операции, заданной в конкретном объекте.
[0026] Согласно некоторым вариантам осуществления вычислительные ресурсы содержат графический процессор.
[0027] Согласно некоторым вариантам осуществления исходный корневой объект и корневой объект в памяти заданы в статической библиотеке.
[0028] Один аспект изобретения предусматривает способ управления доступом ко множеству вычислительных ресурсов. Способ включает этап, на котором подвергают обработке иерархию объектов в памяти в конечном запоминающем устройстве, включая корневой объект в памяти и один либо более объектов-потомков корневого объекта в памяти. Иерархия объектов в памяти включает объекты, подвергнутые обработке, которым временно запрещено использование вычислительных ресурсов. Способ также дополнительно включает этап, на котором подвергают обработке иерархию исходных объектов в конечном запоминающем устройстве, включая исходный корневой объект. Иерархия исходных объектов включает объекты, подвергнутые обработке, которым разрешено использование вычислительных ресурсов. Способ также включает этапы, на которых в устройство обработки принимают запрос для выполнения процесса, соответствующего конкретному объекту, в иерархии объектов в памяти и определяют в устройстве обработки вычислительный ресурс, необходимый для осуществления операции, заданной в конкретном объекте. Способ также включает этап, на котором в устройство обработки перемещают конкретный объект в иерархию исходных объектов и назначают в устройстве обработки вычислительный ресурс для конкретного объекта, таким образом, разрешая использование вычислительного ресурса конкретным объектом в памяти. Способ дополнительно включает этап, на котором в устройстве обработки завершают выполнение запрошенного процесса, отменяют в устройстве обработки назначение вычислительного ресурса для конкретного объекта и удаляют в устройстве обработки конкретный объект в памяти из иерархии исходных объектов.
[0029] Подробности одного либо более вариантов осуществления изобретения изложены в прилагаемых чертежах и описании ниже. Другие аспекты, признаки и преимущества станут очевидны из описания и чертежей и из формулы изобретения.
ОПИСАНИЕ ЧЕРТЕЖЕЙ
[0030] Фиг.1A является схематичным представлением отображения примерного набора вычислительных ресурсов вычислительного устройства.
[0031] Фиг.1B является схематичным представлением, иллюстрирующим примерную иерархию компонентов вычислительного устройства фиг.1A.
[0032] Фиг.1C является схематичным представлением компьютера.
[0033] Фиг.2 является схематичным представлением, иллюстрирующим примерную систему для управления назначением набора вычислительных ресурсов, использующих иерархию исходных объектов и иерархию объектов в памяти.
[0034] Фиг.3 является схематичным представлением примерной структуры операций для способа управления назначением вычислительных ресурсов.
[0035] Фиг.4 является схематичным представлением, иллюстрирующим примерный исходный объект и иерархии объектов в памяти при их обработке.
[0036] Фиг.5A и 5B являются схематичными представлениями, иллюстрирующими примеры перемещения конкретного объекта в иерархию объектов в памяти.
[0037] Фиг.6A и 6B являются схематичными представлениями, иллюстрирующими примеры удаления конкретного объекта из иерархии объектов в памяти.
[0038] Аналогичные символы ссылок на различных чертежах обозначают одинаковые элементы.
ПОДРОБНОЕ ОПИСАНИЕ
[0039] Со ссылкой на фиг.1A-1C в некоторых вариантах осуществления вычислительное устройство 10 включает набор вычислительных ресурсов 15, который может включать устройство обработки 20, запоминающее устройство 30, пользовательский интерфейс 40, устройство 50 связи, графический процессор 60 и устройство хранения данных 70. Набор вычислительных ресурсов 15 предоставлен лишь в качестве примера и может содержать дополнительные и/или альтернативные ресурсы. Примеры вычислительных устройств 10 включают, но не ограничиваясь, стационарными вычислительными устройствами (например, персональные компьютеры), устройствами для видеоигр, портативными устройствами для видеоигр, мобильными вычислительными устройствами (например, смартфоны и планшетные компьютеры), портативными вычислительными устройствами и серверными вычислительными устройствами.
[0040] Иерархия 100 для вычислительного устройства 10 может включать уровень аппаратного обеспечения 110 для аппаратного обеспечения 112, уровень операционной системы 120 для операционной системы 122 и прикладной уровень 130 для приложений 132. Уровень аппаратного обеспечения 110 представляет собой физические компоненты аппаратного обеспечения 112 вычислительной среды. Например, уровень аппаратного обеспечения 110 может включать вычислительные ресурсы 15. Компоненты аппаратного обеспечения 112 сконфигурированы для приема инструкций и для выполнения и/или для поддержки выполнения инструкций.
[0041] Устройство обработки 20 выполняет операционную систему 122 вычислительного устройства 10. В качестве используемого в материалах настоящей заявки термин «устройство обработки» может включать один либо более процессоров и конечный машиночитаемый носитель, хранящий машиночитаемые инструкции, которые выполняются одним либо более процессором. В вариантах осуществления с двумя либо более процессорами два либо более процессора могут работать автономным либо распределенным способом. В качестве рассмотренного дополнительно ниже, устройство обработки 20 может выполнять операционную систему 122 вычислительного устройства 10 и высокоуровневые приложения 132.
[0042] Запоминающее устройство 30 является конечным машиночитаемым носителем вычислительного устройства 10. Хотя отображено одно запоминающее устройство 30, термин «запоминающее устройство» может включать один либо более машиночитаемых носителей. Примеры запоминающих устройств 30 включают, но не ограничиваясь, постоянным запоминающим устройством (ROM), динамическим оперативным запоминающим устройством (dRAM) и/или статическим оперативным запоминающим устройством (sRAM). Запоминающее устройство 30 может сохранять данные и иерархии исходных объектов 230, 240. Кроме того, объекты 270, расположенные в иерархии исходных объектов 240, могут предоставлять доступ запоминающему устройству 30.
[0043] Пользовательский интерфейс 40 принимает ввод от пользователя и/или предусматривает вывод для пользователя. Термин «пользовательский интерфейс» включает любое устройство, которое сконфигурировано для приема ввода от и/или для предоставления вывода пользователю. Примеры пользовательских интерфейсов 40 включают, но не ограничиваясь, клавиатурой, манипулятором типа «мышь», сенсорной панелью, устройством отображения, сенсорным экраном, динамиком и микрофоном. Хотя отображен один пользовательский интерфейс 40, термин «пользовательский интерфейс» может включать один либо более пользовательских интерфейсов 40. Устройство обработки 20 в сочетании с операционной системой вычислительного устройства 10, может назначать пользовательский интерфейс 40 для одного либо более приложений, таким образом, предоставляя приложению доступ к пользовательскому интерфейсу 40.
[0044] Устройство связи 50 осуществляет взаимодействие с одним либо более удаленных устройств (не показано). Тип связи, осуществляемой с помощью устройства связи 50, может быть проводной связью и/или беспроводной связью. Примеры устройства связи 50 включают, но не ограничиваясь, приемопередатчиком, сконфигурированным для осуществления связи, используя беспроводной стандарт IEEE 802.11, приемопередатчиком, сконфигурированным для осуществления связи, использующей любые стандарт мобильной связи для мобильных телефонов (например, 3G либо 4G), порт связи Ethernet, приемопередатчик Bluetooth и порт универсальной последовательной шины (USB). Хотя проиллюстрировано одно устройство связи 50, термин «устройство связи» может включать одно либо более устройств связи 50. Устройство обработки 20 в сочетании с операционной системой 122 вычислительного устройства 10 может назначать устройству связи 50 одно либо более приложений 132, таким образом, предоставляя приложению 132 доступ к устройству связи 50.
[0045] Графический процессор 60 (GPU) является специализированным устройством обработки, сконфигурированным для визуализации изображений и сохранения изображений в запоминающем устройстве 30. В частности, GPU 50 может сохранять визуализированные изображения в буфере кадров. GPU 60 предоставляет механизм для устройства обработки 20 для разгрузки от вычислительно сложных и дорогих задач по визуализации. Устройство обработки 20 в сочетании с операционной системой вычислительного устройства 10, может назначать GPU 60 для одного либо более объектов, таким образом, предоставляя объектам доступ к GPU 60.
[0046] Запоминающее устройство 70 является конечным машиночитаемым носителем вычислительного устройства 10. Хотя отображено одно запоминающее устройство 70, термин «запоминающее устройство» может включать один либо более машиночитаемых носителей. Примеры запоминающих устройств 70 включают, но не ограничиваясь, накопителями на жестких дисках, флеш-накопителями, оптическими носителями хранения данных, магнитными носителями хранения данных. Запоминающее устройство 70 сохраняет приложения и данные, относящиеся к приложениям. Например, запоминающее устройство 70 сохраняет объектные файлы, которые включены в приложение.
[0047] Набор вычислительных ресурсов 15, описанный выше, предоставлен в качестве примера. Вычислительное устройство 10 может иметь дополнительные вычислительные ресурсы 15 либо меньше вычислительных ресурсов 15. Рассматриваются разновидности вычислительного устройства 10, которые находятся в объеме изобретения.
[0048] Ссылаясь на фиг.1B, уровнем операционной системы 120 является интерфейс между уровнем аппаратного обеспечения 110 и программные приложения более высокого уровня 132 в прикладном уровне 130. Операционная система 122 при выполнении приложениями 132 более высокого уровня может загружать машиночитаемые инструкции, реализующие приложение более высокого уровня 132 и данные, упоминаемые приложением более высокого уровня 132. Операционная система 122 может также назначать ресурсы, например, устройство обработки 20, пользовательский интерфейс 40 и GPU 60 для приложения более высокого уровня 132.
[0049] Ссылаясь также на фиг.1C, операционная система 122, выполняющаяся на устройстве обработки 20, может быть разделять виртуальную память 32 на пространство ядра 34 и пользовательское пространство 36. Пространство ядра 34 резервируется для выполнения ядром операционной системы 122, расширениями ядра и дополнительно драйверами устройств. Пользовательское пространство 38 является областью запоминающего устройства, где работают все приложения 132 в пользовательском режиме и это запоминающее устройство может быть разгружено при необходимости. Ядро 35 может быть мостом между приложением(и) 132 и фактической обработкой данных, выполняемой на аппаратном уровне в процессоре 20. Более того, обязанности ядра могут включать управление системными ресурсами (например, взаимодействием между аппаратными и программными компонентами). Устройство обработки 20 может выполнять процессорную службу 22, которая взаимодействует с ядром 35. В качестве основного компонента операционной системы 122 ядро 35 может предоставлять уровень абстракции самого низкого уровня для аппаратных ресурсов 112 (например, процессор(ы) 20 и устройства ввода-вывода), которым прикладное программное обеспечение должно управлять для осуществления своей функции. Ядро 35 может делать эти средства доступными для прикладных процессов с помощью взаимодействий между процессами и системных вызовов. Контроллер запоминающего устройства 38 может управлять запоминающим устройством 30. В некоторых примерах контроллер запоминающего устройства 38 принимает виртуальный адрес и транслирует этот адрес в физический адрес в запоминающем устройстве 30.
[0050] Операционная система 122 выполняет программные приложения 132, постоянно находящиеся в прикладном уровне 130. Предполагая, что приложение 132 является объектно-ориентированной программой, операционная система 122 загружает и подвергает обработке один либо более объектов в пользовательском пространстве 36 запоминающего устройства 30. Операционная система 122 может извлекать один либо более объектов из запоминающего устройства 70. Если объект подвергается обработке в пользовательском пространстве, операционная система 122 может назначать один либо более вычислительных ресурсов 15 объекту. Вычислительные ресурсы 15, которые назначаются объекту, зависят от данных и процедур, заданных в объекте. Если вычислительный ресурс 15 назначен объекту, то объект может использовать назначенный ресурс для осуществления предназначенной функции.
[0051] Ссылаясь на фиг.2, в некоторых вариантах осуществления система 200 для управления набором вычислительных ресурсов 15 включает операционную систему 122, клиента 210, контроллер 220, иерархию объектов в памяти 230 и иерархию исходных объектов 240. Вычислительные ресурсы 15 могут поддерживать операционную систему 122 и приложения более высокого уровня 132, включая клиент 210, контроллер 220 и иерархию исходных объектов 240. В некоторых вариантах осуществления клиент 210 и контроллер 220 реализованы в качестве машиночитаемых инструкций, которые являются частью статической библиотеки, которая может быть вызвана и включена в код приложения 132.
[0052] В некоторых вариантах осуществления клиент 210, контроллер 220 и иерархии объектов 230 и 240 являются одним либо более приложениями 132, выполняемыми устройством 20 обработки либо удаленной службой обработки (например, облачная служба). Клиент 210 осуществляет взаимодействие между операционной системой 122 и контроллером 220. Контроллер 220 отслеживает состояние иерархий объектов 230, 240 и любой ввод, принятый от операционной системы 122 для определения того, какие объекты-потомки 270 должны включаться в иерархию исходных объектов 240. Иерархия исходных объектов 230 включает корневой объект памяти 250 и один либо более объектов-потомков 270, которые подвергнуты обработке, но которым временно отменен доступ к вычислительным ресурсам 15. Иерархия исходных объектов 240 включает корневой объект источников 260 и может включать один либо более объектов-потомков 270, которые подвергнуты обработке и которым предоставлен доступ к одному либо более вычислительным ресурсам 15. До обработки контроллер 220 может извлекать объекты-потомки 270 из запоминающего устройства 70 (фиг.1A). В некоторых вариантах осуществления корневой объект в памяти 250 и исходный корневой объект 260 заданы в статической библиотеке. Корневой объект в памяти 250 и исходный корневой объект 260 могут конфигурироваться для поддержания состояния их соответствующей иерархии. Другими словами, корневой объект в памяти 250 может записывать, какие объекты-потомки 270 находятся в иерархии объектов 230 в памяти, и корневой исходный объект 260 может записывать, какие объекты-потомки 270 находятся в иерархии исходных объектов 240.
[0053] При функционировании контроллер 220 отслеживает состояние приложения 132 во время работы для определения того, востребованы ли какие-либо из объектов 270 приложением 132. Когда объект 270 востребован приложением 132, контроллер 220 перемещает необходимый объект 270 в иерархию исходных объектов 240. Как рассмотрено ниже, перемещение конкретного объекта из исходной иерархии 240 может включать копирование конкретного объекта 270 и его предков в иерархию исходных объектов 240 либо перемещение конкретного объекта 270, его потомков, его предков и потомка предков в иерархию исходных объектов 240 из иерархии объектов в памяти 230, исходя из условия, что перемещенные объекты 270 удаляются из иерархии объектов в памяти 230. Если объект 270 находится в иерархии исходных объектов 240, то операционная система 122 может назначать один либо более вычислительных ресурсов 15 объекту 270.
[0054] Согласно некоторым вариантам осуществления система фиг.3 предусматривает эффективный способ для управления вычислительными ресурсами 15 в объектно-ориентированной среде. Реализуя контроллер 220 и иерархии объектов 230 и 240 в библиотеке, программист может меньше фокусироваться на контроле за назначением/отменой назначения ресурсов 15 для/от объектов 270 и отключить объекты 270, когда они более не используются.
Аналогично, программист может фокусировать меньше внимания на сохранении объектов 270, когда объекты 270 не используются, но они снова могут стать необходимыми и/или на меньше фокусироваться на удалении объектов.
[0055] Фиг.3 иллюстрирует примерную структуру операций для способа 300 для управления вычислительными ресурсами 15 вычислительного устройства 10 (фиг.1). Способ 300 поясняется со ссылкой на фиг.4-6B, которые отображают примерный вариант использования, который выполняется системой 200 фиг.2. B показанных примерах операционная система 122 запрашивает выполнение процесса, соответствующего конкретному объекту 270АА приложения 132.
[0056] При операции 310 контроллер 220 подвергает обработке иерархию объектов в памяти 230 и иерархию исходных объектов 240 в запоминающем устройстве 30. Иерархия объектов в памяти 230 может включать корневой объект 250 в памяти и один либо более объектов-потомков 270, на которые ссылается приложение 132. Устройство обработки 20 может подвергать обработке один либо более объектов 270, определенных приложением 132, и может сохранять подвергнутые обработке объекты 270 в запоминающем устройстве 50 как часть иерархии объектов в памяти 230. В проиллюстрированном примере фиг.4 подвергнутые обработке объекты 270а и 270b первоначально включены в иерархию объектов в памяти 230. Кроме того, подвергнутые обработке объекты 270аа, 270ab и 270ac являются потомками объекта 270a и включены в иерархию объектов в памяти 230. Аналогично, подвергнутые обработке объекты 270ba и 270bb являются потомками объекта 270b и также включены в иерархию объектов в памяти 230 и объекты 270ba и 270bb, которые являются потомками объекта 270b. Контроллер 220 дополнительно подвергает обработке исходный корневой объект 260, который является корневым из иерархии исходных объектов 240. Тот факт, что приложение 132 (либо его часть) загружено в запоминающее устройство 30, но никакие вычислительные ресурсы 15 не назначаются приложению 132.
[0057] При операции 312 контроллер 220 принимает запрос 124 (фиг.1C) для осуществления процесса, соответствующего конкретному объекту 270, например, 270aa. Контроллер 220 может принимать запрос 124 от операционной системы 122 через клиента 210. Например, если операционная система 122 принимает пользовательский ввод через пользовательский интерфейс 40, который запрашивает, что приложение 132 осуществляет определенную функцию, например, перемещение персонажа в видеоигре в определенном направлении, операционная система 122 предоставляет запрос 124 контроллеру 220 через клиент 210. В некоторых сценариях запрос 124 может подразумевать один либо более объектов 270, которым не назначены какие-либо вычислительные ресурсы 15. Например, в контексте видеоигры запрос 124 на перемещение персонажа в другое место может потребовать визуализации другого места, контент которого может быть задан в объекте 270, у которого нет каких-либо назначенных ему ресурсов 15, например, GPU 60 не назначен объекту 270.
[0058] При операции 314 контроллер 220 перемещает конкретный объект 270aa в иерархию исходных объектов 240 в ответ на запрос. В некоторых вариантах осуществления контроллер 220 перемещает конкретный объект 270aa с помощью копирования конкретного объекта 270аа и любого объекта-предка 270, например, предки, прародители и прародители в иерархии исходных объектов 240. Следует отметить, что в качестве используемого в материалах настоящей заявки термин «объект-предок» исключает исходный корневой объект 260 либо исходный корневой объект 250. Копирование конкретного объекта 270aa в иерархию исходных объектов 240 может включать добавление ссылок либо указателей в конкретный объект 270aa от одного либо более объектов 260 либо 270 в иерархию исходных объектов 240. В этих вариантах осуществления структура иерархии объектов в памяти 230 остается нетронутой. Например, в примере фиг.5A контроллер 220 копирует конкретный объект 270aa и его родительский объект 270а в иерархию исходных объектов 240. Контроллеру 220 необходимо лишь скопировать объекты-предки конкретного объекта 270aa для сохранения иерархии поверх конкретного объекта 270aa.
[0059] В некоторых вариантах осуществления контроллер 220 перемещает конкретный объект 270aa, перемещая конкретный объект 280aa, его объекты-потомки, его объекты-предки и их объекты-потомки в иерархию исходных объектов 240. Фиг.5B иллюстрирует пример перемещения конкретного объекта 270aa в иерархию исходных объектов 240. В проиллюстрированном примере конкретный объект 270aa не имеет каких-либо потомков. Контроллер 220 перемещает родительский объект 270a и его другие объекты-потомки 270, т.е. объект 270ab и объект 270ac в иерархию исходных объектов 240 с конкретным объектом 270aa. Таким способом контроллер 220 сохраняет иерархии конкретного объекта 270aa и его одноуровневые объекты 270ab и 270ac. Перемещение конкретного объекта 270aa может включать удаление всех ссылок либо указателей для конкретного объекта 270aa и связанных с ним объектов 270 из иерархии объектов в памяти 230 и добавление ссылок и/или указателей к конкретному объекту 270аа и связанных с ним объектов в иерархию исходных объектов 240.
[0060] Методика «копирования», проиллюстрированная на фиг.5A, минимизирует объем вычислительных ресурсов, которые, в конечном счете, назначаются, так как одноуровневые объекты 270ab и 270ac не копируются в иерархию исходных объектов 240. Тем не менее, методика копирования может привести к использованию дополнительной памяти 30 для поддержания иерархии исходных объектов 240 и иерархии объектов в памяти 230, так как сложные приложения могут иметь сотни либо тысячи объектов 270, которые дублируются в обеих иерархиях 230 и 240. Напротив, методика «перемещения», проиллюстрированная на фиг.5B, может снижать объем используемой памяти 30, но может увеличивать потребность в вычислительных ресурсах 15, так как объекты 270 перемещаются в иерархию исходных объектов 240, которые не подразумевались запрошенным процессом, например, одноуровневый объект 270ab может, тем не менее, им могут быть назначены вычислительные ресурсы 15. Другие методики для перемещения конкретного объекта 280aa могут быть реализованы без отклонения от объема изобретения. Например, может быть реализован гибридный подход, при этом конкретный объект 280aa и его потомок перемещаются в иерархию исходных объектов 240, но объекты-предки, например объект 280a, копируются в иерархию исходных объектов 240.
[0061] При операции 316 контроллер 220 запрашивает операционную систему 122 о назначении вычислительных ресурсов 15 конкретному объекту 270aa (а также другим объектам, перемещенным в иерархию исходных объектов 240). Контроллер 220 может определять операции и переменные, которые определяются в конкретном объекте 270aa, и вычислительные ресурсы 15, которые необходимы для осуществления операций и хранения переменных. Например, если конкретный объект 270aa включает переменную и операцию записи, то контроллер 220 может определять объем памяти 30, необходимой для осуществления операции записи на основе типа переменной, и может делать запрос, чтобы операционная система 122 выделила достаточно пространства в памяти 32 в запоминающем устройстве 30 для осуществления операции записи. Аналогично, если конкретный объект 270aa включает операции по визуализации графики, то контроллер 220 может делать запрос, чтобы операционная система 122 предоставила конкретному объекту 270aa доступ к GPU 50 и назначила достаточно пространства памяти 32 в запоминающем устройстве 30 для хранения визуализированной графики. Контроллер 220 может определять и запрашивать вычислительные ресурсы 15, которые необходимы конкретному объекту 270aa любым другим подходящим способом. В ответ на запрос 124 операционная система 122 назначает ресурсы 15 конкретному объекту 270aa. Методики, используемые для назначения ресурсов 15 для конкретного объекта 270aa, могут отличаться в зависимости от операционной системы 122, операций, заданных в конкретном объекте 270aa, потомков и предков конкретного объекта 270aa, от необходимых вычислительных ресурсов 15 и от языка программирования приложения 132.
[0062] Способ дополнительно включает этап, на котором выполняют запрошенный процесс при операции 318. Во время выполнения процесса назначенные вычислительные ресурсы 15 могут использоваться конкретным объектом 270aa. По завершении процесса операционная система 122 отменяет назначение выделенных вычислительных ресурсов 15, как показано при операции 320. Операционная система 122 может отменять назначение вычислительных ресурсов 15 любым подходящим способом. Методики, используемые для назначения вычислительных ресурсов 15, которые были назначены для конкретного объекта 270aa, могут отличаться в зависимости от операционной системы 122, операций, заданных в конкретном объекте 270аа, потомков и предков конкретного объекта 270aa, необходимых вычислительных ресурсов 15 и языка программирования.
[0063] При операции 322 контроллер 220 удаляет конкретный объект 270aa из иерархии исходных объектов 240. В вариантах осуществления, где контроллер 220 перемещает конкретный объект 270аа с помощью методики копирования (например, фиг.5A), контроллер 220 просто удаляет конкретный объект 270aa и любые из его предков, которые более не требуют вычислительных ресурсов 15 от иерархии исходных объектов 240. Удаление конкретного объекта 270aa может включать удаление любых ссылок либо указателей на конкретный объект 270aa из иерархии исходных объектов 240. Фиг.6A иллюстрирует пример контроллера 220, который удаляет конкретный объект 270aa из иерархии исходных объектов 240. В проиллюстрированном примере контроллер 220 удаляет конкретный объект 270aa и его родительский объект 270a из иерархии исходных объектов 240. Контроллер 220, тем не менее, не должен изменять состояние иерархии объектов в памяти 230, так как конкретный объект 270aa и его родительский объект 270a остались в иерархии объектов в памяти 230, когда конкретный объект 270аа был перемещен в иерархию исходных объектов 240.
[0064] В вариантах осуществления, где контроллер 220 перемещает конкретный объект 270aa в иерархию исходных объектов 240 с помощью методики перемещения, контроллер 220 удаляет конкретный объект 270аа из иерархии исходных объектов 240 с помощью перемещения конкретного объекта 270aa и связанных с ним объектов 270 (т.е. объекты-потомки конкретного объекта 270aa, его объекты-предки и объекты-потомки объектов-предков) из иерархии исходных объектов 240 в иерархию объектов в памяти 230. Перемещение конкретного объекта 270aa может включать удаление любых ссылок либо указателей на конкретный объект 270aa и связанного с ним объекта 270 из иерархии исходных объектов 240 и добавление ссылок и/или указателей к конкретному объекту 270aa и связанным с ним объектам 270 в иерархии объектов в памяти 230. Фиг.6B иллюстрирует пример контроллера 220, который удаляет конкретный объект 270aa из иерархии исходных объектов 240. В проиллюстрированном примере контроллер 220 удаляет конкретный объект 270aa, его родительский объект 270a и его одноуровневые объекты 270ab и 270ac из иерархии исходных объектов 240. Контроллер 220, кроме того, добавляет конкретный объект 270aa, его родительский объект 270а и его одноуровневые объекты 270ab и 270ac к иерархии 230 исходных объектов.
[0065] Другие методики для перемещения конкретного объекта 280aa могут быть реализованы без отклонения от объема изобретения. Например, может быть реализован гибридный подход, при этом конкретный объект 280aa и его потомок перемещаются обратно в иерархию исходных объектов 240, но объекты-предки, например, объект 280а, удаляются из иерархии исходных объектов 240, если объект-предок не требует каких-либо дополнительных вычислительных ресурсов 15.
[0066] Способ 300 может везде выполнять приложение 132. Способ 300 либо его операции могут выполняться параллельно и управлять выделением вычислительных ресурсов 15 для многочисленных объектов 270.
[0067] Различные варианты осуществления систем и методик, описанных в данном документе, могут быть реализованы в цифровой электронной и/или оптической схеме, интегральной схеме, специально спроектированных ASIC (специализированные интегральные схемы), компьютерном аппаратном обеспечении, встроенном программном обеспечении, программном обеспечении и/либо в их сочетаниях. Эти различные варианты осуществления могут включать осуществление в одной либо более компьютерных программах, которые являются исполняемыми и/или интерпретируемыми в программной системе, включающей в себя, по меньшей мере, один программируемый процессор, который может быть специальным либо общего назначения, соединенный для приема данных и инструкций от и для передачи данных и инструкций в систему хранения данных, по меньшей мере, в одно входное устройство и, по меньшей мере, в одно выходное устройство.
[0068] Эти компьютерные программы (также известные как программы, программное обеспечение, программные приложения либо код) включают машинные инструкции для программируемого процессора и могут быть реализованы в высокоуровневом процедурном и/или объектно-ориентированном языке программирования и/или в ассемблере/машинном языке. Как используется в материалах настоящей заявки, термины «машиночитаемый носитель» и «компьютерный читаемый носитель» относятся к любому компьютерному программному продукту, конечному компьютерному читаемому носителю, аппарату и/или устройству (например, магнитные диски, оптические диски, запоминающее устройство, программируемые логические устройства (PLD), используемые для предоставления машинных команд и/или данных программируемому процессору, включая машиночитаемый носитель, который принимает машинные инструкции в качестве машиночитаемого сигнала). Термин «машиночитаемый сигнал» относится к любому сигналу, используемому для предоставления машинных команд и/или данных программируемому процессору.
[0069] Варианты осуществления предмета изобретения и функциональных операций, описанных в этом описании, могут быть реализованы в цифровой электронной схеме, либо в компьютерном программном обеспечении, встроенном программном обеспечении либо аппаратном обеспечении, включая структуры, раскрытые в этом описании и их структурных эквивалентах, либо в сочетании одного либо более из них. Более того, предмет изобретения, описанный в материалах этом описании, может быть реализован в качестве одного либо более компьютерных программных продуктов, т.е. одного либо более модулей компьютерных программных инструкций, кодированных на машиночитаемом носителе для исполнения либо для управления работой устройства обработки данных. Машиночитаемый носитель может быть машиночитаемым запоминающим устройством, машиночитаемой подложкой запоминающего устройства, устройством памяти, композицией, воздействующей на машиночитаемый распространяемый сигнал либо сочетанием одного либо более из них. Термины «устройство обработки данных», «вычислительное устройство» и «вычислительный процессор» охватывают все аппараты, устройства и оборудование для обработки данных, включая в качестве примера программируемый процессор, компьютер либо многочисленные процессоры либо компьютеры. Устройство может включать, в дополнение к аппаратному обеспечению, код, который создает исполняемую среду для компьютерной программы по запросу, т.е. код, который состоит из процессорного встроенного программного обеспечения, стека протоколов, системы управления базой данных, операционной системы либо сочетания одного либо более из них. Распространяемый сигнал является искусственно порождаемым сигналом, например, формируемый оборудованием электрический, оптический либо электромагнитный сигнал, который порождается для кодирования информации для передачи в подходящее приемное устройство.
[0070] Компьютерная программа (также известная как приложение, программа, программное обеспечение, программное приложение, скрипт либо код) может быть записана в любом виде на языке программирования, включая компилированные либо интерпретированные языки, и она может использоваться в любом виде, включая одиночную программу либо в качестве модуля, компонента, подпрограммы либо другого модуля, подходящего для использования в вычислительной среде. Компьютерная программа не обязательно соответствует файлу либо файловой системе. Программа может быть сохранена в части файла, который содержит другие программы либо данные (например, один либо более скриптов, сохраненных в документе на языке разметки) в единственном файле, выделенном для программы по запросу либо в многочисленных координируемых файлах (например, файлы, которые сохраняют один либо более модулей, подпрограммы либо части кода). Компьютерная программа может использоваться для выполнения на компьютере либо на многочисленных компьютерах, которые расположены в одном месте либо распределены по многим местам и связаны с помощью коммуникационной сети.
[0071] Потоки процессора и логические потоки, описанные в этом описании, могут осуществляться с помощью одного либо более программируемых процессоров, выполняя одну либо более компьютерных программ для осуществления функций, работая над входящими данными и порождая выход. Потоки процессов и логические потоки могут также осуществляться с помощью устройства, которое может также быть реализовано как логическая схема специального назначения, например, FPGA (программируемая пользователем вентильная матрица) либо ASIC (специализированная интегральная схема).
[0072] Процессоры, подходящие для выполнения компьютерной программой, включают, например, микропроцессоры общего и специального назначения и любой один либо более процессоров цифровой вычислительной машины любого типа. В общем, процессор будет принимать инструкции и данные от постоянного запоминающего устройства либо от оперативного запоминающего устройства либо от обоих. Существенными элементами компьютера является процессор для осуществления инструкций и одно либо более запоминающих устройств для хранения инструкций и данных. В общем, компьютер также включает либо оперативно соединен для приема данных от либо для перемещения данных в либо и того, и другого, одно либо более запоминающих устройств большой емкости для хранения данных, например, магнитные, магнитооптические диски либо оптические диски. Тем не менее, компьютеру не обязательно иметь подобные устройства. Более того, компьютер может быть встроен в другое устройство, например, можно назвать лишь некоторые, мобильный телефон, персональный цифровой помощник (PDA), мобильный аудиоплеер, GPS-приемник (система глобального позиционирования). Машиночитаемые носители, подходящие для хранения компьютерных программных инструкций и данных, включают энергонезависимую память, носители и запоминающие устройства, включая, в качестве примера, полупроводниковые запоминающие устройства, например, EPROM, EEPROM, и устройства с флеш-памятью; магнитные диски, например, внутренние жесткие диски либо съемные диски; магнито-оптические диски; и диски CD ROM и диски DVD-ROM. Процессор и запоминающее устройство могут дополняться либо быть встроенными в логическую схему специального назначения.
[0073] Для обеспечения взаимодействия с пользователем один либо более аспектов изобретения могут быть реализованы на компьютере, у которого есть устройство отображения, например, CRT-монитор (катодная лучевая трубка), LCD-монитор (жидкокристаллический экран) либо сенсорный экран для отображения информации для пользователя и дополнительно клавиатуру и указательное устройство, например, мышь либо шаровой манипулятор, с помощью которых пользователь может предоставить ввод в компьютер. Также могут использоваться другие виды устройств для обеспечения взаимодействия с пользователями, например, обратная связь, предоставляемая пользователю, может быть сенсорной обратной связью любого вида, например, визуальной обратной связью, звуковой обратной связью либо тактильной обратной связью; и ввод от пользователя может быть принят в любом виде, включая акустический, речевой либо сенсорный ввод. Кроме того, компьютер может взаимодействовать с пользователем, передавая документы в и принимая документы от устройства, которое используется пользователем, например, передавая веб-страницы в веб-браузер на клиентском устройстве пользователя в ответ на запросы, принятые от веб-браузера.
[0074] Один или более аспектов изобретения могут быть реализованы в вычислительной системе, которая включает компонент серверной части, например сервер данных, либо который включает микропрограммный компонент, например прикладной сервер, либо который включает компонент внешнего интерфейса, например клиентский компьютер, у которого есть графический пользовательский интерфейс, либо веб-бразуер, с помощью которого пользователь может взаимодействовать с реализацией предмета изобретения, описанного в описании, либо с любым сочетанием одного либо более подобных серверных, микропрограммных компонентов либо компонентов внешнего интерфейса. Компоненты системы могут быть взаимосвязаны с помощью любого вида среды с цифровой передачей данных, например с помощью коммуникационной сети. Примеры коммуникационных сетей включают локальную сеть (LAN) и глобальную сеть (WAN), интерсеть (например, Интернет) и одноранговые сети (например, специальные одноранговые сети).
[0075] Вычислительная система включает клиенты и серверы. Клиент и сервер являются обычно удаленными друг от друга и типично взаимодействуют с помощью коммуникационной сети. Связь клиента и сервера возникает посредством компьютерных программ, выполняющихся на соответствующих компьютерах и имеющих связь клиент-сервер друг с другом. В некоторых вариантах осуществления сервер передает данные (например, страницу HTML) в клиентское устройство (например, для целей отображения данных у пользователя и приема пользовательского ввода от пользователя, взаимодействующего с клиентским устройством). Данные, сформированные на клиентском устройстве (например, результат взаимодействия пользователя), могут быть приняты от клиентского устройства на сервере.
[0076] Хотя это описание содержит множество деталей, они не должны толковаться как ограничения объема изобретения либо формулы изобретения, но скорее как описание определенных характеристик для конкретных вариантов осуществления изобретения. Определенные признаки, которые описаны в этом описании в контексте отдельных вариантов осуществления, могут быть также реализованы в сочетании с единственным вариантом осуществления. Напротив, различные признаки, которые описаны в контексте единственного варианта осуществления, могут быть реализованы в многочисленных вариантах осуществления отдельно либо в любом подходящем сочетании. Более того, хотя признаки могут быть описаны выше как действующие в определенных комбинациях и даже первоначально заявлены как таковые, один либо более признаков из заявленной комбинации могут быть в некоторых случаях исключены из комбинации, и заявленная комбинация может относиться к субкомбинации либо варианту субкомбинации.
[0077] Аналогично, хотя операции отображены на чертежах в особенном порядке, это не должно быть понято как требование, что подобные операции выполняются в определенном показанном порядке либо в последовательном порядке, либо что все проиллюстрированные операции должны быть осуществлены для достижения желательных результатов. В определенных обстоятельствах многозадачность и параллельная обработка могут быть выгодными. Более того, разделение различных системных компонентов в вариантах осуществления, описанных выше, не должно быть понято как необходимое подобное разделение во всех вариантах осуществления и должно быть понято так, что желаемые программные компоненты и системы могут быть в целом интегрированы вместе в единый программный продукт либо упакованы в многочисленные программные продукты.
[0078] Описано множество вариантов осуществления. Тем не менее, будет понятно, что могут быть сделаны различные модификации без отклонения от сущности и объема изобретения. Соответственно, другие варианты осуществления находятся в пределах объема последующей формулы изобретения. Например, действия, процитированные в формуле изобретения, могут быть осуществлены в различном порядке и по-прежнему достигать необходимых результатов.