Embedded Muse 157 Copyright 2008 TGG March 12, 2008
You may redistribute this newsletter for noncommercial purposes. For commercial use contact firstname.lastname@example.org. Subscribe and unsubscribe info is at the end of this email.
EDITOR: Jack Ganssle, email@example.com
- Editorís Notes
- Great Engineers
- Contest Results
- Tools and Tips
- Joke for the Week
- About The Embedded Muse
Did you know it IS possible to create accurate schedules? Or that most projects consume 50% of the development time in debug and test, and that itís not hard to slash that number drastically? Or that we know how to manage the quantitative relationship between complexity and bugs? Learn this and far more at my Better Firmware Faster class, presented at YOUR facility. See http://www.ganssle.com/onsite.htm .
For the first time, Iíll be conducting a public version of this class in Denmark in April. For more information see http://www.ganssleindk.dk/ .
Are you in the Chicago or Denver area? Iíll present a public version of the Better Firmware Faster class in Chicago and Denver, on April 23rd and 25th. Registration and other info here: http://www.ganssle.com/classes.htm . Youíll earn 0.7 Continuing Education Units, learn a lot, and have more than a little fun. Sign up before March 23 and receive a $50.00 discount.
Iíll be teaching a public version of this class in London, UK, May 19. See http://www.ganssle.com/classes.htm .
Iíve recently talked to a number of developers who arenít familiar with the RISKS digest (http://catless.ncl.ac.uk/risks ) This is a moderated email/USENET group consisting of submissions about various sorts of computer security and reliability issues. Mostly itís about IT and infrastructure problems, but there are occasionally embedded issues as well. Itís always interesting to read.
In my experience some engineers are plodders. They just donít get it. Sure, they can crank some C or design a bit of logic but their creations are leaden, devoid of style, crude, slow and just not elegant.
Then there are the superstars, those few who establish a mind-meld with the code or electronics. Have you ever worked with one? When the system doesnít work, mysterious bugs baffle all of our efforts, up comes the guru who sniffs, licks his finger and touches a node, and immediately discovers the problem. We feel like idiots; he struts off in glory.
Who are these people, anyway? An astonishing number of them have ďunusualĒ academic credentials. Take my friend Don. He went off to college at age 18, for the first time leaving his West Virginia home behind. A scholarship program lined his pockets with cash, enough to pay for tuition, room, and board for a full year. Cash Ė not a safer University credit of some sort.
A semester later he was out, expelled for non-payment of all fees and total academic failure, with an Animal House GPA of exactly 0.0. The cash turned into parties, the parties interfered with attending class. His one chance at a sheepskin collapsed, doomed by the teenage immaturity that all of us must muddle through.
Today heís a successful engineer. He managed to apprentice himself to a startup, and to parley that job into others where his skills showed through, and where enlightened bosses valued his design flair despite the handicap of no degree.
Another acquaintance (well, my dad) breezed through MIT on a full scholarship. Graduating with a feeling that his prestigious scholarship made him oh-so-very special he started working in aerospace. To his shock and horror Grumman put him on the production line for six months, riveting airplanes together. This outfit put all new engineers in production to teach them the difference between theory and practicality. He came out of it with a new appreciation for what works, and for the problems associated with manufacturing.
What an enlightened way to introduce new graduates to the harsh realities of the physical world!
Experience is a critical part of the engineering education, one thatís pretty much impossible to impart in the environment of a university. You really donít know much about programming till youíve completely hosed a 10,000 line project, and you know little about hardware till youíve designed, built, and somehow troubleshot a complex board. Weíre still much like the blacksmith of old, who started his career as an apprentice, and who ends it working with apprentices, training them over the truth of a hot fire. Book learning is very important, but in the end weíre paid for what we can do.
In my career Iíve worked with lots of engineers, most with sheepskins, but many without. Both groups have had winners and losers. The non-degreed folks, though, generally come up a very different path, earning their engineering title only after years as a technician. This career path has a tremendous amount of value, as itís tempered in the forge of hands-on experience.
Technicians are masters of making things. They are expert solderers - something many engineers ever master. A good tech can load flash memory, assemble a board, and use a milling machine. The best - those bound for an engineering career - are wonderfully adept troubleshooters, masters of the scope. Since technicians spend their lives daily working intimately with circuits, some develop an uncanny understanding of electronic behavior.
In college we learned theory at the expense of practical things. Yet I recently surveyed several graduate engineers and found none could integrate a simple function. None remembered much about the transfer function of a transistor. What happened to all of that hard-learned theory?
Over the years Iíve hired many engineers with and without their bachelors, and have had some wonderful experiences with very smart, very hard working people who became engineers by the force of their will. Many were vets, trained by the Navy or Air Force to be technicians.
Oddly, some of the best firmware folks Iíve worked with have degrees, but in English! Perhaps clear expression of ideas is universal, whether the language is English or C.
Weíre in a very young field, where a bit of the anarchy of the wild west still reigns. More so than in other professions weíre judged on our ability and our performance.
Over the last few years Iíve worked with a number of educators looking to improve their curriculum in embedded systems. Interestingly, most of the suggestions weíve wrestled with involve adding more practical training to augment the theoretical. Itís really tough to get a decent balance in the confines of a 4 or 5 year education.
But Iíve learned never to dismiss a candidate just due to an alternative education.
Responding to my ramblings about RCAís 1801/2 processor, Philip Freidin wrote: You wrote about the 1801 and 1802 CMOS CPUs, which I believe came out in 1975, and 1976. I believe that at almost the same time (1975/6) Intersil came out with the much easier to program IM6100 12 bit CMOS processor, a full and bug free version of the PDP-8/E . I certainly bought and used these chips in 1976 and beyond. It only worked well for 4KW of memory. The companion chip to allow memory extension to 32KW was quite buggy. The later Harris 6120 fixed this. You can see my scale model PDP-8/E with 32KW and an emulated 3000 disk pack system here: http://gallery.brouhaha.com/freidin-sbc6120/img_5036
In the last Muse I issued a challenge: What microprocessor had the smallest bus width? Not unexpectedly, readers sent in a variety of interesting responses, some of which went far beyond the answer I expected. The ďcorrectĒ response was the Motorola MC14500B Industrial Control Unit, which sported a 1-bit databus, although the instruction bus was four bits. 31 people got it right, and picking at random from those Daniel Neuburger won.
The MC14500Bís datasheet is here: http://www.ganssle.com/misc/mc14500datasheet.pdf , and it lists the partís 16 instructions. Unbelievably, as Steve Leibson pointed out, the part was apparently available until at least 1995 in both 16 pin DIP and SOIC packages.
Another 28 folks suggested the 4004, Intelís first microprocessor, which had a 4 bit bus. But quite a few also voted for controllers using Dallasís one-wire interface, which was a pretty good answer.
Several thought Motorolaís 6804 had a single-bit internal architecture. I canít find any data to support or deny that, but if true itís an interesting artifact of days of yore when transistors cost money.
Then there were the half-dozen votes for quantum or holographic approaches! Weíll see what the future brings in terms of that sort of technology.
Here are some comments from readers:
From Eric Smith: The Motorola MC14500B Industrial Control Unit was a one-bit processor, but I'm not 100% convinced that it could be called a microprocessor, because it lacked program control. At a minimum an external counter chain was used for a program counter to address the program memory (as shown in Figure 2 in the datasheet), though if you wanted subroutines you had to also provide stack hardware. The user manual suggested using it with a 4706 or 4708 (can't member which) control sequencer chip from the Fairchild CMOS Macrologic family, though they didn't identify the vendor.
My web site has the instruction set of the 14500B, along with an untested reimplementation in VHDL: http://www.brouhaha.com/~eric/retrocomputing/motorola/mc14500b/ .
Note that the MC14500B design was very similar to the earlier DEC PDP-14 computer, which was also a one-bit machine designed for industrial
I'm not aware of any other chip that might qualify as a one-bit
microprocessor. The Intel 3002 Central Processing Element (second-
sourced by Signetics) was a two-bit data path bitslice. There were,
of course, many four-bit microprocessors.
Alf Katz wrote: I note that you do not specifically require the solution to this puzzle to have ever been instantiated.
While I'm not sure it ever made it into Silicon, surely the "Single
bit logic microprocessor" from Tendy Electronics Co. (United States Patent 4101967) must surely take the cake as the microprocessor with the smallest bus width.
Of course, one of these with its input blown up and always reading
"1" would be even smaller at 1/2 bit, but its utility could be considered to be somewhat limited.
Russell McMahon submitted: The all time most terrible and narrowest bus width "microprocessor", assuming such an exalted title dare be applied, and assuming that there has never been a none-bit processor, although any number of mine have assumed that apparent state over the decades, was the dread Motorola 14500 "1 bit" microprocessor.
A perfunctory web search, employing effort worthy of such a device, turns up a number of references but neither data sheet, nor seller willing to admit stocking them.
From memory they achieved their claim to 1 bit status fame by having an execution unit which returned a binary true/false when various (and necessarily limited) tests and operations were carried out. Presumably (and memory dimly suggests) the obvious AND/OR/XOR and I seem to recall a TAD or ADD. The outcome of a test would enable or disable the execution of subsequently fetched instructions and the device would chug oh so slowly up its memory until some text condition was met, whereupon the instruction decoding was reenabled and execution recommenced. All program locations were ALWAYS accessed sequentially as an endless loop with program flow including any conditional jumps being achieved by turning off execution, meandering through address space and then reenabling execution when the relevant test of condition produced a true result.
From dim recollection, the title "1-bit" was a misnomer as you effectively built tests of a width that suited externally using such hardware as requisite.
I never used the device but spent some hours with friends poring over data sheets attempting to identify a way in which it could be sensibly and economically used. As we never discovered one we were never among the buyers of the 10 or so devices that I imagine they sold in this country.
And, when was this? I'd guesstimate, based on other memory cues, about 1981-1982, although that seems rather late in considering the general state of the art by then.
I liked Trial Brianís submission: The engine controller in a 1979 Volkswagen Microbus. Smallest bus width...get it? :-)
Rob Wehrli wrote: My guess...but I'm thinking that the correct answer is going to be something along the lines of a 1-bit I/O analog microprocessor using a piece of citrus for power...HAL 0.009?
Tom Evans said: Coming pretty close would have to be the Hewlett Packard range of microprocessors used in their early calculators.
Like the HP41C.
You can't get much smaller than ONE bit, used for the control, data, address and instructions!
Yes it needed ground, clock and "sync" as well as the data bit, but it is still a one-bit bus.
Tools and Tips
Steve Hudson sent a great link and a question: I have a question for the Muse. Recently I discovered the joy of using on-line forums. I used www.tek-tips.com to get several answers on MS Access programming. I'd like to know what forums your readers find useful (along with the type of programming), as this appears to be a great potential source of knowledge that I (and I'm sure others) had never tapped.
Joke for the Week
In my opinion the current state of voting machines is criminal. Well, a number of people sent this link, which is hilarious: http://www.theonion.com/content/video/diebold_accidentally_leaks .