1. A solar powered refrigeration system comprising: a first subsystem comprising a compressor, an evaporator, a condenser, and an expansion valve, and a first refrigerant cycling through each element of the first subsystem; a second subsystem comprising a solar compressor and a second heat exchanger, and a second refrigerant circulating through the solar compressor and the second heat exchanger, where the second refrigerant is different from the first refrigerant, and wherein the second refrigerant is solar heated by the solar compressor to superheat the second refrigerant, wherein the superheated second refrigerant from the second subsystem transfers energy to the first subsystem at the solar compressor to reduce, but not eliminate, a load on the compressor of the first subsystem, the solar compressor having a parabolic reflector controllably oriented so as to optimally direct sunlight to heat a conduit containing the second refrigerant; wherein the efficiency of the first system is increased by reducing an electrical power requirement of the compressor of the first subsystem by using superheated refrigerant generated by the second subsystem.
2. The solar powered refrigeration system of claim 1, further comprising in the first subsystem a co-generation heat exchanger.
3. The solar powered refrigeration system of claim 1 wherein the second refrigerant has a boiling temperature below a boiling temperature of the first refrigerant.
4. The solar powered refrigeration system of claim 1 further comprising a set of rotating blades at an exit of the parabolic reflector to accelerate vaporized second refrigerant.
The claims below are in addition to those above.
All refrences to claim(s) which appear below refer to the numbering after this setence.
1. A method for generating execution trace data for a program that executes on a target machine, comprising:
determining each block in object code for the program;
determining each block in object code for the program to be instrumented, wherein at least one block in object code for the program is instrumented for executing on the target machine; and
associating each instrumented object code block with a unique memory address of the target machine, such that, if an instrumented object code block is executed, trace data is written to a memory location based on the unique memory address associated with the instrumented object code block; and
employing a stop bit technique to enable more than one instrumentation points to be associated with a unique memory address, wherein one of said unique memory address bits are reserved as a stop bit.
2. The method of claim 1, wherein the program is an application program.
3. The method of claim 1, wherein the method is performed by way of an automated process.
4. The method of claim 1, wherein the instrumenting of the at least one object code block is performed at link time by one of a linker and another facility.
5. The method of claim 1, wherein the instrumenting of the at least one object code block is performed after link time.
6. The method of claim 1, further comprising:
executing the program on the target machine; and
collecting the trace data from the instrumented object code block.
7. The method of claim 1, further comprising:
employing an addressing mode for a target machine architecture for the program to enable the memory location to be accessed with a single instruction.
8. The method of claim 1, wherein instrumenting the object code block further comprises:
determining function boundaries for the object code of the program;
determining instruction boundaries for at least one function in the object code of the program;
determining effects of an instruction on the target machine for the object code of the program;
locating boundaries of basic blocks;
constructing at least one of a control flow graph and a procedure call graph;
and determining each basic block to be instrumented.
9. The method of claim 1, further comprising:
reserving a range of memory locations for writes by instrumentation instructions.
10. The method of claim 1, wherein instrumenting the at least one object code block further comprises employing a machine-independent model of instructions.
11. The method of claim 1, wherein instrumenting the object code block further comprises determining whether it is statically inferable that the first instruction of a function is executed.
12. The method of claim 8, wherein determining whether to instrument the basic block further comprises determining whether it is statically inferable that predecessors of the basic block is executed.
13. The method of claim 1, further comprising:
instrumenting object code for an operating system for the target machine for the program.
14. A system for generating execution trace data for a program, comprising:
a host machine on which object code for the program is instrumented, wherein each instrumented object code block in the object code is associated with a unique memory address, such that, if an instrumented object code block is executed, data is written to a memory location based on the unique memory address associated with the instrumented object code block and a stop bit technique is employed to enable more than one instrumentation points to be associated with a unique memory address, wherein one of said unique memory address bits are reserved as a stop bit; and
a target machine on which the object code for the program executes and on which the trace data is generated;
wherein at least one of the target machine and the host machine comprises a processor and a memory.
15. The system of claim 14, wherein the target machine is a virtual machine running on the host machine.
16. The system of claim 14, further comprising a trace probe device coupled between the target machine and the host machine, wherein the trace probe device collects and buffers the trace data from the target machine and transmits the trace data to the host machine.
17. The system of claim 14 wherein the trace probe device is simulated in a virtual machine running on the host machine.
18. An apparatus for generating execution trace data for a program, the apparatus comprising:
a trace probe device coupled between a target machine and a host machine, wherein the trace probe device collects a plurality of trace data writes to memory locations on a target machine and transfers the data writes to a host machine, the trace data writes being generated in accordance with
a plurality of instrumentation points in the instrumented object code for the program, wherein each instrumentation point is associated with a unique memory address and a stop bit technique is employed to enable more than one instrumentation points to be associated with a unique memory address, wherein one of said unique memory address bits are reserved as a stop bit;
wherein at least one of the trace probe device, the target machine and the host machine comprises a processor and a memory.
19. The apparatus of claim 18, further comprising:
instrumenting object code for an operating system for the target machine that enables the execution of the program; and
collecting trace data generated by the operating system’s instrumented object code during the execution of the program.
20. A method for generating execution trace data for a computer program, comprising:
identifying sections of object code for an operating system for a target machine, wherein the sections control address space switching and context switching;
instrumenting the sections of the operating system object code;
associating an instrumented operating system object code block with a unique memory address, such that, if the operating system object code block is executed, trace data is written to a memory location of the target machine based on the unique memory address associated with the instrumented operating system object code block; and
employing a stop bit technique to enable more than one instrumentation points to be associated with a unique memory address, wherein one of said unique memory address bits are reserved as a stop bit.
21. The method of claim 20, further comprising:
reserving a range of memory locations for writes by instrumentation instructions in the operating system object code.
22. The method of claim 20, further comprising:
reconstructing the instrumented operating system object code; and
transferring the instrumented operating system object code to the target machine.
23. The method of claim 20, further comprising:
employing a stop bit technique to indicate whether one of a kernel process and a non-kernel task are running.
24. The method of claim 20, wherein instrumenting the sections of the operating system object code further comprises generating a store instruction that includes an offset value representing one of an address space ID and a task ID.
25. The method of claim 20, wherein instrumenting the sections of the operating system is performed manually.
26. The method of claim 20, wherein the operating system is a memory-protected operating system.
27. The method of claim 20, wherein the computer program is an application program.
28. The method of claim 20, further comprising:
instrumenting object code for the computer program; and
associating an instrumented object code block of the computer program with a memory location, such that, if the computer program object code block is executed, trace data is written to the memory location.
29. A system for generating execution trace data for a computer program, comprising:
a target machine on which object code for the computer program executes and on which the trace data is generated; and
a host machine on which object code for an operating system for the target machine is instrumented, wherein the instrumented operating system object code controls address space switching and context switching, and wherein the trace data includes information collected from the instrumented operating system object code, and wherein each instrumented object code block in the object code is associated with a unique memory address and a stop bit technique is employed to enable more than one instrumentation points to be associated with a unique memory address, wherein one of said unique memory address bits are reserved as a stop bit, such that, if an instrumented object code block is executed, data is written to a memory location based on the unique memory address associated with the instrumented object code block;
wherein at least one of the target machine and the host machine comprises a processor and a memory.
30. The system of claim 29, wherein the target machine is a virtual machine running on the host machine.
31. The system of claim 30, further comprising a trace probe device coupled between the target machine and the host machine, wherein the trace probe device collects and buffers the trace data from the target machine and transmits the trace data to the host machine.
32. The system of claim 31 wherein the trace probe device is simulated on a virtual machine running on the host machine.
33. An apparatus for generating execution trace data for a computer program, the apparatus comprising:
a trace probe device coupled between a target machine and a host machine, wherein the trace probe device collects a plurality of trace data writes to memory locations on a target machine and transfers the data writes to a host machine, the trace data writes being generated in accordance with instrumentation points in the instrumented object code for an operating system for the target machine, wherein each instrumentation point is associated with a unique memory address and a stop bit technique is employed to enable more than one instrumentation points to be associated with a unique memory address, wherein one of said unique memory address bits are reserved as a stop bit;
wherein at least one of the trace probe device, the target machine and the host machine comprises a processor and a memory.
34. The apparatus of claim 33, further comprising:
instrumenting object code for a program that executes on the target machine; and
collecting trace data generated by at least the program’s instrumented object code during the execution of the program.