When I was a freshman at the University of Washington, we had a CDC 6400 (the
cheaper, less powerful sibling of the 6600). There was a full time, on site
customer engineer to support it. I had a chance to get a machine room tour from
the CE where he opened up the cabinet to reveal a "spaghetti plate" of wires
about 2.5 feet wide by 6 feet high, and several inches thick. They were all
white! Glad I didn't have to trace connections in that mess. He mentioned that
if they needed to tune the circuit timing, they would cut a wire to make it
shorter. He didn't say what they did if they needed to increase the circuit
delay.
On another occasion the CE mentioned that they had EC'ed the machine
to add a new instruction (don't remember what it was), but they added new
circuit boards to the system to enable the new instruction. No
microcode/firmware updates here.
Times have certainly changed.
One of
the CDC FORTRAN compilers (there were at least 2) also introduced me to sloppy
code design decisions. On the 6400/6600, subroutine parameter pointers were
passed in registers (no stack). The compiler attempted to save memory by
packing three passed 18 bit pointers into a single 60 bit memory word. The only
problem was that the required packing code used up more memory than it saved vs.
storing one pointer per word. The packing code, and uppacking code every time a
reference was made to a parameter pointer, used unnecessary memory and machine
cycles. Since the calling protocol did not allow for recursion, it's not like
the code only took up space once, and saved space on every call.
--- A
cheap solution that doesn't work is neither,
Say What? [ Reply to This | Parent | # ]
|