Next: Synchronization
Up: System Architecture
Previous: System Architecture
In this subsection we describe the basic operations in the prefetch
thread and its interaction with the computation thread
and the prefetch library.
Figure 2:
Computation thread (left) and prefetch thread (right). The main
function without the lines marked by ## is the original
application code. This code is modified to add a prefetch thread
represented by the prefetch function. The lines in the prefetch
function that are not marked with $$ are extracted from the
original main function. Other additional functions are added for the
two threads to communicate with each other. Notice that the
computation part of the main function does not appear in the
prefetch function
|
Figure 2 shows how AASFP's translator converts an example application
into a computation and a prefetch
thread. The programming interface provided by the prefetch library
includes the following four calls:
- create_prefetch_thread (prefetch_function):
This function allows an application to fork a prefetch
thread, and to execute the
prefetch_function.
The prefetch_function is passed as the input argument,
as shown in line 1 of Figure 2.
- prefetch_XXX():
These are a set of functions that the prefetch
thread can use to specify prefetch calls. The
prefetch calls replace the original I/O calls and use
almost the same syntax. For example, for the I/O
call read(stream, ptr, size), AASFP provides the
prefetch call prefetch_read(stream, size). The
parameter ptr for the data is not needed, since
the prefetch call only generates the target data's starting address but never
actually performs the real I/O. Lines P4 and P5 in Figure 2 represent the prefetch
calls corresponding to the I/O calls at lines C5 and C6 of
the main function respectively.
- inform_open(file_pointer), inform_close(file_pointer):
These two functions are used by the prefetch thread to inform
the prefetch library that some file is opened
or closed. Such notification is necessary so that the prefetch library can maintain
a file table consisting of {file pointer, current offset}
for those files accessed by the prefetch thread. Lines P2 and P6 in Figure 2
represent the inform calls corresponding to the open and close
system calls in the computation thread.
- synchronize(synchronization_point, type):
This function synchronizes the two threads. The argument
type can be signal or wait. Synchronization
is discussed in detail in the next subsection.
Next: Synchronization
Up: System Architecture
Previous: System Architecture
chuan-kai yang
2002-04-15