Defining instruction extensions in a standard programming language
Patent 7373642 Issued on May 13, 2008. Estimated Expiration Date: July 29, 2023. Estimated Expiration Date is calculated based on simple USPTO term provisions. It does not account for terminal disclaimers, term adjustments, failure to pay maintenance fees, or other factors which might affect the term of a patent.
717/160, Including loop717/146, Including intermediate code717/150, Loop compiling717/159, Code restructuring717/131, Including analysis of program execution717/154, Including analysis of program710/200, ACCESS LOCKING717/151, Optimization714/38Of computer software
A method is provided for modifying a program written in a standard programming language so that when the program is compiled both an executable file is produced and an instruction is programmed into a programmable logic device of a processor system. The method includes identifying a critical code segment of a program, rewriting the critical code segment as a function, revising the program, and compiling the program. Revising the program includes designating the function as code to be compiled by an extension compiler and replacing the critical code segment of the program with a statement that calls the function. Compiling the program includes compiling the code with an extension compiler to produce a header file and the instruction for the programmable logic device. Compiling the program also includes using a standard compiler to compile the remainder of the program together with the header file to generate the executable file.
Other References
Kai Hwang, “Advanced Computer Architecture: Parallelism, Scalability, Programmability,” 1st Edition, Chapter 2, pp. 75-97, copyright 1993, McGraw-Hill, Inc., USA.
U.S. Appl. No. 10/746,018, filed Dec. 23, 2003, Rupp et al.
Elliot Waingold et al., “Baring It All to Software: Raw Machines,” Computer, Sep. 1997, 1997 IEEE, pp. 86-93.
Michael Bedford Taylor et al., “The Raw Microprocessor: A Computational Fabric for Software Circuits and General-Purpose Programs,” Mar.-Apr. 2002, IEEE Micro, pp. 25-35.
Pedro Diniz, et al. “Automatic Synthesis of Data Storage and Control Structures for FPGA-based Computing Engines,” 2000 IEEE, pp. 91-100.
Razdan, Rahul and Michael D. Smith, “A High-Performance Michroarchitecture with Hardware-Programmable Functional Units,” Nov. 1994, Proc. of MICRO-27, pp. 1-9.
Borgatti, Michele et al., “A Reconfigurable System featuring Dynamically Extensible Embedded Microprocessor, FPGA and Customisable I/O,” 2002, IEEE Custom Integrated Circuits Conference, pp. 1-4.
MIPS Technologies Inc., “MIPS Extension for Digital Media with 3D,” 1996, pp. 1-26.
Ye, Z.A. et al., “Chimaera: a high-performance architecture with a tightly-coupled reconfigurable functional unit,” Jun. 10-14, 2000, Proc. of the 27th International Symposium on Computer Architecture, pp. 225-235.
Hwang, Kai, “Advanced Computer Architecture: Parallelism, Scalability, Programmability,” 1993, McGraw Hill, pp. 182-183.
Intel and Hewlett-Packard, “IA-64 Application Instruction Set Architecture Guide,” Revision 1.0, 1999, pp. C-1 through C.
Garlan, David and Mary Shaw, “An Introduction to Software Architecture,” Jan. 1994, CMU-CS-94-166, School of Computer Science, Carnegie Mellon University, Pittsburgh, PA.
Dally, William J. and Charles L. Seitz, “Deadlock Free Message Routing In Multiprocessor Interconnection Networks,” May 10, 1985, Computer Science Department, California Institute of Technology.
Golestani, S. Jamaloddin, “A Sto-and-Go Queuing Framework for Congestion Management,” 1990,Proc. of the ACM Symposium on Communications Architectures & Protocols, ACM Press, New York, NY, pp. 8-18.
Scott, Steven L. and Gregory M. Thorson, “The Cray T3E Network: Adaptive Routing in a High Performance 3D Torus,” Aug. 15-16, 1996, HOT Interconnects IV, Stanford University.
Goldblatt, Kim, “The Low-Cost, Efficient Serial Configuration of Spartan FPGAs,” Nov. 13, 1998, XAPP098 (Version 1.0), XILINX.
Lee, K.C., “A Virtual Bus Architecture for Dynamic Parallel Processing,” Feb. 1993, IEEE Transaction on Parallel and Undistributed Systems, vol. 4, No. 2, pp. 121-130.
Hennessy, John L. and David A. Patterson, “Computer Organization and Design: The Hardware/Software Interface,” 1998, 2nd edition, Morgan Kaufmann Publishers, Inc., San Francisco, CA, p. 345.
Tanenbaum, Andrews S., “Modern Operating Systems,” 2001, 2nd edition, Prentice Hall, New Jersey, p. 31.
Dehon, Andre, “Transit Note #118 Notes on Coupling Processors with Reconfigurable Logic,” M.I.T. Transit Project, Last Updated March 21, 1995.
Barat, Francisco and Rudy Lauwereins, “Reconfigurable Instruction Set Processors: A Survey,” 2000, IEEE 0-7695-0668-2/00.
Borkar et al., “iWarp: An Integrated Solution to High-Speed Parallel Computing, ” 1988, IEEE CH2617-9/88/0000/03300.
U.S. Appl. No. 11/204,555, Jeffrey M. Arnold, Programmable Logic Configuration for Instruction Extensions, filed Aug. 15, 2005.
U.S. Appl. No. 11/099,280, Jeffrey M. Arnold, Video Processing System with Reconfigurable Instructions, filed Apr. 4, 2005.
U.S. Appl. No. 11/129,146, Ricardo Gonzalez, Long Instruction Word Processing with Instruction Extensions, filed May 12, 2005.
U.S. Appl. No. 11/021,247, Ricardo Gonzalez, Systems and Methods for Selecting Input/Output Configuration in an Integrated Circuit, filed Dec. 21, 2004.
U.S. Appl. No. 10/815,453, Ricardo Gonzalez, Configuring a Multi-Processor System, filed Mar. 31, 2004.
U.S. Appl. No. 10/750,714, Ricardo Gonzalez, Systems and Methods for Software Extensible Multi-Processing, filed Dec. 31, 2003.
U.S. Appl. No. 10/686,882, Kenneth Williams, Instruction Set for Efficient Bit Stream and Byte Stream I/O, filed Oct. 15, 2003.
U.S. Appl. No. 10/404,706, Scott D. Johnson, Extension Adapter, filed Mar. 31, 2003.
Bechade, R.A. et al., “Programmable Arithmetic/Logic Circuits,” IBM Technical Disclosure Bulletin, U.S. IBM Corp., New York, vol. 3, No. 11, Apr. 1981, pp. 4870-4873, XP-000713711.
Beeck et al., “Crisp: A Template for Reconfigurable Instruction Set Processors,” FPL 2001, LNCS 2147, pp. 296-305, Springer-Verlag Berlin Heidelberg, 2001.