First processor for dividing long argument data into packets and storing total packet count and packets in shared buffer for subsequent execution by second processor
First Claim
1. A method of using a multiprocessor computer system having a first processor for calling extended functions, a second processor for executing extended functions and a communications buffer of a predetermined data size for communications between the first and second processors, said communications buffer implemented as a shared address space accessible by both the first and second processor, each said extended function having at least one argument specifying data that is greater in size than the predetermined data size of the communications buffer, said method comprising the steps of:
- calling one of said extended functions from a main program running on the first processor;
dividing the argument data corresponding to said called extended function into a plurality of data packets of predetermined packet size corresponding to said called extended function, said predetermined packet size permitting a plurality of said data packets to be simultaneously stored within the communications buffer;
executing a first communications routine running on the first processor via a first entry point command corresponding to said called extended function, the step of executing said first communications routine includingwriting an extended function and a data packet count corresponding to said called extended function into the communications buffer, said data packet count indicating a total number of data packets of argument data to be sent to the second processor for said called extended function,sequentially (a) writing one of said data packets into the communications buffer, (b) determining if one of said data packets has been read from the communications buffer by the second processor, (c) writing another one of said data packets into the communications buffer if a number of said data packets written into the communications buffer minus a number of said data packets read from the communications buffer indicates free data space within the communications buffer greater than said predetermined packet size, until said plurality of data packets have been written into the communications buffer;
reading said extended function identifier and said data packet count from the communications buffer by the second processor;
executing a second communications routine running on the second processor, the step of executing said second communications routine includingsequentially (a) reading one of said data packets from the communications buffer, (b) indicating one of said data packets has been read from the communications buffer, and (c) determining whether said one of said data packets read from said communications buffer is a last one of said data packets for said called extended function by comparing a number of data packets read from said communications buffer with said data packet count;
if it is determined in said determining step that said one of said data packets is not said last one of said data packets, repeating said reading, indicating, and determining steps for another one of said data packets, andif it is determined in said determining step that said one of said data packets is said last one of said data packets, performing said called extended function corresponding to said extended function identifier on the second processor.
0 Assignments
0 Petitions
Accused Products
Abstract
A method is provided for adding extended functions to a multiprocessor system, specifically, functions that may be called from programming running on a first processor and executed by a second processor. The function may have an argument that requires a large amount of argument data. Each extended function is associated with a special entry point command, which is in turn, associated with a communications routine that handles the transfer of the large argument data from the first processor to the second processor in bursts.
-
Citations
13 Claims
-
1. A method of using a multiprocessor computer system having a first processor for calling extended functions, a second processor for executing extended functions and a communications buffer of a predetermined data size for communications between the first and second processors, said communications buffer implemented as a shared address space accessible by both the first and second processor, each said extended function having at least one argument specifying data that is greater in size than the predetermined data size of the communications buffer, said method comprising the steps of:
-
calling one of said extended functions from a main program running on the first processor; dividing the argument data corresponding to said called extended function into a plurality of data packets of predetermined packet size corresponding to said called extended function, said predetermined packet size permitting a plurality of said data packets to be simultaneously stored within the communications buffer; executing a first communications routine running on the first processor via a first entry point command corresponding to said called extended function, the step of executing said first communications routine including writing an extended function and a data packet count corresponding to said called extended function into the communications buffer, said data packet count indicating a total number of data packets of argument data to be sent to the second processor for said called extended function, sequentially (a) writing one of said data packets into the communications buffer, (b) determining if one of said data packets has been read from the communications buffer by the second processor, (c) writing another one of said data packets into the communications buffer if a number of said data packets written into the communications buffer minus a number of said data packets read from the communications buffer indicates free data space within the communications buffer greater than said predetermined packet size, until said plurality of data packets have been written into the communications buffer; reading said extended function identifier and said data packet count from the communications buffer by the second processor; executing a second communications routine running on the second processor, the step of executing said second communications routine including sequentially (a) reading one of said data packets from the communications buffer, (b) indicating one of said data packets has been read from the communications buffer, and (c) determining whether said one of said data packets read from said communications buffer is a last one of said data packets for said called extended function by comparing a number of data packets read from said communications buffer with said data packet count; if it is determined in said determining step that said one of said data packets is not said last one of said data packets, repeating said reading, indicating, and determining steps for another one of said data packets, and if it is determined in said determining step that said one of said data packets is said last one of said data packets, performing said called extended function corresponding to said extended function identifier on the second processor. - View Dependent Claims (2, 3)
-
-
4. A method of using a multiprocessor computer system having a first processor for calling extended functions, a second processor for executing extended functions and a communications buffer of a predetermined data size for communications between the first and second processors, said communications buffer implemented as a shared address space accessible by both the first and second processor, each extended function having at least one first argument specifying data that is greater in size than the predetermined data size of the communications buffer and at least one second argument specifying data required for performing that extended function that is smaller in size than the predetermined data size of the communications buffer, said method comprising the steps of:
-
calling an extended function from a main program running on the first processor; dividing the first argument data corresponding to said called extended function into a plurality of data packets of predetermined packet size corresponding to said called extended function, said predetermined packet size permitting a plurality of said data packets to be simultaneously stored within the communications buffer; executing a first communications routine running on the first processor via a first entry point command corresponding to said called extended function, the step of executing said first communications routine including writing an extended function identifier and a data packet count corresponding to said called extended function into the communications buffer, said data packet count indicating a total number of data packets of said first argument data to be sent to the second processor for said called extended function, writing the second argument data into the communications buffer, determining if the second argument data has been read from the communications buffer, sequentially (a) writing one of said data packets into the communications buffer, (b) determining if one of said data packets has been read from the communications buffer by the second processor, (c) writing another one of said data packets into the communications buffer if a number of said data packets written into the communications buffer minus a number of said data packets read from the communications buffer indicates free data space within the communications buffer greater than said predetermined packet size, until said plurality of data packets have been written into the communications buffer; reading said extended function identifier and said data packet count from the communications buffer by the second processor; executing a second communications routine running on the second processor, the step of executing said second communications routine including reading the second argument data from the communications buffer, indicating the second argument data has been read from the communications buffer, sequentially (a) reading one of said data packets from the communications buffer, (b) indicating one of said data packets has been read from the communications buffer, and (c) determining whether said one of said data packets read from said communications buffer is a last one of said data packets for said called extended function by comparing a number of data packets read from said communications buffer with said data packet count; if it is determined in said determining step that said one of said data packets is not said last one of said data packets, repeating said reading, indicating, and determining steps for another one of said data packets, and if it is determined in said determining step that said one of said data packets is said last one of said data packets, performing said called extended function corresponding to said extended function identifier on the second processor. - View Dependent Claims (5, 6, 7, 8)
-
-
9. A method of using a multiprocessor computer system having a first processor for calling extended functions, a second processor for executing extended functions and a communications buffer of a predetermined data size for communications between the first and second processors, said communications buffer implemented as a shared address space accessible by both the first and second processor, each extended function being one of (1) a first type extended function having at least one argument specifying data that is greater in size than the predetermined data size of the communications buffer, and (2) a second type extended function having at least one first argument specifying data that is greater in size than the predetermined data size of the communications buffer and at least one second argument specifying data required for performing that extended function that is smaller in size than the predetermined data size of the communications buffer, said method comprising the steps of:
-
calling an extended function from a main program running on the first processor; dividing the first argument data corresponding to said called extended function into a plurality of data packets of predetermined packet size corresponding to said called extended function, said predetermined packet size permitting a plurality of said data packets to be simultaneously stored within the communications buffer; if said extended function is a first type extended function, executing a first communications routine running on the first processor via a first entry point command corresponding to said called extended function, the step of executing said first communications routine including writing an extended function identifier and a data packet count corresponding to said called extended function into the communications buffer, said data packet count indicating a total number of data packets of said argument data to be sent to the second processor for said called extended function, sequentially (a) writing one of said data packets into the communications buffer, (b) determining if one of said data packets has been read from the communications buffer by the second processor, (c) writing another one of said data packets into the communications buffer if a number of said data packets written into the communications buffer minus a number of said data packets read from the communications buffer indicates free data space within the communications buffer greater than said predetermined packet size, until said plurality of data packets have been written into the communications buffer; if said extended function is a second type extended function, executing the first communications routine running on the first processor via a second entry point command corresponding to said called extended function, the step of executing said first communications routine including writing an extended function identifier and a data packet count corresponding to said called extended function into the communications buffer, said data packet count indicating a total number of data packets of said first argument data to be sent to the second processor for said called extended function, writing the second argument data into the communications buffer, determining if the second argument data has been read from the communications buffer, sequentially (a) writing one of said data packets into the communications buffer, (b) determining if one of said data packets has been read from the communications buffer by the second processor, (c) writing another one of said data packets into the communications buffer if the number of data packets written into the communications buffer minus the number of data packets read from the communications buffer indicates free data space within the communications buffer greater than said predetermined packet size, until said plurality of data packets have been written into the communications buffer; reading said extended function identifier and said data packet count from the communications buffer by the second processor; if said extended function identifier indicates said extended function is the first type extended function, executing a second communications routine running on the second processor, the step of executing said second communications routine including sequentially (a) reading one of said data packets from the communications buffer, (b) indicating one of said data packets has been read from the communications buffer, and (c) determining whether said one of said data packets read from said communications buffer is a last one of said data packets for said called extended function by comparing a number of data packets read from said communications buffer with said data packet count; if it is determined in said determining step that said one of said data packets is not said last one of said data packets, repeating said reading, indicating, and determining steps for another one of said data packets, and if it is determined in said determining step that said one of said data packets is said last one of said data packets, performing said called extended function corresponding to said extended function identifier on the second processor; if said extended function identifier indicates said extended function is the second type extended function, executing a second communications routine running on the second processor, the step of executing said second communications routine including reading second argument data from the communications buffer, indicating the second argument data has been read from the communications buffer, sequentially (a) reading one of said data packets from the communications buffer, (b) indicating one of said data packets has been read from the communications buffer, and (c) determining whether said one of said data packets read from said communications buffer is a last one of said data packets for said called extended function by comparing a number of data packets read from said communications buffer with said data packet count; if it is determined in said determining step that said one of said data packets is not said last one of said data packets, repeating said reading, indicating, and determining steps for another one of said data packets, and if it is determined in said determining step that said one of said data packets is said last one of said data packets, performing said called extended function corresponding to said extended function identifier on the second processor. - View Dependent Claims (10, 11, 12, 13)
-
Specification