An Implementation of Cross Architecture Procedure Call
Laeeq, Khan M
MetadataShow full item record
workstations are ideally suited for computing jobs which require an interactive environment because they are basically single user machines and hence provide consistent response time. Another factor is the availability of many peripheral devices such as mice and light pens etc., which render workstations more user friendly for interactive jobs. However workstations are not suitable for highly compute intensive jobs as they are basically uniprocessor machines operating at moderate frequencies. For such type of work, large mainframes or supercomputers are more suitable, but interactive use of these machines is not economically feasible. Further more devices like mice etc., are not usually available for these types of machines. A typical application program is partly interactive and partly compute intensive and hence requires the features of workstations and supercomputers both. We have implemented a Cross Architecture Procedure call (CAPC) model. The purpose of this architecture is to make supercomputers available to workstation users as compute savers. In this method a workstation user marks some of the procedures in his/her application program which he/she wants to be executed on a remote mainframe or supercomputer connected to the workstation by a network. These procedures are compiled by a compiler to produce machine code for the computer on which they are supposed to be executed. A special purpose loader loads these procedures on the appropriate machines and then these procedures are executed on the remote machines at appropriate times without any further modification in the source code. Usually a user will want to execute compute intensive procedures on supercomputers and interactive parts on a workstation thus utilizing both the machines most efficiently. In our method both local and remote procedures use standard subroutine call instructions unlike RPC. In this architecture, both local and remote subroutines share a common virtual address space (physically distributed over many machines) and thus global and pointer variables can be used and parameters can be passed by reference with complete transparency. Arbitrary nesting of remote and local procedures is also possible. In our prototype implementation we have used an IBM - PC (8088 processor operating at 4.7 MHz) as a workstation and a MAGNUM - 1 (68030 processor operating at 25 MHz) as a compute server. As an IBM - PC does not have any virtual memory hardware (essential for our architecture) we have simulated a virtual memory management system for that machine through software, Our "network" is an RS 232C connection between the two machines using COTPL (Connection Oriented Transport. Provider for Local Communications) operating at 9600 baud. To test the system we have also implemented the required compiler for a simple language (a subset of Pascal - PL/OI which produces code for 8088 and 68030 machines, and also a special loader. The system has been completely implemented and tested with several programs. We have also made a thorough performance study of this system. The System is found to accelerate the applications as much as 2.8 times in the best cases.