Patent ID: 7210145
Filing Date: 2007-04-24
Classification: G06F

Abstract:
1. In a software for a parallel processing application, A, composed of software objects (programs) called cells, cells together constituting the program of parallel processing application, a method for using the new Technology for Integrated Computation and Communication (TICC) to specify and implement guaranteed asynchronous high-speed buffer-free parallel communications among cells, without assistance from an operating system, this being the primary characteristic of integration of computation and communication; each cell being a program or a canonical representation of a program containing at least six ports, said cell being the parent-cell of said ports attached to the said cell, wherein cell-to-port attachments enabling said port and said cell to exchange data with each other and ports being themselves software objects; cells running in parallel with each other on multiple processors with each cell running in its own assigned processor or some cells running concurrently in processors that they share with other cells, at least one of the processors being dedicated as communications processor, each communications processor being associated with one or more cells, being called client-cells of said communication processor and said communications processor being called communications-server of each said client-cell, no client-cell having more than one communications-server associated with it; communications processors enabling cells to communicate with each other in parallel asynchronously, using their respective ports via specially established pathways that connect message sending ports to message receiving ports, each said pathway containing its own unique pathway-memory to hold a message that is being delivered, each pathway containing a finite number of agents to coordinate and synchronize message transfers and enforce security, pathways, agents and pathway-memories being themselves software objects defined by programs; agents on said pathway being organized into a ring around pathway-memory of said pathway wherein each agent has a next agent, the next agent of the last agent being the first agent, this ring being referred to as agent-ring of said pathway; models of TICC-sequential and TICC-parallel computations being such that no port would receive a second message while its parent cell was still working on the first received message so that no pathway-memory ever contains a buffer with message queue of more than one message, thus making it possible to have communications, free of buffers holding message queues, hereafter referred to as buffer-free communications; message sending ports being connected to one of the agents on the agent-ring of pathway, said message-receiving ports being similarly connected to another agent on said agent-ring of said pathway, said another agent being next to the agent to which said message sending ports were connected, each message sending port sending a signal to the agent it is connected, after receiving a signal from its own parent-cell to send off a message in pathway-memory of said pathway to said message receiving ports, said agent then sending a signal to its next agent and said next agent then broadcasting signals to all ports in said message receiving port-group, each port in said message receiving port group then posting a new message receipt signal on its parent-cell, thus causing message in said pathway-memory to be delivered to parent-cells of ports in said message receiving ports; protocols for cell to port, port to agent, agent to agent, agent to port and port to cell signal exchanges being executed by said communications processors, without assistance from said operating system, causing signals to travel along a pathway from said message sending ports to said message receiving ports and eventually establishing a context in which parent-cells of message receiving ports may receive and respond to messages in the pathway-memory of said pathway; dynamically allocating real memories to pathway-memories; specifying port-groups containing ordered collections of one or more distinct ports such that no two ports in a port-group have the same parent-cell, the number of parent-cells of ports in a port-group being the same as the number of ports in that port-group, each port-group thus forming a corresponding cell-group consisting of ordered collection of parent-cells of ports in that port-group, said cell-group being always associated with said port-group; dynamically establishing pathways between pairs of distinct port-groups, and for some other port-groups, if any, establishing a self-loop pathway from each of the said other port-group to itself, always making sure that each port in port-group is connected to only one pathway, said pathways and said port-groups together constituting the software network of parallel processing application; cells exchanging messages and responding to received messages as they receive them, in parallel with each other in said multiple processors with designated communication processors, using pathways in the software network to exchange messages, the said program of application together with said software network constituting the application system; dynamically modifying existing pathways in said software network of application A without service interruption and without loss of data flowing through pathways in the said software network of application A, while cells in said program of application A are running their respective programs in parallel; in each pathway in the network of application A connecting a message sending port-group to a message receiving port-group, tuning each port in said message sending and message-receiving port-groups to its parent-cell, and tuning ports in said message sending and said message receiving port groups to agents they are respectively connected to, said tuning causing each (port, parent-cell) and (port, agent) pair on said pathway to always listen to each other every time they exchange signals, no parent-cell, port or agent wasting time waiting for synchronization in order to send signals, thus facilitating high-speed message delivery, and no parent-cell, port or agent ever missing to receive and respond correctly and promptly to received signals, thus guaranteeing message delivery across said pathway from said message sending ports to said message receiving ports; specifying group-to-group parallel communications among port-groups of said software network of application A, through use of Causal Communication Language (CCL) statements, which may be freely intermixed with any conventional programming language statements used to define programs of cells, ports and agents, CCL statements appearing in program of cell specifying signal exchange between said cell and its ports, CCL statements appearing in program of port specifying signal exchange either between said port and its parent-cell or between said port and agent tuned to said port, CCL statements appearing in an agent specifying signal exchange either between said agent and port tuned to said agent or between said agent and its next agent; building a CCL-sequence for each pathway in said software network and for each port connected to said pathway that may send messages via said pathway, being hereafter called a sending-port, each such CCL-sequence being a concatenation of CCL statements appearing in cells, ports and agents in said application system, whose execution would cause signals to be transmitted from the parent-cell of said sending-port to parent-cells of all ports in message receiving port-group connected to said pathway, CCL statements appearing in said CCL-sequence of said sending-port being in the following order: first CCL statement specifying signal to be sent by parent-cell of said sending-port to said sending-port itself, second CCL statement specifying signal to be sent from said sending-port to agent tuned to said sending-port, third CCL statement specifying signal to be sent from said agent to its next agent on the agent-ring of pathway connected to said sending-port, fourth CCL statement specifying signals to be broadcast from said next agent to all ports in the message receiving port-group of said pathway, and the last CCL statement specifying signals to be sent from each port in said message receiving port-group to its parent-cell, there being one such CCL-sequence for each sending-port in said software network, execution of protocols associated with all CCL-sequences of all sending-ports in a message sending port-group, in the order CCL statements appear in said CCL-sequences, causing message in pathway-memory of pathway connected to said message sending port-group to be delivered to all parent-cells of ports in the message receiving port-group of said pathway for each message sending-port in a message sending port-group presenting to communications-server of its parent-cell the CCL-sequence of said sending-port, when message in pathway-memory of pathway connected to said sending-port is ready to be sent, said communications-server executing CCL statements in each CCL-sequence presented to it, in the order CCL statements appear in said CCL-sequence, communications-server executing without fail every CCL-sequence presented to it in order they were presented, thus causing messages sent by every sending-port in every message sending port-group to be delivered to its corresponding message receiving port-group; each parent-cell of each port in said message receiving port-group, when activated to run the program of said parent-cell in a processor of said multiprocessor system, polling ports of said parent-cell in a predetermined cyclic order one port at a time to check for presence of a new message delivered to said port, cyclic polling continuing until said parent-cell terminates its operations based on satisfaction of predefined conditions or based on receipt of an interrupt signal from another cell, for any port of said parent-cell polling said port being in one of two modes: responding immediately to delivered new message at the polled port and then proceeding to poll its next port, if new message is indeed present at the polled port at the time of polling said polled port, else proceeding immediately to poll the next port of said polled port, if no new message is present at the polled port at the time of polling said polled port, or waiting at said polled port for a new message to arrive, responding to said new message when it arrives and then polling the next port of said polled port; parent-cell of each port in a message receiving port-group hereinafter called the receiving-port, responding to received new message at said receiving-port, only after all parent-cells of all ports in said message receiving port-group had completed all of their respective computations triggered by receipt of said new message and had written their respective response messages in the pathway-memory of pathway connected to said message receiving port-group, messages so written in said pathway-memory by all said parent-cells of ports in the said message receiving port-group being the joint-response-message, parent-cell of each said receiving-port then presenting CCL-sequence of said receiving-port to communications-server of said parent-cell, thereby causing said joint-response-message to be eventually delivered back to cells that sent said new message; and each pathway-memory supporting computations performed by parent-cells of ports tuned to said pathway-memory while parent-cells are responding either to message received from said pathway-memory, by providing execution environment for programs that respond to said received message, so that said message in said pathway-memory need not be copied in order for said parent-cells to respond to said message.