From: adash Date: Fri, 22 Jun 2007 23:57:00 +0000 (+0000) Subject: Added new prefetch notes X-Git-Tag: preEdgeChange~542 X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=87b4bc1d46082c5c0f94a9c075c82271954b3973;p=IRC.git Added new prefetch notes --- diff --git a/Robust/src/Runtime/DSTM/docs/prefetchnotes b/Robust/src/Runtime/DSTM/docs/prefetchnotes new file mode 100644 index 00000000..06b4742d --- /dev/null +++ b/Robust/src/Runtime/DSTM/docs/prefetchnotes @@ -0,0 +1,58 @@ +Q: Why prefetching? + +Possible prefech calls +a) for array fields +b) for pointer fields +c) for typecasted oid's + +e.g. +==== +x.y.z +x.y.r +x.y.r.t +x[i].z +((Integer) x).z + +Max no of prefetch objects = #DEFINE 20 +control = 1 byte, oid = 4 bytes, new oid = 4 bytes, depth = 1/ 2 bytes, name/type = 2 bytes, offset = 2 bytes, index = 2 bytes, typecastcheck = 2 bytes, + +Assumptions +=========== + +1. Assume a max object size + Q: Why? +2. + +Procedure: +1. Compiler identifies which oids and oids.offset field to prefetch(analysing the C code) +and supplies that information to the Coordinator machine wanting to commit transaction. + Q: How does compiler convey this to a machine? +2. Machine distinguishes and classifies objects as "shared" or "unique" + e.g. while prefetching x.y.z and a.y.z if variable x == a then considered shared else unique +3. If not available in local machine, look up location table and make piles to send + prefetch control messages to all the Particpant machines from which prefetch is required. +4. Iteratively look up the data field of the objects at the Particpant side to find objects + and send them across to Coordinator. +5. Coordinator takes inventory and finds out the location of the objs not found yet. + Q: How to implement if some objects are not found through prefetch? + +Coordinator messages: + + obj not found + +Q: How can we represent offset, or index or typechecking .....in bytes i.e. short type number? + + + +