ECO中文网

标题: 1987 约翰·科克 [打印本页]

作者: shiyi18    时间: 2022-4-16 08:26
标题: 1987 约翰·科克
John Cocke

PHOTOGRAPHS
BIRTH:
Charlotte, North Carolina, May 30, 1925

DEATH:
Valhalla, New York, July 16, 2002

EDUCATION:
BSE (Bachelor of Science in Engineering, Duke University, mechanical engineering, 1946); Ph.D. (Duke University, Mathematics, 1953).

EXPERIENCE:
IBM T. J. Watson Research Laboratory, 1954-1992

HONORS AND AWARDS:
IBM Fellow (1972), Member, National Academy of Engineering (1979); Eckert-Mauchly Award (a joint award between the ACM and the IEEE Computer Society, 1985); Fellow, American Academy of Arts and Sciences (1986); ACM Turing Award (1987); Honorary Doctor of Science, Duke University (1988); IEEE Computer Society Pioneer Award (1989); IBM John E. Bertram Award for Sustained Excellence (1990); National Medal of Technology (1991); Member, National Academy of Sciences (1993); NEC Foundation Computers & Communications Prize(1994); National Medal of Science (1994); The Franklin Institute's Certificate of Merit (1996); Seymour Cray Computer Science and Engineering Award (1999); the Benjamin Franklin Medal (2000); Fellow of the Computer History Museum (2002).

JOHN COCKE DL Author Profile link
United States – 1987
CITATION
For significant contributions in the design and theory of compilers, the architecture of large systems and the development of reduced instruction set computers (RISC); for discovering and systematizing many fundamental transformations now used in optimizing compilers including reduction of operator strength, elimination of common subexpressions, register allocation, constant propagation, and dead code elimination.

SHORT ANNOTATED
BIBLIOGRAPHY
ACM TURING AWARD
LECTURE
RESEARCH
SUBJECTS
John Cocke was born in Charlotte, North Carolina, in 1925. His father Norman was the president of Duke Power Company (later Duke Energy) and a member of the Board of Trustees of Duke University. That connection made it natural for John to attend college there. He earned his BSE (Bachelor of Science in Engineering) in Mechanical Engineering in 1946 and his PhD 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. Starting in 1975 he led the 801 Minicomputer project in IBM, which began as a pure research project but later led to a commercial product. 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. For example, the earlier IBM 7030 “Stretch” computer 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. This had a broad impact on computer architecture research, and was later called the Reduced Instruction Set Computer (RISC) approach. Cocke and a small group of collaborators recognized that an appropriately defined set of machine instructions, with programs produced by a compiler carefully designed to exploit that instruction set, could result in a very high performance pipelined processor with lower cost and fewer circuits than computer using complex instructions. Their PL.8 compiler, which supported both Pascal and PL.8 (a variant of PL/I for systems programming), contained the first full implementation of Cocke and others' earlier optimization techniques, as well as new ones needed for RISC like a register allocator that avoided memory access delays and an instruction scheduler that hid branching delays.

Critical to the success of RISC was an optimizing compiler able to use the reduced instruction set efficiently. A pioneer in the development of the theoretical foundation for such compilers, Cocke co-developed interval analysis with Frances Allen, a program analysis technique based on a control flow graph reduction [3]. 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. Unlike the work of others, Cocke’s compiler optimization techniques were closely linked to related designs for the computer architecture.

The RISC idea was influenced by Cocke’s prior work on computer architecture and optimizing compiler technology. The Stretch project he worked on had the ambitious goal of being 100 times faster than existing computing systems (such as the IBM 704) while providing flexibility in addressing, floating-point arithmetic, and nonnumeric operations. The challenge of improving performance by two orders of magnitude led to several hardware and software features co-designed by Cocke, including instruction pipelining, error correcting codes (ECC), instruction scheduling, and register allocation. Most of these ideas are still used in modern computer architectures more than 50 years after their first use in Stretch. The Stretch project served as a prototype for the IBM System/360, and for the IBM Engineering Verification Engine, a special purpose parallel processor used to simulate IBM computer logic circuits.

The Stretch project focused primarily on performance without regard to cost. But Cocke observed that much of the richness of the Stretch architecture could not be exploited by the compiler. He saw that it is easier to write compilers for a simpler instruction set, and that had a major impact on the approach he took for the 801 project.

Another IBM Research project that had a major influence on Cocke’s work was the Advanced Computer System (ACS) in the 1960’s, whose goal was to build the fastest possible computer for scientific applications. It was capable of executing multiple instructions in a single processor cycle, which is very challenging for a single instruction stream machine. In ACS seven operations could be initiated in a single cycle—one in the branch unit, three in the fixed point unit, and three in the floating point unit—a technique later called superscalar processing. To provide operands for all these instructions, ACS provided fast access to memory by allowing two memory accesses per cycle and having a store queue that was a forerunner of the store buffer used in modern processors. It also included a branch history table that allowed instruction prefetching based on dynamic execution patterns, a concept now referred to as branch prediction.

As a precursor to the RISC design methodology, an experimental ACS optimizing compiler was written long before the hardware design was finalized, which enabled computer architects to prioritize candidate hardware features based on the relative ease or difficulty of using them in the compiler. That compiler was also the breeding ground for many of the code optimization methods co-developed by Cocke. Although ACS never became an IBM product, it was an important  research project whose breakthrough ideas greatly influenced later work by Cocke and others.

Cocke’s pioneering research on computer architecture and optimizing compilers had a lasting impact on computing systems. The 801 Minicomputer is considered to be the first RISC machine. That technology directly fed into IBM’s commercial RISC-based RS/6000 series workstations, and later into the PowerPC processor architecture co-developed by Apple, IBM, and Motorola that is used in a wide range of computer systems including IBM’s Blue Gene/L supercomputers. RISC processors were even used in the IBM 3090 and 390 series of mainframe machines to provide special functions. Many computer companies have incorporated RISC technology into their product lines. Hewlett-Packard based its product line on variants and extensions of the RISC principles, and has also licensed its designs to Hitachi and Samsung. Many computer companies around the world have sought licenses from IBM to use the RISC technologies developed by Cocke. Sun Microsystems, MIPS, Motorola, and Intel also developed RISC-based microprocessors.

John was renowned for the breadth of his intellect, for his energy, for his insights—and for his unconventional working methods. He often wandered the halls of IBM seeking out colleagues to chat with. He was a chain smoker, so an effective method of locating him was to follow the trail of his cigarette butts in the ash trays. Cocke was considered eccentric, particularly within the very proper atmosphere encouraged at IBM. Like many bachelor scientists, he would sometimes forget to cash his pay checks, and might wear the same clothes many days in a row. He eventually married Anne Holloway in 1989, when he was close to retirement. In a 1998 Forbes magazine interview he said, “I guess I was relatively absent-minded… but, you know, there are people more interested in science than in normal ways of life.”

Despite his unconventional demeanor, IBM recognized his many accomplishments by making him an IBM Fellow in 1972. This gave him the flexibility, for the next twenty years until he retired, to work on any aspect of hardware or software that interested him without being narrowly focused on immediate commercial applicability.

Cocke’s technical interests were broad, which led to contributions in areas of computer science beyond computer architecture and optimizing compilers, such as magnetic recording, data compaction, error control, coding theory, and acceleration of circuit simulation. Cocke was able to provide ideas that then served as a catalyst for others to generate more ideas. This influence often occurred through informal interactions rather than via scholarly publications. Many large and high-impact research projects within IBM arose from "discussions with John."

Cocke’s influence extended to collaborators in universities as well, most notably at New York University and Rice University. He and Jacob T. Schwartz of NYU authored the first comprehensive studies of compiler optimizations [4] and were contributors to Addison-Wesley's IBM Programming Book Series.

John Cocke was truly a “renaissance man” in computer science research, whose impact on the field stemmed from both his own technical contributions and his influence on others. He held more than 20 patents. A professorship at Duke University is named in his honor. He died in 2002 after a long illness and a series of strokes, and is survived by his wife Anne.



Authors: Michael G. Burke and Vivek Sarkar



约翰-科克

照片
诞生。
北卡罗来纳州夏洛特,1925年5月30日

逝世
瓦尔哈拉,纽约,2002年7月16日

教育背景。
学历:BSE(杜克大学工程学士,机械工程,1946年);Ph.D(杜克大学,数学,1953年)。

经历:IBM T. J. Watson研究中心。
1954-1992年,IBM T. J. Watson研究实验室

荣誉和奖项。
IBM研究员(1972年),国家工程院院士(1979年);Eckert-Mauchly奖(ACM和IEEE计算机协会的联合奖,1985年);美国艺术与科学学院院士(1986年);ACM图灵奖(1987年);杜克大学荣誉科学博士(1988年);IEEE计算机协会先锋奖(1989年);IBM John E.Bertram持续卓越奖(1990年);国家技术奖章(1991年);国家科学院院士(1993年);NEC基金会计算机与通信奖(1994年);国家科学奖章(1994年);富兰克林学院荣誉证书(1996年);Seymour Cray计算机科学与工程奖(1999年);本杰明-富兰克林勋章(2000年);计算机历史博物馆研究员(2002年)。

约翰-科克(JOHN COCKE) DL作者简介链接
美国 - 1987年
嘉奖
在编译器的设计和理论、大型系统的结构和精简指令集计算机(RISC)的发展方面做出了重大贡献;发现并系统化了许多现在用于优化编译器的基本转换,包括减少运算符的强度、消除普通子表达式、寄存器分配、常数传播和死代码的消除。

短篇注释
书目
亚马逊图灵奖
讲座
研究
题目
约翰-科克于1925年出生在北卡罗来纳州的夏洛特。他的父亲诺曼是杜克电力公司(后来的杜克能源公司)的总裁,也是杜克大学董事会的成员。这种关系使约翰很自然地在那里上大学。他在1946年获得了机械工程的BSE(工程科学学士学位),并在1956年获得了数学博士学位。毕业后,他加入了IBM,在T.J. Watson研究中心工作,直到37年后退休。

约翰-科克对高性能计算机的结构和优化编译器的设计做出了基本贡献。从1975年开始,他领导了IBM的801微型计算机项目,该项目开始是一个纯粹的研究项目,但后来导致了一个商业产品。801的设计理念是基于硬件和编译器之间的紧密耦合和同时开发。由此产生的架构与当时将许多复杂指令内置到硬件中的普遍做法不同。例如,早期的IBM 7030 "Stretch "计算机有735条不同的指令,包括可变长度的操作数的指令。如此丰富的硬件操作被证明对特殊的编程情况很有用,但高级语言编译器的设计者发现在创建编译代码时很难使用它们。

科克决定用一小套基本指令来设计801,并为编译器的使用进行了优化,这导致了一个更简单但更快的机器。这对计算机结构研究产生了广泛影响,后来被称为精简指令集计算机(RISC)方法。科克和一小组合作者认识到,适当定义的机器指令集,以及由精心设计的编译器产生的程序来利用该指令集,可以产生一个非常高性能的流水线处理器,与使用复杂指令的计算机相比,成本更低,电路更少。他们的PL.8编译器同时支持Pascal和PL.8(用于系统编程的PL/I的变种),包含了Cocke和其他人早期优化技术的第一个完整实现,以及RISC所需的新技术,如避免内存访问延迟的寄存器分配器和隐藏分支延迟的指令调度器。

对RISC的成功至关重要的是一个能够有效使用减少的指令集的优化编译器。作为发展这种编译器理论基础的先驱,Cocke与Frances Allen共同开发了区间分析,这是一种基于控制流图还原的程序分析技术[3]。Cocke共同发明了许多当今编译器基础的优化转换,包括数组的有效范围检查、全局通用子表达式消除、代码运动、运算符强度降低、常数传播、死代码消除和指令调度。与其他人的工作不同,Cocke的编译器优化技术与计算机架构的相关设计紧密相连。

RISC的理念受到了Cocke之前在计算机架构和优化编译器技术方面工作的影响。他所从事的Stretch项目有一个雄心勃勃的目标,即比现有的计算系统(如IBM 704)快100倍,同时在寻址、浮点运算和非数字操作方面提供灵活性。将性能提高两个数量级的挑战导致了Cocke共同设计的几个硬件和软件特性,包括指令流水线、纠错代码(ECC)、指令调度和寄存器分配。这些想法中的大多数在首次用于Stretch项目50多年后仍被用于现代计算机架构中。Stretch项目是IBM System/360的原型,也是IBM工程验证引擎的原型,这是一个特殊用途的并行处理器,用于模拟IBM计算机逻辑电路。

Stretch项目主要关注性能而不考虑成本。但Cocke观察到,Stretch架构的许多丰富性无法被编译器所利用。他看到,为更简单的指令集编写编译器更容易,这对他为801项目采取的方法产生了重大影响。

另一个对科克的工作有重大影响的IBM研究项目是20世纪60年代的高级计算机系统(ACS),其目标是为科学应用建立尽可能快的计算机。它能够在一个处理器周期内执行多条指令,这对单指令流机器来说是非常具有挑战性的。在ACS中,七个操作可以在一个周期内启动,一个在分支单元,三个在定点单元,三个在浮点单元,这种技术后来被称为超标量处理。为了给所有这些指令提供操作数,ACS提供了对内存的快速访问,每个周期允许两次内存访问,并有一个存储队列,这是现代处理器中使用的存储缓冲器的前身。它还包括一个分支历史表,允许根据动态执行模式进行指令预取,这一概念现在被称为分支预测。

作为RISC设计方法的先驱,一个实验性的ACS优化编译器在硬件设计最终确定之前就已经写好了,它使计算机设计师能够根据在编译器中使用候选硬件特性的相对难易程度来确定其优先次序。该编译器也是Cocke共同开发的许多代码优化方法的滋生地。虽然ACS从未成为IBM的产品,但它是一个重要的研究项目,其突破性的想法极大地影响了Cocke和其他人的后期工作。

科克在计算机结构和优化编译器方面的开创性研究对计算系统产生了持久的影响。801微型计算机被认为是第一台RISC机器。该技术直接进入了IBM基于RISC的RS/6000系列商用工作站,后来又进入了由苹果、IBM和摩托罗拉共同开发的PowerPC处理器架构,该架构被广泛用于计算机系统,包括IBM的蓝色基因/L超级计算机。RISC处理器甚至被用于IBM 3090和390系列大型机中,以提供特殊功能。许多计算机公司已将RISC技术纳入其产品线。惠普公司以RISC原理的变体和扩展为基础,建立了自己的产品线,并且还将其设计授权给日立和三星。世界各地的许多计算机公司都向IBM寻求许可,以使用科克开发的RISC技术。Sun Microsystems、MIPS、Motorola和Intel也开发了基于RISC的微处理器。

约翰以其智力的广度、精力、洞察力和非传统的工作方法而闻名。他经常在IBM的大厅里闲逛,寻找同事聊天。他是一个连锁吸烟者,所以找到他的一个有效方法是跟踪他在烟灰缸里的烟头痕迹。Cocke被认为是个怪人,特别是在IBM鼓励的非常正统的氛围中。像许多单身科学家一样,他有时会忘记兑现他的工资支票,而且可能连续许多天穿同样的衣服。他最终在1989年与安妮-霍洛维结婚,当时他已接近退休。在1998年《福布斯》杂志的采访中,他说:"我想我是相对心不在焉的......但是,你知道,有些人对科学比对正常的生活方式更感兴趣。"

尽管他的举止不拘一格,IBM承认他的许多成就,在1972年让他成为IBM研究员。这使他在接下来的二十年里,直到退休,都可以灵活地从事他感兴趣的硬件或软件的任何方面的工作,而不必狭隘地专注于眼前的商业适用性。

科克的技术兴趣很广泛,这使得他在计算机科学领域的贡献超出了计算机结构和优化编译器,如磁记录、数据压缩、错误控制、编码理论和电路模拟的加速。科克能够提供一些想法,然后作为催化剂,让其他人产生更多的想法。这种影响往往是通过非正式的互动而不是通过学术出版物发生的。IBM内部许多大型和高影响力的研究项目都来自于 "与约翰的讨论"。

科克的影响也延伸到大学里的合作者,最明显的是纽约大学和莱斯大学。他和纽约大学的Jacob T. Schwartz撰写了第一份关于编译器优化的综合研究报告[4],并且是Addison-Wesley的IBM编程丛书的作者。

约翰-科克是计算机科学研究领域真正的 "文艺复兴者",他对该领域的影响源于他自己的技术贡献和对他人的影响。他拥有20多项专利。杜克大学的一个教授职位就是以他的名字命名的。在经历了长期的疾病和一系列的中风之后,他于2002年去世,他的妻子安妮在世。



作者。迈克尔-G-伯克和维韦克-萨卡




欢迎光临 ECO中文网 (http://ecocn.org/) Powered by Discuz! X3.3