Computer storage has been of two types; fast, but which requires power to retain its contents (primary), and slow drives which remember without power (secondary). But what happens when the slow drives become as fast as primary?
There is also extremely fast memory on the computer processor chip, used for its temporary storage and caching. Whether it also can be replaced by secondary storage is debateable, as its speed is reliant upon the very short distances to the computing part of the chip.
Texas Instruments had a TMS9900 processor in the 1970s that used external memory for its context storage, but the speeds of processors have become far too fast for such an architecture to work now. Changing context was as simple as pointing to another memory block.
The current primary-secondary architecture has resulted in distinct handling of each type of storage.
Primary storage, typically called random-access memory (RAM), stores the parts of a program that are currently running, along with data currently being used. It is directly connected to the processor's address bus to enable the processor to get to whatever it needs very quickly.
Secondary storage, in the form of hard disk drives (HDD), with their spinning magnetic disks, or solid-state drives (SSD), with their special non-volatile, slow memory chips, holds the distributed copies of programs, and their data files. Secondary storage is housed separately, with their own processing chips to control them and communicate over an input/output (IO) bus to similar communication chips connected to the main processor. Some are now available on cards that plug into the computer's bus, but that has only really given a few-fold increase in speed and dispensed with the cables.
The difference for the processor is that for primary storage, the processor uses memory-addressing commands, while for secondary storage, it uses input and output commands. This difference should not be underestimated, as while SSDs are many times faster in speed and access time than HDDs, they don't provide that same factor in overall performance increase. That is because the software servicing overhead for drives is significant.
The operating system (OS) uses memory caching to try to make the program and its data less of the bottle-neck, but the initial loading of each proceeds at the speed allowed by the secondary storage. This separation of storage has dictated the whole way programs and data are distributed and loaded into computers. In particular, the distribution format is tailored for the secondary storage formats, which can be quite different from the in-memory format that the programs and data are actually organised by while stored there.
While much software and data is not distributed on physical mediums like floppy disks, CDs or DVDs these days, some programs have so much accompanying data that they are distributed on hard drives that can be plugged in and used directly in the computer. This is because the time to transfer by any other means, and the alternative storage mediums, would cost more than the drive.
When non-volatile memory is fast enough, and cheap enough to use in the amounts required, it is then a candidate for replacing the current primary storge, RAM. But what are the consequences?
Initially, most operating system suppliers will probably use the extra capacity as a RAM disk, where it is treated logically as just another drive, giving a substatial operational speed boost. This will involve the least amount of change to their software, as RAM drives have been around for decades, but have typically been too expensive to implement to any scale.
Many years ago, some DOS systems provided the ability for some programs to terminate and stay ready (TSR), so that they could be simply activated, without having to reload from the then very slow floppy disks. The mechanism was that the RAM maintained an image of the directly executable program that simply could be run when required.
Having non-volatile storage that is as fast as RAM opens up the possibility that all programs are TSRs upon installation. The process could be helped by having the distribution format basically being the memory image. This makes sense, because rather than artificially differentiating between stored and operating versions in the same RAM, there only needs to be the one fully operational version that can be run at will from the start. Indeed, programs could be supplied on memory modules ready to run after being plugged in.
So what does that mean for how the current computing architectures need to change?
Firstly, the plethora of connectors for drives will be replaced by more for memory modules, which have the masses of connections required for efficient use. Some secondary memory modules are already available, though they do not operate at RAM speeds. The current fairly exposed structure for modules may need to change to a more rugged one to allow for less skilled installers.
Next is that the chipsets that support the processor will have much drive access functionalty removed, though there will still be a couple of legacy connections, just like those for floppy disk drives (FDD) were supplied on new motherboards for years after almost nobody used them.
Thirdly, operating systems, as the shift to purely memory-based operation takes place, will reduce a lot of the code that is geared towards drive management and its optimisation. This is a fundamental shift, well beyond the new optimisations that accompanied SSD use over HDDs, as it deprecates a whole lot of IO and storage routines in favour of memory ones.
For computer users, computer and program startup times will be a quantum leap above the improvements many gained from swapping their HDDs with SSDs. This is because there will be very little preparation to operate. Currently, programs and data have to be loaded from disk and positioned in memory before they can be used.
While there may be substantial time while internal data files retain their current formats, widespread use of fast RAM will mean that their internal formats may change to match the structures actually used in memory, just to minimise the conversion time that may still be a substantial delay to large file startup for those who have got really used to the new instant run of programs.
Once available, fast non-voltile memory will transform computer use, just because it will make a lot of the dead time that frustrates current users disappear. Of course, it will spur a rise in high-speed communications, as people will want remote access to data to be as fast that of their local data.
Most of our operating systems are based around technology from the 1970s and 1980s. Perhaps we can do better?
If we are to have substantial changes to OSs to tackle a fast non-volatile RAM paradigm, perhaps it is time to bring them into the current century given how much has been learnt about security and other computing architectures in the last 50 years. We have the opportunity to build OSs from the ground up to be efficient and secure by design.
To cater for the transition from older OSs, we can use the advances in software emulation to keep some legacy programs around. This would need to be done while people have not become so acclimatised to super-fast software that they won't put up with the slower emulations during the transition, as that would tend to prompt makers to just continue to make their versions for the older OSs. We should take advantage of a paradigm shift to fast storage to not just put lipstick on our pigs of OSs.