Mark Smotherman
last updated January 2, 2017
My only regret about ACS is that unlike compiler ideas, we did not take the
time to publish our ideas on hardware so others could build on them.
-- John Cocke, Turing Award Lecture (CACM, March 1988)
ACS never made it out of the laboratory; I suppose it was too big and
expensive, but for me it was probably the most exciting project I have
ever been involved in. In reflecting on this, I believe that what made
it particularly exciting was that we were a small team, mostly hand-picked
by Jack Bertram, and we pioneered every aspect of the project....
A partial list of the impact of the ACS efforts includes:
Here are some contributions of ACS to IBM in particular and to the field of computer design and engineering in general:
I believe patent attorneys did not adequately understand the invention, and thus dismissed the DIS disclosures in 1966 as too similar to the CDC 6600. [See Brian Randell's "Reminiscences of Project Y and the ACS." The CDC 6600 used a central window structure called the "scoreboard", but it added at most one instruction per cycle to this structure.] The DIS scheme from ACS was merged with a register renaming scheme and issued as US Patent 3,718,912, "Instruction execution unit," Leo Hasbrouck, Bill Madden, Robert Rew, Ed Sussenguth, and John Wierzbicki, filed Dececember 1970, and issued February 1973. All listed inventors were ACS project members. (Lynn Conway had left the company by that point.)
The DIS scheme shares some aspects with a central window proposal in the 1980s by H.C. Torng of Cornell, known as the "dispatch stack" [see IEEE Trans. on Computers, vol. C-35, no. 9, September 1986, pp. 815-828]. It is ironic that Torng had IBM sponsorship for his research, but none of his sponsors at IBM knew of the ACS work. Rather, Torng remembers being asked repeatedly during presentations to IBM groups at Yorktown, Poughkeepsie, and Kingston, as to how his work related to the Tomasulo method of the Model 91 [personal communication]. Additionally, Harry Dwyer was an engineer from IBM Endicott who went to Cornell for his Ph.D. under Professor Torng. Dwyer worked on and later patented improvements to the dispatch stack. Dwyer never encountered information about ACS during his work at IBM Endicott or at Cornell, or even later at IBM in Austin [personal communication]. (Torng's work differs from the ACS's use of scheduling matrices since it focuses on maintaining dependency counts between instructions in the instruction stack and issuing instructions that have counts of zero. Torng's patent, "Instruction issuing mechanism for processors with multiple functional units," US 4,807,115 (1989), includes a reference to the ACS patent of Hasbrouck, et al., "Instruction execution unit," US 3,718,912, perhaps added during a prior art search.)
Further work was done at IBM in the 1970s on superscalar S/370s, but few, if any, public documents exist.
One of the features of many large, scientific computers is their use of a bank of fast local registers for holding operands and intermediate results. These machines also employ several arithmetic units. It is common to use a full, minor machine cycle to transfer data from a local register to an arithmetic unit. Another minor cycle is used to return the answer to a local register. In case the arithmetic unit is a floating point adder, this data transfer time is equal to the time required for the addition itself. The basic reason these transfers require such a large amount of time is that the busses used service a large number of sources and destinations. The system provides for direct paths between specified registers R0...R15 and specified arithmetic units AUO... AU15 in addition to the general busses used. This saves, the two minor cycles previously required to transfer data back and forth between the local registers and the arithmetic units. In many cases an arithmetic operation can be executed in one minor cycle instead of three. During compilation, operands would be assigned registers according to the functional unit to be employed in executing the operation specified whenever possible. Similarly, machine control would choose the appropriate arithmetic unit if a choice exists when issuing instructions.
Navigation within IBM ACS pages: