ACM president's letter: computer architecture: some old ideas that haven't quite made it yet

The world seems to be exploding with new applications of compute r s-p e r s o n a l workstations, interactive graphics, local networks, massive stores, advanced word processing , smart editors, and on and on. It is heady stuff. Everywhere you look, you see innovative applications of microcomputers. Computer architects, who design much of this equipment, are constantly debating whether there should also be innovation in the in-temal design of the microcomputers. Do these machines make programming easier or more reliable? Can they efficiently support the new concepts of programming languages and operating systems? Is it easier to design operating systems, compilers, and programming environments for the new machines? If not, does it make any difference? Can software do the job that hardware does not? It is difficult to evaluate the arguments on either side of radical proposals because few people have collected data in support of their daims. But there are several old features, well tested on a few machines, that deserve to be on all general purpose machines. It is a mystery to me that these features are not more common. Not a one of them is new, and every one of them is useful. Here is the list of features that would be in M 3 (My Mythical Machine): Among the most common programming errors is a read reference to a variable that has never been assigned 553 a value. Some compilers contain expensive control and data flow ana-lyzers to detect such variables. M 3 would reserve a bit pattern of a memory word to denote "undefined value." The function units of the processor would give an error signal if presented with an under'reed value. Control Data machines approximate this feature with floating point "in-fruity." Range Checking. Another common programming error is the array subscript out of range. (In Pascal and Ada a similar error can occur with any range type.) Like the Burroughs computers since the B5000 (1961~ and the ICL 2900 computers, M ° would use descriptors, which are memory words specifying the lower and upper bounds of a range. Because array elements are addressed relative to descriptors, the hardware can check, in parallel with the address calculation, that the subscript is in range. (Therefore, the range check incurs no penalty in execution speed.) Without this hardware, the compiler must generate code to validate the subscript; this code is much less efficient on …