If you look at the hw/sw stack, you’ll find that most everything we do involves associative lookups and it would all be much simpler if we moved to using CAMs (content addressable memory) for main memory. A CAM is basically a hw version of a sw dictionary/hasttable. It can do single cycle lookups between a key and a value and keys can be chosen at will.
Current PCs have some CAMs (CPU caches, MMUs, SSD block mappers, etc) and routers use very large CAMs. But imagine how much simpler the whole sw stack could be if we moved main memory CAM. First of all, we could do away with memory allocators.
Fascinating and exciting. But I’m not sure how “hardware hashtables” totally alleviates a need for memory allocators — it seems to me you still need to deal with memory exhaustion and reclamation.
Likewise Steve states “What we call compilers would largely disappear” but it seems to me it’s more that linkers would largely disappear — Content Addressable Memory doesn’t replace a requirement (if there is one) for translating a higher-level language into machine code.