For your second visit to my AI buffet I’ve dished up an array of tidbits that demonstrate how exponential growth in transistor density has led the world to believe in magic, but don’t be deceived by what you find on your plate. It’s delicious but it’s not necessarily nutritious. If you missed out on the first course, pick up a spoon and head over to part 1.
Technological advancement is a thing we’ve come to take for granted, so much so that barring something totally catastrophic, unavoidable and unexpected, we can predict with a reasonable level of certainty that it will continue on much the same trajectory into the future. The foreseeable parts, anyway.
The trend remains predictable enough to describe it as if it’s some sort of Law Of Nature, but it isn’t. It just looks like one for now.
Kryder’s Law stated that the density of information stored on hard disks would increases by a factor of 1000 every 10.5 years, which looks roughly the same as disk density doubling around every 13 months. It held true for a while when crazy things were happening to hard drive technology, and we saw drives go from a few megabytes to a few terabytes in what seemed like no time whatsoever, but this empirically observed trend was not a law. We’ve passed through the days when manufacturing and encoding innovations could make the bit density on a platten continue to multiply as if by magic, and now predictions of future disk capacity growth have dwindled to something much more conservative.
Solid State Storage, however, lives by a different Law, and while it is true that this too is no more than an empirical retelling of the phenomenological trend, it has a different trajectory, and one that had many other implications on the way tech has evolved in the past 50 years.
When I was designing high-reliability control systems in the nineties for a variety of industries and applications, the issue of real-time-ness was the headache we dealt with every day.
In a big, complicated control system - the type you have in a piece of military hardware or some high-energy/high-risk industrial process - you’ve usually got a whole bunch of different things to do, all at the same time. Passing commands around the system needs to happen at the same time as you gather status information in response to those commands. You're running a bunch of control algorithms to process the data and come up with new commands, and at that time you only had a limited amount of processing power in an embedded system to do all with, as well as a limited amount of memory.
You couldn’t afford for some glitch on the network to hold up the processor or for an unusually complex bit of floating point math to delay the results of a problem.
Everything needed to happen everywhere…all at once.
This is why we ended up with real time operating systems (RTOS) and deterministic networking.
Real-time in computing has become a strangely quaint concept these days, but in the industrial control world it’s something very special. It involves forcing the processor to switch between the different things it has to do on a defined schedule, so that no individual task can ever hold-up any other. Task switching in these environments is strictly time bound and with each hop between tasks, you need to file away everything you’re doing very quickly so that you can load all of the data for the next task and get on with that. Context switch too frequently and your processor will never get anything done because it is so busy filing and unfiling context data. Switch too infrequently and time-critical processes won’t get serviced often enough to maintain their connection to what’s happening out in the real world.
In today’s office ICT environment, a network is either an RJ45 socket under the desk or a WiFi access point. How the stuff in the middle works is somebody else’s problem and of almost nobody in particular’s interest. Perhaps somebody pops there head over the partition now and then to say “internet’s slow today, right?” but other than that, you’ve probably got no clue how long it takes for a packet of data to get from your computer to its intended recipient somewhere else in the world.
Deterministic networks are different. With these, the time taken for every end to end transaction is 100% guaranteed in advance 100% of the time. When real world events in different places need to be precisely synchronized, deterministic networks are essential. Making them a reality used to be quite a challenge. You need to slice and dice communications into manageable chunks and then find a way to accurately multiplex things across a network with a very high level of predictability. A few ASICs were available at the time to do this in hardware but they were expensive, so you ended up adding the overhead of network management into the already packed task list of the RTOS, further reducing the amount of time you had to perform other critical functions.
Moore’s Law held true through the decades, during which the semiconductor industry continued to give us levels of year-on-year growth in terms of available memory and clock speeds in embedded processors that were truly game changing. With every redesign, we had more RAM and more clock cycles each second to handle task switching without having to resort to pushing context data into painfully slow long term memory.
In fact, everyday, general purpose computing eventually got so fast and so memory-bloated that it became uneconomical to spend money on custom hardware, expensive RTOS licenses and obscure deterministic networks for industrial applications where timing was not strictly critical, and many of the real-time embedded design people (like me) disappeared from all but the most critical of industries.
Where we had previously been designing bespoke single board computers to perform these critical functions, it became possible to run industrial process control on COTS hardware and Windows CE with Modbus over IP or some other commodity comms solution. Memory became so cheap that people could get away with writing bad code, reasonably safe in the knowledge that even your memory leaks and stack overflows would go unnoticed (or would disappear like magic if you cycled the power…).
Those products were not real time and their networks were not deterministic.
They just worked fast enough that they looked as though they were, and as a result the risk remained (and remains) that if some set of circumstances came along that require a task to be truly real time and deterministic, those tasks will probably fail.
We never bothered to make up an acronym to describe this sort of product, but maybe given the current trend we would name them Fast Artificial Real-Time Determinism (FART-D…maybe).
When I started coding we lived in an 8-bit world that rarely included what you might strictly describe as an Operating System. Typical microprocessors ran at clock speeds measured in a few megahertz, instructions happened sequentially one at a time, with every instruction other than the the simplest ones taking a few clock cycles to execute. The most sophisticated memory systems might have some page controls to make it seem as though the address range was larger, but really everything was flat and chopped up into integers ranging in value from 0 to 255 (or -127 to +127 if you wanted to get fancy) and was squeezed into a universe 65,536 address slots wide. Floating point support was not an option at this level in the system.
When you wanted to make things appear on a screen connected to the computer it was a juggling act. In one mode you might be able to write data directly into display memory and watch as the contents were reflected instantaneously as dots on the screen. By fiddling around in binary you could make shapes in black and white appear that represented the ones and zeroes and by manipulating chunks of memory all at the same time you could do impressive things to make those simple shapes move around.
In other modes the value of the memory cell would be converted by a graphics chip to a colour or a greyscale and used to represent each (somewhat larger) pixel. My very first computer supported full screen resolutions of 64 x 48 pixels in monochrome, but I soon graduated to one that offered the astonishing capability of selectable modes, offering anything from 2 colour (black and white) 640 x 256 or 8 colour 160 x 256 resolution!
There were a few technical hoops you could jump through to trick the casual observer into believing your graphics were moving smoothly around the screen (enter the Sprite), but it was hard work, and the processor was doing absolutely nothing else while it moved things around.
If it were not for the human brain's sluggish response to visual stimuli and the 20 milliseconds of free time in between each frame refresh on the TVs we were using to display graphics there would have been no time left to actually create game play. At the time, those 8 bit games were bleeding-edge to us, but even if we pushed the hardware to the maximum possible capabilities each image on the screen looked like garbage. Computer generated garbage.
There was no way back then that you could stream video to a computer screen. You didn’t have the luxury of memory with which to realistically represent every pixel in a convincing enough range of shades, and even if you did, you wouldn’t have the processing power to move all that data around quickly enough in memory, and you didn’t have a network medium with enough bandwidth to get 25 frames of screen data into your computer in real-ish-time.
Today - as a result of Moore’s Law - we stare at little screens in our palms displaying full frame rate video at something very close to Full HD all the time, with pixels that can each represent 16,777,216 different shades. With multi-core, 64 bit processors running at clock speeds measured in GigaHertz, GigaBytes of memory and dedicated graphics processors sitting behind those displays, streaming cinema quality video is one of the simplest things they can do.
That little screen can display any image we can imagine from a black and white sketch of a stick figure to the most detailed photorealistic picture our brains can perceive. If you were to look at an image taken of the Mona Lisa on that phone it would appear to you as if it were the original - even though it were just a photograph. You could ask some generative AI algorithm to digitally concoct a copy of Leonardo’s classic and display it in one hand with the original depicted in the other, and as long as your algorithm had not been given an opportunity to make up something new, you would not be able to tell the difference between them.
A few years ago. if we wanted to make an animated movie it would require armies of artists to painstakingly draw the entire thing, frame by frame so that the images could be photographed one by one at a resolution sufficiently high as to look good on a large cinema screen.The result would be a cartoon. Today we see computer generated images in the movies that are indistinguishable from reality - even though they’re so blatantly obviously not real.
We know that crowds of animators could (theoretically) dab little dots, one at a time onto sheets of paper with enough resolution and a big enough palette of colours to mimic the photorealism of CGI software if that was the only way we could produce images like that, but it would take a really long time and cost a whole lot more money than Marvel spent making Quantumania. That’s why we aren’t going to do that anymore, except in very exceptional circumstances.
CGI provides most of its benefit when it is used to automatically generate all of the sequentially connected consecutive frames needed to animate video because it can be programmed to obey the rules of physics that define what different parts of a character model can do in the real world. By knowing these rules and also knowing how elements of the character would react to real world influences - light, air, water etc - software can do all of the heavy lifting of generating the images while the human animator just worries about deciding how the character will act in the scene.
With modern generative AI the computer might also be contributing to some of those acting or directorial decisions, or even suggesting how best the character might look in order to engage more closely with the audience. There’s nothing here that a human animator or character artist couldn’t do, but Moore’s Law and all those transistors just enable the computer to come up with a convincing result more quickly than if it were a team of people with pencils and paper.
We’re not currently classifying movies made in this way as Artificial Movies - probably because that might erode box office sales even more than COVID has, and it would certainly bring into question what the Academy are thinking when they make choices about who is going to be given the chance to slap Chris Rock next year…
Although the platforms that help deliver those streaming blockbusters to your palm might be gathering data on your viewing preferences to dump into an algorithm, there’s no Artificial Intelligence needed on your phone to achieve the suspension of disbelief you feel when watching Ironman snap his metal fingers, and when the AI assisted animation software at the studio rendered those scenes, they had not the vaguest notion of what a finger even is.
Every pixel you see on the screen just looks the way it looks because of transistors switching on and off, governed by logical operations on silicon that have been built into more and more sophisticated and obfuscated sets of functions by layer upon layer of software, each developed by different teams of people working for different organisations, none of whom knew anything about the output you would eventually see on your screen.
The point to these laboriously recounted examples is hopefully to emphasize and remind that what technological advancement has brought us in terms of end results is a range of hyper-functional systems based on nothing more than transistors and the binary operations they’re capable of representing, that produce outputs that look the same as the outputs talented humans could also produce if they had the time.
Much of this hyper-functionality has been achieved without resorting to what modern computer scientists would describe as AI or ML techniques. We’ve got extraordinarily fast methods of calculating results and sorting information because we have extraordinarily fast computers, with enough access to enough relatively fast memory that they can work on bigger data sets, with networking systems that can connect them to even more information if they need it.
All of that is as a result of Moore’s Law and the density of computing we can squeeze into a connected domain these days.
Most of what the internet has done for us has been achieved simply because there is more bandwidth and more storage, with processors and system architectures that are now capable of getting visibility on a whole lot more of the available data.
We’re going to delve more deeply into the specifics of intelligence (real and artificial), thinking and non-thinking in the next episode of this series.
For the time being, let me leave you with something to think about.
If I were to ask you to calculate the square of the two digit decimal number representing the month of your birth, how would you do it?
I’m sure you could explain the mathematics quite simply, but could you actually perform the operation without thinking of your birthday, your age, your family, your astrological sign, your home, your children, your education, your life?
Put the same numbers into the calculator app on your phone. What do you imagine it thinks of?
This is the second part of a series here at Securiosity that’s going to explore what the world has labelled Artificial Intelligence, unpacking the underlying technologies and their origins and looking at the clear differences between what they do and how they do it, and what we see in human equivalent we’ve become used to.
The aim is not to try to demonstrate how either is superior or inferior. It is simply to get people thinking with more clarity on what we’re dealing with and what that’s going to result in.
Apocalyptic prophecies are already available from others. Right now we need coping mechanisms.
Meanwhile there’s plenty in the physical and information security world to be dealing with that certainly doesn’t look very intelligent to me, so this series is going to come and go on an as required basis. For now, there are some fundamentals to get through, so expect more of these next week.
If you have something to say or a burning issue to deal with drop me a note and we’ll thrash it out together, for better or worse.
Isn’t it strange that almost every company with a piece of software, algorithm or analytics is now calling it AI. I don’t think it’s helpful in the industry to broad-brush and force a negative narrative. I attended an expo recently where a company was offering a digital twin solution. When looking under the bonnet it was nothing more than autocad data tables and a simple 3D representation. There will be a lot of mis-selling going on for the next few years. I recall the year 2000 bug and salesmen selling compliant kettles!