Posted Nov 21, 2008 17:05 UTC (Fri) by jzbiciak (✭ supporter ✭, #5246)
[Link]
A deal made long, long ago, when we constructed the first memory hierarchies of rotating drums, mercury delay lines, cathode ray storage tubes and fast, fast core memory.
A great quote appears in my copy of Hennessy and Patterson:
Ideally one would desire an indefinitely large memory capacity such that any particular . . . word would be immediately available . . . . We are . . . forced to recognize the possibility of constructing a hierarchy of memories, each of which has greater capacity than the preceding but which is less quickly accessible.
— A. W. Burks, H. H. Goldstine and J. von Neumann, Preliminary Discussion of the Logical Design of an Electronic Computing Instrument, 1946
Nineteen Hundred Forty Six. Over 60 years ago! Before the invention of the first compiler!
So if caches are a deal with the devil, would this be computing's original sin?
Caching
Posted Nov 21, 2008 18:41 UTC (Fri) by giraffedata (subscriber, #1954)
[Link]
A deal made long, long ago, when we constructed the first memory hierarchies of rotating drums, mercury delay lines, cathode ray storage tubes and fast, fast core memory.
Don't forget cards. The drum was mostly a cache for data principally stored on cards. Since it would take a computer many minutes to access data on cards (it involved instructing a human to load them), the decks used most frequently, such as compilers, typically stayed on the drum to optimize throughput. The system also did readahead and writebehind of cards via the drum, i.e. spooling.
And at the other end: registers. Computers always tried to keep some data in registers (made out of electrical feedback circuits) to avoid the slowness of core memory, and the same scheduling complexities we're talking about now applied to optimizing use of that cache.