RU2010140853A - Система и способ распределенных вычислений - Google Patents
Система и способ распределенных вычислений Download PDFInfo
- Publication number
- RU2010140853A RU2010140853A RU2010140853/08A RU2010140853A RU2010140853A RU 2010140853 A RU2010140853 A RU 2010140853A RU 2010140853/08 A RU2010140853/08 A RU 2010140853/08A RU 2010140853 A RU2010140853 A RU 2010140853A RU 2010140853 A RU2010140853 A RU 2010140853A
- Authority
- RU
- Russia
- Prior art keywords
- executive
- program
- module
- memory
- execution
- Prior art date
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/547—Remote procedure calls [RPC]; Web services
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Multi Processors (AREA)
Abstract
1. Способ распределенных вычислений в распределенной системе, состоящей из одного или более исполнительных модулей, взаимодействующих друг с другом, одного или более модулей памяти, связанных с указанными исполнительными модулями и содержащими инструкции исполнительного модуля, в которой указанные исполнительные модули поддерживают инструкции удаленной передачи управления с возвратом, отличающийся тем, что для адресации памяти используют распределенную память с базовой адресацией, для которой: ! при получении управления по указанной инструкции передачи управления или при выполнении первой инструкции в модуле памяти исполнительного модуля выделяют блок памяти, ! указанный блок памяти освобождают при возврате управления в распределенном стеке вызовов, ! при удаленной передаче управления от одного исполнительного модуля к другому размер указанного блока памяти фиксируют и передают текущий размер указанной распределенной памяти, являющийся суммой размеров всех выделенных блоков в распределенном стеке вызовов, ! относительный адрес в указанной распределенной памяти рассчитывают от начала первого блока, при этом совокупность блоков в стеке распределенных вызовов рассматривают как непрерывную память, ! при выполнении инструкций с распределенной базовой адресацией исполнительный модуль контролирует выход за границы своего блока памяти, ! если исполнительный модуль обнаруживает выход за границы своего блока памяти, он обращается за данными к предыдущему в стеке вызовов исполнительному модулю, ! предыдущий исполнительный модуль либо возвращает данные, если они расположены в его блоке памяти, либ
Claims (52)
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, отличающаяся тем, что указанная инструкция передачи управления содержит дополнительный параметр - указатель на объект, и этот указатель позволяет определить местоположение исполнительного модуля, в модуле памяти которого расположен объект, и указанная следующая инструкция является методом этого объекта.
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
RU2010140853/08A RU2554509C2 (ru) | 2010-10-06 | 2010-10-06 | Система и способ распределенных вычислений |
US13/877,912 US9361266B2 (en) | 2010-10-06 | 2011-10-04 | System and method for distributed computing |
PCT/RU2011/000776 WO2012047134A1 (ru) | 2010-10-06 | 2011-10-04 | Система и способ распределенных вычислений |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
RU2010140853/08A RU2554509C2 (ru) | 2010-10-06 | 2010-10-06 | Система и способ распределенных вычислений |
Publications (2)
Publication Number | Publication Date |
---|---|
RU2010140853A true RU2010140853A (ru) | 2012-04-20 |
RU2554509C2 RU2554509C2 (ru) | 2015-06-27 |
Family
ID=45927951
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
RU2010140853/08A RU2554509C2 (ru) | 2010-10-06 | 2010-10-06 | Система и способ распределенных вычислений |
Country Status (3)
Country | Link |
---|---|
US (1) | US9361266B2 (ru) |
RU (1) | RU2554509C2 (ru) |
WO (1) | WO2012047134A1 (ru) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10152450B2 (en) * | 2012-08-09 | 2018-12-11 | International Business Machines Corporation | Remote processing and memory utilization |
CN106980649B (zh) * | 2017-02-28 | 2020-07-10 | 创新先进技术有限公司 | 写入区块链业务数据的方法和装置及业务子集合确定方法 |
US10572666B2 (en) | 2017-04-20 | 2020-02-25 | Microsoft Technology Licensing, Llc | Return-oriented programming mitigation |
Family Cites Families (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5522070A (en) * | 1992-03-19 | 1996-05-28 | Fujitsu Limited | Computer resource distributing method and system for distributing a multiplicity of processes to a plurality of computers connected in a network |
US5603031A (en) | 1993-07-08 | 1997-02-11 | General Magic, Inc. | System and method for distributed computation based upon the movement, execution, and interaction of processes in a network |
US5896524A (en) * | 1997-02-06 | 1999-04-20 | Digital Equipment Corporation | Off-line clock synchronization for multiprocessor event traces |
JP2000020490A (ja) * | 1998-07-01 | 2000-01-21 | Fujitsu Ltd | 遠隔手続き呼出し機構またはオブジェクトリクエストブローカ機構を有する計算機、データ転送方法、および転送方法記憶媒体 |
AU4793999A (en) | 1998-08-01 | 2000-02-28 | International Business Machines Corporation | Computerized method and system for implementing distributed applications |
US20030084098A1 (en) * | 2000-04-13 | 2003-05-01 | Daniel Lavin | Navigation server for use with, for example, a wireless web access device having a navigation control unit |
US7412581B2 (en) * | 2003-10-28 | 2008-08-12 | Renesas Technology America, Inc. | Processor for virtual machines and method therefor |
US7849452B2 (en) * | 2004-04-23 | 2010-12-07 | Waratek Pty Ltd. | Modification of computer applications at load time for distributed execution |
EP1875350B1 (en) * | 2005-04-20 | 2011-03-16 | Axxana (Israel) Ltd. | Remote data mirroring system |
WO2006110937A1 (en) * | 2005-04-21 | 2006-10-26 | Waratek Pty Limited | Modified computer architecture with coordinated objects |
US7904602B2 (en) * | 2008-02-05 | 2011-03-08 | Raptor Networks Technology, Inc. | Distributed computing bus |
RU72339U8 (ru) * | 2007-12-27 | 2008-06-10 | Общество с ограниченной ответственностью "НТЦ "Фактор" | Модуль многопроцессорной вычислительной системы (варианты) |
-
2010
- 2010-10-06 RU RU2010140853/08A patent/RU2554509C2/ru active IP Right Revival
-
2011
- 2011-10-04 WO PCT/RU2011/000776 patent/WO2012047134A1/ru active Application Filing
- 2011-10-04 US US13/877,912 patent/US9361266B2/en not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
RU2554509C2 (ru) | 2015-06-27 |
WO2012047134A1 (ru) | 2012-04-12 |
US9361266B2 (en) | 2016-06-07 |
US20130326191A1 (en) | 2013-12-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10242420B2 (en) | Preemptive context switching of processes on an accelerated processing device (APD) based on time quanta | |
US8963933B2 (en) | Method for urgency-based preemption of a process | |
US10031773B2 (en) | Method to communicate task context information and device therefor | |
CN102460377A (zh) | 数据处理设备及方法 | |
US9043806B2 (en) | Information processing device and task switching method | |
WO2019028682A1 (zh) | 一种多***共享内存的管理方法及装置 | |
CN104025185A (zh) | 用于使用gpu控制器来预加载缓存的机制 | |
US20240160474A1 (en) | Multi-core processor task scheduling method, and device and storage medium | |
CN110990154B (zh) | 一种大数据应用优化方法、装置及存储介质 | |
US7565659B2 (en) | Light weight context switching | |
US20130024870A1 (en) | Multicore system and activating method | |
US9122522B2 (en) | Software mechanisms for managing task scheduling on an accelerated processing device (APD) | |
US20200264941A1 (en) | Dynamically loadable unikernel binaries | |
CN107180010A (zh) | 异构计算***和方法 | |
US8803891B2 (en) | Method for preempting graphics tasks to accommodate compute tasks in an accelerated processing device (APD) | |
CN110991619A (zh) | 神经网络处理器、芯片和电子设备 | |
CN114637536A (zh) | 任务处理方法、计算协处理器、芯片及计算机设备 | |
RU2010140853A (ru) | Система и способ распределенных вычислений | |
JP2014503898A (ja) | 処理装置の同期動作のための方法およびシステム | |
CN115775199B (zh) | 数据处理方法和装置、电子设备和计算机可读存储介质 | |
CN109408118B (zh) | Mhp异构多流水线处理器 | |
CN109840137B (zh) | 一种跨核调度方法和装置 | |
US20130135327A1 (en) | Saving and Restoring Non-Shader State Using a Command Processor | |
US20220129327A1 (en) | Latency sensitive workload balancing | |
US20130141446A1 (en) | Method and Apparatus for Servicing Page Fault Exceptions |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
MM4A | The patent is invalid due to non-payment of fees |
Effective date: 20161007 |
|
NF4A | Reinstatement of patent |
Effective date: 20171108 |