Microprocessor architecture having extendible logic

Information

  • Patent Grant
  • 9003422
  • Patent Number
    9,003,422
  • Date Filed
    Friday, March 21, 2014
    10 years ago
  • Date Issued
    Tuesday, April 7, 2015
    9 years ago
Abstract
A microprocessor architecture having extendible logic. One or more customized applications are available to the instruction pipeline. The customizable applications may include software, extension logic instruction or register, dynamically configurable hardware logic, or combinations of these. In order to enable the operating system to interface with the customized extension applications, at least one software extension is provided to the operating system. When a specific extension is requested a software exception is generated by the OS. In response to the exception, the least one software extension is called to handle context switch and dynamic configuration of the extendible logic of the microprocessor.
Description
FIELD

This invention relates generally to microprocessor architecture and more specifically to an improved architecture and mode of operation of a microprocessor having extendible logic.


BACKGROUND

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.


SUMMARY

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.





BRIEF DESCRIPTION OF THE DRAWINGS


FIG. 1 is a block diagram illustrating a processor core in accordance with at least one exemplary embodiment of this invention; and



FIGS. 2 and 3 are block diagrams illustrating a microprocessor architecture utilizing operating system supported virtual hardware extensions in accordance with at least one exemplary embodiment of this invention.





DETAILED DESCRIPTION

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. FIG. 1 illustrates in block diagram form, an architecture for a microprocessor core 100 and peripheral hardware structure in accordance with at least one exemplary embodiment of this invention. Several novel features will be apparent from FIG. 1 which distinguish the illustrated microprocessor architecture from that of the conventional microprocessor architecture. Firstly, the microprocessor architecture of FIG. 1 features a processor core 100 having a seven stage instruction pipeline. An align (ALN) stage 120 is shown in FIG. 1 following the fetch (FET) stage 110. Because the microprocessor core 100 shown in FIG. 1 is operable to work with a variable bit-length instruction set, namely, 16-bits, 32-bits, 48-bits or 64-bits, the align stage 120 formats the words coming from the fetch stage 110 into the appropriate instructions.


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 FIG. 1, an instruction extension interface 180 is also shown which permits interface of customized processor instructions that are used to complement the standard instruction set architecture of the microprocessor. Interfacing of these customized instructions occurs through a timing registered interface to the various stages of the microprocessor pipeline 100 in order to minimize the effect of critical path loading when attaching customized logic to a pre-existing processor pipeline. Specifically, a custom opcode slot is defined in the extensions instruction interface for the specific custom instruction in order for the microprocessor to correctly acknowledge the presence of a custom instruction 182 as well as the extraction of the source operand addresses that are used to index the register file 142. The custom instruction flag interface 184 is used to allow the addition of custom instruction flags that are used by the microprocessor for conditional evaluation using either the standard condition code evaluators or custom extension condition code evaluators in order to determine whether the instruction is executed or not based upon the condition evaluation result of the execute stage (EXEC) 150. A custom ALU interface 186 permits user defined arithmetic and logical extension instructions the result of which are selected in the result select stage (SEL) 160.



FIGS. 2 and 3 are block diagrams illustrating a microprocessor architecture utilizing operating system supported virtual hardware extensions in accordance with at least one exemplary embodiment of this invention. A microprocessor in accordance with at least one embodiment of this invention is capable of logic extension by a user by way of an interface by which extension instructions and registers may be added. Certain slots in the processor's instruction set and register map are reserved to functions reached through this interface. By this interface, special instructions including digital signal processor (DSP) instructions, state machine and related machine state may be extended to the processor in order to make available and/or accelerate applications critical to implementers (customers) of the microprocessor.


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. FIGS. 2 and 3 illustrate the basic components of a system for in accordance with this embodiment of the invention. FIG. 2 illustrates a microprocessor core 200 that includes a dynamically reconfigurable extension instruction/register logic accessed through an extension interface 210. The extension interface 210 communicates with a software interface 220 of the operating system in response to demands of the operating system. FIG. 3 illustrates a system 300, which can be dynamically reconfigured under the control of the microprocessor. The system 300 includes an extendible processor 310, a required extension determining routine or application 320, an extension register disable/enable routine or application 330, an available extension routine or application 340 and one or more extension applications 350, all interconnected by software interface 360.


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.

Claims
  • 1. An extendible microprocessor system comprising: a microprocessor including a microprocessor instruction set; andan extension interface coupled to the microprocessor, the extension interface including customized processor instructions adding functionality to the microprocessor instruction set included in the microprocessor, the customized processor instructions associated with an illegal instruction exception and an extension disabled exception, the illegal instruction exception indicating that access to one or more of the customized processor instructions is prohibited and the extension disabled exception indicating that one or more of the customized processor instructions is available;a system coupled to the microprocessor via the extension interface, the system configured to: generate, based on whether one of the customized processor instructions is required by a program, either the illegal instruction exception or the extension disabled extension when the one of the customized processor instructions is requested by the program; andperform, responsive to the extension disabled exception due to the program requiring the requested one of the customized processor instructions, context switching of data contained within the requested one of the customized processor instructions.
  • 2. The extendible microprocessor system of claim 1, wherein the extension interface includes an interface configured to receive user definitions of extension instructions from a user.
  • 3. The extendible microprocessor system of claim 1, wherein the extension interface includes an instruction flag interface configured to receive custom instruction flags used by the microprocessor to determine whether to execute a customized processor instruction using standard evaluators or custom extension evaluators.
  • 4. The extendible microprocessor system of claim 1, wherein the extension interface further includes extension registers.
  • 5. The extendible microprocessor system of claim 4, wherein the system is further configured to perform steps comprising: selectively disabling or enabling the customized processor instructions and the extension registers.
  • 6. The extendible microprocessor system of claim 1, wherein the system is further configured to perform steps comprising: switching between the customized instructions.
  • 7. The extendible microprocessor system of claim 6, wherein switching comprises the system performing steps including storing a current state of customized processor instructions for future calls to the customized processor instructions.
  • 8. The extendible microprocessor system of claim 7, wherein storing comprises the system performing steps including performing lazy context switching.
  • 9. The extendible microprocessor system of claim 6, wherein switching comprises the system performing steps including reconfiguring a block of reconfigurable logic connected to the extension interface.
  • 10. The extendible microprocessor system according to claim 9, wherein switching comprises the system performing steps including storing a state of the reconfigurable logic for future calls.
  • 11. The extendible microprocessor system according to claim 10, wherein storing comprises the system performing steps including performing lazy context switching.
  • 12. The extendible microprocessor system according to claim 1, wherein the system is further configured to perform steps comprising: determining if a last use of the one of the customized processor instructions was by the program requesting the one of the customized processor instructions; andperforming a context switch if the one of the customized processor instructions was last used by a different program.
  • 13. A method of selectively providing context switch support for extendible microprocessor logic of a microprocessor to a system executing on the microprocessor, the method comprising: providing, by the system, at least one software extension defining customized processor instructions that add functionality to a microprocessor instruction set included in the microprocessor, the customized processor instructions associated with an illegal instruction exception and an extension disabled exception, the illegal instruction exception indicating that access to at least one customized processor instruction is prohibited and the extension disabled exception indicating that the at least one customized processor instruction is available but access is currently disabled;causing the at least software extension to determine whether an exception generated responsive to a program requesting at least one of the customized processor instructions is either the illegal instruction exception or the extension disabled extension based on whether the at least one of the customized processor instructions being required by the program; andin response to the extension disabled exception due to the program requiring the at least one of the customized processor instructions, calling the at least one software extension to perform context switching of data contained within the at least one of the customized processor instructions.
  • 14. The method according to claim 13, further comprising: selectively disabling or enabling access to the at least one of the customized processor instructions of the microprocessor.
  • 15. The method according to claim 13, further comprising: switching between programs using the at least one of the customized processor instructions.
  • 16. The method according to claim 15, wherein switching between the programs uses lazy context switching.
  • 17. The method according to claim 16, wherein performing lazy context switching includes storing a state of the data contained within the at least one of the customized processor instructions.
  • 18. The method according to claim 16, further comprising: determining if a last use of at least one of the customized processor instructions was by the program requesting the at least one of the customized processor instructions; andperforming a context switch if the at least one of the customized processor instructions was last used by a different program.
  • 19. A system for selectively providing context switch support for extendible microprocessor logic of a microprocessor, the system including: a non-transitory computer-readable storage medium storing instructions, the instructions configured to: provide at least one software extension defining customized processor instructions that add functionality to a microprocessor instruction set included in the microprocessor, the customized processor instructions associated with an illegal instruction exception and an extension disabled exception, the illegal instruction exception indicating that access to at least one customized processor instruction is prohibited and the extension disabled exception indicating that the at least one customized processor instruction is available but access is currently disabled;cause the at least software extension to determine whether an exception generated responsive to a program requesting at least one of the customized processor instructions is either the illegal instruction exception or the extension disabled extension based on whether the at least one of the customized processor instructions being required by the program; andin response to the extension disabled exception due to the program requiring the at least one of the customized processor instructions, call the at least one software extension to perform context switching of data contained within the at least one of the customized processor instructions.
  • 20. The system according to claim 19, wherein the instructions further configured to: selectively disable or enable access to the at least one of the customized processor instructions of the microprocessor.
CROSS REFERENCE TO RELATED APPLICATIONS

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.

US Referenced Citations (240)
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
Foreign Referenced Citations (4)
Number Date Country
0055370 Jul 1982 EP
06 332693 Dec 1994 JP
2001 282548 Oct 2001 JP
WO 9609583 Sep 1995 WO
Non-Patent Literature Citations (37)
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.
Related Publications (1)
Number Date Country
20140208087 A1 Jul 2014 US
Provisional Applications (1)
Number Date Country
60572238 May 2004 US
Continuations (1)
Number Date Country
Parent 11132424 May 2005 US
Child 14222194 US