On May 30, 1925, American computer scientist John Cocke was born. Cocke is recognized for his large contribution to computer architecture and optimizing compiler design. He is considered by many to be “the father of RISC computer architecture.”
John Cocke was born in Charlotte, North Carolina. His father Norman was the president of Duke Power Company and a member of the Board of Trustees of Duke University. Naturally, he attended Duke University, where Cocke received his Bachelor’s degree in Mechanical Engineering in 1946 and his Ph.D. in Mathematics in 1956. After graduation he joined IBM and worked at the T.J. Watson Research Center until his retirement 37 years later.
John Cocke made fundamental contributions to the architecture of high performance computers and to the design of optimizing compilers. Perhaps the project where his innovations were most noted was in the IBM 801 minicomputer, a telecom computer named after the building in which his team worked, where Cocke’s realization that matching the design of the architecture’s instruction set to the relatively simple instructions actually emitted by compilers could allow high performance at a low cost. The 801 design philosophy was based on a tight coupling between – and simultaneous development of — the hardware and the compiler. The resulting architecture was unlike the then common practice of having many complex instructions built into the hardware. The earlier IBM 7030 “Stretch” computer for example had 735 different instructions, including instructions for variable-length operands. Such a rich set of hardware operations proved useful for special programming situations, but the designers of high level language compilers found it very difficult to use them in creating compiled code.
Cocke decided instead to design the 801 with a small set of basic instructions optimized for use by compilers, which resulted in a simpler but faster machine. The 801 inspired several research projects, including new ones at IBM that would eventually lead to the IBM POWER instruction set architecture. The term RISC, short for Reduced instruction set computing, was first coined by David Patterson of the Berkeley RISC project, although somewhat similar concepts had appeared before. Berkeley RISC was based on gaining performance through the use of pipelining and an aggressive use of a technique known as register windowing. In a traditional CPU, one has a small number of registers, and a program can use any register at any time. In a CPU with register windows, there are a huge number of registers, e.g. 128, but programs can only use a small number of them, e.g. eight, at any one time. A program that limits itself to eight registers per procedure can make very fast procedure calls: The call simply moves the window “down” by eight, to the set of eight registers used by that procedure, and the return moves the window back.
The Berkeley RISC project delivered the RISC-I processor in 1982. Consisting of only 44,420 transistors, RISC-I had only 32 instructions, and yet completely outperformed any other single-chip design. The other early RISC design by Stanford University led to the MIPS architecture, which grew out of a graduate course by John L. Hennessy in 1981. The MIPS approach emphasized an aggressive clock cycle and the use of the pipeline, making sure it could be run as “full” as possible.
Critical to the success of RISC was an optimizing compiler able to use the reduced instruction set efficiently. Cocke co-developed interval analysis with Frances Allen, a program analysis technique based on a control flow graph reduction. Moreover, Cocke co-invented many of the optimizing transformations underlying today’s compilers, including efficient range checking for arrays, global common subexpression elimination, code motion, operator strength reduction, constant propagation, dead code elimination, and instruction scheduling. He is one of the inventors of the CYK algorithm (C for Cocke), a parsing algorithm for context-free grammars. He was also involved in the pioneering speech recognition and machine translation work at IBM in the 1970s and 1980s, and is credited by Frederick Jelinek with originating the idea of using a trigram language model for speech recognition. IBM recognized Cocke’s many accomplishments by making him an IBM Fellow in 1972. In 1987, he was awarded the ACM Turing Award, the highest recognition in computer science. John Cocke passed away in July 16, 2002, in Valhalla, New York, at age 77.
At yovisto, you can learn more about the work of John von Neumann in computer science in the video of historian George Dyson, who tells stories from the birth of the modern computer — from its 16th-century origins to the hilarious notebooks of some early computer engineers.
References and Further Reading:
-  John Cocke, at ACM A. M. Turing Award Winners
-  John Cocke at Computer History Museum
-  John Cocke at The History of Computing Project
Related Articles at Yovisto Blog: