СИСТЕМА И СПОСОБ РАСПРЕДЕЛЕННЫХ ВЫЧИСЛЕНИЙ

1. Способ распределенных вычислений в распределенной системе, состоящей из одного или более исполнительных модулей, взаимодействующих друг с другом, одного или более модулей памяти, связанных с указанными исполнительными модулями и содержащими инструкции исполнительного модуля, в которой указанные исполнительные модули поддерживают инструкции удаленной передачи управления с возвратом, отличающийся тем, что для адресации памяти используют распределенную память с базовой адресацией, для которой:
при получении управления по указанной инструкции передачи управления или при выполнении первой инструкции в модуле памяти исполнительного модуля выделяют блок памяти,
указанный блок памяти освобождают при возврате управления в распределенном стеке вызовов,
при удаленной передаче управления от одного исполнительного модуля к другому размер указанного блока памяти фиксируют и передают текущий размер указанной распределенной памяти, являющийся суммой размеров всех выделенных блоков в распределенном стеке вызовов,
относительный адрес в указанной распределенной памяти рассчитывают от начала первого блока, при этом совокупность блоков в стеке распределенных вызовов рассматривают как непрерывную память,
при выполнении инструкций с распределенной базовой адресацией исполнительный модуль контролирует выход за границы своего блока памяти,
если исполнительный модуль обнаруживает выход за границы своего блока памяти, он обращается за данными к предыдущему в стеке вызовов исполнительному модулю,
предыдущий исполнительный модуль либо возвращает данные, если они расположены в его блоке памяти, либо передает запрос своему предыдущему в стеке вызовов исполнительному модулю и впоследствии возвращает данные, которые получены от предыдущего модуля.
2. Способ по п.1, отличающийся тем, что указанная инструкция удаленной передачи управления с возвратом является инструкцией удаленного вызова процедуры.
3. Способ по п.1, отличающийся тем, что в качестве блока, выделяемого для памяти с распределенной базовой адресацией, используют кадр стека текущего распределенного вызова.
4. Способ распределенных вычислений в распределенной системе, состоящей из одного или более исполнительных модулей, взаимодействующих друг с другом, одного или более модулей памяти, связанных с указанными исполнительными модулями и содержащих последовательности инструкций исполнительного модуля, отличающийся тем, что
1) программу исполняют на одном или более исполнительном модуле и копию программы загружают в модули памяти всех исполнительных модулей, участвующих в данный момент в исполнении программы,
2) программа включает одну или более инструкцию передачи управления, которая содержит, как минимум, один параметр, значение которого прямо или косвенно определяет инструкцию программы, которая должна быть выполнена следующей, и при исполнении указанной инструкции передачи управления выполняют следующие действия:
a) вычисляют исполнительный модуль, на котором следует выполнить указанную следующую инструкцию,
b) управление программой передают на указанный вычисленный исполнительный модуль, и выполнение программы продолжают на этом исполнительном модуле, начиная с инструкции, которая задана в указанной инструкции передачи управления.
5. Способ по п.4, отличающийся тем, что исполнительный модуль, на котором необходимо выполнить указанную следующую инструкцию, вычисляют на основании текущего состояния системы.
6. Способ по п.4, отличающийся тем, что исполнительный модуль, на котором необходимо выполнить указанную следующую инструкцию, вычисляют на основании дополнительных параметров указанной инструкции передачи управления.
7. Способ по п.4, отличающийся тем, что в указанной инструкции передачи управления для идентификации исполнительного модуля, выполняющего следующую инструкцию, используют дополнительный параметр, который прямо или косвенно определяет номер, или адрес, или идентификатор этого исполнительного модуля.
8. Способ по п.4, отличающийся тем, что в указанной инструкции передачи управления для идентификации исполнительного модуля, выполняющего следующую инструкцию, используют дополнительный параметр, который прямо или косвенно определяет функциональное назначение этого исполнительного модуля.
9. Способ по п.4, отличающийся тем, что в указанной инструкции передачи управления для идентификации инструкции, которая должна быть выполнена следующей, используют ее ассоциативный адрес.
10. Способ по п.4, отличающийся тем, что указанную следующую инструкцию выполняют без передачи управления на другой исполнительный модуль.
11. Способ по п.4, отличающийся тем, что
исполнительный модуль непосредственно не поддерживает указанную инструкцию передачи управления,
для исполнения указанной инструкции передачи управления создают код, адаптирующий эту инструкцию к выполнению на указанном исполнительном модуле,
указанный адаптирующий код включают в программу, как ее составную часть.
12. Способ по п.11, отличающийся тем, что программу создают на компилируемом языке программирования и указанный адаптирующий код включают в исполняемый файл программы.
13. Способ по п.4, отличающийся тем, что указанную программу загружают в модули памяти любого подмножества исполнительных модулей до начала ее исполнения на этих модулях.
14. Способ по п.4, отличающийся тем, что указанные исполнительные модули обмениваются между собой копией программы, которую они выполняют.
15. Способ по п.4, отличающийся тем, что указанные исполнительные модули загружают копию программы из внешнего источника и для этого обмениваются информацией о местонахождении этого источника.
16. Способ по п.4, отличающийся тем, что указанную программу загружают в результате исполнения указанной инструкции передачи управления в модуль памяти исполнительного модуля, который получает управление, если указанная программа еще не загружена на этом исполнительном модуле.
17. Способ по п.4, отличающийся тем, что для определения того, что в каждый модуль памяти загружена одна и та же копия программы, используют контрольное цифровое значение, вычисленное для этой программы способом, известным указанным исполнительным модулям.
18. Способ по п.4, отличающийся тем, что исполнение программы начинают на одном исполнительном модуле-инициаторе, и, при завершении исполнения программы на этом исполнительном модуле, завершают распределенное исполнение программы на остальных исполнительных модулях.
19. Способ по п.4, отличающийся тем, что исполнение программы начинают на более чем одном исполнительном модуле, и распределенное исполнение программы завершают после завершения исполнения на всех указанных исполнительных модулях.
20. Способ по п.4, отличающийся тем, что распределенное исполнение программы завершают после завершения исполнения всех распределенных потоков управления этой программы.
21. Способ по п.4, отличающийся тем, что программу оставляют в модуле памяти, пока не завершено распределенное исполнение программы.
22. Способ по п.4, отличающийся тем, что программу динамически загружают и выгружают из модуля памяти, и при этом соответствующий исполнительный модуль соответственно подключают и отключают от распределенного исполнения программы.
23. Способ по п.4, отличающийся тем, что программа и/или исполнительный модуль ведут учет ресурсов, которые использует программа на этом исполнительном модуле.
24. Способ по п.23, отличающийся тем, что исполнение программы на определенном исполнительном модуле завершают, когда освобождаются все ресурсы, выделенные для этой программы на этом исполнительном модуле.
25. Способ по п.23, отличающийся тем, что учет ресурсов ведут в целях ограничения использования и/или взимания оплаты за использование этих ресурсов.
26. Способ по п.4, отличающийся тем, что при загрузке программы в модуль памяти каждого исполнительного модуля, каждый исполнительный модуль выполняет инструкции инициализации программы.
27. Способ по п.4, отличающийся тем, что в исполняемой программе определяют области памяти, изменение которых в одном модуле памяти реплицируют на остальные модули памяти.
28. Способ по п.27, отличающийся тем, что репликацию изменений выполняют как одну транзакцию.
29. Способ по п.4, отличающийся тем, что указанную инструкцию передачи управления выполняют синхронно.
30. Способ по п.4, отличающийся тем, что указанную инструкцию передачи управления выполняют асинхронно.
31. Способ по п.4, отличающийся тем, что при выполнении указанной инструкции удаленной передачи управления инициируют выполнение указанной следующей инструкции сразу на более чем одном исполнительном модуле.
32. Способ по п.31, отличающийся тем, что указанная инструкция удаленной передачи управления является инструкцией вызова процедуры, и на каждый указанный исполнительный модуль посылают одну и ту же копию параметров вызова.
33. Способ по п.31, отличающийся тем, что указанная инструкция удаленной передачи управления является инструкцией вызова процедуры и на любое подмножество указанных исполнительных модулей посылают различные подмножества параметров вызова.
34. Система распределенных вычислений, состоящая из
одного или более исполнительных модулей, взаимодействующих друг с другом,
одного или более модулей памяти, связанных с указанными исполнительными модулями и содержащих последовательности инструкций исполнительного модуля,
отличающаяся тем, что
в исполнении программы участвует один или более исполнительный модуль и каждый из этих исполнительных модулей имеет в своем модуле памяти копию этой исполняемой программы;
исполнительные модули поддерживают инструкцию передачи управления, которая содержит, как минимум, один параметр, значение которого прямо или косвенно определяет инструкцию программы, которая должна быть выполнена следующей,
исполнительный модуль имеет возможность для указанной инструкции передачи управления вычислить исполнительный модуль, на котором следует выполнить указанную следующую инструкцию, и
один исполнительный модуль имеет возможность инициировать выполнение программы на другом исполнительном модуле, начиная с указанной следующей инструкции.
35. Система по п.34, отличающаяся тем, что отдельные исполнительные модули являются ядрами в многоядерном процессоре, или процессорами в многопроцессорной системе, или процессорами компьютеров, связанными через сеть, или реализованными программно виртуальными системами, или отдельными процессами исполнительной системы, выполняющими программу в своем адресном пространстве.
36. Система по п.34, отличающаяся тем, что один исполнительный модуль при выполнении указанной инструкции передачи управления имеет возможность передать другому исполнительному модулю контекст исполнения программы.
37. Система по п.34, отличающаяся тем, что указанная инструкция передачи управления содержит дополнительный параметр, значение которого прямо или косвенно определяет исполнительный модуль, на котором указанная следующая инструкция должна быть выполнена.
38. Система по п.34, отличающаяся тем, что каждый указанный исполнительный модуль имеет свой модуль памяти.
39. Система по п.34, отличающаяся тем, что система содержит одно или более подмножество исполнительных модулей, состоящих из одного или более исполнительных модулей, и каждое из этих подмножеств имеет общий модуль памяти.
40. Система по п.34, отличающаяся тем, что указанную память реализуют как виртуальную с возможностью загрузки только тех сегментов программы, которые необходимы для исполнения программы на заданном исполнительном модуле.
41. Система по п.34, отличающаяся тем, что в модулях памяти, кроме последовательностей инструкций содержатся данные.
42. Система по п.34, отличающаяся тем, что все исполнительные модули имеют отдельную общую память, предназначенную для динамического распределения во время исполнения программы.
43. Система по п.34, отличающаяся тем, что исполнительные модули поддерживают инструкции с распределенными указателями, эти указатели включают информацию:
a) адрес ячейки в модуле памяти;
b) идентификатор или адрес исполнительного модуля, в модуле памяти которого расположена указываемая ячейка.
44. Система по п.43, отличающаяся тем, что один исполнительный модуль может запросить данные из модуля памяти другого исполнительного модуля, используя указанные распределенные указатели.
45. Система по п.34, отличающаяся тем, что указанная инструкция передачи управления является инструкцией безусловного перехода.
46. Система по п.34, отличающаяся тем, что указанная инструкция передачи управления является инструкцией условного перехода.
47. Система по п.34, отличающаяся тем, что указанная инструкция передачи управления является инструкцией перехода с возвратом.
48. Система по п.34, отличающаяся тем, что указанная инструкция передачи управления является инструкцией вызова процедуры, и исполнительный модуль, выполняющий эту инструкцию, имеет возможность передавать другому исполнительному модулю параметры вызова процедур и получать возвращаемые значения.
49. Система по п.34, отличающаяся тем, что указанная инструкция передачи управления определяет, что исполнение указанной следующей инструкции должно быть продолжено сразу на более чем одном исполнительном модуле.
50. Система по п.34, отличающаяся тем, что
исполняемое приложение состоит из нескольких программ,
распределенное исполнение поддерживает только определенное подмножество, состоящее из одной или более указанных программ,
указанная инструкция передачи управления должна указывать на следующие инструкции только в границах указанного подмножества программ, и при выполнении удаленной передачи управления модуль памяти исполнительного модуля, получающего управление, должен содержать копию программы, инструкция которой получает управление.
51. Система по п.50, отличающаяся тем, что копия указанного подмножества программ, поддерживающих распределенное исполнение, входит в состав разных приложений, и эти приложения одновременно загружены в память указанных исполнительных модулей в произвольном сочетании.
52. Система по п.34, отличающаяся тем, что указанная инструкция передачи управления содержит дополнительный параметр - указатель на объект, и этот указатель позволяет определить местоположение исполнительного модуля, в модуле памяти которого расположен объект, и указанная следующая инструкция является методом этого объекта.