I feel like at this point we should be teaching History of Computing in CS programs.
The old people cry, "This is all the same (stuff that's been going on forever," the young cry, "This is the future, old man."
The truth is somewhere in the middle.
"The future is already here, it's just unevenly distributed," very much describes the cycles, but I feel like in some ways this was more obvious 15 years ago, when PC evolution was the focus (nowadays it seems like mobility takes up a lot of bandwidth, which is a huge thing that feels small).
Things like GPUs hitting a tipping point where some feature that had been around for 4-8 years was now ubiquitous enough that software would assume that it was available - and fast. UI expectations ratchet up almost overnight even though the underlying technology has been simmering for years. This was quite pronounced in the 90's, but continued well into the 00's.
Everyone I think can see those, but the epicycles take a bit more study or time. Big architectural changes are driven by cost inequalities in our technologies, and those cycle. Eventually the right somebodies gets fed up and we get SSDs, or 10G Ethernet. Each of those makes some previously abandoned solutions viable again, and they sneak back in (often having to relearn old mistakes).
This multiprocessing idea dates back almost to the very beginning of private sector computing. The ILLIAC IV (1975) was intended to scale to 16 cores but some hardware problems capped it at 4 cores. Those processors were 64bit, and connected to ARPAnet a year before the Cray 1 was born.
Sequent revisited this idea in the late 80's, early 90's, using Intel x86 processor arrays.
We now have a handful of programming languages that have features that could be useful in aggressively NUMA systems (in particular,Scala, Elixir, and Rust). We'll probably see single-box clusters coming around again.
The old people cry, "This is all the same (stuff that's been going on forever," the young cry, "This is the future, old man."
The truth is somewhere in the middle.
"The future is already here, it's just unevenly distributed," very much describes the cycles, but I feel like in some ways this was more obvious 15 years ago, when PC evolution was the focus (nowadays it seems like mobility takes up a lot of bandwidth, which is a huge thing that feels small).
Things like GPUs hitting a tipping point where some feature that had been around for 4-8 years was now ubiquitous enough that software would assume that it was available - and fast. UI expectations ratchet up almost overnight even though the underlying technology has been simmering for years. This was quite pronounced in the 90's, but continued well into the 00's.
Everyone I think can see those, but the epicycles take a bit more study or time. Big architectural changes are driven by cost inequalities in our technologies, and those cycle. Eventually the right somebodies gets fed up and we get SSDs, or 10G Ethernet. Each of those makes some previously abandoned solutions viable again, and they sneak back in (often having to relearn old mistakes).
This multiprocessing idea dates back almost to the very beginning of private sector computing. The ILLIAC IV (1975) was intended to scale to 16 cores but some hardware problems capped it at 4 cores. Those processors were 64bit, and connected to ARPAnet a year before the Cray 1 was born.
Sequent revisited this idea in the late 80's, early 90's, using Intel x86 processor arrays.
We now have a handful of programming languages that have features that could be useful in aggressively NUMA systems (in particular,Scala, Elixir, and Rust). We'll probably see single-box clusters coming around again.