Dialectronics - the dialect of electronic communications

About Us

Our Mission



XCOFF Bootloader

Old World Macs

Open Firmware



Home Repair

Top Level

On virtualization

While reading both Andrew Tanenbaum's and Albert Woodhull's Operating Systems: Design and Implementation and the Meet the experts: Peng Wu and Alex Eichenberger on compilers and hardware constraints article with its references, I found the ubiquitiousness of virtualization inescapable. Tanenbaum and Woodhull assert that in order to increase programmer efficiency, hardware architectures had to be abstracted into virtual machines with common interfaces. Meet The Expert: Peng Wu shows this effort taken to even greater levels, where simple nested loops doing calculations on arrays are taken from scalar serialized instruction chains to single instruction, multiple data (SIMD) operations, without any knowledge by the programmer of the underlying CPU architecture.

Is this virtualization of everything always for the better? Consider the act of driving an automobile. While it is still possible to get a car with manual shifting, in many cases this is now an extra cost option, while four decades ago getting an automatic transmission was a very expensive option. That automatic transmission virtualizes the act of changing engine speeds to match the increased (or decreased) speed of the vehicle. Old-school drivers did clutchless shifting, too, but in an entirely different way. Are we better drivers as a result of this virtualization? The most frequent use I see of the now free hand is for cell phones; the next most frequent use is to change the DVD playing on the in-dash LCD. We can't even "pimp" our rides ourselves; we have to pay someone else to do it.

A common complaint that I see among specialized programmers is the lack of computer languages that adequately describe their field. The C programming language was one of the first computer languages to sufficiently virtualize hardware, but is now often pointed to as the very limitation to innovation. Hardware design is similarly constrained. If new hardware requires breaking with traditional models, the designers risk a lack of acceptance, but if the status quo was adequate there'd be no need for innovation. The Cell CPU is one such conundrum. Robert Cringely posits that PS3 will debut to a "dearth of games." Cell is a heterogenous CPU, meaning that not all elements of it have the same instruction set architecture (ISA). Software that executes on its PPC core can not execute on an SPE, and vice versa. While Cell takes SIMD to new heights, it does so at the expense of compatibility with traditional programming models. Even the simple loop:

for (i;i<100;i++) {
    for (j;j<16;j++) {
        a[i] = b[j+1];

has profound implications. It can be made significantly faster through SIMDization to VMX, but when this is extended to Cell the operation has to be encapsulated inside a "SPUlet" that executes in parallel to the main PPE core on a SPE element and the final result is inserted or fetched at the appropriate time. Does the programmer choose eight SPUlets or one? Cell's SPE is so different that it has its own ABI that is similar but not identical to the PPE core, which is PowerPC-based. The simple economics of computers make it clear this processor will fail spectacularly unless tools exist so that the maximum possible number of programmers can write loops like the one above and never ever think about the underlying architecture. Are we better programmers? Mahatma Ghandi's Seven Deadly Sins lists "Wealth without work" as number one.

Virtualization dumbs us down. The model that gets accepted is the one that is achievable by the largest number of individuals. This isn't just true in computers. The human experience is virtualized by language. English is the globally accepted language for business, but in terms of describing reality it lacks the nuances of tonal languages like Mandarin or Navajo. Written language is suffering, too. We refer to the act of typing into a computer as "writing," but before the advent of computers and typewriters there was a whole industry dedicated to transcription and scribing. How soon before we no longer teach our children how to use a writing instrument to form a hieroglyph we recognize as a "word?" All five major dialects of Chinese use the same character set, and while the spoken word for each character is different, the meaning is identical regardless of the dialect. Characters are formed by specific directions and pressures of each brushstroke, so that not only is the story told in the language but the author's emotions are painted with each word. The best we can do in computers is SPEAK IN CAPITAL LETTERS. Red is shocking in monochrome grey before it drains away.

Why do we develop such wide reaching models to assimilate the human experience but spend and expend untold resources for virtual games? Could it be that we have abstracted life so much that we inherently know we are bored and have to escape that boredom? Are we better humans as a result?