I've always wondered if its possible to write software that will run on computers with arbitrary number of memory heirarchy eg. x amount of l1/l2 cache -> main memory (RAM) -> SSD -> HDD -> Archive storage where you can plug in a new type of memory as it becomes available (eg. 3dxpoint) and it will adapt to run optimally on that hardware without rewrites.
> I've always wondered if its possible to write software that will run on computers with arbitrary number of memory heirarchy
I think that's already possible today - the Legion programming system claims to do exactly that (among other things). I have absolutely no experience with it though so I might be completely wrong.
> By making the Legion programming system aware of the structure of program data, it can automate many of the tedious tasks programmers currently face, including correctly extracting task- and data-level parallelism and moving data around complex memory hierarchies.
Or designing software for a theoretical system like an ideal reconfigurable computer with reconfiguring latency that is as fast as processing latency and then have hardware engineers design towards that as opposed to having software engineers target hardware like we do know. Feels like that would make for an interesting experiment.