| Instruction folding for a stack-based machine -> Monitor Keywords |
|
Instruction folding for a stack-based machineUSPTO Application #: 20070277021Title: Instruction folding for a stack-based machine Abstract: An instruction decoder allows the folding away of JAVA virtual machine instructions pushing an operand onto the top of a stack merely as a precursor to a second JAVA virtual machine instruction which operates on the top of stack operand. Such an instruction decoder identifies foldable instruction sequences and supplies an execution unit with a single equivalent folded operation thereby reducing processing cycles otherwise required for execution of multiple operations corresponding to the multiple instructions of the folded instruction sequence. Instruction decoder embodiments described herein provide for folding of two, three, four, or more instruction folding. For example, in one instruction decoder embodiment described herein, two load instructions and a store instruction can be folded into execution of operation corresponding to an instruction appearing therebetween in the instruction sequence. (end of abstract)
Agent: Gunnison Mckay & Hodgson, LLP - Monterey, CA, US Inventors: James Michael O'Connor, Marc Tremblay USPTO Applicaton #: 20070277021 - Class: 712208000 (USPTO) Related Patent Categories: Electrical Computers And Digital Processing Systems: Processing Architectures And Instruction Processing (e.g., Processors), Instruction Decoding (e.g., By Microinstruction, Start Address Generator, Hardwired) The Patent Description & Claims data below is from USPTO Patent Application 20070277021. Brief Patent Description - Full Patent Description - Patent Application Claims RELATED APPLICATIONS [0001] This application is a continuation of application Ser. No. 11/096,183, filed Mar. 30, 2005, which is itself a continuation of application Ser. No. 10/346,886, filed Jan. 17, 2003, now U.S. Pat. No. 6,950,923, which is in turn a continuation of application Ser. No. 08/787,617, filed Jan. 23, 1997, now U.S. Pat. No. 6,532,531. application Ser. No. 08/787,617 is itself a continuation-in-part of application Ser. No. 08/647,103, filed May 7, 1996 and a continuation-in-part of application Ser. No. 08/642,253, filed May 2, 1996, both now abandoned. application Ser. Nos. 08/787,617, 08/647,103 and 08/642,253 each claim benefit of U.S. Provisional Application No. 60/010,527, filed Jan. 24, 1996. [0002] The present application, as well as each of successive priority application Ser. Nos. 11/096,183, 10/346,886 and 08/787,617, incorporate by reference the entirety of application Ser. No. 08/786,351, filed Jan. 23, 1997, now U.S. Pat. No. 6,026,485. REFERENCE SECTION I [0003] A portion of the disclosure of this patent document including Section I, The JAVA Virtual Machine Specification and Section A thereto, contains material which is subject to copyright protection. The copyright owner has no objection to the facsimile reproduction by anyone of the patent document or the patent disclosure, as it appears in the U.S. Patent and Trademark Office patent files or records, but otherwise reserves all copyright rights whatsoever. BACKGROUND OF THE INVENTION [0004] 1. Field of the Invention [0005] The present invention relates to instruction decoders for a stack machine, and in particular, to methods and apparati for folding a sequence of multiple instructions into a single folded operation. [0006] 2. Discussion of Related Art [0007] Many individuals and organizations in the computer and communications industries tout the Internet as the fastest growing market on the planet. In the 1990s, the number of users of the Internet appears to be growing exponentially with no end in sight. In June of 1995, an estimated 6,642,000 hosts were connected to the Internet; this represented an increase from an estimated 4,852,000 hosts in January, 1995. The number of hosts appears to be growing at around 75% per year. Among the hosts, there were approximately 120,000 networks and over 27,000 web servers. The number of web servers appears to be approximately doubling every 53 days. [0008] In July 1995, with over 1,000,000 active Internet users, over 12,505 usenet news groups, and over 10,000,000 usenet readers, the Internet appears to be destined to explode into a very large market for a wide variety of information and multimedia services. [0009] In addition, to the public carrier network or Internet, many corporations and other businesses are shifting their internal information systems onto an intranet as a way of more effectively sharing information within a corporate or private network. The basic infrastructure for an intranet is an internal network connecting servers and desktops, which may or may not be connected to the Internet through a firewall. These intranets provide services to desktops via standard open network protocols which are well established in the industry. Intranets provide many benefits to the enterprises which employ them, such as simplified internal information management and improved internal communication using the browser paradigm. Integrating Internet technologies with a company's enterprise infrastructure and legacy systems also leverages existing technology investment for the party employing an intranet. As discussed above, intranets and the Internet are closely related, with intranets being used for internal and secure communications within the business and the Internet being used for external transactions between the business and the outside world. For the purposes of this document, the term "networks" includes both the Internet and intranets. However, the distinction between the Internet and an intranet should be born in mind where applicable. [0010] In 1990, programmers at Sun Microsystems wrote a universal programming language. This language was eventually named the JAVA programming language. (JAVA is a trademark of Sun Microsystems of Mountain View, CA.) The JAVA programming language resulted from programming efforts which initially were intended to be coded in the C++ programming language; therefore, the JAVA programming language has many commonalities with the C++ programming language. However, the JAVA programming language is a simple, object-oriented, distributed, interpreted yet high performance, robust yet safe, secure, dynamic, architecture neutral, portable, and multi-threaded language. [0011] The JAVA programming language has emerged as the programming language of choice for the Internet as many large hardware and software companies have licensed it from Sun Microsystems. The JAVA programming language and environment is designed to solve a number of problems in modern programming practice. The JAVA programming language omits many rarely used, poorly understood, and confusing features of the C++ programming language. These omitted features primarily consist of operator overloading, multiple inheritance, and extensive automatic coercions. The JAVA programming language includes automatic garbage collection that simplifies the task of programming because it is no longer necessary to allocated and free memory as in the C programming language. The JAVA programming language restricts the use of pointers as defined in the C programming language, and instead has true arrays in which array bounds are explicitly checked, thereby eliminating vulnerability to many viruses and nasty bugs. The JAVA programming language includes objective-C interfaces and specific exception handlers. [0012] The JAVA programming language has an extensive library of routines for coping easily with TCP/IP protocol (Transmission Control Protocol based on Internet protocol), HTTP (Hypertext Transfer Protocol) and FTP (File Transfer Protocol). The JAVA programming language is intended to be used in networked/distributed environments. The JAVA programming language enabled the construction of virus-free, tamper-free systems. The authentication techniques are based on public-key encryption. [0013] Many computing systems, including those implementing the JAVA virtual machine, can execute multiple methods each of which has a method frame. Typically, method invocation significantly impacts the performance of the computing system due to the excessive number of memory accesses method invocation requires. Therefore, a method and memory architecture targeted to reduce the latency caused by method invocation is desirable. SUMMARY OF THE INVENTION [0014] A JAVA virtual machine is an stack-oriented abstract computing machine, which like a physical computing machine has an instruction set and uses various storage areas. A JAVA virtual machine need not understand the JAVA programming language; instead it understands a class file format. A class file includes JAVA virtual machine instructions (or bytecodes) and a symbol table, as well as other ancillary information. Programs written in the JAVA programming language (or in other languages) may be compiled to produce a sequence of JAVA virtual machine instructions. [0015] Typically, in a stack-oriented machine, instructions typically operate on data at the top of an operand stack. One or more first instructions, such as a load from local variable instruction, are executed to push operand data onto the operand stack as a precursor to execution of an instruction which immediately follows such instruction(s). The instruction which follows, e.g., an add operation, pops operand data from the top of the stack, operates on the operand data, and pushes a result onto the operand stack, replacing the operand data at the top of the operand stack. [0016] A suitably configured instruction decoder allows the folding away of instructions pushing an operand onto the top of a stack merely as a precursor to a second instruction which operates on the top of stack operand. The instruction decoder identifies foldable instruction sequences (typically 2, 3, or 4 instructions) and supplies an execution unit with an equivalent folded operation (typically a single operation) thereby reducing processing cycles otherwise required for execution of multiple operations corresponding to the multiple instructions of the folded instruction sequence. Using an instruction decoder in accordance with the present invention, multiple load instructions and a store instruction can be folded into execution of an instruction appearing therebetween in the instruction sequence. For example, an instruction sequence including a pair of load instructions (for loading integer operands from local variables to the top of stack), an add instruction (for popping the integer operands of the stack, adding them, and placing the result at the top of stack), and an store instruction (for popping the result from the stack and storing the result in a local variable) can be folded into a single equivalent operation specifying source and destination addresses in stack and local variable storage which are randomly accessible. [0017] In accordance with an embodiment of the present invention, an apparatus includes an instruction store, an operand stack, a data store, an execution unit, and an instruction decoder. The instruction decoder is coupled to the instruction store to identify a foldable sequence of instructions represented therein. The foldable sequence includes first and second instructions, in which the first instruction is for pushing a first operand value onto the operand stack from the data store merely as a first source operand for a second instruction. The instruction decoder coupled to supply the execution unit with a single folded operation equivalent to the foldable sequence and including a first operand address identifier selective for the first operand value in the data store, thereby obviating an explicit operation corresponding to the first instruction. [0018] In a further embodiment, if the sequence of instructions represented in the instruction buffer is not a foldable sequence, the instruction decoder supplies the execution unit with an operation identifier and operand address identifier corresponding to the first instruction only. [0019] In another further embodiment, the instruction decoder further identifies a third instruction in the foldable sequence. This third instruction is for pushing a second operand value onto the operand stack from the data store merely as a second source operand for the second instruction. The single folded operation is equivalent to the foldable sequence and includes a second operand address identifier selective for the second operand value in the data store, thereby obviating an explicit operation corresponding to the third instruction. [0020] In yet another further embodiment, the instruction decoder further identifies a fourth instruction in the foldable sequence. This fourth instruction is for popping a result of the second instruction from the operand stack and storing the result in a result location of the data store. The single folded operation is equivalent to the foldable sequence and includes a destination address identifier selective for the result location in the data store, thereby obviating an explicit operation corresponding to the fourth instruction. Continue reading... Full patent description for Instruction folding for a stack-based machine Brief Patent Description - Full Patent Description - Patent Application Claims Click on the above for other options relating to this Instruction folding for a stack-based machine patent application. ### 1. Sign up (takes 30 seconds). 2. Fill in the keywords to be monitored. 3. Each week you receive an email with patent applications related to your keywords. Start now! - Receive info on patent apps like Instruction folding for a stack-based machine or other areas of interest. ### Previous Patent Application: Optimization of subsystem interconnections in an electronic device Next Patent Application: Method, system and program product for establishing decimal floating point operands for facilitating testing of decimal floating point instructions Industry Class: Electrical computers and digital processing systems: processing architectures and instruction processing (e.g., processors) ### FreshPatents.com Support Thank you for viewing the Instruction folding for a stack-based machine patent info. IP-related news and info Results in 3.8311 seconds Other interesting Feshpatents.com categories: Computers: Graphics , I/O , Processors , Dyn. Storage , Static Storage , Printers |
||