In some case it is interesting to access data directly by the rank(I use this method in the hash.c module in the ec chess engine (chess-ec.com)
In some case it could happen that much bigger memory is needed and only a very small part would be used(64 chess-board fields only 32 pieces).
It could be interesting (and perhaps it already exists) to have a virtual memory hardware that can handle this.
I just present what I have in mind . The concept could be tested with software but should be an electronic device (PCI or special Ram).
Suppose that I have data and the index to access this data is a very big number: I couldn't reserve enough memory in a computer to access this table.
When retrieving data from memory I suppose a computer send the address of the data it wants.
The memory controller receiving the address could transform it in some kind of signature that fit the available size. (the size of the real memory). I think it is usually done with the modulo operation.
The "big" address could be stored along with the data to verify if there is a "collision" . A link address could give another memory address (having the same "big" address signature).
It could be even used for data base. The main Cpu would compute a numeric signature from a string (hardware computation) send the signature as memory address to the virtual memory but I don't how it could handle the table row (variable length).