Method for developing software code and estimating processor execution time
AssigneeUniversity College Cork, National University of Ireland
InventorMichel Schellekens
Life of this patent
Estimating the term…
Loading patent…
AssigneeUniversity College Cork, National University of Ireland
InventorMichel Schellekens
Estimating the term…
A method (1) of developing software code for executing on a target digital processor uses a memory in which it maintains data structures having elements, each of the elements storing data which is represented by a label, and at least some links between the elements are created by the target processor as data is being processed. The method comprises the step (3) of writing the software code with data structure processing operations which comply with random structure preservation rules (2). A static analysis timing tool automatically parses (4) the code developed in step (2) to identify all operations. It determines (7) from an operation and all possible input states for that operation an average time value for execution of the operation by a target data processor, and stores (9) said average time value. It determines (8) from the operation and all possible input states all possible output states for that operation. The timing tool repeats steps (7 and 8) for each next operation, using the all possible output states determined in step (8) as all possible input states. It generates (11) an output total average time which is a sum of all average times stored in step (9).
A method of developing software code for executing on a target digital processor using a memory in which it maintains data structures having elements, each of the elements storing data which is represented by a label, and at least some links between the elements being created by the target processor as data is being processed, the method comprising the steps of:
A method of developing software code for executing on a target digital processor using a memory in which it maintains data structures having elements, each of the elements storing data which is represented by a label, and at least some links between the elements being created by the target processor as data is being processed, the method comprising the steps of:
A method of developing software code for executing on a target digital processor using a memory in which it maintains data structures having elements, each of the elements storing data which is represented by a label, and at least some links between the elements being created by the target processor as data is being processed, the method comprising the steps of:
A method of developing software code for executing on a target digital processor using a memory in which it maintains data structures having elements, each of the elements storing data which is represented by a label, and at least some links between the elements being created by the target processor as data is being processed, the method comprising the steps of:
Dependencies are inferred from the claim text.
Drawings are temporarily unavailable. Open the PDF at USPTO
From the US filing history. Foreign family members aren’t listed.
For performance assessment: by assessing time
Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of…:…
Analysis of software for verifying properties of programs: by runtime analysis
Indexing scheme relating to error detection, to error correction, and to monitoring: monitoring of software
About 3 years 1 month of term left · ends 10 Dec 2029 (estimated)
The invention relates to control of data processor activity and utilization of memory.
There are many software code applications which involve a large number of comparison operations and for which it would be very advantageous to be able to predict the processor time to execute the code. This is particularly true for real time applications such as are flight control systems in aircraft or vehicle cruise control applications.
An example of the source code language which is used for development of comparison-based programs is Java Libraries™. It would be very advantageous to be able to accurately predict the processor execution time for a program developed in this language as execution of the programs involves many cycles of retrieving libraries and processing their data. If accurate prediction were possible, it would in turn be possible to correctly deploy the correct hardware resources for optimum trade-off between performance and cost, to plan the timing of interactions between tasks, and to allocate tasks to processing units.
The invention will be more clearly understood from the following description of some embodiments thereof, given by way of example only with reference to the accompanying drawings in which:
FIG. 1 is a flow diagram of the major steps of a method of the invention;
FIG. 2 is a plot of illustrating random structures before and after operations of software code developed according to the invention; and
The invention provides a method of developing software code, called MOQA (MOdular Quantitative Analysis), the method involving use of a static analysis timing tool called “Distri Track” after software development to automatically estimate the actual times for execution of the code. The MOQA method allows knowledge about the data to be derived by the Distri Track tool, i.e. all possible states of data are known at any given point of the code execution, and to keep track of all states during the execution.
This method of developing software code is based on a specific body of rules. Any programmer or automatic development tool which adheres to these rules of how data is created and manipulated can apply the Distri Track tool to statically analyze the code and determine the average-case time of the computation.
The Distri Track tool extracts the data distribution information at any given point of the computation. By using this information in a way described further below, the average number of basic steps a computation performs (for example, comparisons, swaps, and assignments) in order to manipulate the data can be calculated by Distri Track. This information in turn enables Distri Track to statically predict the average-case time of the computation, simply by multiplying the number of computation steps by the time it takes to compute such a step (or an upper bound of this time) on the particular processor used and summing up the resulting times.