As I understand it the I7 has 4 cores and each core has a pair of local
caches. So a processor can switch back an forth between 2 threads and the
cache does not have to be rebuilt. Cache memory can cause very interesting
problems. It works very well when multiple caches map widey seperated main
memory locations, but what happens when 2 caches refer to the same block of
main memory? Cache blocks get invalidated as multiple processors are
updating the same block of main memory. But this wouldn't be a problem
between multiple instances of J.

That would not be the case if J implemented multiple threads to use
multiple cores to speed up computation. J is unique among programming
languages in that it contains constructs ready-made for multi-tasking. For
example, each (&.>) could easily put each item into a separate process to
run in parallel. But this could result in cache collisions as the results
for the various threads would be close together in memory. But that would
be a problem that could be handled. What would probably be a bigger problem
would be all the applications written that would break where the verb
argument to each modifies global names assuming that the verb is not
multi-tasked.
----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm

Reply via email to