Over time I learned more about how computers work through writing
programs. It struck me that many of the stock tools of programmers,
such as sorting algorithms, linked lists, B-Trees, can be seen as
workarounds to overcome limitations in the design of the hardware.
In thinking about computer design, it is usual to focus
attention on the processing elements. I realised that some of
the biggest design problems are actually in memory.
Using 'linear' RAM memory is an extraordinarily wasteful use
of circuitry.
When you retrieve data from RAM only one 'cell' is
actively providing information. All the others lie idle.
One way to look at it is that in 1 Mb of computer memory, at any
moment you can actively be working with only 16 millionths of its
capability. Other ways of looking at it show
computer memory in a better light, nevertheless, a huge improvement
in computers could come about simply from improving the structure
of computer memory.
I could see how to make that improvement and wanted to do it
myself.