СПОСОБ, СИСТЕМА И АППАРАТУРА ПРОСТРАНСТВА ВЫПОЛНЕНИЯ

1. Способ для распределения системных ресурсов обработки данных в задачи одной или более прикладных программ, который включает.
а. получение группы кодлетов, сконфигурированных для выполнения по меньшей мере одной задачи;
б. определение зависимостей между кодлетами в пределах указанной группы;
в. динамическое отображение данного кодлета, находящегося в пределах указанной группы, в набор системных ресурсов обработки данных для исполнения данного кодлета на основе, по меньшей мере частично, зависимостей между кодлетами и на доступности системных ресурсов обработки данных.
2. Способ по п.1, отличающийся тем, что отображение включает функцию, выбранную из группы, состоящей из: размещения, локализации, повторной локализации, перемещения и миграции.
3. Способ по п.1, отличающийся тем, что отображение включает функцию, выбранную из группы, состоящей из: определения времени запуска исполнения данного кодлета и определения места для исполнения данного кодлета.
4. Способ по п.1, отличающийся тем, что отображение включает выполнение отображения на основе по меньшей мере одного критерия, выбранного из группы, состоящей из: 1) улучшения показателей производительности прикладной программы, 2) улучшения применения системных ресурсов обработки данных и 3) увеличения показателей производительности прикладной программы при соответствии данному набору целей потребления ресурсов.
5. Способ по п.1, отличающийся тем, что отображение выполняется с целью оптимизации производительности прикладной программы относительно меры, выбранной из группы, включающей:
общее время исполнения программы, время исполнения в отдельном разделе, максимальную задержку перед исполнением отдельной команды, количество используемых обрабатываемых блоков, размер используемой памяти, использование регистровых файлов, использование кэш-памяти, использование кэша уровня 1, использование кэша уровня 2, использование кэша уровня 3, использование кэша уровня N, где N - положительное число, использование статической оперативной памяти, использование динамической оперативной памяти, использование памяти глобальных данных, использование виртуальной памяти, количество процессоров, доступных для использований, а не для исполнения программы, объем памяти, доступной для использований, а не для исполнения программы, потребление энергии, пиковое потребление энергии, стоимость долговечности вычислительной системы, число необходимых обновлений регистра, число необходимых очисток памяти, эффективность обеспечения безопасности и стоимость обеспечения безопасности.
6. Способ по п.1, отличающийся тем, что отображение выполняется с целью функционирования в условиях ограничения ресурсов, который выбран из группы, включающей:
общее время исполнения программы, время исполнения в отдельном разделе, максимальную задержку перед исполнением отдельной команды, количество используемых обрабатываемых блоков, размер используемой памяти, использование регистровых файлов, использование кэш-памяти, использование кэша уровня 1, использование кэша уровня 2, использование кэша уровня 3, использование кэша уровня N, где N - положительное число, использование статической оперативной памяти, использование динамической оперативной памяти, использование памяти глобальных данных, использование виртуальной памяти, количество процессоров, доступных для использований, а не для исполнения программы, объем памяти, доступной для использований, а не для исполнения программы, потребление энергии, пиковое потребление энергии, стоимость долговечности вычислительной системы, число необходимых обновлений регистра, число необходимых очисток памяти, эффективность обеспечения безопасности и стоимость обеспечения безопасности.
7. Способ по п.1, отличающийся тем, что отображение выполняется с целью осуществления комбинации целей, зависящих от времени, где указанная комбинация со временем изменяется вследствие фактора, выбранного из группы, включающей: предварительно заданное изменение и изменения, возникающие динамически.
8. Способ по п.1, отличающийся тем, что дополнительно включает применение набора инструкций, выполняемых на этапе компиляции, для поддержки при выполнении одного или нескольких получаемых, определяемых или динамически отображаемых.
9. Способ по п.8, отличающийся тем, что инструкции, выполняемые на этапе компиляции, выбираются из группы, включающей: требуемый блок вычислений с плавающей точкой, требуемую точность вычислений с плавающей точкой, частоту доступа, локальность доступа, замедленный доступ, тип данных только для чтения, исходный тип данных только для чтения, конечный тип данных только для чтения и условный тип данных только для чтения.
10. Способ для выполнения целей, определенных пользователем или системой, для исполнения компьютерной программой, включающий:
а разбиение компьютерной программы на набор абстрактных модулей, где абстрактный модуль содержит один или более следующих членов: кодлет, набор взаимодействующих кодлетов, набор взаимодействующих абстрактных модулей или данные, совместно используемые по меньшей мере некоторыми другими членами абстрактного модуля;
б. определение отношений близости, чтобы выполнить максимальное приближение членов абстрактного модуля в области памяти или времени исполнения;
в. с помощью исполняющей системы выполнение по меньшей мере одного из следующих: i) начальное размещение данных или запуск исполнения кодлетов абстрактного модуля скоординированным образом, или ii) когда полезно в целях, определяемых пользователем или системой, перемещение членов абстрактных модулей скоординированным образом;
а. в котором размещение или перемещение выполняется на основе, по меньшей мере частично, отношений близости.
11. Способ по п.10, отличающийся тем, что разбиение включает разбиение компьютерной программы для уменьшения зависимостей между абстрактными модулями.
12. Способ по п.10, отличающийся тем, что дополнительно включает определение зависимостей между абстрактными модулями.
13. Способ для выполнения целей, определенных пользователем или системой, для исполнения компьютерной программой, включающий:
а. разбиение компьютерной программы на набор абстрактных модулей, где абстрактный модуль содержит один или более следующих членов: кодлет, набор взаимодействующих кодлетов, набор взаимодействующих абстрактных модулей или данные, совместно используемые по меньшей мере некоторыми другими членами абстрактного модуля;
б. получение информации о выполнении программы относительно абстрактных модулей, производительности и использования ресурсов, связанных с программой; и
в. использование информации о выполнении программы для управления последующим размещением или планированием выполнения абстрактных модулей на проводящихся или последующих прогонах по меньшей мере частей упомянутой компьютерной программы.
14. Способ по п.13, отличающийся тем, что разбиение включает разбиение компьютерной программы для уменьшения зависимостей между абстрактными модулями.
15. Способ по п.13, отличающийся тем, что дополнительно включает определение зависимостей между абстрактными модулями.
16. Способ по п.13, отличающийся тем, что дополнительно включает перемещение абстрактного модуля, содержащего исполняющий или готовящийся к исполнению кодлет, на основе, по меньшей мере частично, критерия улучшения локальности элементов абстрактного модуля.
17. Способ по п.13, отличающийся тем, что дополнительно включает перемещение элементов абстрактного модуля на основе критерия, выбранного из группы, включающей: улучшение глобального распределения ресурсов, разрешение снижения ресурсов обработки с целью сбережения энергии, разрешение уменьшения расхода энергии ресурсами обработки, а также применение ресурсов обработки, лучше подходящих для данной обрабатывающей задачи.
18. Способ распределения ресурсов обработки данных для задач обработки данных, включающий:
а. во время компиляции - анализ потенциального кода и распределений данных с целью идентификации одной или нескольких возможностей для действия, выбранного из группы, включающей: перемещение кодлетов и перемещение данных; и
б. во время исполнения - перемещение кодлетов для использования возможностей, представленных с помощью абсолютного кода и распределений данных.
19. Способ по п.18, отличающийся тем, что перемещение включает передвижение кодлетов в недоиспользованные процессоры.
20. Способ по п.18, отличающийся тем, что дополнительно включает выполнение копий по меньшей мере некоторых данных из одного места в другое в предвидении перемещения по меньшей мере одного кодлета.
21. Способ по п.18, отличающийся тем, что дополнительно включает разграничение по категориям доступа, где вышеуказанное разграничение указывает на ограничения или привилегии, которые должны рассматриваться при обработке вышеупомянутых кодлетов с помощью этого способа.
22. Способ для разбиения по меньшей мере сегмента программного приложения, включающий: а) запрос исполняющей системы на открытие ряда обрабатывающих ядер, доступных для сегмента приложения;
б. определение максимального количества обрабатывающих блоков, на которые делится сегмент; и
в. на основе величин, определенных в а) и b), деление сегмента на оптимальное количество обрабатывающих блоков.
23. Способ для компиляции и исполнения компьютерной программы для улучшения ресурсоемкого исполнения программы, включающий:
a) во время компиляции программы - определение оптимальной эффективной среды исполнения для кодлетов программы; и
b) во время исполнения программы - размещение и планирование кодлетов в соответствии с оптимальной эффективной средой исполнения на основе, по меньшей мере частично, вышеуказанного определения.
24. Система обработки данных, состоящая из нескольких ядер, включая:
а набор агентов управления системой, который включает один или более из: менеджера фильтрации данных, планировщика кодлетов, менеджера миграции кодлетов, распределителя нагрузки, регулятора мощности и администратора рабочих характеристик; и
б. средства вышеуказанного набора агентов управления системой для взаимодействия синергическим образом с целью оптимизации исполнения программ в нескольких ядрах.
25. Система для оптимального расположения набора кодлетов в системе обработки данных, включающая:
а. средства для обмена информацией между набором ресурсов обработки в системе относительно показателей, соответствующих оптимальному размещению набора кодлетов среди ресурсов обработки;
б. средства для определения, в какой из ресурсов обработки разместить один или более кодлетов из вышеуказанного набора; и
в. средства для отображения одного или более кодлетов в один или более ресурсов обработки в соответствии с вышеупомянутым определением.
26. Продукт компьютерной программы, включающий в компьютерной системе несколько узлов; продукт компьютерной программы, включающий носитель данных, хранящий код компьютерной программы, разработанный для исполнения по меньшей мере на одном из узлов, который по исполнении приводит к реализации операций в соответствии со способом по п.1.
27. Продукт компьютерной программы, включающий в компьютерной системе несколько узлов; продукт компьютерной программы, включающий носитель данных, хранящий код компьютерной программы, разработанный для исполнения по меньшей мере на одном из узлов, который по исполнении приводит к реализации операций в соответствии со способом по п.10.
28. Продукт компьютерной программы, включающий в компьютерной системе несколько узлов; продукт компьютерной программы, включающий носитель данных, хранящий код компьютерной программы, разработанный для исполнения по меньшей мере на одном из узлов, который по исполнении приводит к реализации операций в соответствии со способом по п.13.
29. Продукт компьютерной программы, включающий в компьютерной системе несколько узлов; продукт компьютерной программы, включающий носитель данных, хранящий код компьютерной программы, разработанный для исполнения по меньшей мере на одном из узлов, который по исполнении приводит реализации операций в соответствии со способом по п.18.
30. Продукт компьютерной программы, включающий в компьютерной системе несколько узлов; продукт компьютерной программы, включающий носитель данных, хранящий код компьютерной программы, разработанный для исполнения по меньшей мере на одном из узлов, который по исполнении приводит реализации операций в соответствии со способом по п.22.
31. Продукт компьютерной программы, включающий в компьютерной системе несколько узлов; продукт компьютерной программы, включающий носитель данных, хранящий код компьютерной программы, разработанный для исполнения по меньшей мере на одном из узлов, который по исполнении приводит реализации операций в соответствии со способом по п.23.
32. Носитель данных на компьютере или доступный по сети с исполняемым программным кодом, хранящимся на нем, где по меньшей мере часть вышеупомянутого программного кода после исполнения приводит к реализации операций в соответствии со способом по п.1.
33. Носитель данных на компьютере или доступный по сети с исполняемым программным кодом, хранящимся на нем, где по меньшей мере часть вышеупомянутого программного кода после исполнения приводит к реализации операций в соответствии со способом по п.10.
34. Носитель данных на компьютере или доступный по сети с исполняемым программным кодом, хранящимся на нем, где по меньшей мере часть вышеупомянутого программного кода после исполнения приводит к реализации операций в соответствии со способом по п.13.
35. Носитель данных на компьютере или доступный по сети с исполняемым программным кодом, хранящимся на нем, где по меньшей мере часть вышеупомянутого программного кода после исполнения приводит к реализации операций в соответствии со способом по п.18.
36. Носитель данных на компьютере или доступный по сети с исполняемым программным кодом, хранящимся на нем, где по меньшей мере часть вышеупомянутого программного кода после исполнения приводит к реализации операций в соответствии со способом по п.22.
37. Носитель данных на компьютере или доступный по сети с исполняемым программным кодом, хранящимся на нем, где по меньшей мере часть вышеупомянутого программного кода после исполнения приводит к реализации операций в соответствии со способом по п.23.