EMULATION COPROCESSOR

Abstract: A computer system (5) employing a host processor (48, 152) and an emulation coprocessor (50, 150). The host processor (48, 152) includes hardware configured to execute instructions defined by a host instruction set architecture, while the emulation coprocessor (50, 150) includes hardware configured to execute instructions defined by a different instruction set architecture from the host instruction set architecture ("the foreign instruction set architecture"). The host processor core (48, 152) executes operating system code as well as application programs which are coded in the host instruction set architecture. Upon initiation of a foreign application program, the host processor core (50, 150) communicates with the emulation coprocessor core (48, 152) to cause the emulation coprocessor core (48, 152) to execute the foreign application program. Accordingly, application programs coded according to the foreign instruction set architecture can be executed directly in hardware. The computer system (5) may be characterized as a heterogeneous multiprocessing system. While the emulation coprocessor (50, 150) is executing the foreing application program, the host processor (48, 152) may execute operating system routines unrelated to the foreign application program or may execute a host application program.

Description: TITLE: EMULATION COPROCESSOR BACKGROUND OF THE INVENTION 1 Technical Field This invention is related to the field of processors for computer systems and, more particularly, to supporting multiple instruction set architectures withm a computer system 2 Background Art Computer systems have become an important productivity tool m many environments Nearly all lines of work benefit from a computer system to carry out many tasks which are central to that work For example, manageπal professionals use computer systems for managing data bases of business-critical data, creating and managing documents, etc Engmeermg professionals use computer systems for researching, designing, and verifying products Manufacturing and distribution centers use computer systems to control manufacturing machmes, to track products through the manufacturing process, for inventory control, and to manage distribution products to wholesale/retail centers. All of the above may use computer systems for communications as well via email, the Internet, intranets, etc Home uses for computer systems abound as well, mcludmg financial management, communication, and entertainment Many other uses for computer systems exist. As the above illustrates, a large diverse set of uses for computer systems have been developed. Generally, these uses are supported by a variety of application programs designed to execute under an operatmg system provided for the computer system. The operatmg system provides an interface between the application programs and the computer system hardware Each computer system may have a variety of differences in hardware configuration (e g amount of memory, number and type of input/output (I/O) devices, etc ) The operatmg system insulates the application program from the hardware differences Accordmgly, the application program may often times be designed without regard for the exact hardware configuration upon which the application program is to execute. Additionally, the operatmg system provides a variety of low level services which many different types of application programs may need, allowing the application programs to rely on the operatmg system services mstead of programmmg these services internal to the application program Generally, the operatmg system provides scheduling of tasks (e.g. different application programs which may be operatmg concurrently), management and allocation of system resources such as I O devices and memory, error handlmg (e.g. an application program operatmg erroneously), etc. Examples of operating systems are the Windows operatmg system (mcludmg Wmdows 95 and Wmdows NT), UNIX, DOS, and MAC-OS, among others. Conversely, an application program provides specific user functionality to accomplish a specific user task Word processors, spreadsheets, graphics design programs, inventory management programs, etc. are examples of application programs Therefore, application programs are typically designed to operate upon a particular operatmg system The services available from the operating system ("operatmg system routines") are optionally used by the application program Additionally, the application program conforms to the requirements of the operatmg system One hardware feature which the operatmg system does not typically insulate the application program from is the instruction set architecture of the processors within the computer system Generally, an instruction set architecture defines the instructions which execute upon the processors, as well as processor resources directly used by the instructions (such as registers, etc ) The application program is generally compiled mto a set of instructions defined by the instruction set architecture, and hence the operatmg system does not msulate the application program from this feature of the computer system hardware As descnbed above, a computer system must support a large number of different types of application programs to be useful to a large base of customers Processors employing newly developed instruction set architectures face a daunting task of enticing application developers to develop applications designed for the new instruction set architecture However, without the application programs, the instruction set architecture and the processors designed therefor will often achieve only limited market acceptance, at best It is difficult and time consuming to recreate application programs usmg the new instruction set architecture due to the large number of application programs and the time and effort needed to "port" each application program to the new instruction set architecture Furthermore, the source code for many application programs may be unavailable to those desiring to perform the port On the other hand, operatmg systems are fewer in number (particularly those with widespread acceptance) and may be ported to a variety of instruction set architectures For example, Wmdows NT has supported the Alpha architecture developed by Digital Equipment Corporation, the PowerPC architecture developed by IBM and Motorola, and the MIPS architecture, m addition to the x86 architecture In order to provide a large applications base, thereby generating market acceptance which may lead to more application programs bemg developed, a computer system based on processors employmg the newly developed instruction set architecture may attempt to support applications coded to a different instruction set architecture Herem, code using instructions defined by the instruction set architecture employed by the processors m a computer system is referred to as "native" or "host", while code usmg instructions defined by a different instruction set architecture is referred to as "non-native" or "foreign" The x86 architecture (also referred to as IA-32 or APX) has one of the largest application program bases m the history of computing A large percentage of these programs are developed to run under the Wmdows operatmg system While Wmdows and the x86 application programs are used penodically as an example herem, the techniques and hardware disclosed herem are not limited to this instruction set architecture and operatmg system Any operatmg system and instruction set architecture may be used New computer systems, whose host processor is non-x86, may provide support for x86 (I e foreign) application programs running under the Wmdows operatmg system while application programs are developed for the non-x86 host processor Two methods which have been used to support foreign applications m a computer system are software emulation and binary translation Software emulation generally compπses reading each instruction m the application program as the instruction is selected for execution and performing an equivalent instruction sequence m the host architecture Binary translation generally mvolves translating each instruction in the application program mto an equivalent instruction sequence pnor to executing the program, and then executmg the translated program sequence Unfortunately, because each foreign instruction is examined during execution of the program, software emulation provides significantly reduced performance of the application program than that achievable on a computer system employmg the foreign instruction set architecture Furthermore, more memory is required to execute the application program, m order to store the emulation program and supporting data strucmres If the application program includes real time features (e g audio and video), these features may operate poorly because of the excessive execution tune Still further, processor implementations of an instruction set architecture often mclude a variety of undocumented features (both known and unknown) which must be modeled by the software emulator Furthermore, complex hardware features (such as the x86 floating pomt register stack) are difficult to model accurately m the software emulator Binary translation suffers from several drawbacks as well Binary translation is not transparent to the user Binary translation often requires multiple passes through the application program code to successfully translate the program In the interim, software emulation may be used to execute the application (with many of the aforementioned drawbacks) Sometimes, a complete translation is not achieved, and hence software emulation is still required Several combmations of the above approaches have been employed by computer system companies and operatmg system companies For example, Digital Equipment Corporation offers its FX'32 system and Microsoft offers its Wx86 extension to Windows NT However, while these approaches have provided functionality, the high performance desired of the foreign applications has generally not been satisfied DISCLOSURE OF INVENTION The problems outlmed above are m large part solved by a computer system employmg a host processor and an emulation coprocessor m accordance with the present invention The host processor includes hardware configured to execute mstructions defined by a host instruction set architecture, while the emulation coprocessor mcludes hardware configured to execute mstructions defined by a different instruction set architecture from the host instruction set architecture ("the foreign instruction set architecture") The host processor executes operating system code as well as application programs which are coded m the host instruction set architecture Upon initiation of a foreign application program, the host processor communicates with the emulation coprocessor to cause the emulation coprocessor core to execute the foreign application program Advantageously, application programs coded accordmg to the foreign instruction set architecture can be executed directly m hardware Execution performance of the application program may be substantially greater than that of a software emulation or binary translation methodology Moreover, execution performance may be substantially similar to execution performance of the application program within a computer system based upon a processor employmg the foreign instruction set architecture, thereby preserving much of the real-time behavior of the foreign application program Software emulation/binary translation methodologies and combmations thereof may be eliminated m favor of hardware execution of the foreign application program Because the emulation coprocessor mcludes hardware functionality for executing the foreign instruction set architecture, the difficulties of accurate architecture modelmg may be eliminated The combination of these vaπous advantages may provide a high level performance, allowing the foreign application execution performance to be highly acceptable to a user Accordmgly, market acceptance of the computer system based upon the host mstruction set architecture may be mcreased As market acceptance mcreases, the number of application programs coded for the host mstruction set architecture may increase as well Long-term success and viability of the host instruction set architecture may therefore be more likely Providing hardware functionality for the foreign instruction set architecture within the computer system generates additional advantages In particular, the computer system may be characterized as a heterogeneous multiprocessing system While the emulation coprocessor is executing the foreign application program, the host processor may execute operating system routmes unrelated to the foreign application program or mav execute a host application program Advantageously, the computer system may achieve a substantially higher throughput on both host and foreign code that would be achievable via computer system employmg only the host processor and software emulation/binary translation for the foreign mstruction set architecture Broadly speakmg, the present mvention contemplates an apparatus for a computer system compπsmg a first processor and a second processor The first processor is configured to execute first mstructions defined by a first mstruction set architecture An operatmg system employed by the computer system is coded usmg the first mstructions Coupled to the first processor, the second processor is configured to execute second mstructions defined by a second mstruction set architecture different than the first mstruction set architecture An application program designed to execute within the operating system is coded usmg the second mstructions The second processor is configured to execute the application program while the first processor is configured to execute the operatmg system Additionally, the second processor is configured to communicate with the first processor upon detectmg a use of an operating system routine for the application program The present mvention further contemplates a heterogeneous multiprocessing system compπsmg a first processor, a second process, an operating system, and an application program The first processor is configured to execute first mstructions defined by a first mstruction set architecture The second processor is coupled to the first processor, and is configured to execute second mstructions defined by a second mstruction set architecture different than the first mstruction set architecture The operating system is coded usmg the first mstructions, while the application program is coded usmg the second mstructions and designed to execute within the operating system The second processor is configured to execute the application program and the first processor is configured to concurrently execute a process unrelated to the application program Moreover, the present mvention contemplates a method for executing an application program coded usmg instructions from a first mstruction set architecture and designed to execute within an operating system coded usmg mstructions from a second mstruction set architecture different from the first mstruction set architecture Initiation of the application program is detected by the operating system executing upon a first processor configured to execute mstructions from the second mstruction set architecture A context for the application program is established m a second processor configured to execute mstructions from the first mstruction set architecture The application program is executed upon the second processor BRIEF DESCRIPTION OF DRAWINGS Other objects and advantages of the invention will become apparent upon readmg the following detailed descπption and upon reference to the accompanymg drawings m which Fig 1 is a block diagram of one embodiment of a computer system Fig 2 is a block diagram of one embodiment of a processor shown m Fig 1 mcludmg a host processor core and an emulation coprocessor core Fig 3 is a block diagram of a process emulatmg a foreign application Fig 4 is a flowchart illustrating one embodiment of the initialization of an application program m the computer system shown m Fig 1 Fig 5 is a flowchart illustrating one embodiment of mvocation of an emulation interface shown m Fig 3 Fig 6 is a table illustrating communication commands according to one embodiment of the processor shown m Fig 1 Fig 7 is a block diagram of a second embodiment of the processor shown in Fig 1 Fig 8 is a flowchart illustrating operation of one embodiment of an mterface logic block shown m Fig 7 Fig 9 is a block diagram of a third embodiment of the processor shown m Fig 1 Fig 10 is a block diagram of a second embodiment of a computer system Fig 11 is a block diagram of a third embodiment of a computer system Fig 12 is a block diagram of a fourth embodiment of a computer system Fig 13 is a block diagram of one embodiment of an emulation coprocessor card shown in Fig 12 Fig 14 is a diagram illustrating a control structure mamtamed by one embodiment of an executive program shown in Fig 13 Fig 15 is a set of flowcharts illustrating one embodiment of the executive program shown m Fig 13 While the mvention is susceptible to vaπous modifications and alternative forms, specific embodiments thereof are shown by way of example m the drawings and will herem be descπbed m detail It should be understood, however, that the drawings and detailed descπption thereto are not mtended to limit the mvention to the particular form disclosed, but on the contrary, the intention is to cover all modifications, equivalents and alternatives falling within the spurt and scope of the present mvention as defined by the appended claims MODE(S) FOR CARRYING OUT THE INVENTION Turning now to Fig 1 , a block diagram of one embodiment of a computer system 5 mcludmg a processor 10 coupled to a vaπety of system components through a bus bπdge 12 is shown Other embodiments are possible and contemplated In the depicted system, a mam memory 14 is coupled to bus bπdge 12 through a memory bus 16, and a graphics controller 18 is coupled to bus bπdge 12 through an AGP bus 20 Finally, a plurality of PCI devices 22A-22B are coupled to bus bπdge 12 through a PCI bus 24 A secondary bus bπdge 26 may further be provided to accommodate an electπcal mterface to one or more EISA or ISA devices 28 through an EISA/ISA bus 30 Processor 10 is coupled to bus bndge 12 through a CPU bus 34 Generally speakmg, processor 10 mcludes a host processor core and an emulation coprocessor core The host processor core compπses hardware configured to execute mstructions defined by a host mstruction set architecture, while the emulation coprocessor core compπses hardware configured to execute mstructions defined by a different mstruction set architecture from the host mstruction set architecture ("the foreign mstruction set architecture") The host processor core executes operating system code as well as application programs which are coded m the host mstruction set architecture Upon initiation of a foreign application program, the host processor core communicates with the emulation coprocessor core to cause the emulation coprocessor core to execute the foreign application program Advantageously, application programs coded accordmg to the foreign mstruction set architecture can be executed directly in hardware via processor 10 Execution performance of the application program may be substantially greater than that of a software emulation or binary translation methodology Moreover, execution performance may be substantially similar to execution performance of the application program within a computer system based upon a processor employmg the foreign mstruction set architecture Software emulation/binary translation methodologies and combinations thereof may be eliminated in favor of hardware execution of the foreign application program Because processor 10 mcludes hardware functionality for executing the foreign mstruction set architecture, the difficulties of accurate architecture modelmg may be eliminated Furthermore, smce the foreign application program executes m a peπod of time similar to execution m a native computer system, much of the real-time behavior of the foreign application program may be preserved The combmation of these vaπous advantages may provide a high level performance, allowing the foreign application execution performance to be highly acceptable to a user Accordmgly, market acceptance of the computer system based upon the host mstruction set architecture may be mcreased As market acceptance mcreases, the number of application programs coded for the host mstruction set architecture may mcrease as well Long-term success and viability of the host mstruction set architecture may therefore be more likely Providing hardware functionality for the foreign mstruction set architecture withm computer system 5 generates additional advantages In particular, computer system 5 may be characterized as a heterogeneous multiprocessing system While the emulation coprocessor is executmg the foreign application program, the host processor may execute operatmg system routines unrelated to the foreign application program or may execute a host application program Advantageously, computer system 5 may achieve a substantially higher throughput on both host and foreign code that would be achievable via computer system employmg only the host processor and software emulation/binary translation for the foreign mstruction set architecture In one particular embodiment, the host mstruction set architecture is the Alpha mstruction set architecture developed by Digital Equipment Corporation and the foreign mstruction set architecture is the x86 mstruction set architecture However, any mstruction set architecture could be chosen as the host instruction set architecture For example, the host mstruction set architecture may be the PowerPC architecture, the IA-64 architecture developed by Intel, the MIPS architecture, the SPARC architecture, etc Similarly, the foreign mstruction set architecture may be chosen is any mstruction set architecture other than the host instruction set architecture, mcludmg any of the examples listed above It is noted that several different embodiments of computer system 5 and processor 10 are shown herem While the embodiments shown in Figs 1 and 2 are considered to be presently preferred embodiments, any of the embodiments shown herem may be suitable dependmg upon a vanety of design factors mcludmg cost, development schedule, complexity, etc Additional embodiments are contemplated within the spiπt and scope of the appended claims Processor 10 is shown m Fig 1 coupled to an optional L2 cache 38 L2 cache 38 is referred to as a "backside L2", as the cache is coupled to processor 10 via a pπvate mterface separate from CPU bus 34 L2 cache 38 may be larger than any internal caches employed within processor 10 and may be used to store data for more rapid access than that achievable from mam memory 14 As used herem, the term "processor" refers to at least the hardware for executing mstructions defined by a particular mstruction set architecture Accordmgly, the processor cores shown in Fig 2 below qualify as processors under the present definition Processors may mclude additional hardware as desired Bus bridge 12 provides an mterface between processor 10, mam memory 14, graphics controller 18, and devices attached to PCI bus 24 When an operation is received from one of the devices connected to bus bπdge 12, bus bπdge 12 identifies the target of the operation (e g a particular device or, m the case of PCI bus 24, that the target is on PCI bus 24) Bus bπdge 12 routes the operation to the targeted device Bus bπdge 12 generally translates an operation from the protocol used by the source device or bus to the protocol used by the target device or bus In one embodiment, CPU bus 34 compπses an EV6 bus developed by Digital Equipment Corporation and bus bπdge 12 compπses an Alpha 21171 or 21172 core logic chipset However, any CPU bus and suitable bus bπdge may be used In addition to providing an mterface to an ISA/EISA bus for PCI bus 24, secondary bus bndge 26 may further mcorporate additional functionality, as desired For example, in one embodiment, secondary bus bndge 26 mcludes a master PCI arbiter (not shown) for arbitrating ownership of PCI bus 24 An input/output controller (not shown), either external from or mtegrated with secondary bus bridge 26, may also be mcluded within computer system 5 to provide operational support for a keyboard and mouse 32 and for vanous seπal and parallel ports, as desired An external cache unit (not shown) may further be coupled to CPU bus 34 between processor 10 and bus bπdge 12 m other embodiments Alternatively, the external cache may be coupled to bus bndge 12 and cache control logic for the external cache may be mtegrated mto bus bndge 12 Mam memory 14 is a memory m which application programs are stored and from which processor 10 pnmanly executes A suitable mam memory 14 compnses DRAM (Dynamic Random Access Memory), and preferably a plurality of banks of SDRAM (Synchronous DRAM) PCI devices 22A-22B are illustrative of a vanety of penpheral devices such as, for example, network mterface cards, video accelerators, audio cards, hard or floppy disk dnves or dπve controllers, SCSI (Small Computer Systems Interface) adapters and telephony cards Similarly, ISA device 28 is illustrative of vaπous types of penpheral devices, such as a modem, a sound card, and a vanety of data acquisition cards such as GPIB or field bus mterface cards Graphics controller 18 is provided to control the rendering of text and images on a display 36 Graphics controller 18 may embody a typical graphics accelerator generally known m the art to render three-dimensional data structures which can be effectively shifted mto and from mam memory 14 Graphics controller 18 may therefore be a master of AGP bus 20 m that it can request and receive access to a target mterface within bus bπdge 12 to thereby obtain access to mam memory 14 A dedicated graphics bus accommodates rapid retneval of data from mam memory 14 For certain operations, graphics controller 18 may further be configured to generate PCI protocol transactions on AGP bus 20 The AGP mterface of bus bπdge 12 may thus mclude functionality to support both AGP protocol transactions as well as PCI protocol target and initiator transactions Display 36 is any electronic display upon which an image or text can be presented A suitable display 36 mcludes a cathode ray tube ("CRT"), a liquid crystal display ("LCD"), etc It is noted that, while the AGP, PCI, and ISA or EISA buses have been used as examples in the above descπption, any bus architectures may be substituted as desired It is further noted that computer svstem 5 may be a multiprocessing computer system mcludmg additional processors (e g processor 10a shown as an optional component of computer system 5, along with an optional L2 cache 38a) Processor 10a may be similar to processor 10 More particularly, processor 10a may be an identical copy of processor 10 As shown m Fig 1, processor 10a is coupled to bus bπdge 12 via a separate CPU bus 34a similar to CPU bus 34 Alternatively, processor 10a may share CPU bus 34 with processor 10 Turning now to Fig 2, a block diagram of a first embodiment of processor 10 is shown Other embodiments are possible and contemplated In the embodiment of Fig 2, processor 10 mcludes a bus mterface unit 40, a memory management unit (MMU) 42, an mstruction cache (Icache) 44, a data cache (Dcache) 46, a host processor core 48, and an emulation coprocessor core 50 Bus interface unit 40 is coupled to CPU bus 34 and to a backside L2 mterface 52 to L2 cache 38 Bus mterface unit 40 is also coupled to MMU 42, which is further coupled to instruction cache 44 and to data cache 46 Both mstruction cache 44 and data cache 46 are coupled to host processor core 48, and data cache 46 is coupled to emulation coprocessor core 50 Instruction cache 44 is optionally coupled to emulation coprocessor core 50, as described m further detail below In the embodiment of Fig 2, the elements of processor 10 are mtegrated onto a semiconductor substrate A command mterface 54 is coupled between host processor core 48 and emulation coprocessor core 50 Host processor core 48 is configured to fetch mstructions from mstruction cache 44 and to execute those mstructions The mstructions may compπse a portion of a host application program, or may compnse a portion of the operatmg system employed by computer system 5 One particular portion of the operating system is used to create processes, mcludmg initiating a foreign application program If, during execution of the create process portion of the operatmg system, a foreign application program is detected as bemg initiated, host processor core 48 communicates via command mterface 54 with emulation coprocessor core 50 Host processor core 48 establishes a context within emulation coprocessor core 50 conesponding to the foreign application program bemg initiated Included m the context is an initial program counter address, from which the first mstruction m the foreign application program is to be fetched Once the context is established, host processor core 48 provides a command to emulation coprocessor core 50 to begm execution Emulation coprocessor core 50 begms fetching mstructions at the program counter address, and executes the mstructions accordmg to the foreign instruction set architecture As used herem, the term "context" refers to values which are particular to a process The context generally mcludes the memory pages allocated to the process, as well as register values Emulation coprocessor core 50 is configured to determine if a transition, within the foreign application program process, is occurring to mstructions coded m the host mstruction set architecture For example, if the foreign application program calls an operating system routine, a transition is detected because the operating system is coded accordmg to the host mstruction set architecture Additionally, exceptions and other processor events which lead to operating system code or other code usmg the host mstruction set architecture are transitions Upon determining that a transition is occurring, emulation coprocessor core 50 communicates via command mterface 54 to host processor core 48 that emulation coprocessor core 50 has stopped Host processor core 48 requests context information to determine the reason for stoppmg, and takes a conespondmg action (e g executing the called routme or providmg the operating system service) Once host processor core 48 determines that the foreign application program may be resumed, host processor core 48 provides context information (if needed) and provides the command for emulation coprocessor core 50 to start Command interface 54 may be implemented in a variety of fashions For example, command mterface 54 may compnse a set of hardwired signals between host processor core 48 and emulation coprocessor core 50 Command signals may be assigned to each command defined for command mterface 54, as well as a bus for passmg context values Alternatively, command mterface 54 may compnse FIFOs for communicating between the processor cores (I e one or more FIFOs for messages from host processor core 48 to emulation coprocessor core 50 and one or more FIFOs for messages from emulation coprocessor core 50 to host processor core 48) It is noted that command mterface 54 may be an example of a "communication channel" Generally, a communication channel is a connection between a transmitter and a receiver over which messages can be sent A predefined protocol may be used to define the messages transmitted via the channel For example, hardwired signals form a communications channel and combmations of the signals are used to transmit messages Furthermore, FIFOs may form a communications channel and the messages are encoded as FIFO entires The FIFOs may simply be mamtamed as queues m memory as well Host processor core 48 and emulation coprocessor core 50 share mstruction cache 44 and data cache 46 m the present embodiment Host processor core 48 fetches mstructions from mstruction cache 44 and fetches data to be operated upon in response to the mstructions from data cache 46 Emulation coprocessor core 50 also fetches data from data cache 46 Several embodiments are contemplated for an mstruction source for emulation coprocessor core 50 In a first embodiment, emulation coprocessor core 50 fetches mstructions from mstruction cache 44, while in a second embodiment emulation coprocessor core 50 fetches mstructions from data cache 46 Several factors may affect the decision of whether emulation coprocessor core 50 fetches mstructions from mstruction cache 44 or from data cache 46 For example, an embodiment m which emulation coprocessor core 50 executes the x86 mstruction set architecture, features such as self modifymg code are supported Therefore, mstruction cache 44 may snoop upon updates to data cache 46 to detect such situations However, the host mstruction set architecture may not support such features, and snoopmg by mstruction cache 44 of data cache 46 may be unnecessary Furthermore, host processor core 48 may access mstructions to be executed by emulation coprocessor core 50 as data For example, to provide exception services for foreign application programs executed by emulation coprocessor core 50, host processor core 48 may need to examine the mstruction for which the exception occuπed Accordmgly, mstructions for emulation coprocessor core 50 may already be stored in data cache 46 In yet another contemplated embodiment, emulation coprocessor core 50 mcludes an instruction cache, and mstruction cache misses are fetched from data cache 46 Host processor core 48 and emulation coprocessor core 50 share MMU 42 m this embodiment as well MMU 42 is configured to provide translations from the virtual addresses generated via execution of mstructions m host processor core 48 and emulation coprocessor core 50 to physical addresses which bus mterface unit 40 may use to read mam memory 14 or L2 cache 38 Instruction cache 44 and data cache 46 may also store mstructions and data accordmg to physical addresses, m which case MMU 42 may be accessed m parallel with mstruction cache 44 and data cache 46 Generally, the host mstruction set architecture and the foreign mstruction set architecture define differmg address translation mechanisms MMU 42 may support the address translation mechanism defined by the host mstruction set architecmre and translations for both host processor core 48 and emulation coprocessor core 50 may be provided from the host address translation mechanism If differmg page sizes are defined for the host and foreign mstruction set architectures, the protection portion of the translation mechanism may be augmented with additional copies of the protection information to provide mdependent protection on the granulaπty of the smaller page size, if desned Alternatively, MMU 42 may be configured to support the address translation mechanism defined by the host instruction set architecmre as well as the address translation mechanism defined by the foreign instruction set architecture The operating system may allocate pages of memory for virtual addresses accordmg to the address translation mechanism defined by the host mstruction set architecmre Additional software, or hardware withm MMU 42, may create conespondmg translations usmg the address translation mechanism defined by the foreign mstruction set architecmre Alternatively, the operating system may create address translations within the address translation mechanism of the foreign mstruction set architecmre as well if the page is requested by a foreign application program As shown m Fig 2, host processor core 48 mcludes a fetch/decode unit 60, a plurality of functional units 62A-62C, an order and dependency control block 64, and a plurality of registers 66 Similarly, emulation coprocessor core 50 is shown as mcludmg a fetch/decode unit 70, a plurality of functional units 72A-72C, an order and dependency control block 74, and a plurality of registers 76 Generally, fetch/decode units 60 and 70 are configured to fetch mstructions as defined by the conespondmg mstruction set architecmre and to decode those mstructions to determine which of the conespondmg functional units 62A-62C and 72A-72C are configured to execute the mstructions Fetch/decode units 60 and 70 may provide the mstructions to the functional units 62A-62C and 72A-72C, as well as to order and dependency control blocks 64 and 74, respectively Order and dependency control blocks 64 and 74 ensure that mstruction dependencies are detected and appropnate sources for operand values are provided for each mstruction, as well as insuring that mstruction execution order is properly mamtamed Order and dependency control blocks of 64 and 74 may compnse, for example, a reorder buffer and related circuitry Alternatively, order and dependency control blocks 64 and 74 may compπse any suitable circuitry for performing ordering and dependency control functions In yet another alternative, ordering and dependency operations may be performed by fetch/decode units 60 and 70 Registers 66 and 76 are the registers defined by the conespondmg mstruction set architecture Functional units 62 A and 72 A are shown connected to data cache 46 m the embodiment of Fig 2 These functional units may mclude memory operation (l e load and store) functionality Other functional units may mclude memory operation functionality as well m alternative embodiments The combmation of functional umts 62A-62C provide the hardware used to execute the mstructions defined by the host mstruction set architecture Similarly, the combmation of functional units 72 A-72C provide the hardware used to execute the mstructions defined by the foreign mstruction set Microcode techniques may also be employed if desired to simplify functional unit design It is noted that, while multiple functional units are shown m each of cores 48 and 50 m Fig 2, embodiments havmg more or fewer functional units are contemplated, mcludmg embodiments which have one functional unit in one or both of cores 48 and 50 Furthermore, either of cores 48 or 50 may have more functional umts than the other It is noted that, while one emulation coprocessor core is shown m Fig 2 (and one emulation coprocessor is shown m Figs 7, 9, 10, 11, and 13 below), it is contemplated that multiple emulation coprocessors may be employed Furthermore, it is contemplated that multiple foreign mstruction set architectures may be supported usmg multiple emulation coprocessors Turning now to Fig 3, a block diagram of a software model employed by one embodiment of computer system 5 is shown Fig 3 illustrates a host process 80 mcludmg a foreign application program 82 The embodiment shown may, for example, represent the operation of the Wmdows NT operatmg system with the Alpha mstruction set architecmre as the host mstruction set architecmre and the x86 mstruction set architecmre as the foreign mstruction set architecture Fig 3 may further represent other operatmg systems, host mstruction set architectures, and foreign mstruction set architectures Other embodiments are possible and contemplated Foreign application 82 comprises one or more modules coded m the foreign mstruction set architecture The foreign application may mclude calls to operating system routmes Instead of directly calling the operatmg system routmes, each routine is replaced by a "thunk" The thunk is a routme havmg the same name as the routine which it replaces (and therefore the same address withm the address space of process 80) In the present embodiment, the thunk mcludes a particular, predefined illegal opcode, which causes the emulation coprocessor to take an illegal opcode trap (or "exception") Upon takmg an illegal opcode trap, the emulation coprocessor communicates with the host processor to mdicate that the foreign application has stopped For example, the emulation coprocessor may mclude hardware which generates the stop message upon takmg the illegal opcode trap Alternatively, the illegal opcode trap handler (code stored at a predetermined address defined to be fetched upon the occunence of the illegal opcode trap) may be coded to provide the stop message Two sets of thunks are shown m Fig 3, operatmg system thunks 86 and process thunks 88 Operating system thunks 86 are used to mtercept operating system calls, both direct operating system calls coded mto the foreign application program 82 and indirect operating system calls which occur as response to exceptions during execution of foreign application program 82 Additionally, process thunks 88 may be mcluded for communicating with a block of host code 90 mcluded m the process However, process thunks 88 and host code 90 are optional The aforementioned process can be used to detect the transitions between foreign application code and host code Other embodiments may employ other methods for detecting the transition Host process 80 further mcludes emulation mterface code 92 which may be used to communicate between the host processor and the emulation coprocessor Accordmgly, operating system thunks 86 may lead to invocation of emulation mterface code 92 to pass messages between the host processor and emulation coprocessor Furthermore, the host processor may be configured to request context information from the emulation coprocessor usmg emulation mterface code 92 While the operating system routines bemg called by foreign application program 82 and conespondmg operatmg system routines provided by operating system 84 provide the same function, the calling conventions (l e the manner m which parameters are passed between the application and the operating system routine) are different because the mstruction set architectures are different For example, the number and type of registers differ, and therefore the ability to pass parameters withm the registers (as opposed to memory locations) differs Accordmgly, emulation mterface code 92 may request the context values which are the parameters for the call, and may place the parameters m the conespondmg registers on the host processor The operatmg system call may then be performed by the host processor Subsequently, the results of the operatmg system routme may be placed mto the emulation coprocessor by reversmg the conversion of calling conventions Still further, operating system library code 94 may be mcluded m host process 80 For example, dynamic load libraries defined m the Wmdows NT operatmg system may be resolved via operating system libraries 94 Tummg next to Fig 4, a flowchart is shown illustrating initialization of an application program accordmg to one embodiment of the computer system shown m Fig 1 Other embodiments are possible and contemplated While several steps may be shown m Fig 4 m a serial order for ease of understanding, any suitable order may be used Furthermore, steps may be performed m parallel as desired Upon receivmg a command from a user to initiate an application program, the operating system creates a process m which the application program executes The operating system examines the file format of the application program to determine what type of code is mcluded m the application program (step 100) For an embodiment employmg the Wmdows NT operatmg system, for example, the portable execution format mcludes an indication of which instruction set architecture the application program is coded for The portable execution format is defined as part of application programmmg interface defined by Wmdows NT If the application program is determined to be coded accordmg to the host mstruction set architecture (decision block 102), the operating system establishes the process to as a normal host process and the application program is executed by the host processor (step 104) On the other hand, if the application program is determined not to be coded accordmg to the host mstruction set architecmre, the operating system determines if the application program is coded accordmg to a foreign mstruction set architecture which is executable by an emulation coprocessor withm the computer system (decision block 106) If the foreign mstruction set architecture is executable by the emulation coprocessor, the operating system mvokes the emulation coprocessor mterface code m order to inmate the foreign application program upon the emulation coprocessor (step 108) If the foreign mstruction set architecture is not executable by the emulation coprocessor, the operatmg system displays a message to the user mdicatmg that the application is unsupported (step 110) The application program is not started m this case Alternatively, software emulation or binary translation of the application may be provided at step 110 if desired For example, a scheme similar to Digital Equipment Corporation's FX'32 product or Microsoft's Wx86 product may be employed Turning next to Fig 5, a flowchart is shown illustrating one embodiment of invocation of an emulation mterface shown m Fig 3 (e g step 108 shown m Fig 4) Other embodiments are possible and contemplated The process context is established by the host processor (usmg commands transmitted via the command mterface between the host processor and the emulation coprocessor) Initial values for the registers are provided, mcludmg a value for the program counter register which is the virtual address of the first mstruction m the application program After establishing the context, the "go" (I e start executing) command is given to the emulation coprocessor (step 120) The emulation mterface code, executing upon the host processor, monitors command mterface 54 to receive a message from the emulation coprocessor mdicatmg that a transition to host code has been detected (I e a stop message is received from the emulation coprocessor) If a transition to host code is detected (decision block 122), the host processor determines if the transition is due to a process exit condition (decision block 128) As will be illustrated below m Fig 6, the stop command may mclude an indication of the reason for stoppmg. If a process exit is detected, a destroy process message is sent to the operating system and the emulation mterface code exits (step 130) On the other hand, if a process exit is not detected, the host processor collects context information, via command mterface 54, to determine which operatmg system routme is to be executed and what the calling parameters are (step 124) The host code is then executed upon the host processor Context information is provided, via command interface 54, to the emulation coprocessor Results provided via execution of the operatmg system routine may be passed, if applicable, to the emulation coprocessor m this fashion The go command is then provided to cause the emulation coprocessor to contmue (step 126), and the host processor continues to monitor for messages from the emulation coprocessor It is noted that there are at least two types of operatmg system routmes which may be called by the foreign application program The first type is an operatmg system library routme call intentionally coded mto the foreign application program Library routmes provide low level services which may be used by many application programs, and are used by the application program mstead of codmg the service themselves Typically, the library routmes and parameters used by the routmes are documented for the application developer's use Additionally, operating system routmes which provide exception handlmg may be called As implied m the name, these routines are "called" when the emulation coprocessor detects an exception. For example, page faults occurring when an mstruction fetch address or data address fails to translate mvoke an exception routine to allocate a page. Page faults may occur upon the initial access to a particular page. For example, when the emulation coprocessor attempts to fetch the first mstruction of an application program, the page mcludmg the first mstruction may not yet be allocated to the application program. Accordmgly, the fetch address does not translate and a page fault occurs Similarly, each time data is accessed from a new page, a page fault may occur. Page faults may also occur if the page is "paged out" to disk to allow a different page to be allocated. It is noted that the flowchart of Fig 5 may be interrupted under a preemptive multitasking operatmg system such as Wmdows NT to allow the host processor to execute other tasks (e.g. a host application program or an operating system routme unrelated to the application bemg executed). Furthermore, if multiple foreign applications are executing concurrently, multiple processes may be monitoring for messages In one embodiment, the emulation mterface code may mterface to the Wx86 extension to the Wmdows NT operation system. Turning now to Fig. 6, a table 140 is shown illustrating the commands supported by one embodiment of command mterface 54. Other embodiments employmg different commands, or combmations of different commands and one or more commands shown m table 140, are contemplated. A read registers command is supported for readmg emulation coprocessor registers by the host processor. The emulation coprocessor responds to the read registers command by providmg the requested register values. It is noted that memory values may be read from the emulation coprocessor's context as well However, since the emulation coprocessor and the host processor share the same physical memory, the host processor may read the memory values directly. As mentioned above, either the same translations are shared by both the host processor and the emulation coprocessor, or translations are created accordmg to both the host processor's mstruction set architecmre and the emulation coprocessor's mstruction set architecture for each page allocated to a foreign application program Accordmgly, the host processor may view memory allocated to the foreign application's context Similarly, a wπte registers command is supported to allow the host processor to update registers within the emulation coprocessor The emulation coprocessor receives data provided m the write registers command and updates the specified register with the received value Similar to the above comments regarding readmg memory, the host processor may update memory m the emulation coprocessor's context as well The go command indicates to the emulation coprocessor that the emulation coprocessor should begin execution Prior to sendmg the go command to the emulation coprocessor, an execution pomter is stored mto the program counter register m the emulation coprocessor The emulation coprocessor, upon receivmg the go command, begms fetching and executmg mstructions at the execution pomter Alternatively, the execution pomter may be communicated withm the go command, if desired A stop command is transmitted by the emulation coprocessor upon determmmg that an architectural switch is to be performed due to the execution of the foreign application program (e g host code is to be executed) The stop command informs the host processor that the emulation coprocessor has stopped, and provides the reason for the stoppage as well A vanety of reasons for stoppage may be employed as desired For example, reasons for stoppage may include (I) executing a thunk (as descnbed above) for an operating system call, (u) detectmg the end of execution of the foreign application program, or (in) expeπencmg an exception during execution of the application program If desired, usmg read registers commands and readmg the foreign application program's memory, the host processor may collect additional context information It is noted that the term "messages" may be used herem to refer to communications between the host processor and the emulation coprocessor It is mtended that the term messages and commands be synonymous m this disclosure Turning next to Fig 7, a second contemplated embodiment of processor 10 is shown The embodiment of Fig 7 may be employed, for example, m the embodiment of computer system 5 shown m Fig 1 Figs 3-6 may generally apply to the embodiment of Fig 7 as well Other embodiments are possible and contemplated As shown m Fig 7, processor 10 mcludes an emulation coprocessor 150, a host processor 152, and an mterface logic unit 154 Emulation coprocessor 150 and host processor 154 are coupled to mterface logic unit 154, which is further coupled to CPU bus 34 Host processor 152 is further coupled to L2 cache 38 via backside L2 mterface 52 Emulation coprocessor 150 may mclude emulation coprocessor core 50 similar to that shown m Fig 2, as well as caches similar to mstruction cache 44 and data cache 46 and an MMU similar to MMU 42 Host processor 152 may mclude host processor core 48 similar to that shown m Fig 2, as well as caches similar to mstruction cache 44 and data cache 46 and an MMU similar to MMU 42 Accordmg to one particular embodiment, processor 10 as shown m Fig 7 compnses three separate semiconductor chips attached to a printed circuit board The printed circuit board may mclude an edge connector and be encapsulated for inclusion m computer system 5 For example, processor 10 may be designed m accordance with any of the slot 1, slot A, or slot 2000 specifications developed by Intel and Advanced Micro Devices One chip embodies emulation coprocessor 150 A second chip embodies host processor 152, and a third chip embodies interface logic 154. For example, emulation coprocessor 150 and host processor 152 may be custom designed semiconductor chips and interface logic unit 154 may be an application specific integrated circuit (ASIC), a field programmable gate anay (FPGA), etc. Other organizations are possible and contemplated, including realizing interface logic unit 154 as a custom semiconductor chip as well. The embodiment shown in Fig. 7 allows for a previously designed emulation coprocessor 150 and host processor 152 (possibly manufactured using different semiconductor fabrication processes) to be used to form processor 10. Emulation coprocessor 150 and host processor 152 may each provide a bus interface to interface logic unit 154 (reference numerals 156 and 158, respectively). For example, bus interfaces 156 and 158 may be logically and electrically identical to CPU bus 34. Alternatively, bus interfaces 156 and 158 may operate according to different bus protocols and/or electrical specifications than those specified for CPU bus 34. Still further, bus interface 156 may differ from bus interface 158, and interface logic unit 154 may translate transactions upon the buses to the appropriate protocol similar to the operation of bus bridge 12. Interface logic unit 154 provides the command interface functionality (e.g. command interface 54) in the embodiment of Fig. 7. Predefined bus cycles dissimilar from memory and I/O bus cycles may be defined upon bus interfaces 156 and 158 to communicate the various commands between emulation coprocessor 150 and host processor 152. Alternatively, command interface 52 may comprise a set of FIFOs into which emulation coprocessor 150 and host processor 152 write commands and from which emulation coprocessor 150 and host processor 152 read commands. In addition to providing the command interface functionality, interface logic unit 154 routes non- command (e.g. memory and I/O) requests from emulation coprocessor 150 and host processor 152 to CPU bus 34 and optionally to the non-requesting processor. Fig. 8 is a flowchart illustrating one embodiment of the routing of both command and non-command requests according to one embodiment of interface logic unit 154. Other embodiments are possible and contemplated. The steps shown in Fig. 8 are sometimes illustrated in a serial order for ease of understanding. However, the steps may be performed in any suitable order and may be performed in parallel as desired. Requests (except for coherency requests upon CPU bus 34, which are routed to both host processor 152 and emulation coprocessor 154) are either initiated by host processor 152 or by emulation coprocessor 150. If a request is received upon bus interface 156, the request is initiated by emulation coprocessor 150. If the request is received by host processor 158, then the request is initiated by host processor 152. Interface logic unit 154 determines the initiator of the request (decision block 160). If the request is initiated by host processor 152, then interface logic unit 154 deteπnines if the request is a command for the emulation interface (e.g. a command to emulation coprocessor 150 via command interface 54 — decision block 162). If the request is a command to emulation coprocessor 150, the request is routed to the emulation coprocessor 150 (step 164). CPU bus 34 may be unaffected by the command. If the request is not a command to emulation coprocessor 150, interface logic unit 154 routes the command to CPU bus 34 (step 166). On the other hand, if a request is received from emulation coprocessor 150, the request is routed to host processor 152 (step 168). Emulation interface commands are routed to host processor 152 because the destination of the request is host processor 152. Memory and I/O requests are routed to host processor 152 to allow emulation coprocessor 150 to share host processor 152's L2 cache resources (e.g. L2 cache 38). The memory request may be provided by mterface logic unit 154 m the form of a coherency request, such that host processor 152 provides the requested data Alternatively, mterface logic unit 154 may employ a predefined bus cycle different from the bus cycles provided according to bus mterface 158 to request a read of L2 cache 38 In this fashion, cost savings may be achieved by employing a shared L2 cache between host processor 152 and emulation coprocessor 150 As mentioned above, the request from emulation coprocessor 150 may be either a command for the emulation mterface (e g a command to host processor 152 via command interface 54 or a predefined bus cycle — decision block 170) or a memory or I/O request If the request is an emulation mterface command, the request may be routed to host processor 152 (step 168) and additional actions may not be needed On the other hand, if the request is not an emulation mterface command, interface logic unit 154 determines from the response of host processor 152 to the bus cycle routed thereto (step 168) to determine if the request can be satisfied by host processor 152 (decision block 172) If the request can be satisfied by host processor 152, the data provided by host processor 152 is routed to emulation coprocessor 150 via mterface logic unit 154 (step 174) If the request cannot be satisfied by host processor 152, the request is routed to CPU bus 34 by mterface logic unit 154 (step 166) Turning next to Fig 9, a block diagram of a third embodiment of processor 10 is shown which may be employed m computer system 5 shown m Fig 1, for example Figs 3-6 may generally apply to this embodiment as well Other embodiments are possible and contemplated In the embodiment of Fig 9, processor 10 mcludes emulation coprocessor 150 and host processor 152 Host processor 152 shown m greater detail, mcludmg a core 48, Icache 44, Dcache 46, MMU 42, and bus mterface unit 40 Emulation coprocessor 150 is coupled to host processor 152 via connections internal coprocessor 10, mcludmg command mterface 54 Host processor 152, and more particularly bus mterface unit 40, is coupled to CPU bus 34 and to L2 cache 38 via back side L2 mterface 52 The embodiment of Fig 9 allows for the sharing of cache and MMU resources between emulation coprocessor 150 and host processor 152 In other words, emulation coprocessor 150 may exclude caches and MMU circuitry m this embodiment Instead, emulation coprocessor 150 may be provided with access to Icache 44, Dcache 46, MMU 42, and indirectly bus mterface unit 40 Advantageously, the amount of circuitry employed to realize emulation coprocessor 150 may be reduced substantially It is noted that emulation coprocessor 150 may be configured to fetch mstructions from either data cache 46 or instruction cache 44, m vaπous embodiments, similar to the above descπption of Fig 2 Still further, emulation coprocessor 150 may mclude an mstruction cache for fetching mstructions and may fetch mstruction cache misses from data cache 46 As an alternative to providmg command mterface 54 withm processor 10, FIFOs may be mamtamed withm mam memory 14 to pass command messages between host processor 152 and emulation coprocessor 150 It is noted the embodiment of Fig 9, processor 10 may be realized as a smgle semiconductor substrate, a multicmp module, or two or more semiconductors withm a slot 1, slot A , or slot 2000 type package, among others Turning next to Fig 10, a block diagram of the second embodiment of computer system 5 is shown Figs 3-6 may generally apply to this embodiment as well Other embodiments are possible and contemplated In embodiment of Fig 10, host processor 152 and emulation coprocessor 150 are each coupled directly to bus bndge 12 As an alternative to the mdependent CPU bus connections 34 and 34a, host processor 152 and emulation coprocessor 150 may share a common CPU bus 34 Furthermore, host processor 152 is coupled to L2 cache 38 and emulation coprocessor 150 is similarly coupled to L2 cache 38a In the embodiment of Fig 10, host processor 152 and emulation coprocessor 150 may each mclude mtemal cache and memory management facilities For example, host processor 152 may be a processor designed to be mcluded in a computer system without an emulation coprocessor, and similarly, emulation coprocessor 150 may be a processor designed to be mcluded m a computer system without a host processor (e g as the central processmg unit of the computer system) In other words, host processor 152 and emulation coprocessor 150 may be "off-the-shelf parts Command mterface 54 may be provided via mam memory 14, such as usmg FIFOs to pass command messages between the processors Alternatively, command mterface 54 may be provided withm bus bndge 12 As yet another alternative, a pnvate mterface separate from CPU buses 34 and 34a may be used to provide command mterface 54 In embodiment of Fig 10, host processor 152 and emulation coprocessor 150 mclude a logically and electncallv equivalent bus interface (I e CPU bus 34) Fig 11 is another embodiment of computer system 5 m which emulation coprocessor 150 mcludes a different bus mterface than CPU bus 34 Accordmgly, computer system 5 is shown in Fig 11 mcludes a bus bndge 180 for translating transactions generated by emulation coprocessor 150 from the protocol and electncal signalling characteπstics of emulation coprocessor 150's bus mterface to that of CPU bus 34a Accordmgly, the embodiment of Fig 11 supports an off-the-shelf host processor 152 and an off-the-shelf emulation coprocessor 150, even if different bus mterfaces are used by the host processor and emulation coprocessor As with the embodiment of Fig 10, command mterface 54 may be implemented m mam memory m the embodiment Fig 11 Alternatively, command mterface 54 may be provided withm bus bπdge 12 As yet another alternative, a pnvate mterface separate from CPU buses 34 and 34a may be used to provide command mterface 54 Turning next to Fig 12, a fourth embodiment of computer system 5 is shown Other embodiments are possible and contemplated In the embodiment Fig 12, the emulation coprocessor is mcluded on an emulation coprocessor card 22C Emulation coprocessor card 22C is coupled to PCI bus 24 as shown m Fig 12 The hardware for emulation coprocessor card 22C may, for example, be the Radius Detente AX or MX cards manufactured by Reply Corporation of Sunnyvale, California In addition to the operation descnbed above with respect to Figs 3-6, the embodiment of Fig 12 may mclude several other operations as well The command mterface may be mamtamed withm memory upon emulation coprocessor card 22C Additionally, because emulation coprocessor card 22C is an I/O device, a dnver is provided withm the operating system for mterfacmg to emulation coprocessor card 22C Still further, a software executive is provided for emulation coprocessor card 22C to allow for multiple application programs to be concurrently m execution Accordmgly, commands to create and destroy processes and threads withm the processes may be added to the set of commands which may be communicated between the emulation coprocessor and the host processor as illustrated m Fig 6 Additionally, commands are provided to allocate pages for use by foreign application programs executmg upon emulation coprocessor card 22C Smce the emulation coprocessor card 22C appears to be an I/O device to the operating system of computer system 5, when a page is allocated to the emulation coprocessor the page is locked mto mam memory 14 (1 e. the page is not selected for page out to a disk dnve upon receipt of a page allocation request by the operating system) The executive executmg upon the emulation coprocessor card determines when a page is no longer m use by the application programs executmg on the emulation coprocessor, and provides a message to unlock a page upon determmmg that is no longer m use Furthermore, if the emulation coprocessor withm emulation coprocessor card 22C mcludes one or more caches, the executive executing upon emulation coprocessor card 22C mamtams cache coherency between the emulation processor caches and caches within host processor 150 and L2 cache 38 (and withm host processor 150a and L2 cache 38a, if mcluded). Alternatively, the caches withm the emulation coprocessor may be disabled so that cache coherency is not an issue In one particular embodiment, computer system 5 employs the Wmdows NT operatmg system for the Alpha mstruction set architecture and host processor 150 employs the Alpha mstruction set architecmre Furthermore, the Wmdows NT operatmg system employed by computer system 5 mcludes the Wx86 emulation extensions However, the code for emulatmg the x86 processor is replaced by the emulation mterface code descnbed above. The driver for emulation coprocessor card 22C provides the page lockmg and unlocking functionality m response to lock and unlock requests from the executive More particularly, the executive requests a locked page for either code or data. The dnver, m response to the request, uses the Wmdows NT memory manager application programming mterface (API) calls to lock the page (i.e. prevent swappmg the page to disk to allow a different virtual page to be assigned to that physical page). Subsequently, the executive may determme that the page is no longer needed for application program execution and may send an unlock message In response, the driver uses the Wmdows NT memory manager API to unlock the page. Additionally, the dnver is responsible for initializing the card withm the operating system and mappmg the memory upon the card. The dnver and executive for the embodiment of Fig. 12 are based on the packet-based DMA bus master model defined by the Wmdows NT operatmg system (more particularly, as documented m the Wmdows NT DDK). An adapter object is created usmg IoAllocateAdapterChannel. MDLs (memory descπptor lists) are created to descnbe the virtual to physical mappmg of the pages used by the processes. Logical addresses are created with IoMapTransfer, and are provided to the emulation coprocessor upon emulation coprocessor card 22C. Mappmg registers are thus created which provide translation of the logical addresses mto physical addresses withm mam memory 14 (i.e. the host system memory). The emulation coprocessor may thereby access mam memory 14 directly to fetch mstructions and read wnte data. In other words, the code is executed and data is accessed m place m mam memory 14. These accesses may appear as DMA to the host system Instructions and data are thereby provided to emulation coprocessor card 22C. It is noted that, while a software executive has been described for controlling the emulation coprocessor card 22C, other embodiments are possible m which portions of the control are provided m hardware. Such embodiments are contemplated Turning next to Fig 13 a block diagram of one embodiment of emulation coprocessor card 22C is shown Other embodiments are possible and contemplated. As shown m Fig. 13, emulation coprocessor card 22C mcludes a PCI mterface 190, the emulation coprocessor 150, and a memory 194 PCI mterface 190 is coupled to PCI bus 24, memory 194, and emulation coprocessor 150 Emulation coprocessor 150 is further coupled to memory 194 Memory 194 mcludes storage for the executive program 196 and for the command queues 198 used to pass command messages between executive program 196 and the dnver for emulation coprocessor card 22C as well as emulation mterface code 92 In other words, command queues 198 may compπse command mterface 54 It is noted that, while mstructions and data are preferably accessed from mam memory 14 directly by emulation coprocessor 150, alternative embodiments may store instructions and data transfened from pages in mam memory 14 m memory 194 as well As mentioned above, emulation coprocessor card 22C may be a Radius Detente AX or MX cards manufactured by Reply Corporation These products may include additional hardware features not shown m Fig 13 Hardware features may be used or not used as desired when the card is used as emulation coprocessor card 22C Turning now to Fig 14, a diagram illustrating a control structure mamtamed by one embodiment of executive program 196 is shown Other embodiments are possible contemplated In the embodiment of Fig 14, the control structure comprises a process list 200 which is a doubly-linked list of the processes active with emulation coprocessor card 22C For example, m Fig 14, three processes 202A, 202B, and 202C are active Each process may compπse one or more threads For example, process 202A mcludes threads 204A, 204B, and 204C Similarly, process 202B mcludes threads 204D, 204E, and 204F Process 202C mcludes thread 204G Each process may further be allocated one or more pages of memory withm which mstructions and data conespondmg to the process are stored For example, process 202A is allocated pages 206A, 206B, and to 206C Similarly, process 202B is allocated pages 206D and 206E Process 202C is allocated pages 206F and 206G As illustrated m Fig 14, each process 202A-202C may be allocated different number of pages 206 and a different number of threads 204 than the other processes 202A-202C When a process 202A-202C expenences a page fault, a new page may be allocated to that process via executive program 196 requesting a page via command queues 198 The page request mcludes an indication that the page is to be locked A process 202A- 202C may explicit release a page when processmg withm that page is completed (e g dynamically allocated memory), upon which executive program 196 may transmit an unlock page message Furthermore, a page may be associated with a particular thread withm the process Such a page may be released upon exit of the thread to which the page is associated Additionally, when a process is destroyed, the executive program 196 may transmit unlock page messages for each page assigned to that process Executive program 196 may mamtam a global message queue withm command queues 198 for create and destroy process command messages, and may mamtam message queues withm command queues 198 for each thread which contam command messages for that thread In this manner, the executive program may be configured handle multiple process, multiple thread applications The threads specific command messages may mclude the lock and unlock page messages as well as create and destroy messages for each thread and go and stop messages for each thread Accordmgly, process schedulmg may be handled by the operating system executing upon computer system 5 The go and stop messages may be used to perform schedulmg Furthermore, the read and wπte registers commands shown m table 140 may be provided on a thread by thread basis as well Turning now to Fig 15, a set of flowcharts illustrating operation of one embodiment of executive program 196 is shown Other embodiments are possible and contemplated In the embodiment of Fig 15, a first flowchart 220 illustrates reset of coprocessor card 22C, a second flowchart 222 illustrates an idle process, and a third flowchart 224 illustrates other aspects of executive program 196 Upon reset of coprocessor card 22C (e.g. upon boot of computer system 5), flowchart 220 is performed Executive program 196 initializes its environment upon coprocessor card 22C (step 226) For example, executive program 196 may clear memory 194 to a known state, create page tables for use by emulation coprocessor 150 (and initializing entries for use by executive program 196 itself), and create command queues 198 After initializing the idle process (step 228), the reset procedure is completed As illustrated by flowchart 222, the idle process does nothing (step 230) until interrupted (e.g. via receipt of a message in command queues 198) Flowchart 224 illustrates operation of executive program 196 while processes are active withm coprocessor card 22C Flowchart 224 includes several entry pomts 232, 234, and 236 dependmg upon a variety of events which may cause executive program 196 to be invoked Entry pomt 232 occurs if a message is provided by the driver to command queues 198 Receipt of a message causes an interrupt of emulation coprocessor 150, at which time executive program 196 is mvoked Upon mvocation due to an interrupt, executive program 196 processes the message received (step 238) A vanety of messages may be received For example, a create process or create thread message may be received Upon receivmg a create process message, executive program 196 adds a process 202 to process list 200. Similarly, upon receivmg a create thread message, executive program 196 adds a thread 204 to the process 202 which received the create thread message A read context message (e.g a read registers command) is processed by executive program 196 by readmg the register from the context data structure associated with that process (and/or thread) and generating a response message with the requested mformation. A wnte context message (e.g. a wnte registers command) is processed by executive program 196 by wnting the value mto the selected context data structure. Executive program 196 adds a thread to the list of ready tasks m response to a go message, and removes a thread from the list of ready tasks m response to a stop message. A page locked message (issued m response to a lock page message previously sent by executive program 196) is serviced by executive program 196 by updating the page tables with a translation for the locked page and addmg the thread which expeπenced the page fault to the list of ready tasks. After processmg the message, executive program 196 selects a task from the list of ready tasks and returns to the selected task (step 240). Entry pomt 234 occurs if a page fault is expenenced by a task (e.g. a process thread) bemg executed by emulation coprocessor 150. In response to the page fault, executive program 196 sends a lock page message via command queues 198 (step 242). The task expeπencmg the page fault is removed from the list of ready tasks until the page locked message is received for the page. As mentioned above, receipt of the page locked message causes the task to be added to the list of ready tasks. Subsequently, executive program 196 selects a task from the list of ready tasks and returns to the selected task (step 240). Entry pomt 236 occurs if an illegal opcode trap exception is expenenced by emulation coprocessor 150 A predefined illegal opcode is used to signal that a thunk has been entered (sometimes refened to as a "BOP") Executive program 196 determines if the predefined illegal opcode has been detected (decision block 244). If the predefined illegal opcode has not been detected, an exception message is sent via command queues 198 to inform the operating system that an illegal opcode exception has been received for the task generating the illegal opcode exception (step 246) If the predefined illegal opcode has been detected, a stop message is sent to inform the operating system that the task has stopped due to a transition to host code (step 248) In either case, the task expenencmg the exception is removed from the list of ready tasks and a ready task is selected from the list of ready tasks (step 240) Industrial Applicability The present mvention may be applicable m computer systems In accordance with the above disclosure, a computer system has been shown m which an emulation coprocessor employmg one mstruction set architecmre is used to execute foreign application programs coded m that mstruction set architecmre m a computer system employmg an operatmg system for which the foreign application programs are designed but which is coded accordmg to a second mstruction set architecture Advantageously, the number of application programs executable by the computer system is mcreased Additionally, the performance of the application programs may be substantially greater than that achievable usmg software emulation and/or binary translation Still further, modelmg of architectural idiosyncrasies is eliminated smce the emulation coprocessor embodies the architecture The resulting computer system forms a heterogeneous multiprocessing computer system Numerous variations and modifications will become apparent to those skilled m the art once the above disclosure is fully appreciated It is mtended that the following claims be interpreted to embrace all such vaπations and modifications

Claims: WHAT IS CLAIMED: 1 An apparatus for a computer system compπsmg a first processor (48, 152) configured to execute first mstructions defined by a first mstruction set architecmre, wherem an operatmg system (84) employed by said computer system (5) is coded using said first mstructions, and a second processor (50, 150) coupled to said first processor (48, 152), wherem said second processor (50,150) is configured to execute second mstructions defined by a second instruction set architecmre different than said first mstruction set architecmre, wherem an application program (82) designed to execute withm said operatmg system (84) is coded usmg said second mstructions, wherem said second processor (50, 150) is configured to execute said application program (82) and said first processor (48, 152) is configured to execute said operating system (84), and wherem said second processor (50, 150) is configured to communicate with said first processor (48, 152) upon detecting a use of an operatmg system routme (94) for said application program (82) 2 The apparatus as recited m claim 1 wherem said first processor (48) and said second processor (50) are coupled to one or more caches (44, 46), and wherem said first processor (48) and said second processor are configured to share said one or more caches (44, 46) 3 The apparatus as recited m claim 2 wherem said first processor (48) and said second processor (50) are coupled to one or more memory management units (42), and wherem said first processor (48) and said second processor (50) are configured to share said memory management umts (42) 4 The apparatus as recited m claim 3 wherem said first processor (48) and said second processor (50) are mtegrated onto a smgle semiconductor substrate (10) 5 The apparatus as recited m claim 1 wherem said first processor (152) and said second processor (150) are coupled to a bus bπdge (12), and wherem said first processor (152) is coupled to said bus bπdge (12) via a CPU bus (34), and wherem said second processor (150) is coupled to said bus bndge (12) via a penpheral bus (24) havmg different signalling than said CPU bus (34) 6 The apparatus as recited m claim 1 wherem said second processor (50, 150) compnses a hardware decoder (70) configured to decode said second mstructions 7 The apparatus as recited m claim 1 wherem said first processor (48, 152) and said second processor (50, 150) are configured to communicate via a predetermined control protocol 8 The apparams as recited in claim 7 wherem said control protocol compnses messages passed between said first processor (48, 152) and said second processor (50, 150) 9 The apparatus as recited m claim 8 wherem said messages are passed through a memory (14) withm said computer system (5) 10 The apparams as recited in claim 8 wherein said messages are passed through a dedicated communication channel (54) between said first processor (48, 152) and said second processor (50, 150) 11 A heterogeneous multiprocessmg system compnsmg a first processor (48, 152) configured to execute first mstructions defined by a first mstruction set architecture, a second processor (50, 150) coupled to said first processor (48, 152), wherem said second processor (50, 150) is configured to execute second mstructions defined by a second mstruction set architecture different than said first mstruction set architecture, an operatmg system (84) coded usmg said first mstructions, and an application program (82) coded usmg said second mstructions and designed to execute withm said operating system (84), wherem said second processor (50, 150) is configured to execute said application program (82) and said first processor (48, 152) is configured to concunently execute a process (80) unrelated to said application program (82) 12 The heterogeneous mulhprocessmg computer system as recited m claim 11 wherem said second processor (50, 150) is configured to detect a use of an operating system routine (94) withm said operating system (84) by said application program (82) during execution 13 The heterogeneous mulhprocessmg computer system as recited m claim 12, wherem said second processor (50, 150) is configured to detect said use by executing a particular illegal opcode 14 The heterogeneous multiprocessmg computer system as recited m claim 12, wherem said second processor (50, 150) is configured to communicate with said first processor (48, 152) upon detection of said use 15 The heterogeneous multiprocessmg computer system as recited m claim 14 wherem said first processor (48, 152) is configured to request context mformation from said second processor (50, 150), execute said operatmg system routme (94), and return control of said application program (82) to said second processor (50, 150) via communication with said second processor (50, 150) 16 The heterogeneous multiprocessmg computer system as recited m claim 11 wherem said process (80) unrelated to said application program (82) comprises a second application program 17 A method for executing an application program (82) coded usmg mstructions from a first mstruction set architecmre and designed to execute withm an operatmg system (84) coded usmg mstructions from a second mstruction set architecmre different than said first mstruction set architecmre, compnsmg detecting that said application program (82) is bemg initiated, said detecting performed by said operatmg system (84) executmg upon a first processor (48, 152) configured to execute mstructions from said second instruction set architecture, establishing a context for said application program (82) m a second processor (50, 150) configured to execute mstructions from said first mstruction set architecture, and executmg said application program (82) upon said second processor (50, 150) 18 The method as recited m claim 17 further compπsmg detecting a transition m said application program (82) to an operating system routine (94) withm said operating system (84) 19 The method as recited m claim 18 further compπsmg executmg said operating system routine (94) upon said first processor (48, 150) 20 The method as recited m claim 19 further compπsmg returning to said application program (82) executing upon said second processor (50, 150) subsequent to said executing said operating system routine (94)

Inventors: BOSWELL CHARLES R, GORISHEK FRANK J IV, BOSWELL, CHARLES, R., GORISHEK, FRANK, J., IV
Applicants: ADVANCED MICRO DEVICES INC, ADVANCED MICRO DEVICES, INC.
Application year: 1999
Main classification: G06F9
IPC codes: G06F9, G06F15