4 ms·
What if instead of passing a fetch across the bus, you passed a tiny little program that included conditional indirections - if you want to get x.y.z, you'd hav
by barrkel 10y ago
What if instead of passing a fetch across the bus, you passed a tiny little program that included conditional indirections - if you want to get x.y.z, you'd have a list of two indirections and an offset in the little program.
Push the latency problem of pointerful code closer to the data.
- jackyinger 10y agoThat would be nifty. Though a radical departure from the status quo. Not to say it couldn't be done. Currently DRAM is designed to fetch large pages at a time which are cached in the CPU. Cache is highly beneficial to latency when there is good memory locality in the program being run.
- hinkley 10y agoHere's an even simpler one: double lookup. Fetch a block of memory at the address stored in this memory address (which I may not have fetched already). Our data hierarchies create graphs that have lots of internal pointers in them, and we are constantly warned about the cost of pointer indirections. Memory already knows how to deal with addresses. Teaching it to chase pointers should be easier than teaching it Boolean math. [edit: it appears the real limitation to both our ideas is that virtual memory prevents you from making any decisions on the wrong side of the MMU. You could only ever make conditional fetches from the same page, which could be slightly useful but would be so hard to use I don't know who would bother]
- dom0 10y agoThis does not work, because the latency of accessing memory is inherent to it. It's simply the time required to open a DRAM row (or charge bit lines), which stays more or less the same independent of process scaling. Moving the pointer chasing closer to the memory does not change this larger delay.