This invention relates generally to microprocessor architecture and more specifically to an improved architecture and mode of operation of a microprocessor having extendible logic.
Extendible microprocessors have been developed which allow the user to add application-specific logic extensions to a base microprocessor design. This technique seeks to share the benefits of a standard microprocessor design and application-specific logic. By utilizing a standard microprocessor, a designer would seek to perform the majority of required functions by executing program code. The designer will benefit from the flexibility of this approach—the function of the design can be changed after hardware is produced by changing the program code. The designer will also benefit by having access to existing software infrastructure such as compilers, debuggers, operating systems and application code. By utilizing an application-specific logic design, a designer could gain the maximum performance for the application with the minimum logic area—however the function of the design will be fixed in hardware and no changes can be made once the hardware is produced.
The extendible microprocessor shares the benefits of these two approaches—special application-specific extension instructions, registers and interfaces are added to the design. As in the standard microprocessor case, the function of the design is still controlled by a software program, hence the function of the design can still be changed after hardware is produced; and software infrastructure designed for the base microprocessor can be used with extended variants of the processor. High performance can be obtained as key parts of the program are accelerated by adding the application-specific extension functions.
Some disadvantages of the previously described approaches still exist—in some cases software designed for the base microprocessor must be modified for use with an extended variant, this applies especially to operating systems (OS); once hardware is produced the function of the application-specific extensions cannot be changed, meaning that any changes to the function of the design must be achieved by changes to the program that sequences the base and extension operations.
The description herein of various advantages and disadvantages associated with known apparatus, methods, and materials is not intended to limit the scope of the invention to their exclusion. Indeed, various embodiments of the invention may include one or more of the known apparatus, methods, and materials without suffering from their disadvantages.
As background to the techniques discussed herein, the following references are incorporated herein by reference: U.S. Pat. No. 6,862,563 issued Mar. 1, 2005 entitled “Method And Apparatus For Managing The Configuration And Functionality Of A Semiconductor Design” (Hakewill et al.); U.S. Ser. No. 10/423,745 filed Apr. 25, 2003, entitled “Apparatus and Method for Managing Integrated Circuit Designs”; and U.S. Ser. No. 10/651,560 filed Aug. 29, 2003, entitled “Improved Computerized Extension Apparatus and Methods”, all assigned to the assignee of the present invention.
Thus, there exists a need for a microprocessor architecture which ameliorates and/or eliminates the above noted problems. In particular, there exists a need for a microprocessor architecture with reduced power consumption, improved performance and reduction of silicon footprint as compared with state of the art microprocessors. In addition, there exists a need to allow an operating system to be used with application-specific extensions added to an extendible processor. Furthermore, there exists a need to allow different sets of application-specific extensions to be used with a common operating system design, without requiring the user to make changes to that operating system.
In various embodiments, this is accomplished with a microprocessor architecture in which extendible logic may be added to the microprocessor through fixed-function hardware or programmable logic extensions. An extendible microprocessor may be configured to provide customizable operation specific logic. These operation specific logic blocks, known as extensions, may be implemented as fixed-function logic. These extensions may also be implemented through the addition of a block of dynamically configurable logic connected to the extendible processor. However, such logic may not and should not be available to all other processes. Thus, an extension register disable/enable function will be available to the OS to selectively disable or enable the access to extension registers and instructions. In various exemplary embodiments, when switching between processes the state of the current extendible logic must be stored for future calls to the same process. The operating system, because it was written prior to the extendible logic, will likely not understand how to handle requests for particular extendible operations or switches between operations. In various embodiments, a series of software extensions, analogous to device drivers, are installed to the OS which define properties such as the instruction and register locations associated with each extension and how that extension may be enabled/disabled. Also, recording all of the state information of a particular extendible logic configuration is very costly in terms of time. Therefore, in various embodiments, a technique known as lazy context switching is employed to perform context switches of extension state only when strictly necessary. When a task is switched out, access to all extension state is disabled but the contents of that extension state are not saved. After switching in a new task, when access to a specific extension is requested an exception is generated as access to that extension is disabled. In various exemplary embodiments, the OS calls the software extensions (drivers) to determine whether the exception is a genuine error, or a valid request to extension logic. When a task has made a valid request to use a disabled extension, the OS determines which task last used the disabled extension. If the last use was by the requesting task, no context switch is necessary. If the extension was last used by a different task, a context switch is performed. After this, the extension is enabled until the next task switch—when it is once more disabled.
At least one embodiment provides a method of selectively providing dynamically configurable extendible microprocessor logic supported by an operating system executing on the microprocessor. The method of selectively providing dynamically configurable extendible microprocessor logic supported by an operating system executing on the microprocessor according to this embodiment may comprise providing at least one block of dynamically configurable extension logic and at least one software extension to the operating system. On a software exception generated when a specific extension logic is requested, the operating system calls the least one software extension to handle dynamic configuration of the extendible logic of the microprocessor.
In this embodiment, all extensions are disabled on a task switch. When access to a specific extension is requested, an exception is generated as access to that extension is disabled. In various exemplary embodiments, the OS will call the software extensions (drivers) in order to determine whether the exception is a genuine error, or a valid request to extension logic. In addition to providing for lazy context switch, the OS calls the software extensions (drivers) to determine whether the extension logic expected by the task is loaded into the dynamically configurable extension logic block. If the required extension is loaded, no further action is necessary. If the extension is not loaded, the software extension controls loading of the required extension into the dynamically configurable extension logic block. This method is known as a virtual hardware extensions scheme due to its ability to dynamically configure (swap in) different extension logic hardware as required by any particular task.
At least one additional embodiment provides a method of selectively providing context switch support for extendible microprocessor logic to an operating system executing on the microprocessor. The method of selectively providing context switch support for extendible microprocessor logic to an operating system executing on the microprocessor according to this embodiment may comprise providing at least one software extension to the operating system, the software extension defining properties including instruction and register locations of the extendible logic and how that extendible logic may be enabled/disabled, generating a software exception when a specific extendible logic is requested, and in response to the exception, calling with the operating system the least one software extension to perform context switching of data contained within the specific extendible logic.
Another embodiment of the invention provides a method of selectively providing dynamically configurable extendible microprocessor logic to an operating system executing on the microprocessor. The method of selectively providing dynamically configurable extendible microprocessor logic to an operating system executing on the microprocessor according to the embodiment may comprise providing at least one software extension to the operating system, generating a software exception when a specific extension logic is requested, and in response to the exception, calling with the operating system the least one software extension to handle dynamic configuration of the extendible logic of the microprocessor.
A further embodiment of the invention provides an extendible microprocessor. The extendible microprocessor according to this embodiment may comprise a microprocessor having a multi-stage instruction pipeline, and an extension interface to the instruction pipeline adapted to complement a standard microprocessor instruction set with customized processor instructions and registers.
Still another embodiment of the invention provides a microprocessor architecture. The microprocessor architecture according to this embodiment may comprise a multi-stage instruction pipeline, an instruction extension interface for interfacing with at least one stage of the instruction pipeline, a plurality of extension applications available to an operating system through the instruction pipeline, a required extension determining circuit, routine or application for identifying instructions in the pipeline that require one of the plurality of extension applications, and an extension register disable/enable circuit, routine or application available to the operating system for selectively enabling and disabling extension applications.
Other aspects and advantages of the invention will become apparent from the following detailed description, taken in conjunction with the accompanying drawings, illustrating by way of example the principles of the invention.
The following description is intended to convey a thorough understanding of the invention by providing specific embodiments and details involving various aspects of a new and useful microprocessor architecture. It is understood, however, that the invention is not limited to these specific embodiments and details, which are exemplary only. It further is understood that one possessing ordinary skill in the art, in light of known systems and methods, would appreciate the use of the invention for its intended purposes and benefits in any number of alternative embodiments, depending upon specific design and other needs.
Discussion of the invention will now made by way of example in reference to the various drawing figures.
In various exemplary embodiments, instructions are fetched from memory in 32-bit words. Thus, when the fetch stage 110 fetches a 32-bit word at a specified fetch address, the entry at that fetch address may contain an aligned 16-bit or 32-bit instruction, an unaligned 16 bit instruction preceded by a portion of a previous instruction, or an unaligned portion of a larger instruction preceded by a portion of a previous instruction based on the actual instruction address. For example, a fetched word may have an instruction fetch address of Ox4, but an actual instruction address of Ox6. In various exemplary embodiments, the 32-bit word fetched from memory is passed to the align stage 120 where it is aligned into an complete instruction. In various exemplary embodiments, this alignment may include discarding superfluous 16-bit instructions or assembling unaligned 32-bit or larger instructions into a single instructions. After completely assembling the instruction, the N-bit instruction is forwarded to the decoder 130.
Still referring to
In various exemplary embodiments,' this extension interface may be used to add fixed function logic, as in an application specific integrated circuit (ASIC), or may be connected to an array of programmable logic (FPGA or PLD block). When connected to an array of programmable logic, it will be possible to dynamically change the behavior of the extension functions based on the current needs of the system. This embodiment of the invention provides a system in which an array of programmable logic is connected to the extension interface of a microprocessor, and the microprocessor has a mechanism by which it can reconfigure the programmable logic array based on context. As result, the CPU can dynamically reconfigure the extension instructions/registers available to programs running on the processor.
A problem with implementing an interface between an extendible processor and an operating system (OS) is that the OS is usually codified before the processor and any extension software interface has been created. As a result, the OS is incapable of dealing with these extensions without the assistance of drivers or other software routines.
In various exemplary embodiments, the required extension determining routine or application 320 will inform the OS which of the possible extension functions are required by a particular program or user application. In various exemplary embodiments, this could take the form of an extension to the ELF executable format. The extension register disable/enable routine or application 330 permits the OS to enable or disable access to extension instructions or registers, either individually or as a group. If an access is made or attempted while the OS has disabled the extension function, an exception is taken. In various exemplary embodiments, the available extension routine or application 340 informs the OS about an available extension function or group of functions. In various exemplary embodiments, this will include configuration information about the extension, including at least which extension instruction slots are used, which extension register slots are used and names of instructions and register used for disassembly and debug. In various exemplary embodiments, this will also include a software function by which the OS can determine if the required extension function is already built into the microprocessor, a software model of the extension to allow software emulation if the extension is not available in hardware, and optionally, a configuration file containing the required extension for reconfigurable hardware connected to the extension interface.
In various exemplary embodiments, before running an application, the user or administrator would register (install) available extension functions with the OS, analogous to a virtual device under Microsoft WINDOWS™. Also, because context switching between extensions requires storing state information of the extendible hardware, a technique known as lazy context switching is used to manage context switching of both machine state stored in both fixed function extensions and dynamically reconfigurable extensions.
In various exemplary embodiments, when a user application is executed, no extension functions are loaded or enabled. The OS will check to ensure that an extension function specified by the program has been registered. Any access to an extension function (e.g., register read or write, extension instruction execution) by the program will cause an exception—either an illegal instruction exception or an extension disabled extension. In various exemplary embodiments, this will cause the OS to check to see if the instruction exception is caused by an access to an extension function that is required by the program (as specified in the ELF file). Otherwise, the error is a true illegal instruction error and the OS takes its normal error handling action.
In various exemplary embodiments, if the extension to which access is being attempted is specified as being required by the program as determined by the required extension determining routine or application 320, the OS may take one of the following courses of action. If the extension is already built into the microprocessor, the extension (or extension group containing the function) can be enabled. Before the program is allowed to continue, it may be necessary to context switch any state stored in the extension (lazy context switch) if the extension has been in use by some other task. This technique is often used by an OS to minimize the context switch time. Alternatively, if the extension required is available as a dynamically reconfigurable block, the OS must determine whether the extension is already loaded using the available extension routine or application 340. If so, the OS can then check to see if any state in the extension needs to be context switched. If the extension is not loaded, the OS must save the machine state from an extension configuration that is loaded prior to loading the required extension configuration into the dynamically reconfigurable block. The extension (or extension group containing the function) can then be enabled and the program allowed to continue. Finally, if the extension required is not available as a built-in function, or as a dynamically reconfigurable block, the appropriate emulation code (as registered with the OS) can be called to perform the required function in the absence of an existing hardware extension.
The above described embodiment, by making extensions to the OS error handling code and to the executable file format, provides unexpected benefits including, that a common OS can be used on many different configured microprocessors, different executable programs complied for a common Instruction Set Architecture (ISA), but using different sets of extension functions can be run under a multi-tasking OS on any microprocessor using the using the common ISA using software emulation of extension functions, or built-in extension functions themselves. Also, different executable programs compiled for a common ISA, but using different sets of extension functions can be run at speed under a multi-tasking OS on any microprocessor using the common ISA, when that microprocessor features dynamically reconfigurable extension logic. As a result, this could provide a powerful development platform for extension functions by which extension functions can be prototyped in software or programmable logic while also running in a real OS-based environment. Also, this could be used to deliver a field-upgradeable system whereby a new piece of software would be accompanied by hardware acceleration for key functions of that software, making use of dynamically reconfigurable hardware. Existing functions using other extension functions would still be able to operate as the OS can seamlessly manage which extension functions must be present in the dynamically reconfigurable hardware for each task.
While the foregoing description includes many details and specificities, it is to be understood that these have been included for purposes of explanation only, and are not to be interpreted as limitations of the present invention. Many modifications to the embodiments described above can be made without departing from the spirit and scope of the invention.
This application is a continuation of U.S. patent application Ser. No. 11/132,424, filed on May 19, 2005 which priority to provisional application No. 60/572,238 filed May 19, 2004, each of which is incorporated by reference in its entirety.
Number | Name | Date | Kind |
---|---|---|---|
4216539 | Raymond et al. | Aug 1980 | A |
4342082 | Brown et al. | Jul 1982 | A |
4594659 | Guenthner et al. | Jun 1986 | A |
4829460 | Ito et al. | May 1989 | A |
4831571 | Tokumaru et al. | May 1989 | A |
4905178 | Mor et al. | Feb 1990 | A |
4914622 | Sfarti et al. | Apr 1990 | A |
4926323 | Baror et al. | May 1990 | A |
4939684 | Gehrig et al. | Jul 1990 | A |
4962500 | Nakagawa | Oct 1990 | A |
5148532 | Narita et al. | Sep 1992 | A |
5155698 | Niimi et al. | Oct 1992 | A |
5155843 | Stamm et al. | Oct 1992 | A |
5220670 | Arakawa et al. | Jun 1993 | A |
5274770 | Khim Yeoh et al. | Dec 1993 | A |
5294928 | Cooper et al. | Mar 1994 | A |
5295250 | Komoto et al. | Mar 1994 | A |
5317701 | Reininger et al. | May 1994 | A |
5327536 | Suzuki | Jul 1994 | A |
5333119 | Raatz et al. | Jul 1994 | A |
5423011 | Blaner | Jun 1995 | A |
5450586 | Kuzara et al. | Sep 1995 | A |
5454117 | Puziol et al. | Sep 1995 | A |
5475856 | Kogge | Dec 1995 | A |
5485625 | Gumkowski | Jan 1996 | A |
5493687 | Garg et al. | Feb 1996 | A |
5509129 | Guttag et al. | Apr 1996 | A |
5517436 | Andreas et al. | May 1996 | A |
5530825 | Black et al. | Jun 1996 | A |
5542074 | Kim et al. | Jul 1996 | A |
5560036 | Yoshida | Sep 1996 | A |
5566357 | Holcman | Oct 1996 | A |
5584031 | Burch et al. | Dec 1996 | A |
5586279 | Pardo et al. | Dec 1996 | A |
5590350 | Guttag et al. | Dec 1996 | A |
5590351 | Sowadsky et al. | Dec 1996 | A |
5600674 | Bonet et al. | Feb 1997 | A |
5600847 | Guttag et al. | Feb 1997 | A |
5636363 | Bourekas et al. | Jun 1997 | A |
5642500 | Inoue | Jun 1997 | A |
5655122 | Wu | Aug 1997 | A |
5692168 | McMahan | Nov 1997 | A |
5696954 | Guttag et al. | Dec 1997 | A |
5696958 | Mowry et al. | Dec 1997 | A |
5713028 | Takahashi et al. | Jan 1998 | A |
5727211 | Gulsen | Mar 1998 | A |
5752014 | Mallick et al. | May 1998 | A |
5768602 | Dhuey | Jun 1998 | A |
5774709 | Worrell | Jun 1998 | A |
5778423 | Sites et al. | Jul 1998 | A |
5784636 | Rupp | Jul 1998 | A |
5805876 | Bose et al. | Sep 1998 | A |
5809293 | Bridges et al. | Sep 1998 | A |
5826079 | Boland et al. | Oct 1998 | A |
5826100 | Bonet et al. | Oct 1998 | A |
5835753 | Witt | Nov 1998 | A |
5848264 | Baird et al. | Dec 1998 | A |
5878264 | Ebrahim | Mar 1999 | A |
5893151 | Merchant | Apr 1999 | A |
5896305 | Bosshart et al. | Apr 1999 | A |
5907498 | Rim | May 1999 | A |
5909566 | Cai et al. | Jun 1999 | A |
5920711 | Seawright et al. | Jul 1999 | A |
5931950 | Hsu | Aug 1999 | A |
5948099 | Crawford et al. | Sep 1999 | A |
5950120 | Gardner et al. | Sep 1999 | A |
5964884 | Partovi et al. | Oct 1999 | A |
5978909 | Lempel | Nov 1999 | A |
5996071 | White et al. | Nov 1999 | A |
6014743 | Henry et al. | Jan 2000 | A |
6021500 | Wang et al. | Feb 2000 | A |
6026478 | Dowling | Feb 2000 | A |
6029222 | Kamiya | Feb 2000 | A |
6035374 | Panwar et al. | Mar 2000 | A |
6038649 | Ozawa et al. | Mar 2000 | A |
6044458 | Rinkenberger et al. | Mar 2000 | A |
6058142 | Ishikawa et al. | May 2000 | A |
6061521 | Thayer et al. | May 2000 | A |
6076158 | Sites et al. | Jun 2000 | A |
6088034 | Deering | Jul 2000 | A |
6088786 | Feierbach et al. | Jul 2000 | A |
6128747 | Thoulon | Oct 2000 | A |
6141673 | Thayer et al. | Oct 2000 | A |
6151672 | Hunt | Nov 2000 | A |
6154857 | Mann | Nov 2000 | A |
6157988 | Dowling | Dec 2000 | A |
6163851 | Yamazoe et al. | Dec 2000 | A |
6185732 | Mann et al. | Feb 2001 | B1 |
6189091 | Col et al. | Feb 2001 | B1 |
6226738 | Dowling | May 2001 | B1 |
6240521 | Barber et al. | May 2001 | B1 |
6253287 | Green | Jun 2001 | B1 |
6289417 | Larri | Sep 2001 | B1 |
6292879 | Fong | Sep 2001 | B1 |
6308249 | Okazawa | Oct 2001 | B1 |
6308279 | Toll et al. | Oct 2001 | B1 |
6327651 | Dubey et al. | Dec 2001 | B1 |
6339822 | Miller | Jan 2002 | B1 |
6343337 | Dubey et al. | Jan 2002 | B1 |
6347379 | Dai et al. | Feb 2002 | B1 |
6353882 | Hunt | Mar 2002 | B1 |
6412038 | Mehalel | Jun 2002 | B1 |
6412066 | Worrell et al. | Jun 2002 | B2 |
6427206 | Yeh et al. | Jul 2002 | B1 |
6438700 | Adusumilli | Aug 2002 | B1 |
6477683 | Killian et al. | Nov 2002 | B1 |
6499101 | Henry et al. | Dec 2002 | B1 |
6519696 | Henry et al. | Feb 2003 | B1 |
6526502 | Col et al. | Feb 2003 | B1 |
6550056 | Mizumoto | Apr 2003 | B1 |
6560754 | Hakewill et al. | May 2003 | B1 |
6571331 | Henry et al. | May 2003 | B2 |
6571333 | Jain et al. | May 2003 | B1 |
6584525 | Klingman | Jun 2003 | B1 |
6609194 | Henry et al. | Aug 2003 | B1 |
6622240 | Olson et al. | Sep 2003 | B1 |
6647491 | Hsu et al. | Nov 2003 | B2 |
6671743 | Verity | Dec 2003 | B1 |
6681295 | Root et al. | Jan 2004 | B1 |
6718460 | Prakash | Apr 2004 | B1 |
6718504 | Coombs et al. | Apr 2004 | B1 |
6751331 | Eisenbraun | Jun 2004 | B2 |
6760833 | Dowling | Jul 2004 | B1 |
6774832 | Essenwanger | Aug 2004 | B1 |
6823444 | Henry et al. | Nov 2004 | B1 |
6862563 | Hakewill et al. | Mar 2005 | B1 |
6886093 | Henry et al. | Apr 2005 | B2 |
6895424 | Kirsch | May 2005 | B2 |
6909744 | Molloy | Jun 2005 | B2 |
6925634 | Hunter | Aug 2005 | B2 |
6948052 | Nguyen et al. | Sep 2005 | B2 |
6954845 | Arnold et al. | Oct 2005 | B2 |
6963554 | Weigand | Nov 2005 | B1 |
6968444 | Kroesche et al. | Nov 2005 | B1 |
6981012 | Kirsch | Dec 2005 | B2 |
7010558 | Morris | Mar 2006 | B2 |
7093165 | Kageshima | Aug 2006 | B2 |
7162619 | Henry et al. | Jan 2007 | B2 |
7181596 | Henry et al. | Feb 2007 | B2 |
20010016903 | Tremblay | Aug 2001 | A1 |
20010021974 | Lee | Sep 2001 | A1 |
20010032309 | Henry et al. | Oct 2001 | A1 |
20010040686 | Schoolcraft et al. | Nov 2001 | A1 |
20010044892 | Yamaura | Nov 2001 | A1 |
20010046260 | Molloy | Nov 2001 | A1 |
20010050682 | Deering et al. | Dec 2001 | A1 |
20010056531 | McFarling | Dec 2001 | A1 |
20020053015 | Tan et al. | May 2002 | A1 |
20020066006 | Worrell | May 2002 | A1 |
20020069351 | Chi et al. | Jun 2002 | A1 |
20020073301 | Kahle et al. | Jun 2002 | A1 |
20020078332 | Seznec et al. | Jun 2002 | A1 |
20020083312 | Sinharoy | Jun 2002 | A1 |
20020087851 | Yoshioka | Jul 2002 | A1 |
20020087852 | Jourdan et al. | Jul 2002 | A1 |
20020100019 | Hunter et al. | Jul 2002 | A1 |
20020100020 | Hunter et al. | Jul 2002 | A1 |
20020138236 | Takamura | Sep 2002 | A1 |
20020157000 | Hay et al. | Oct 2002 | A1 |
20020188833 | Henry et al. | Dec 2002 | A1 |
20020194236 | Morris | Dec 2002 | A1 |
20020194238 | Kirsch | Dec 2002 | A1 |
20020194461 | Henry et al. | Dec 2002 | A1 |
20020194462 | Henry et al. | Dec 2002 | A1 |
20020194463 | Henry et al. | Dec 2002 | A1 |
20020194464 | Henry et al. | Dec 2002 | A1 |
20020198916 | Kirsch | Dec 2002 | A1 |
20020199092 | Henry et al. | Dec 2002 | A1 |
20030023838 | Karim et al. | Jan 2003 | A1 |
20030046614 | Brokish | Mar 2003 | A1 |
20030070013 | Hansson | Apr 2003 | A1 |
20030105793 | Guttag et al. | Jun 2003 | A1 |
20030126508 | Litt | Jul 2003 | A1 |
20030154359 | Henry et al. | Aug 2003 | A1 |
20030154463 | Betker et al. | Aug 2003 | A1 |
20030159009 | Henry et al. | Aug 2003 | A1 |
20030159020 | Henry et al. | Aug 2003 | A1 |
20030172252 | Henry et al. | Sep 2003 | A1 |
20030188129 | Henry et al. | Oct 2003 | A1 |
20030188130 | Henry et al. | Oct 2003 | A1 |
20030188131 | Henry et al. | Oct 2003 | A1 |
20030188133 | Henry et al. | Oct 2003 | A1 |
20030188140 | Henry et al. | Oct 2003 | A1 |
20030196077 | Henry et al. | Oct 2003 | A1 |
20030204705 | Oldfield et al. | Oct 2003 | A1 |
20030221091 | Henry et al. | Nov 2003 | A1 |
20030225998 | Khan et al. | Dec 2003 | A1 |
20040015683 | Emma et al. | Jan 2004 | A1 |
20040049660 | Jeppesen et al. | Mar 2004 | A1 |
20040068643 | Dowling | Apr 2004 | A1 |
20040098569 | Smith et al. | May 2004 | A1 |
20040139281 | McDonald | Jul 2004 | A1 |
20040172524 | Hoogerbrugge | Sep 2004 | A1 |
20040186985 | Tran et al. | Sep 2004 | A1 |
20040193843 | Altshuler et al. | Sep 2004 | A1 |
20040193852 | Johnson | Sep 2004 | A1 |
20040193855 | Kacevas et al. | Sep 2004 | A1 |
20040225870 | Srinivasan et al. | Nov 2004 | A1 |
20040225871 | Irie et al. | Nov 2004 | A1 |
20040225872 | Bonanno et al. | Nov 2004 | A1 |
20040225949 | Coombs et al. | Nov 2004 | A1 |
20040230782 | Busaba et al. | Nov 2004 | A1 |
20040250045 | Dowling | Dec 2004 | A1 |
20040254965 | Giernalczyk et al. | Dec 2004 | A1 |
20040255100 | Kershaw | Dec 2004 | A1 |
20040255104 | Akkary et al. | Dec 2004 | A1 |
20040268102 | Combs et al. | Dec 2004 | A1 |
20050027970 | Arnold et al. | Feb 2005 | A1 |
20050027971 | Williams et al. | Feb 2005 | A1 |
20050027974 | Lempel | Feb 2005 | A1 |
20050050309 | Yamashita et al. | Mar 2005 | A1 |
20050060457 | Olukotun | Mar 2005 | A1 |
20050066305 | Lisanke | Mar 2005 | A1 |
20050076193 | Henry et al. | Apr 2005 | A1 |
20050091479 | Chung | Apr 2005 | A1 |
20050097398 | Day et al. | May 2005 | A1 |
20050102492 | Henry et al. | May 2005 | A1 |
20050125613 | Kim et al. | Jun 2005 | A1 |
20050125632 | Alsup et al. | Jun 2005 | A1 |
20050125634 | Ishizuka | Jun 2005 | A1 |
20050132175 | Henry et al. | Jun 2005 | A1 |
20050138607 | Lu | Jun 2005 | A1 |
20050154867 | DeWitt et al. | Jul 2005 | A1 |
20050169550 | Arnold et al. | Aug 2005 | A1 |
20050172277 | Chheda et al. | Aug 2005 | A1 |
20050174270 | Koo et al. | Aug 2005 | A1 |
20050188179 | Henry et al. | Aug 2005 | A1 |
20050204121 | Burdass | Sep 2005 | A1 |
20050216703 | Dieffenderfer et al. | Sep 2005 | A1 |
20050216713 | Prasky et al. | Sep 2005 | A1 |
20050223202 | Peri et al. | Oct 2005 | A1 |
20050273559 | Aristodemou et al. | Dec 2005 | A1 |
20050273581 | Arnold et al. | Dec 2005 | A1 |
20050278505 | Lim et al. | Dec 2005 | A1 |
20050278513 | Aristodemou et al. | Dec 2005 | A1 |
20050278517 | Wong et al. | Dec 2005 | A1 |
20050289323 | Wong et al. | Dec 2005 | A1 |
20060015706 | Lai | Jan 2006 | A1 |
20060036836 | Gelman et al. | Feb 2006 | A1 |
20060041868 | Huang | Feb 2006 | A1 |
Number | Date | Country |
---|---|---|
0055370 | Jul 1982 | EP |
06 332693 | Dec 1994 | JP |
2001 282548 | Oct 2001 | JP |
WO 9609583 | Sep 1995 | WO |
Entry |
---|
Gilson, Kent L. et al., “The Nano Processor: a Low Resource Reconfigurable Processor” IEEE Workshop on FPGAs for Custom Computing Machines, Apr. 11, 2004, p. 2, col. 2, paragraphs 3-4; p. 3, col. 1, paragraph 3 to col. 2, paragraph 2; p. 5, col. 1, paragraph 6 to col. 1, paragraph 3; and Figure 2. |
Hennessy, John L. et al., A Computer Architecture: A Quantitative Approach, Second Edition, San Francisco, California: Morgan Kaufman Publishers, Inc. 1996, p. 71, paragraph 4; pp. 87-88, paragraphs 8 to 1; Figure 2.17 and Caption. |
Altera, FLEX 10K—Embedded Programmable Logic Device Family, 2003, Altera, pp. 1, 6. |
Back, D. et al., “Evaluation of Techniques for Reducing the Energy-Delay Product in a JAVA Processor,” Chalmers University of Technology, Department of Computer Engineering, 1999, 12 pages. |
Fritts, J. et al., “Instruction Fetch Characteristics of Media Processing,” Proceedings of SPIE Photonics West, Media Processors, 2002, pp. 1-12. |
Hennessy et al, Computer Architecture—A Quantitative Approach, Morgan Kaufmann Publishiers, 2003, pp. 197-199. |
McFarling, S. et al., “Reducing the Cost of Branches,” IEEE, 1986, pp. 396-403. |
Lee, J.K.F. et al., “Branch Prediction Strategies and Branch Target Buffer Design,” IEEE Computer, Jan. 1984, pp. 6-22. |
Johnson, W. , Superscalar Microprocessor Design, Prentice Hall, 1991, p. 22. |
Patterson, D. A. et al., “A Computer Architecture: A Quantitative Approach,” Second Edition, San Francisco. California: Morgan Kaufman Publishers, Inc., 1990, pp. 252-278. |
PCT International Search Report, PCT Application No. PCT/US01/51064, Jan. 15, 2003, 5 pages. |
PCT International Search Report and Written Opinion, PCT Application No. PCT/US05/17586, Nov. 27, 2006, 18 pages. |
PCT International Search Report, PCT/GB95/02283, Apr. 19, 1996, 3 pages. |
Sherwood, T. et al., “Automated Design of Finite State Machine Predictors for Customized Processors,” IEEE, 2001, pp. 86-97. |
Su, C-L. et al., “Low Power Architecture Design and Compilation Techniques for High-Performance Processor,” published in Proceedings of COMPCON 1994, Apr. 1994, dated Feb. 15, 1994. |
Tabak, D., “Advanced Microprocessors,” McGraw-Hill, Second Edition, 1995, ISBN 0-07-062843-2, Chapter 5: Pipelining, pp. 67-78. |
UK Examination Report, UK Patent Application No. GB0622477.8, Dec. 3, 2007, 1 page. |
United States Office Action, U.S. Appl. No. 11/132,423, Jan. 22, 2008, 14 pages. |
United States Office Action, U.S. Appl. No. 11/132,423, Jun. 22, 2007, 19 pages. |
United States Office Action, U.S. Appl. No. 11/132,423, Feb. 27, 2007, 14 pages. |
United States Office Action, U.S. Appl. No. 11/132,432, Jul. 3, 2007, 8 pages. |
United States Office Action, U.S. Appl. No. 10/083,057, May 20, 2004. |
United States Office Action, U.S. Appl. No. 10/083,057, Jun. 17, 2005, 15 pages. |
United States Office Action, U.S. Appl. No. 11/132,428, Mar. 19, 2008, 10 pages. |
United States Office Action, U.S. Appl. No. 11/132,428, Jun. 7, 2007, 8 pages. |
United States Office Action, U.S. Appl. No. 11/132,447, Feb. 27, 2007, 20 pages. |
United States Office Action, U.S. Appl. No. 11/132,447, Jul. 18, 2007, 19 pages. |
United States Office Action, U.S. Appl. No. 11/132,448, Jan. 8, 2009, 11 pages. |
United States Office Action, U.S. Appl. No. 11/132,448, Jul. 18, 2008, 11 pages. |
U.S. Appl. No. 10/423,745 (issued as U.S. Patent 7,475,000), filed Apr. 25, 2003, Inventors Cook et al. |
U.S. Appl. No. 10/651,560, filed Aug. 29, 2003, Inventors Hewitt et al. |
Wirthlin, M.J. et al., “The Nano Processor: A Low Resource Reconfigurable Processor,” IEEE Workshop on FPGAs for Custom Computing Machines, Apr. 11, 1994, pp. 23-30. |
United States Office Action, U.S. Appl. No. 11/132,424, Sep. 18, 2013, 24 pages. |
United States Office Action, U.S. Appl. No. 11/132,424, Oct. 23, 2012, 20 pages. |
United States Office Action, U.S. Appl. No. 11/132,424, Jun. 5, 2012, 18 pages. |
United States Office Action, U.S. Appl. No. 11/132,424, Mar. 31, 2010, 19 pages. |
United States Office Action, U.S. Appl. No. 11/132,424, Sep. 16, 2009, 20 pages. |
Number | Date | Country | |
---|---|---|---|
20140208087 A1 | Jul 2014 | US |
Number | Date | Country | |
---|---|---|---|
60572238 | May 2004 | US |
Number | Date | Country | |
---|---|---|---|
Parent | 11132424 | May 2005 | US |
Child | 14222194 | US |