Simplified run-time program translation for emulating complex processor pipelines

Information

  • Patent Grant
  • 9483405
  • Patent Number
    9,483,405
  • Date Filed
    Sunday, September 21, 2008
    16 years ago
  • Date Issued
    Tuesday, November 1, 2016
    8 years ago
Abstract
Simplification of run-time program translation for emulating complex processor pipelines is disclosed. Dynamic pipeline states are moved into a cache lookup process leaving a code translation process to deal only with static pipeline states. With dynamic pipeline states removed from the translation process, translation becomes more simple and efficient like that of a non-pipelined processor.
Description
BACKGROUND OF THE INVENTION

1. Field of the Invention


The present invention generally relates to complex processor pipelines. More specifically, the present invention relates to microcode implementation of run-time program translation for emulating said pipelines.


2. Description of the Related Art


A processor pipeline is a whole processing task or workload broken into smaller sub-tasks. Through the use of processor pipelining, instruction throughput (i.e., the number of instructions that can be executed in a unit of time) can be increased. Each sub-step of the overall task carries data at once and each sub-step is connected to a subsequent sub-step effectively creating links in a pipe.


In an elementary form, the processing of a computer instruction is split into a series of independent steps with a storage operation at the conclusion of each step. This allows control circuitry of a computing device to issue instructions at the processing rate of the slowest step. Even at the rate of the slowest step, the overall processing is still faster than the time required to perform all of the steps constituting the whole instruction at once. Pipelining in this manner allows multiple tasks to be executed in parallel. As a result, central processing units (CPU) and/or other logic units are kept as busy as possible as often as possible.


In this context, an ideal pipeline could be conceived with (for example) 50-stages and a 50 GHz clock rate that would allow for processing tasks at 50 billion times per second. Reality would dictate otherwise with respect to pipeline depth, however, as the code running in a processor must be programmed without margins for error or guesswork. The near constant calling of sub-routines or functions runs the risk of guessing a wrong branch thereby invalidating the incorrectly guessed workload, which would require the pipeline to refill completely thereby reducing performance. The possibility for increases with the number of pipeline stages.


It is, therefore, the nature of a complex pipelined processor that code execution is affected by current pipeline state. The pipeline state is dynamic and affected by previously executed code. In translating code for a complex pipelined processor, the rules of the pipeline must be followed to produce a correct translation.


The prior art has generally relied on one of two options to address the aforementioned constraints of complex pipelined processors, neither of which have resulted in significant success. The first option is to completely emulate the processor pipeline at all times. The second option is to use what is commonly referred to as a global analysis approach for an entire program to evaluate the dynamics of the program.


While the first solution is relatively simple, it generally results in reduced performance. The latter solution has the potential to increase performance of translated code but does so in the context of high implementation complexity and high translation cost. The global analysis method, too, may not be able to handle all cases and full pipeline emulation may be required as a fallback.


There is, therefore, a need in the art to simplify the microcode implementation of run-time program translation for emulating complex processor pipelines.


SUMMARY OF THE INVENTION

Embodiments of the present invention simplify the microcode implementation of run-time program translation for emulating complex processor pipelines. The disclosed embodiments offer the benefits of simple implementation, high performance, and applicability to a wide array of pipelining problems.


In a first claimed embodiment, a method for program translation in a processor pipeline is disclosed. Through this method, a current target address and pipeline signature are determined. A corresponding target address and pipeline signature entry are looked up. A translation is produced for the current target address and pipeline signature when there is no corresponding target address and pipeline signature entry.


A second claimed embodiment also provides for a method of program translation in a processor pipeline. A current target address and pipeline signature are determined. A corresponding target address and pipeline signature entry are looked up and a translation corresponding to the target address and pipeline signature are executed. This execution occurs when a corresponding target address and pipeline signature entry are available.


A third claimed embodiment recites a processor pipeline translation method. Through this method, an address pipeline signature pair is decoded and checked for a stall. A code generation function for lower and upper instructions is called and the address pipeline pair is updated.





BRIEF DESCRIPTION OF THE DRAWINGS


FIG. 1 is an illustration of an exemplary computing system, specifically that of the PlayStation®2 from Sony Computer Entertainment Inc.



FIG. 2 is an illustration of an alternative exemplary computing system, specifically that of the PlayStation®3 from Sony Computer Entertainment Inc.



FIG. 3 illustrates an exemplary translation cache structure including a cache entry, key address, and translation address.



FIG. 4 illustrates an exemplary translation cache structure including a cache entry, key address, pipeline signature, and translation address.



FIG. 5 illustrates an exemplary translation process as may be executed in an embodiment of the present invention.



FIG. 6 illustrates an exemplary register mapping on entry to a translated block as may occur in an embodiment of the present invention.





DETAILED DESCRIPTION

In an exemplary embodiment of the present invention, a translator statically translates a single Vector Processing Unit (VU) basic block at a time from a given Entry PC until a branch instruction—[M] bit—or end of program—[E] bit. With respect to statistical translation, each translation is based on a single VU pipeline state at the entry point. The initial pipeline state is statically driven forward one cycle at a time. Code is emitted for each instruction and the final VU pipeline state is recorded. Pipelines are not driven at runtime because the pipeline state is always known at compile time.


A pipeline state may be referred to as a pipeline signature. Translations may be saved in a cache that can be looked up by pair of entry program counter addresses of translated code blocks and a corresponding pipeline signature. This information may be representative of certain snapshots of the processor's pipeline state.


A translation cache is used to hold translated code so that that the code does not have to be re-translated repeatedly. An ordinary translation cache may normally be keyed using the program counter address of translated code blocks. The present invention adds an additional key—the aforementioned pipeline signature. This signature allows one program address to correspond to multiple cached translations, each one keyed by a different pipeline signature.


Through the present invention, the problem of the dynamic pipeline state is effectively moved into the cache lookup process and leaves the code translation process to deal only with static pipeline states. With dynamic pipeline state removed from the translation process, translation becomes as simple and efficient as that for a non-pipelined processor. This method may also have applications in microprocessor design where modern processors often involve code translation form a higher-level instruction code into microcode.


Embodiments of the present invention may be implemented in the context of emulating the VU of the PlayStation®2 (as referenced with respect to FIG. 1) on another computing device such as the PlayStation®3 (as reference with respect to FIG. 2), which may not necessarily utilize the aforementioned VU. The emulation techniques referenced herein are taught in the context of a PlayStation®2 entertainment system. Notwithstanding, these techniques may be implemented in other computing environments. In this regard, any reference to emulating the VU of the PlayStation®2 vis-à-vis the PlayStation®3 or any other computing device is exemplary and solely for the purpose of illustration.



FIG. 1 is an illustration of an exemplary computing system 100, specifically that of the PlayStation®2 from Sony Computer Entertainment Inc. The elements identified in FIG. 1 are exemplary and may include various alternatives, equivalents, or derivations thereof. The system 100 may include, but is not limited to, a main memory 102, a central processing unit (CPU) 104, vector processing units VU0106 and VU1108, a graphics processing unit (GPU) 110, all of which may be coupled via a bus 136 to an input/output processor (IOP) 112. The system 100 may also include an IOP memory 114, a controller interface 116, a memory card 118, a Universal Serial Bus (USB) interface 120, and an IEEE 1394 interface 122. The system 100 may further include an operating system read-only memory (OS ROM) 124, a sound processing unit (SPU) 126, an optical disc control unit 128, and a hard disc drive (HDD) 130, all of which may be connected via a bus 138 to IOP 112.


The CPU 104, the VU0106, the VU1108, the GPU 110, and the IOP 112 may communicate via a system bus 132. The CPU 104 may communicate with the main memory 102 via a dedicated bus 134. The VU1108 and the GPU 110 may also communicate with one another via a dedicated bus 134. The CPU 104 executes programs stored in the OS ROM 124 and the main memory 102. The main memory 102 may contain pre-stored programs and may also contain programs transferred via the IOP 112 from a CD-ROM, DVD-ROM, or other optical disc (not shown) using the optical disc control unit 128. The IOP 112 may be configured to control data exchanges between the CPU 104, the VU0106, the VU1108, the GPU 110 and other devices of the system 100, such as the controller interface 116, or from other such systems via a network adaptor (not shown).


The GPU 110 may execute drawing instructions from the CPU 104 and the VU0106 to produce images for display on a display device (not shown). The VU1108 may be configured to transform objects from three-dimensional coordinates to two-dimensional coordinates, and send the two-dimensional coordinates to the GPU 110. The SPU 126 may execute instructions and processes data to produce sound signals that are output on an audio device (not shown).


A user of the system 100 may provide instructions via the controller interface 116 to the CPU 104, which may be coupled to a control device including the likes of a joystick, directional buttons, and/or other control buttons. For example, the user may instruct the CPU 104 to store certain game information on the memory card 118, which may be removable (e.g., a flash memory or other non-volatile memory card), or may instruct a character in a game to perform some specified action. Other devices may be connected to the system 100 via the USB interface 120 and/or the IEEE 1394 interface 122.


The system 100 is, in one embodiment, an electronic gaming console; however, the system 100 (or portions thereof) may also be implemented as a general-purpose computer, a set-top box, a hand-held gaming device, or in a mobile device such as a cellular phone. It should further be noted that various other system architectures may be utilized within the scope of the present invention.



FIG. 2 is an illustration of an alternative exemplary computing system, specifically that of the PlayStation®3 from Sony Computer Entertainment Inc. The PlayStation®(3) of FIG. 2 (i.e., the electronic entertainment system 250) is based on use of a Cell processor 252. The elements identified in FIG. 2 are exemplary and may include various alternatives, equivalents, or derivations thereof. Certain aspects of a computer architecture and high speed processing model utilizing a Cell processor are disclosed in U.S. patent publication number 2002-0138637 for a “Computer Architecture and Software Cells for Broadband Networks,” the disclosure of which is incorporated herein by reference. The Cell processor architecture represents the work of Sony Computer Entertainment Inc., Kabushiki Kaisha Toshiba, and International Business Machines Corporation.


Through the use of the aforementioned Cell processor, data and applications may be processed and packaged into uniquely identified and uniformly formatted software cells. The uniformity of structure and unique identification facilitates the processing of applications and data throughout a network of Cell processor equipped computing devices. For example, one computing device may formulate a software cell but can distribute that cell to another device for processing. Thus, the cells may migrate throughout a network for processing on the basis of the availability of processing resources on the network.


The cell processor 252 of FIG. 2 includes a main memory 254, a single power processor element (PPE) 256, and eight synergistic processor elements (SPE) 258. The cell processor 252 may be configured, however, with more than one PPE and any number of SPEs 258. Each SPE 258 of FIG. 2 includes a synergistic processor unit (SPU) and a local store (LS).


Main memory 254, PPE 256, and SPEs 258 may communicate with each other and with an I/O device 260 over, for example, a ring-type-element interconnect bus (EIB) 264 coupled to a bus interface controller (BIC). The PPE 256 and SPEs 258 may access the EIB 264 through bus interface units (BIU). The PPE 256 and SPEs 258 may access the main memory 254 over the EIB 264 through memory flow controllers (MFC) and memory interface controller (MIC).


Main memory 254 may include a program 262 that implements executable instructions. The instructions may be read from a CD/ROM or other optical disc in CD/DVD reader 266 coupled to the I/O device 260, the CD/ROM or other optical disc being loaded into the reader 266. The CD/ROM, too, may comprise a program, executable instructions, or other data 274.


In some embodiments, PPE 256 may be a standard processor capable of stand-alone processing of data and applications. In operation, PPE 256 may schedule and orchestrate the processing of data and applications by SPEs 258 and the associated SPU. In one embodiment, the SPU may be a single instruction, multiple data (SIMD) processor. Under the control of PPE 256, the SPUs may process data and applications in a parallel and independent manner. MIC may control accesses by PPE 256 SPUs to data and applications in main memory 254.


Returning to FIG. 1, an exemplary VU may include thirty-two 128-bit registers, sixteen 16-bit fixed point registers, four floating-point multiply accumulate (FMAC) units, a floating point divide (FDIV) unit and a local data memory. In the case of the PlayStation® 2 of FIG. 1, which includes two VUs, the data memory for a first VU may be 4 KiB in size while the second VU may features a 16 KiB data memory. To achieve high bandwidth, the VU's data memory may be connected directly to a graphics interface (GIF) and both of the data memories can be read directly by, for example, a ten-channel director memory access (DMA) unit.


A single vector instruction may consist of four 32 bit IEEE compliant single precision floating point values, which may be distributed to the four single precision (32 bit) FMAC units for processing. The FMAC units may have an instruction latency of four cycles but a six stage pipeline allowing for a throughput of one cycle per an instruction. The FDIV unit may have a nine stage pipeline and may be configured to execute one instruction every seven cycles.


The VU, in an embodiment, is a Very Long Instruction Word (VLIW) pipelined execution processor. Because the VU is a VLIW complexly pipelined execution processor, a series of problems are presented that may require cycle-accurate pipeline emulation: (1) instruction sets with various different latencies; (2) a mixture of hazard checking as some instructions are hazard checked and some are not, which imposes the requirement of correct cycle-accurate emulation; (3) register forwarding exceptions where, under certain circumstances, input arithmetic logic unit (IALU) registers are forwarded in different ways and which may require emulating a 5-cycle deep pipeline in order to emulate IALU registers correctly; and (4) as the VU executes two instruction pipes in parallel, certain conflicts between the two pipes may arise and that alter execution behavior.


A partial list of pipeline issues that require special attention on a VU include: (1) hazard checking on vector floating point (VFP) registers as instructions may stall based on previously executed instructions; (2) a Q pipeline stall if multiple Q instructions are issued; (3) a P pipeline stall if multiple P instructions are issued as non-hazard-checked Q & P registers require delayed register updates; (4) non-hazard checked MAC & CLIP registers, which require delayed register updates; and (5) VI register forwarding to the branch pipeline requires emulating IALU write back for 5 pipeline cycles.


As noted previously, code translation for such a complex system can be approached in one of two ways: a local translation approach and a global translation approach. A local translation approach involves translating only independent, relatively small blocks of code in isolation of the rest of the program, using a Just-in-Time (JIT) requirement system. As blocks are translated in isolation, the translation must account for any possible pipeline states. As such this kind of translation requires emulating the CPU pipeline at runtime at all points in the translated code. For a processor as complex as the VU of FIG. 1, the overhead of pipeline emulation may very high and dwarf the rest of the system.


A global translation approach involves analyzing a whole program. Analysis of data-flow and pipeline states throughout a whole program can result in optimizations whereby the pipeline need not be fully emulated all of the time. This can yield much better performance than the local translation approach at the cost of a much greater degree of implementation complexity. Further, this method has a high translation time cost, has non-linear complexity, and as such has application only to small programs, and does not always yield optimal results.


Turning now to a local translation method that overcomes some of the drawbacks of the previously implemented local and global approaches, it is noted that the processor pipeline state may change at any point in program execution based on previously executed instructions. A pipeline signature is a compact way to represent the current state of VU0 pipelines—a snapshot of the pipeline state. The state of the pipeline is incorporated in the pipeline signature in a compact manner; for example, the current stage number of a pipeline, which registers cause hazards or at what cycle will a certain register value update.


For a complex CPU such as the VU of the PlayStation®2, sufficient information could be captured within a 128-bit pipeline signature. From this signature, the complete pipeline state may be deduced. The pipeline signature contains sufficient information to be able to resume correct VU0 pipeline execution at any time and to facilitate efficient translation.


The signature helps keep the translator simple while supporting all the complexity of VU0 pipelines efficiently. The pipeline signature may be made up of the following elements and, by these definitions, a pipeline signature may (and in some cases shall) occupy less than 128 bits:


Q Pipeline State (QPS) 4 bits: a Q pipeline is either idle or executing for a maximum of 13 cycles thus Q Pipeline State saves a 4 bit value for 0 to 13 cycles.


VPU Float Register History (VFR[3] [2]) 54 bits: up to two VF registers may be modified in each cycle (one by lower and one by upper pipeline). Each VF register is uniquely identified by 9 bits (5 bits for register number 0 to 31 and 4 bits mask for XYZW fields). VU pipeline may be stalled by VF register history from the past 3 cycles thus VF Register History saves 3 cycles*2 registers*9 bits.


VPU Integer Register History (VIR[4]) 16 bits and (VIS[4]) 4 bits: up to one VI register may be modified in each cycle (by lower pipeline). Each VI register is uniquely identified by 4 bits (register number 0 to 15). VU pipeline may be stalled by VI register history for the past 3 cycles. It is also necessary to cope with IALU→BRANCH hazard, which is partly addressed by keeping the register history for 4 cycles whereby VIRD saves 4 cycles*1 register*4 bits. VISD, is an extra 1 bit associated with each VIR[ ] value above that indicates if reading the VIR register causes stalls.


IALU History (IALUH) 1 bit: A 1 bit flag indicates if the last cycle executed was an IALU instruction (for IALU→BRANCH hazard).


Branch History (BH) 1 bit: A 1 bit flag indicates if the last instruction executed was a taken BRANCH (for branch-in-branch handling).


E-bit History (EH) 1 bit: A 1 bit flag indicates if E-bit was set on the last instruction (for end of program handling).


Extra Information to Aid Efficient Translation 32 bits: In one embodiment, 6 bits may be dedicated to help optimize the MAC Flag pipeline status, 6 bits to help optimize the CLIP Flag pipeline status, and 4*5 bits to help optimize the integer pipeline status.



FIG. 3 illustrates an exemplary translation cache structure including a cache entry, key address, and translation address. Normally a translation cache may be used to cache code translations. Previous translations can be looked up in the cache using a key. Generally the key may be the target program counter address, and the value may be the translation's host address as in FIG. 3. Had the target address 0x1010 been required, for example, a match would occur to translation entry #2, which would yield host address 0x2040. This system allows a one-to-one mapping of target address to host translation address.



FIG. 4 illustrates an exemplary translation cache structure including a cache entry, key address, pipeline signature, and translation address. In a Pipeline Signature cache the key is built up of both the target address and a Pipeline Signature as in FIG. 4. Had the target address 0x1001 together with Pipeline Signature ‘D’ been required, for example, a match would occur to translation entry #2.1 which would yield host address 0x2090. This system allows multiple entries in the cache for each target address.


With the Pipeline Signature incorporated in the cache lookup process, simplification of the translation process is possible. In FIG. 3, translation #2 must correspond to any potential pipeline state, in other words the pipeline state is dynamic on entry to translation #2 within this translation and must be translated as such. In FIG. 4, translation #2.1 corresponds to a single pipeline signature, and as such to a single pipeline state. With the pipeline state now static, translation #2.1 can be generated and optimized specifically for that single pipeline state. With the pipeline being static, the translation process is simplified and can handle all pipelining attributes, has linear complexity, and can be optimized to do a minimal amount of processing given the fixed pipeline conditions.



FIG. 5 illustrates an exemplary translation process as may be executed in an embodiment of the present invention. At any point in translating or executing the target program, the current target address and pipeline signature is known. Cache entries for a corresponding target address and pipeline signature entry are looked up. This process can be most efficient if the entries are stored in a hash table.


If there is no match, a translation is produced for the current target address and pipeline signature. These are static values and the translation is valid only for the address and pipeline signature pair. This translation is saved in the translation cache and may be subsequently executed. If there is a match, this translation is likewise executed.


Wherever there are static branches in translated code, new target address and Pipeline Signature for the branch target is known statically at translation time. Since this is static a cache lookup, it need not be done at run-time. A one off lookup is needed at translation time. Whenever there are dynamic branches in translated code a cache lookup must be done at run-time. Translation at each cycle may be divided into the following steps.


Step 510 may be characterized as a decoding translation stage. At this stage, the current address pipeline signature pair is decoded, which prepares information about the instructions for step 520 and 530.


In step 520, which may be characterized as a stall determination stage, VF and VI stalls are checked using current VFRD, VIRU, and VIS[ ] information. If a stall is detected, translation skips to translation step 540.


In step 530—the register mapping and instruction generation stage—the code generation function gen_func is called for the lower and upper instructions. Control flow, next program counter and program termination may also be determined at this stage. Each gen_func maps the input registers it requires and emits computation. The result may not be conceptually written back to the register file at this time but may be kept in a temporary register and a record may be made for the write back phase. This avoids write back hazards when Upper & Lower pipe modify and/or read the same register on the same cycle.


For example, a first write back hazard may include the upper and lower pipes writing the same VF register. In response, the following is proposed: add vf01, vf00, vf00??? Iq vf01,)(vi00). A second such hazard might be the upper pipe reading the VF register that is modified by the lower pipe. In response, the following is proposed: add vf02, vf01, vf00??? Iq vf01, 0(vi00).


In some embodiments, only the lower pipe VF register write may need to be delayed to get around the write back hazards. The upper pipe may go direct to the real VF register. The lower pipe VF results may be kept in a temporary register and then re-mapped to a real VF register at step 540.


In step 540—the pipeline update and write back stage—the pipeline update and write back involves the following. First, write back VIR[0] & VID[0] to VI register file, which may be done through register re-naming. Second, write back VF registers recorded during step 530, which may be done by registered renaming in observance of a write back hazard where the upper and lower pipes writing the same VF register. Thirdly, update the MAC and CLIP flags pipeline, which may be done through register re-naming. The pipeline signature update is then complete, and translation is executed at step 550.


With respect to the aforementioned register re-naming, emulated registers may be assigned to real PPU registers during translation. Re-naming means re-assigning real PPU registers from one emulated register to another. No actual move instructions are involved. For example, VID[0] is currently stored in PPC GPR $r1. $r1 is named VID[0]. VID[1] is currently stored in PPC GPR $r2. $r2 is named VID[1]. Renaming $r2 to VID[0] is equivalent to the operation VID[0]=VID[1].


The Pipeline Signature is conceptually updated at each cycle during translation as follows using register re-naming. For example:

    • VIR[0]=VIR[1]; VID[0]=VID[1]; VIS[0]=VIS[1];
    • VIR[1]=VIR[2]; VID[1]=VID[2]; VIS[1]=VIS[2];
    • VIR[2]=VIR[3]; VID[2]=VID[3]; VIS[2]=VIS[3];
    • VIR[3]=New VI Register; VID[3]=New VI Data; VIS[3]=1 if ILW* instruction executed, else 0;
    • IALUH=1 if IALU instruction executed, else 0;
    • BH=1 if taken BRANCH executed, else 0;
    • EH=1 if E-bit executed, else 0;
    • QPS decrements to zero; When QPS=0 the Q register updates.


With respect to VF register mapping, VF registers are not delayed, thus they are mapped direct from the VF register file.


Concerning VI Register Mapping and IALU→BRANCH Hazard, VI registers are delayed 4 cycles in VID[ ]. In some instances, if a VI register hits a VID, it is mapped direct to that VID (i.e., VID Forwarding). If a VI register misses VID it is mapped direct from the VI register file. When IALU→BRANCH hazard is detected, VID Forwarding is skipped. IALU→BRANCH hazard is detected using IALUH and VIR[0] as follows:

  • II For VI register N


if(IALUH=1 && N=VIR[0])

    • Read N direct from register file VI[N]


else

    • Register N is forwarded from VID[ ]



FIG. 6 illustrates an exemplary register mapping on entry to a translated block as may occur in an embodiment of the present invention. The initial register mapping must be fixed because it is not saved in the pipeline signature. Depending upon space available in the pipeline signature, these could also be saved and then they would not have to be fixed.


Computer-readable storage media refer may be utilized to provide instructions to a processor for execution, including instructions that correspond to the methodology of FIG. 3. Various forms of transmission media may be involved in carrying one or more sequences of one or more instructions to a processor for execution.


While various embodiments have been described above, it should be understood that they have been presented by way of example only, and not limitation. The descriptions are not intended to limit the scope of the invention to the particular forms set forth herein. Thus, the breadth and scope of a preferred embodiment should not be limited by any of the above-described exemplary embodiments. It should be understood that the above description is illustrative and not restrictive.


Further, the present descriptions are intended to cover such alternatives, modifications, and equivalents as may be included within the spirit and scope of the invention as defined by the appended claims and otherwise appreciated by one of ordinary skill in the art. The scope of the invention should, therefore, be determined not with reference to the above description, but instead should be determined with reference to the appended claims along with their full scope of equivalents.

Claims
  • 1. A method for program translation in a processor pipeline, the method comprising: determining a current target address and pipeline signature, the pipeline signature including a state of the processor pipeline, the pipeline signature allowing one program address to correspond to multiple cached translations, each cached translation keyed by a different pipeline signature;requesting a translation based at least in part on the current target address and the pipeline signature, the translation including instructions translated for a processor; andgenerating the translation when the translation is unavailable, the translation valid for only a single address and pipeline signature pair.
  • 2. The method of claim 1, wherein the target address and pipeline signature are looked up in a hash table.
  • 3. The method of claim 1, wherein the target address and pipeline signature are static values.
  • 4. The method of claim 1, further comprising saving the translation in a translation cache.
  • 5. The method of claim 4, further comprising executing the translation.
  • 6. The method of claim 1, wherein the translation includes translating instructions to an instruction set of the processor.
  • 7. A method for program translation in a processor pipeline, the method comprising: determining a current target address and pipeline signature, the pipeline signature including a state of the processor pipeline, the pipeline signature allowing one program address to correspond to multiple cached translations, each cached translation keyed by a different pipeline signature;requesting a translation based at least in part on the current target address and the pipeline signature, the translation including instructions translated for a processor; andexecuting the translation when the translation is unavailable, the translation valid for only a single address and pipeline signature pair.
  • 8. The method of claim 7, wherein the target address and pipeline signature are looked up in a hash table.
  • 9. The method of claim 7, wherein the target address and pipeline signature are static values.
  • 10. A processor pipeline translation method, comprising: decoding a current target address and pipeline signature, the pipeline signature including a state of a processor pipeline, the pipeline signature allowing one program address to correspond to multiple cached translations, each cached translation keyed by a different pipeline signature;checking for a stall;calling a code generation function to translate instructions for a processor for lower and upper instructions; andupdating an address pipeline signature pair, for which a generated translation is valid for only the address pipeline signature pair.
  • 11. The method of claim 10, wherein the code generation function maps required input registers.
  • 12. The method of claim 11, wherein the mapped input registers are maintained in a temporary register.
  • 13. The method of claim 12, further comprising creating a record for a write back operation.
  • 14. The method of claim 11, further comprising writing back the mapped input registers to a register file.
  • 15. The method of claim 10, wherein the stall is checked with respect to VF and VI stalls.
  • 16. The method of claim 15, wherein the stall is checked using current VFRD, VIRU, and VIS[ ] information.
CROSS-REFERENCE TO RELATED APPLICATIONS

The present application claims the priority benefit of U.S. provisional patent application No. 60/973,994 filed Sep. 20, 2007 and entitled “Simplified Run-Time Program Translation for Emulating Complex Processor Pipelines,” the disclosure of which is incorporated herein by reference. This application is related to Patent Cooperation Treaty application number PCT/GB2007/000587 filed Feb. 19, 2007 in the name of Sony Computer Entertainment Inc., the disclosure of which is incorporated herein by reference.

US Referenced Citations (572)
Number Name Date Kind
3735026 Smith et al. May 1973 A
4367458 Hackett Jan 1983 A
4422093 Pargee, Jr. Dec 1983 A
4499568 Gremillet Feb 1985 A
4506387 Walter Mar 1985 A
4520407 Tanaka et al. May 1985 A
4569015 Dolev et al. Feb 1986 A
4727422 Hinman Feb 1988 A
4849811 Kleinerman Jul 1989 A
4897717 Hamilton et al. Jan 1990 A
4918523 Simon et al. Apr 1990 A
4949187 Cohen Aug 1990 A
4963995 Lang Oct 1990 A
4974178 Izeki et al. Nov 1990 A
5010399 Goodman et al. Apr 1991 A
5018021 Slater May 1991 A
5034807 Von Kohorn Jul 1991 A
5057932 Lang Oct 1991 A
5107489 Brown et al. Apr 1992 A
5119483 Madden et al. Jun 1992 A
5121261 Isogai et al. Jun 1992 A
5132992 Yurt et al. Jul 1992 A
5164839 Lang Nov 1992 A
5187787 Skeen et al. Feb 1993 A
5193180 Hastings Mar 1993 A
5222134 Waite et al. Jun 1993 A
5233423 Jernigan et al. Aug 1993 A
5241682 Bryant et al. Aug 1993 A
5253275 Yurt et al. Oct 1993 A
5276866 Paolini Jan 1994 A
5313467 Varghese et al. May 1994 A
5315326 Sugiyama May 1994 A
5335344 Hastings Aug 1994 A
5339392 Risberg et al. Aug 1994 A
5341477 Pitkin et al. Aug 1994 A
5392278 Teel et al. Feb 1995 A
5416779 Barnes et al. May 1995 A
5436653 Ellis et al. Jul 1995 A
5481178 Wilcox et al. Jan 1996 A
5490216 Richardson, III Feb 1996 A
5504894 Ferguson et al. Apr 1996 A
5508731 Kohorn Apr 1996 A
5508733 Kassatly Apr 1996 A
5511186 Carhart et al. Apr 1996 A
5522087 Hsiang May 1996 A
5523551 Scott Jun 1996 A
5524051 Ryan Jun 1996 A
5532735 Blahut et al. Jul 1996 A
5535329 Hastings Jul 1996 A
5539448 Verhille et al. Jul 1996 A
5541638 Story Jul 1996 A
5543591 Gillespie et al. Aug 1996 A
5548784 Easley, Jr. et al. Aug 1996 A
5550863 Yurt et al. Aug 1996 A
5572442 Schulhof et al. Nov 1996 A
5586261 Brooks et al. Dec 1996 A
5590195 Ryan Dec 1996 A
5630757 Gagin et al. May 1997 A
5636277 Nagahama Jun 1997 A
5675571 Wilson Oct 1997 A
5680619 Gudmundson et al. Oct 1997 A
5682139 Pradeep et al. Oct 1997 A
5701582 DeBey Dec 1997 A
5704032 Badovinatz et al. Dec 1997 A
5719937 Warren et al. Feb 1998 A
5721827 Logan et al. Feb 1998 A
5737311 Wyld Apr 1998 A
5751336 Aggarwal et al. May 1998 A
5751806 Ryan May 1998 A
5764158 Franklin et al. Jun 1998 A
5767913 Kassatly Jun 1998 A
5778187 Monteiro et al. Jul 1998 A
5790177 Kassatly Aug 1998 A
5794217 Allen Aug 1998 A
5809145 Slik et al. Sep 1998 A
5809450 Chrysos et al. Sep 1998 A
5809472 Morrison Sep 1998 A
5815671 Morrison Sep 1998 A
5823879 Goldberg et al. Oct 1998 A
5826085 Bennett et al. Oct 1998 A
5831662 Payton Nov 1998 A
5835701 Hastings Nov 1998 A
5838314 Neel et al. Nov 1998 A
5838909 Roy et al. Nov 1998 A
5841980 Waters et al. Nov 1998 A
5845265 Woolston Dec 1998 A
5864316 Bradley et al. Jan 1999 A
5864854 Boyle Jan 1999 A
5867494 Krishnaswamy et al. Feb 1999 A
5879236 Lambright Mar 1999 A
5880411 Gillespie et al. Mar 1999 A
5892536 Logan et al. Apr 1999 A
5892900 Ginter et al. Apr 1999 A
5893106 Brobst et al. Apr 1999 A
5903892 Hoffert et al. May 1999 A
5913040 Rakavy et al. Jun 1999 A
5914941 Janky Jun 1999 A
5923872 Chrysos et al. Jul 1999 A
5924068 Richard et al. Jul 1999 A
5933063 Keung et al. Aug 1999 A
5933603 Vahalia et al. Aug 1999 A
5940738 Rao Aug 1999 A
5941947 Brown et al. Aug 1999 A
5956485 Perlman Sep 1999 A
5956629 Morrison Sep 1999 A
5960196 Carrier, III et al. Sep 1999 A
5963202 Polish Oct 1999 A
5964867 Anderson et al. Oct 1999 A
5983176 Hoffert et al. Nov 1999 A
5984787 Redpath Nov 1999 A
5986692 Logan et al. Nov 1999 A
5987376 Olson et al. Nov 1999 A
5987525 Roberts et al. Nov 1999 A
5995705 Lang Nov 1999 A
6000044 Chrysos et al. Dec 1999 A
6002720 Yurt et al. Dec 1999 A
6003030 Kenner et al. Dec 1999 A
6041312 Bickerton et al. Mar 2000 A
6041329 Kishi Mar 2000 A
6044335 Ksendzov Mar 2000 A
6049539 Lee et al. Apr 2000 A
6050898 Vange et al. Apr 2000 A
6057845 Dupouy May 2000 A
6061504 Tzelnic et al. May 2000 A
6066182 Wilde et al. May 2000 A
6067278 Owens et al. May 2000 A
6070009 Dean et al. May 2000 A
6070141 Houvener et al. May 2000 A
6073123 Staley Jun 2000 A
6081785 Oshima et al. Jun 2000 A
6085176 Woolston Jul 2000 A
6085262 Sawada Jul 2000 A
6088455 Logan et al. Jul 2000 A
6088721 Lin et al. Jul 2000 A
6092180 Anderson et al. Jul 2000 A
6105098 Ninose et al. Aug 2000 A
6105099 Freitas et al. Aug 2000 A
6106569 Bohrer et al. Aug 2000 A
6108569 Shen Aug 2000 A
6108703 Leighton et al. Aug 2000 A
6117011 Lvov Sep 2000 A
6119075 Dean et al. Sep 2000 A
6119108 Holmes et al. Sep 2000 A
6135646 Kahn et al. Oct 2000 A
6137480 Shintani Oct 2000 A
6142472 Kliebisch Nov 2000 A
6144702 Yurt et al. Nov 2000 A
6148335 Haggard et al. Nov 2000 A
6148396 Chrysos et al. Nov 2000 A
6152824 Rothschild et al. Nov 2000 A
6154773 Roberts et al. Nov 2000 A
6154782 Kawaguchi et al. Nov 2000 A
6157955 Narad et al. Dec 2000 A
6161132 Roberts et al. Dec 2000 A
6163692 Chakrabarti et al. Dec 2000 A
6163840 Chrysos et al. Dec 2000 A
6173322 Hu Jan 2001 B1
6175814 Chrysos et al. Jan 2001 B1
6178160 Bolton et al. Jan 2001 B1
6185532 Lemaire et al. Feb 2001 B1
6189146 Misra et al. Feb 2001 B1
6192340 Abecassis Feb 2001 B1
6195432 Takahashi et al. Feb 2001 B1
6195748 Chrysos et al. Feb 2001 B1
6199076 Logan et al. Mar 2001 B1
6199110 Rizvi et al. Mar 2001 B1
6201771 Otsuka et al. Mar 2001 B1
6202051 Woolston Mar 2001 B1
6203433 Kume Mar 2001 B1
6206584 Hastings Mar 2001 B1
6212521 Minami et al. Apr 2001 B1
6219045 Leahy et al. Apr 2001 B1
6230192 Roberts et al. May 2001 B1
6230207 Roberts et al. May 2001 B1
6233633 Douma May 2001 B1
6237073 Dean et al. May 2001 B1
6240459 Roberts et al. May 2001 B1
6246672 Lumelsky Jun 2001 B1
6247017 Martin Jun 2001 B1
6247131 Kotani et al. Jun 2001 B1
6253237 Story et al. Jun 2001 B1
6260141 Park Jul 2001 B1
6262777 Brewer et al. Jul 2001 B1
6263433 Robinson et al. Jul 2001 B1
6266651 Woolston Jul 2001 B1
6282549 Hoffert et al. Aug 2001 B1
6292940 Sato Sep 2001 B1
6300880 Sitnik Oct 2001 B1
6311209 Olson et al. Oct 2001 B1
6314451 Landsman et al. Nov 2001 B1
6327624 Mathewson, II et al. Dec 2001 B1
6330593 Roberts et al. Dec 2001 B1
6339591 Migimatsu Jan 2002 B1
6345297 Grimm et al. Feb 2002 B1
6352479 Sparks, II Mar 2002 B1
6360266 Pettus Mar 2002 B1
6360275 Chu et al. Mar 2002 B1
6363416 Naeimi et al. Mar 2002 B1
6370543 Hoffert et al. Apr 2002 B2
6393430 Van Ryzin May 2002 B1
6400996 Hoffberg et al. Jun 2002 B1
6405203 Collart Jun 2002 B1
6407750 Gioscia et al. Jun 2002 B1
6421717 Kloba et al. Jul 2002 B1
6421726 Kenner et al. Jul 2002 B1
6421728 Mohammed et al. Jul 2002 B1
6434535 Kupka et al. Aug 2002 B1
6446080 Van Ryzin et al. Sep 2002 B1
6446260 Wilde et al. Sep 2002 B1
6449226 Kumagai Sep 2002 B1
6453252 Laroche Sep 2002 B1
6460076 Srinivasan Oct 2002 B1
6463078 Engstrom et al. Oct 2002 B1
6470085 Uranaka et al. Oct 2002 B1
6484221 Lorinser et al. Nov 2002 B1
6487583 Harvey et al. Nov 2002 B1
6487678 Briskey et al. Nov 2002 B1
6496826 Chowdhury et al. Dec 2002 B1
6502125 Kenner et al. Dec 2002 B1
6502139 Birk et al. Dec 2002 B1
6505342 Hartmann et al. Jan 2003 B1
6516393 Fee et al. Feb 2003 B1
6519629 Harvey et al. Feb 2003 B2
6529453 Otsuka et al. Mar 2003 B1
6530840 Cuomo et al. Mar 2003 B1
6539424 Dutta Mar 2003 B1
6546448 Lai et al. Apr 2003 B1
6549930 Chrysos et al. Apr 2003 B1
6549946 Fisher et al. Apr 2003 B1
6553003 Chang Apr 2003 B1
6553030 Ku et al. Apr 2003 B2
6553413 Leighton et al. Apr 2003 B1
6560636 Cohen et al. May 2003 B2
6560640 Smethers May 2003 B2
6561811 Rapoza et al. May 2003 B2
6564336 Majkowski May 2003 B1
6574234 Myer et al. Jun 2003 B1
6582310 Walker et al. Jun 2003 B1
6587874 Golla et al. Jul 2003 B1
6594740 Fukuda Jul 2003 B1
6598164 Shepard Jul 2003 B1
6605342 Burghaus et al. Aug 2003 B1
6607444 Takahashi et al. Aug 2003 B2
6610936 Gillespie et al. Aug 2003 B2
6611607 Davis et al. Aug 2003 B1
6618824 Hastings Sep 2003 B1
6622305 Willard Sep 2003 B1
6623360 Nakajima Sep 2003 B1
6625152 Monsen et al. Sep 2003 B1
6625722 Lancaster Sep 2003 B1
6631412 Glasser et al. Oct 2003 B1
6637031 Chou Oct 2003 B1
6640306 Tone et al. Oct 2003 B1
6661430 Brewer et al. Dec 2003 B1
6665706 Kenner et al. Dec 2003 B2
6671358 Siedman et al. Dec 2003 B1
6676521 La Mura et al. Jan 2004 B1
6681000 Moriguchi et al. Jan 2004 B1
6687817 Paul Feb 2004 B1
6687908 Santilli Feb 2004 B1
6694025 Epstein et al. Feb 2004 B1
6701344 Holt et al. Mar 2004 B1
6701420 Hamilton et al. Mar 2004 B1
6701528 Arsenault et al. Mar 2004 B1
6714966 Holt et al. Mar 2004 B1
6718264 Takahashi Apr 2004 B2
6728949 Bryant et al. Apr 2004 B1
6732147 Holt et al. May 2004 B1
6738983 Rao et al. May 2004 B1
6748420 Quatrano et al. Jun 2004 B1
6750852 Gillespie et al. Jun 2004 B2
6754233 Henderson et al. Jun 2004 B1
6754845 Kursawe et al. Jun 2004 B2
6756783 Brune et al. Jun 2004 B2
6757543 Moran et al. Jun 2004 B2
6761636 Chung et al. Jul 2004 B2
6763371 Jandel Jul 2004 B1
6763392 del Val et al. Jul 2004 B1
6782421 Soles et al. Aug 2004 B1
6799255 Blumenau et al. Sep 2004 B1
6801930 Dionne et al. Oct 2004 B1
6804825 White et al. Oct 2004 B1
6811488 Paravia et al. Nov 2004 B2
6829634 Holt et al. Dec 2004 B1
6832318 Yaegashi et al. Dec 2004 B1
6850252 Hoffberg Feb 2005 B1
6892064 Qi et al. May 2005 B2
6910069 Holt et al. Jun 2005 B1
6920497 Bourassa et al. Jul 2005 B1
6920565 Isaacson et al. Jul 2005 B2
6925636 Haugen et al. Aug 2005 B2
6931446 Cox et al. Aug 2005 B1
6963964 Luick Nov 2005 B2
6987221 Platt Jan 2006 B2
6987813 Demetrescu et al. Jan 2006 B1
6990338 Miller et al. Jan 2006 B2
7003550 Cleasby et al. Feb 2006 B1
7006881 Hoffberg et al. Feb 2006 B1
7010783 de Jong Mar 2006 B2
7012999 Ruckart Mar 2006 B2
7016942 Odom Mar 2006 B1
7018295 Sakaguchi et al. Mar 2006 B2
7025675 Fogel et al. Apr 2006 B2
7027773 McMillin Apr 2006 B1
7055067 DiJoseph May 2006 B2
7056217 Pelkey et al. Jun 2006 B1
7058376 Logan et al. Jun 2006 B2
7064796 Roy et al. Jun 2006 B2
7075919 Wendt et al. Jul 2006 B1
7076475 Honarvar Jul 2006 B2
7093007 Patton et al. Aug 2006 B2
7100047 Stamos et al. Aug 2006 B2
7107312 Hackbarth et al. Sep 2006 B2
7127737 Bayrakeri et al. Oct 2006 B1
7155735 Ngo et al. Dec 2006 B1
7177950 Narayan et al. Feb 2007 B2
7181494 Lavoie et al. Feb 2007 B2
7188331 Culter Mar 2007 B2
7233948 Shamoon et al. Jun 2007 B1
7257623 Viavant et al. Aug 2007 B2
7266771 Tow et al. Sep 2007 B1
7280519 Shane Oct 2007 B1
7290264 Powers et al. Oct 2007 B1
7305170 Okada et al. Dec 2007 B2
7305431 Karnik et al. Dec 2007 B2
7308080 Moriuchi et al. Dec 2007 B1
7313810 Bell et al. Dec 2007 B1
7320131 O'Toole, Jr. Jan 2008 B1
7333864 Herley Feb 2008 B1
7343141 Ellis et al. Mar 2008 B2
7359979 Gentle et al. Apr 2008 B2
7466823 Vestergaard et al. Dec 2008 B2
7475219 O'Connor et al. Jan 2009 B2
7574488 Matsubara Aug 2009 B2
7587465 Muchow Sep 2009 B1
7613633 Woolston Nov 2009 B1
7657879 Zalewski Feb 2010 B1
7706901 Berreth Apr 2010 B2
7711847 Dhupelia et al. May 2010 B2
7716238 Harris May 2010 B2
7720908 Newson et al. May 2010 B1
7730206 Newson et al. Jun 2010 B2
7792902 Chatani et al. Sep 2010 B2
7822809 Dhupelia et al. Oct 2010 B2
7831666 Chatani et al. Nov 2010 B2
7908362 Ferguson et al. Mar 2011 B2
8126987 Chopra et al. Feb 2012 B2
8239446 Navar et al. Aug 2012 B2
8433759 Styles et al. Apr 2013 B2
8458754 Corson Jun 2013 B2
8666524 Ben-Yaacov et al. Mar 2014 B2
8966557 Corson Feb 2015 B2
20010007981 Woolston Jul 2001 A1
20010009868 Sakaguchi et al. Jul 2001 A1
20010014891 Hoffert et al. Aug 2001 A1
20010020295 Satoh Sep 2001 A1
20010021999 Seifert Sep 2001 A1
20010025256 Oliphant et al. Sep 2001 A1
20010027561 White et al. Oct 2001 A1
20010027563 White et al. Oct 2001 A1
20010034721 Boudreau et al. Oct 2001 A1
20010037466 Fukutake et al. Nov 2001 A1
20010042021 Matsuo et al. Nov 2001 A1
20010044339 Cordero et al. Nov 2001 A1
20010051996 Cooper et al. Dec 2001 A1
20020002076 Schneier et al. Jan 2002 A1
20020016922 Richards et al. Feb 2002 A1
20020035604 Cohen et al. Mar 2002 A1
20020037699 Kobayashi et al. Mar 2002 A1
20020041584 Sashihara Apr 2002 A1
20020042830 Bose et al. Apr 2002 A1
20020046232 Adams et al. Apr 2002 A1
20020049086 Otsu Apr 2002 A1
20020052816 Clenaghan et al. May 2002 A1
20020060994 Kovacs et al. May 2002 A1
20020062348 Maehiro May 2002 A1
20020075844 Hagen Jun 2002 A1
20020076084 Tian et al. Jun 2002 A1
20020077988 Sasaki et al. Jun 2002 A1
20020078376 Miyoshi et al. Jun 2002 A1
20020082065 Fogel et al. Jun 2002 A1
20020082077 Johnson et al. Jun 2002 A1
20020082997 Kobata et al. Jun 2002 A1
20020103855 Chatani Aug 2002 A1
20020104019 Chatani et al. Aug 2002 A1
20020114455 Asahi et al. Aug 2002 A1
20020115488 Berry et al. Aug 2002 A1
20020116206 Chatani Aug 2002 A1
20020116275 Woolston Aug 2002 A1
20020116283 Chatani Aug 2002 A1
20020116471 Shteyn Aug 2002 A1
20020116479 Ishida et al. Aug 2002 A1
20020120925 Logan Aug 2002 A1
20020122052 Reich et al. Sep 2002 A1
20020129094 Reisman Sep 2002 A1
20020133707 Newcombe Sep 2002 A1
20020141338 Burke Oct 2002 A1
20020143781 Lavoie et al. Oct 2002 A1
20020147979 Corson Oct 2002 A1
20020161709 Floyd et al. Oct 2002 A1
20020188360 Muramori et al. Dec 2002 A1
20020196940 Isaacson et al. Dec 2002 A1
20020198929 Jones et al. Dec 2002 A1
20020198930 Jones et al. Dec 2002 A1
20030014759 Van Stam Jan 2003 A1
20030018719 Ruths et al. Jan 2003 A1
20030018797 Dunning et al. Jan 2003 A1
20030023910 Myler et al. Jan 2003 A1
20030032486 Elliott Feb 2003 A1
20030037033 Nyman et al. Feb 2003 A1
20030037150 Nakagawa Feb 2003 A1
20030055892 Huitema et al. Mar 2003 A1
20030073494 Kalpakian et al. Apr 2003 A1
20030074456 Yeung et al. Apr 2003 A1
20030076842 Johansson et al. Apr 2003 A1
20030119537 Haddad Jun 2003 A1
20030121043 Reinold et al. Jun 2003 A1
20030131251 Fetkovich Jul 2003 A1
20030135513 Quinn et al. Jul 2003 A1
20030142661 Chatani Jul 2003 A1
20030152034 Zhang et al. Aug 2003 A1
20030189587 White et al. Oct 2003 A1
20030190960 Jokipii et al. Oct 2003 A1
20030206597 Kolarov et al. Nov 2003 A1
20030208621 Bowman Nov 2003 A1
20030216824 Chu et al. Nov 2003 A1
20030217135 Chatani et al. Nov 2003 A1
20030217158 Datta Nov 2003 A1
20030237097 Marshall et al. Dec 2003 A1
20040003039 Humphrey et al. Jan 2004 A1
20040024879 Dingman et al. Feb 2004 A1
20040030787 Jandel et al. Feb 2004 A1
20040034536 Hughes Feb 2004 A1
20040034691 Tanimoto Feb 2004 A1
20040049086 Muragaki et al. Mar 2004 A1
20040049392 Yamada Mar 2004 A1
20040053690 Fogel et al. Mar 2004 A1
20040057348 Shteyn et al. Mar 2004 A1
20040059711 Jandel et al. Mar 2004 A1
20040063458 Hori et al. Apr 2004 A1
20040078369 Rothstein et al. Apr 2004 A1
20040105401 Lee Jun 2004 A1
20040107217 Hastings Jun 2004 A1
20040111141 Brabec et al. Jun 2004 A1
20040117443 Barsness Jun 2004 A1
20040123306 Gazda et al. Jun 2004 A1
20040131255 Ben-Yaacov et al. Jul 2004 A1
20040133512 Woolston Jul 2004 A1
20040139228 Takeda et al. Jul 2004 A1
20040148344 Navar et al. Jul 2004 A1
20040160943 Cain Aug 2004 A1
20040162059 Hiltunen et al. Aug 2004 A1
20040172476 Chapweske Sep 2004 A1
20040216125 Gazda et al. Oct 2004 A1
20040233855 Gutierrez et al. Nov 2004 A1
20040240457 Habetha et al. Dec 2004 A1
20040266336 Patsiokas et al. Dec 2004 A1
20050018312 Gruner et al. Jan 2005 A1
20050021398 McCleskey et al. Jan 2005 A1
20050021470 Martin et al. Jan 2005 A1
20050028197 White et al. Feb 2005 A1
20050033655 Woolston Feb 2005 A1
20050034162 White et al. Feb 2005 A1
20050036616 Huang et al. Feb 2005 A1
20050044568 White et al. Feb 2005 A1
20050066219 Hoffman et al. Mar 2005 A1
20050066358 Anderson et al. Mar 2005 A1
20050071807 Yanavi Mar 2005 A1
20050076379 White et al. Apr 2005 A1
20050086287 Datta Apr 2005 A1
20050086288 Datta et al. Apr 2005 A1
20050086329 Datta et al. Apr 2005 A1
20050086350 Mai Apr 2005 A1
20050086369 Mai et al. Apr 2005 A1
20050091359 Soin et al. Apr 2005 A1
20050093868 Hinckley May 2005 A1
20050097386 Datta et al. May 2005 A1
20050100022 Ramprashad May 2005 A1
20050105526 Stiemerling et al. May 2005 A1
20050157749 Lee et al. Jul 2005 A1
20050182937 Bedi Aug 2005 A1
20050183127 Ngo et al. Aug 2005 A1
20050188373 Inoue Aug 2005 A1
20050198296 Teodosiu et al. Sep 2005 A1
20050198388 Teodosiu et al. Sep 2005 A1
20050240897 Kailas Oct 2005 A1
20050251577 Guo et al. Nov 2005 A1
20050254366 Amar Nov 2005 A1
20050259637 Chu et al. Nov 2005 A1
20050262411 Vertes et al. Nov 2005 A1
20050286426 Padhye et al. Dec 2005 A1
20060075127 Juncker et al. Apr 2006 A1
20060089163 Khawand et al. Apr 2006 A1
20060100020 Kasai May 2006 A1
20060123053 Scannell, Jr. Jun 2006 A1
20060133328 Levendel et al. Jun 2006 A1
20060143650 Tanikawa et al. Jun 2006 A1
20060146704 Ozer et al. Jul 2006 A1
20060177139 Marcellin et al. Aug 2006 A1
20060195748 Chen et al. Aug 2006 A1
20060227372 Takayanagi Oct 2006 A1
20060247011 Gagner Nov 2006 A1
20060253595 Datta Nov 2006 A1
20060256210 Ryall et al. Nov 2006 A1
20060259604 Kotchavi et al. Nov 2006 A1
20060271767 Osanai et al. Nov 2006 A1
20060277541 Sproul et al. Dec 2006 A1
20060288103 Gobara et al. Dec 2006 A1
20060288394 Thomas et al. Dec 2006 A1
20070010261 Dravida et al. Jan 2007 A1
20070046669 Choi et al. Mar 2007 A1
20070047912 Hattori et al. Mar 2007 A1
20070058792 Chaudhari et al. Mar 2007 A1
20070061460 Khan et al. Mar 2007 A1
20070076729 Takeda Apr 2007 A1
20070078002 Evans et al. Apr 2007 A1
20070078706 Datta et al. Apr 2007 A1
20070082674 Pedersen et al. Apr 2007 A1
20070086033 Tu Apr 2007 A1
20070096283 Ljung et al. May 2007 A1
20070097959 Taylor May 2007 A1
20070101369 Dolph May 2007 A1
20070118281 Adam et al. May 2007 A1
20070146347 Rosenberg Jun 2007 A1
20070165629 Chaturvedi et al. Jul 2007 A1
20070191109 Crowder et al. Aug 2007 A1
20070192382 Harris Aug 2007 A1
20070198528 Harris Aug 2007 A1
20070208748 Li Sep 2007 A1
20070217436 Markley et al. Sep 2007 A1
20070259650 Felder Nov 2007 A1
20070265089 Robarts et al. Nov 2007 A1
20080010293 Zpevak et al. Jan 2008 A1
20080013724 Shamoon et al. Jan 2008 A1
20080016507 Thomas et al. Jan 2008 A1
20080018652 Toelle et al. Jan 2008 A1
20080044162 Okada et al. Feb 2008 A1
20080046266 Gudipalley et al. Feb 2008 A1
20080102947 Hays et al. May 2008 A1
20080119286 Brunstetter et al. May 2008 A1
20080152263 Harrison Jun 2008 A1
20080153517 Lee Jun 2008 A1
20080154401 Wang Jun 2008 A1
20080180401 Khedouri et al. Jul 2008 A1
20080208667 Lymbery et al. Aug 2008 A1
20080259042 Thorn Oct 2008 A1
20080261697 Chatani Oct 2008 A1
20080280686 Dhupelia et al. Nov 2008 A1
20080301318 McCue et al. Dec 2008 A1
20080307103 Marr et al. Dec 2008 A1
20080307412 Marr et al. Dec 2008 A1
20090011835 Hansen et al. Jan 2009 A1
20090070842 Corson Mar 2009 A1
20090075634 Sinclair et al. Mar 2009 A1
20090077245 Smelyansky et al. Mar 2009 A1
20090100454 Weber Apr 2009 A1
20090138610 Gobara et al. May 2009 A1
20090150525 Edgett et al. Jun 2009 A1
20090240821 Juncker et al. Sep 2009 A1
20090315766 Khosravy et al. Dec 2009 A1
20100083189 Arlein et al. Apr 2010 A1
20100113066 Dingler et al. May 2010 A1
20100156812 Stallings et al. Jun 2010 A1
20100161496 Zalewski Jun 2010 A1
20100188353 Yoon et al. Jul 2010 A1
20100273452 Rajann et al. Oct 2010 A1
20100293072 Murrant Nov 2010 A1
20110010545 Kill et al. Jan 2011 A1
20110047598 Lindley et al. Feb 2011 A1
20110119345 Chopra et al. May 2011 A1
20110161856 Nurmi et al. Jun 2011 A1
20110289147 Styles et al. Nov 2011 A1
Foreign Referenced Citations (110)
Number Date Country
PI1002037-3 Jul 2011 BR
1371216 Sep 2002 CN
1717674 Jan 2006 CN
ZL02102091.4 Jun 2007 CN
101894577 Nov 2010 CN
103003810 Mar 2013 CN
103744473 Apr 2014 CN
103003810 Feb 2016 CN
773490 May 1997 EP
795809 Sep 1997 EP
0977200 Feb 2000 EP
1016960 Jul 2000 EP
1087323 Mar 2001 EP
1125617 Aug 2001 EP
1225767 Jul 2002 EP
1501614 Feb 2005 EP
2251869 Nov 2010 EP
2280545 Feb 2011 EP
2323095 May 2011 EP
2325543 Nov 1998 GB
2445427 Jul 2008 GB
242014 Jun 2014 IN
63232725 Sep 1988 JP
H05-501942 Apr 1993 JP
8149451 Jun 1996 JP
H09-065289 Mar 1997 JP
9244886 Sep 1997 JP
9305399 Nov 1997 JP
9326777 Dec 1997 JP
H10-056633 Feb 1998 JP
10108161 Apr 1998 JP
10133955 May 1998 JP
10222428 Aug 1998 JP
H09-090518 Oct 1998 JP
H10-328416 Dec 1998 JP
10069511 Mar 1999 JP
11143719 May 1999 JP
11234326 Aug 1999 JP
2000020795 Jan 2000 JP
2000124939 Apr 2000 JP
3079208 Jun 2000 JP
2000157724 Jun 2000 JP
2000-201343 Jul 2000 JP
2000227919 Aug 2000 JP
2000-093664 Oct 2000 JP
2000298689 Oct 2000 JP
2001-024611 Jan 2001 JP
2001169246 Jun 2001 JP
2001187273 Jul 2001 JP
2001-222762 Aug 2001 JP
2001314657 Nov 2001 JP
2002-002109 Jan 2002 JP
2002-011251 Jan 2002 JP
2002011251 Jan 2002 JP
2002-516435 Jun 2002 JP
2002-202982 Jul 2002 JP
2002-319226 Oct 2002 JP
2002-335509 Nov 2002 JP
2003-124829 Apr 2003 JP
2003-167810 Jun 2003 JP
2003-204576 Jul 2003 JP
2003-524349 Aug 2003 JP
2005-123782 May 2005 JP
2005-518560 Jun 2005 JP
2005-210752 Aug 2005 JP
2005-274992 Oct 2005 JP
2006-503449 Jan 2006 JP
2006-203507 Aug 2006 JP
2007-219178 Aug 2007 JP
2007-525122 Aug 2007 JP
4160960 Jul 2008 JP
4165686 Aug 2008 JP
2010-266865 Jan 2010 JP
2013-016189 Jan 2013 JP
5209135 Mar 2013 JP
5518568 Apr 2014 JP
1998030143 Jul 1998 KR
1998033266 Jul 1998 KR
20000060715 Oct 2000 KR
10-2002-0062595 Jul 2002 KR
10-2006-0034292 Apr 2006 KR
10-0570458 Apr 2006 KR
10-2013-0121687 Nov 2013 KR
101494479 Feb 2015 KR
2384981 Mar 2010 RU
2389067 May 2010 RU
2012155840 Jun 2014 RU
2579945 Apr 2016 RU
9103112 Mar 1991 WO
9634356 Oct 1996 WO
9849620 May 1998 WO
9844424 Oct 1998 WO
0005854 Feb 2000 WO
0027106 May 2000 WO
0063860 Oct 2000 WO
0068864 Nov 2000 WO
0163929 Aug 2001 WO
0182678 Nov 2001 WO
0201333 Jan 2002 WO
0205112 Jan 2002 WO
0235769 May 2002 WO
0201333 Jan 2003 WO
03063990 Aug 2003 WO
03071537 Aug 2003 WO
2004063843 Jul 2004 WO
2005006608 Jan 2005 WO
2005088466 Sep 2005 WO
WO2007096602 Aug 2007 WO
2008154418 Dec 2008 WO
2011149560 Dec 2011 WO
Non-Patent Literature Citations (167)
Entry
“Brief for Appellants”, In re Masayuki Chatani et al., U.S. Court of Appeals for the Federal Circuit (2007-1150) (Mar. 23, 2007).
“Brief for Appellee”, In re Masayuki Chatani et al., U.S. Court of Appeals for the Federal Circuit (2007-1150) (May 21, 2007).
“How Network Load Balancing Technology Works”, Microsoft TechNet, Mar. 28, 2003, 2007 Microsoft Corporation, http://technet2.microsoft.com/windowsserver/en/library/1611 cae3-5865-4897-a186-7 . . . .
“Image:TCP State diagram.jpg”, Wikipedia, the free encyclopedia, Publication date unknown/ Accessed Jun. 4, 2007, http://en.wikipedia.org/wiki/IMage:TCP—state—diagram.jpg.
“In Re Masayuki Chatani and Glen Van Datta”, U.S. Court of Appeals for the Federal Circuit, 2007-1150 (U.S. Appl. No. 10/221,128), Nov. 19, 2007.
“Multicast over TCP/IP HOWTO: Multicast Transport Protocols.”, Mar. 20, 1998, http://www.tldp.org/HOWTO/Multicast-HOWTO-9.html.
“Petition for Panel Rehearing,” In Re Masayuki Chatani and Glen Van Datta, Appeal From the United States Patent and Trademark Office, Board of Patent Appeals and Interferences, in the United States Court of Appeals for the Federal Circuit, 2007-1150 (U.S. Appl. No. 10/211,128), Jan. 3, 2008.
“Reliable User Datagram Protocol”, Wikipedia, the free encyclopedia, Publication date unknown/ Accessed Jun. 4, 2007, http://en.wikipedia.org/wiki/Reliable—User—Datagram—Protocol.
“Reply Brief of Appellants”, In re Masayuki Chatani et al., U.S. Court of Appeals for the Federal Circuit (2007-1150) (Jun. 4, 2007).
“Streaming Media”, Wikipedia, the free encyclopedia, Publication date unknown/ Accessed Jun. 4, 2007, http://en.wikipedia.org/wiki/Streaming—media#Protocol—issues.
“Transmission Control Protocol”, Wikipedia, the free encyclopedia, Publication Date unknown/ Accessed Jun. 4, 2007, http://en.wikipedia.org/wiki/Transmission—Control—Protocol#Ordered—data—transfer.2C—Retransmission—of—lost—packets—.26—Discarding—duplicat.
“User Datagram Protocol”, Wikipedia, the free encyclopedia, Publication date unknown/ Accessed Jun. 4, 2007, http://en.wikipedia.org/wiki/User—Datagram—Protocol#Difference—between—TCP—and—UDP.
Adya et al., “A Multi-Radio Unification Protocol for IEEE 802.11 Wireless Networks”, Microsoft Technical Report MSR-RT-2003-44, Jul. 2003.
Aronson, “Using Groupings for Networked Gaming”, Gamasutra.com, Jun. 21, 2000.
Allen, Arthur D., “Optimal Delivery of Multi-Media Content over Networks”, Burst.com Inc., Mar. 15, 2001, San Francisco, CA, USA.
Bahl et al., “SSCH: Slotted Seeded Channel Hopping for Capacity Improvement in IEEE 802.11 Ad-Hoc Wireless Networks”, ACM MobiCom, Philadelphia, PA, Sep. 2004.
Boulic et al., “Integration of Motion Control Techniques for Virtual Human and Avatar Real-time Animation”, Swiss Federal Institute of Technology, Lausanne, Switzerland, Sep. 1997.
Carter et al., “An Efficient Implementation of Interactive Video-on-Demand,” Proc. of the 8th Intl. Symp. on Modeling, Analysis & Simulation etc., IEEE, 2000.
Cavin et al., “On the Accuracy of MANET Simulators”, ACM, Toulouse, France, Oct. 2002.
Chin et al., “Implementation Experience with MANET Routing Protocols”, ACM SIGCOMM, Nov. 2002.
Chiueh, Tzi-cker, “Distributed Systems Support for Networked Games,” Computer Science Department, State University of new york at Stony Brook, Stony Brook, NY, May 1997.
Cisco Systems, Inc., “Network Flow Management: Resource Reservation for Multimedia Flows”, Mar. 19, 1999.
Corson, et al., “Internet-Based Mobile Ad Hoc networking”, IEEE Internet Computing, 1999.
Diot et al., “Adistributed Architecture for Multiplayer Interactive Applications on the Internet,” IEEE vol. 13, Issue 4, Aug. 1999.
Draves et al. “Comparison of Routing Metrics for Static Multi-Hop Wireless Networks”, ACM SIGCOMM, Portland, OR, Aug. 2004.
Draves et al., “Routing in Multi-Radio, Multi-Hop Wireless Mesh Networks”, ACM MobiCom, Phialdelphia, PA, Sep. 2004.
European Search Report for EP 03 72 1413, Jun. 30, 2005.
F. Audet, NAT Behavioral Requirements for Unicast UDP, BEHAVE Internet-Draft, Jul. 15, 2005.
Festa et al., “Netscape Alumni to Launch P2P Company”, Aug. 2, 2001.
Gelman et al., “A Store and Forward Architecture for Video-on-Demand Service,” Proc. IEEE ICC, IEEE Press; Piscataway, N.J., 1991, pp. 27.3.1-27.3.5.
Hagsand O: “Interactive Multiuser Ves in the DIVE System”, IEEE Multimedia, IEEE Service Center, New York, NY, US vol. 3, No. 1, Mar. 21, 1996, pp. 30-39, XP000582951 ISSN:1070-986X.
Hanada, “The Design of Network Game and DirecPlay”, Inside Windows, Softbank K.K., vol. 4, No. 4, pp. 42-57, Apr. 1, 1998.
Holland, et al., “A Rate-Adaptive MAC Protocol for Multi-Hop Wireless Networks”, ACM MobiCom 2001, Rome, Italy, Jul. 2001.
Hua et al., “Patching: A Multicast Technique for True Video-on-Demand Services,” Proceedings of the ACM Multimedia 98, Sep. 12, 1998, pp. 191-200.
Rosenberg, Interactive Connectivity Establishment (ICE); A Methodology for Network Address Translator (NAT) Traversal for Multimedia Session Establishment Protocols, Mmusic Internet-Draft, Oct. 25, 2004.
Rosenberg, Interactive Connectivity Establishment (ICE); A Methodology for Network Address Translator (NAT) Traversal for Offer/Answer Protocols, Mmusic Internet-Draft, Jan. 16, 2007.
Rosenberg, Interactive Connectivity Establishment (ICE); A Methodology for Network Address Translator (NAT) Traversal for Offer/Answer Protocols, Mmusic Internet-Draft, Jul. 17, 2005.
Rosenberg, Simple Traversal of UDP Through Network Address Translators (NAT), BEHAVE Internet-Draft, Jul. 17, 2005.
Rosenberg, STUN—Simple Traversal of User Datagram Protocols (UDP) Through Network Address Translators (NATs), Network Working Group, Mar. 2003.
Rosenberg, Traversal Using Relay NAT (TURN), MIDCOM Internet-Draft, Oct. 20, 2003.
Rosenberg, Interactive Connectivity Establishment (ICE):A Methodology for Network Address Translator (NAT) Traversal for Multimedia Session Establishment Protocols, Mmusic Internet-Draft, Jul. 19, 2004.
Jain et al., “Impact of Interference on Multi-hop Wireless Network Performance”, ACM MobiCom, San Diego, CA, Sep. 2003.
Reimer, J., “Cross-Platform Game Development and the next Generation of Consoles,” Nov. 7, 2005, Ars Technica LLC.
Jones, “The Microsoft Interactive TV System: An Experience Report,” Technical Report MSR-TR-97-18, Jul. 1997.
Kooser, “The Mesh Pit: Taking Wireless Networks to the Next Level”, Entrepreneur Magazine, May 2004.
Kramer et al., “Tutorial: Mobile Software Agents for Bynamic Routing”, MIT Lab, Mar. 1999.
Leuf, Bo, “Peer to Peer Collaboration and Sharing Over the Internet”, Pearson education, Inc., Boston Massachusetts, pp. 3-73 and 213-288.
Packethop, Inc., “Connectivity that Moves You: PacketHop Mobile Mesh Networking”, Belmont, California, Copyright 2003.
Pinho et al.; GloVE: A Distributed Environment for Low Cost Scalable VoD Systems; Oct. 28-30, 2002; IEEE; Proceedings of the 14th Symposium on Computer Architecture and High Performance Computing.
Qiu et al., “Optimizing the Placement of Integration Points in Multi-Hop Wireless Networks”, IEEE ICNP 2004.
Office actions mailed Jan. 27, 2005, Jul. 13, 2005, Dec. 29, 2005, May 4, 2006, Jan. 3, 2007 and Jun. 19, 2007 in U.S. Appl. No. 09/765,593, filed Jan. 22, 2001.
Office actions mailed Jun. 22, 2009 and Jun. 22, 2011 in U.S. Appl. No. 12/229,281, filed Aug. 20, 2008.
Office actions mailed Feb. 13, 2008 and Jan. 7, 2009 in U.S. Appl. No. 11/355,327, filed Feb. 15, 2006.
Office actions mailed Feb. 6, 2008 and Jan. 6, 2009 in U.S. Appl. No. 11/367,174, filed Mar. 3, 2006.
Office actions mailed Aug. 8, 2006, Feb. 9, 2007, Aug. 27, 2007, Mar. 31, 2009 and Nov. 27, 2009 in U.S. Appl. 10/359,359, filed Feb. 4, 2003.
Office actions mailed Feb. 21, 2008 and Dec. 3, 2008, in U.S. Appl. No. 11/067,100, filed Feb. 25, 2005.
Office actions mailed Oct. 24, 2006, Mar. 2, 2007, Jul. 3, 2007 and Apr. 8, 2008, in U.S. Appl. No. 11/375,526, filed Mar. 13, 2006.
Office actions mailed Jun. 25, 2009, Oct. 24, 2006, Mar. 5, 2007, Jul. 3, 2007, Apr. 9, 2008 and Apr. 1, 2010, in U.S. Appl. No. 11/403,623, filed Apr. 13, 2006.
Office Action mailed Mar. 30, 2009, in U.S. Appl. No. 12/011,903, filed Jan. 29, 2008.
Office Action mailed Jun. 24, 2010, in U.S. Appl. No. 12/049,954, filed Mar. 17, 2008.
Office actions mailed Sep. 24, 2009 and Dec. 1, 2009, in U.S. Appl. No. 12/341,212, filed Dec. 22, 2008.
Office actions mailed Mar. 27, 2008, Nov. 12, 2008, May 11, 2009, Nov. 9, 2009, Mar. 8, 2011, and Jul. 13, 2011 in U.S. Appl. No. 10/717,176, filed Nov. 19, 2003.
Office Action mailed Feb. 25, 2009, in U.S. Appl. No. 12/218,591, filed Jul. 15, 2008.
Office Action mailed Sep. 22, 2010, in U.S. Appl. No. 12/218,579, filed Jul. 15, 2008.
Office actions mailed Oct. 2, 2009 and Feb. 1, 2010, in U.S. Appl. No. 12/218,581, filed Jul. 15, 2008.
Office Action mailed Apr. 15, 2010, in U.S. Appl. No. 12/235,438, filed Sep. 22, 2008.
Office actions mailed Sep. 4, 2008, Feb. 20, 2009 and Jul. 12, 2011, in U.S. Appl. No. 11/479,829, filed Jun. 30, 2006.
Office Action mailed Aug. 17, 2011, in U.S. Appl. No. 12/465,280, filed May 13, 2009.
Office Action mailed Jun. 23, 2010, in U.S. Appl. No. 12/534,765, filed Aug. 3, 2009.
Office actions mailed Feb. 9, 2011 and Jul. 20, 2011, in U.S. Appl. No. 12/717,108, filed Mar. 3, 2010.
Office Action mailed Mar. 16, 2011, in U.S. Appl. No. 12/854,046, filed Aug. 10, 2010.
Office actions mailed Nov. 12, 2010 and Jan. 20, 2011, in U.S. Appl. No. 12/839,306, filed Jul. 19, 2010.
Office Action mailed Nov. 12, 2010, in U.S. Appl. No. 12/839,311, filed Jul. 19, 2010.
Office actions mailed Dec. 3, 2010 and May 16, 2011, in U.S. Appl. No. 12/840,977, filed Jul. 21, 2010.
Qiu et al., “Troubleshooting Multihop Wireless Networks”, Microsoft Technical Report, Microsoft Research-TR-2004-1, Nov. 2001.
Pike, R. et al., “Plan 9 from Bell Labs”, Bell Laboratories, Murray Hill, New Jersey, USA.
Shareaza; May 27, 2003.
Tran et al.; ZIGZAG: An Efficient Peer-to-Peer Scheme for Media Streaming; Mar. 30-Apr. 3, 2003.
University of Rochester, “Computer Networks—Introduction”, CSC 257/457 (Fall 2002), Sep. 9, 2002.
Wattenhofer et al., “Distributed Topology Control for Power Efficient Operation in Multihop Wireless Ad Hoc Networks,” IEEE INFOCOM 2001.
White et al. “How Computers Work”, Oct. 2003, Que, 7th Edition.
Takeda, Y., Symmetric NAT Traversal Using STUN, Internet engineering Task Force, Jun. 2003.
Cardelinini et al., “Efficient Provisioning of Service Level Agreements for Service Oriented Applications” Dipartimento di Informatica, Sistemi e Produzione, University of Roma, IW-SOSWE, Sep. 3, 2007, Dubrovnik Croatiia.
Raman, “Contracting over the Quality Aspect of Security in Software Products Markets,” Institute for Law and Informatics, University of Lapland, QoP '06, Oct. 30, 2006. Alexandria, Virginia.
Jamieson et al. “A Metric Evaluation of Game Application software”. Oct. 13-15, 2005, Submitted to The Future Play Conference, Michigan State University MI, pp. 1-8.
Carrington et al. “How Well Can Simple Metrics Represent the Performance of HPC Applications?” Nov. 2005 IEEE computer Society, 13 pages.
European Search Report in EP 02250090.4 mailed Nov. 5, 2005.
1st Communication from Examining Department in EP 02250090.4 mailed Nov. 21, 2006.
2nd Communication from Examining Department in EP 02250090.4 mailed Dec. 17, 2010.
European Search Report in EP 10012168.0 mailed Dec. 29, 2010.
European Search Report in EP 10005039.2 mailed Aug. 23, 2010.
European Search Report in EP 10011799.3 mailed Feb. 4, 2011.
International Search Report for PCT/US2011/021420 mailed Mar. 9, 2011.
Notification re: Formal Exam for RU2012155840 /08(088394) mailed Mar. 17, 2013.
Decision to Grant/Notice of Allowance mailed Apr. 1, 2014 in JP 2010110842 filed May 13, 2010.
Notification of First Office Action for CN 02102091.4 mailed Apr. 15, 2005.
Decision to Grant for CN 02102091.4 mailed Jan. 22, 2007.
Rejection for JP 2002-002109 mailed May 24, 2005.
Rejection for JP 2002-002109 mailed Jul. 25, 2006.
Rejection for JP 2002-002109 mailed Mar. 13, 2007.
Rejection for JP 2002-002109 mailed Apr. 8, 2008.
Notice of Allowance for JP 2002-002109 mailed Jul. 1, 2009.
Notification of First Rejection for KR 10-2002-0003520 mailed Feb. 16, 2005.
Notification of Rejection for KR 10-2002-0003520 mailed Aug. 22, 2005.
Rejection for JP 2005-061185 mailed Feb. 20, 2007.
Rejection for JP 2005-061185 mailed Apr. 8, 2008.
Intention to Grant for JP 2005-061185 mailed Jun. 24, 2008.
Rejection for KR 10-2010-0044919 mailed Sep. 30, 2013.
Rejection for JP 2010-110842 mailed Dec. 18, 2012.
Rejection for JP 2010-110842 mailed Dec. 10, 2013.
Rejection for CN 201010178544.9 mailed Dec. 2, 2011.
Rejection for CN 201010178544.9 mailed Sep. 26, 2012.
Rejection for JP 2010-256247 mailed Mar. 27, 2012.
Rejection for JP 2010-256247 mailed Jul. 12, 2012.
Rejection for JP 2012-189794 mailed Nov. 6, 2012.
Decision to Grant for JP 2012-189794 mailed Feb. 19, 2013.
Notification of Second Office Action for CN 02102091.4 mailed May 12, 2006.
Notification of Third Office Action for CN 02102091.4 mailed Oct. 13, 2006.
Rejection for KR 10-2010-0044919 mailed Apr. 30, 2014.
Rule 109/110 Communication in EP 03705879.9 mailed Sep. 7, 2004.
1st Communication from the Examining Division in EP 03705879.9 mailed Mar. 21, 2007.
2nd Communication from the Examining Division in EP 03705879.9 mailed Dec. 22, 2010.
International Search Report for PCT/US03/01968 mailed Oct. 21, 2003.
TIS Committee, “Tool Interface Standard (TIS) Portable Formats Specification Version 1.1: Executable and Linkable Format (ELF),” Oct. 1993.
The Santa Cruz Operation, “System V Application Binary Interface: MIPS RISC Processor Supplement 3rd Edition,” Feb. 1996.
Anderson, David, “MIPS Mdebugging Information Version 2,” Mar. 7, 1996.
AA, Oct. 5, 2005, U.S. Appl. No. 09/765,593, filed Jan. 22, 2001.
OA, Oct. 5, 2006, U.S. Appl. No. 10/059,837, filed Jan. 28, 2002.
OA, Feb. 12, 2007, U.S. Appl. No. 10/059,837, filed Jan. 28, 2002.
OA, Aug. 3, 2007, U.S. Appl. No. 10/059,837, filed Jan. 28, 2002.
AA, Oct. 19, 2007, U.S. Appl. No. 09/765,593, filed Jan. 22, 2001.
FOA, Jan. 24, 2008, U.S. Appl. No. 10/059,837, filed Jan. 28, 2002.
OA, Feb. 24, 2009, U.S. Appl. No. 11/147,858, filed Jun. 7, 2005.
OA, Jun. 25, 2009, U.S. Appl. No. 11/251,293, filed Oct. 14, 2005.
OA, Jul. 23, 2009, U.S. Appl. No. 12/109,286, filed Apr. 24, 2008.
FOA, Aug. 18, 2009, U.S. Appl. No. 11/147,858, filed Jun. 7, 2005.
OA, Sep. 24, 2009, U.S. Appl. No. 12/341,212, filed Dec. 22, 2008.
OA, Oct. 2, 2009, U.S. Appl. No. 12/341,187, filed Dec. 22, 2008.
AA, Oct. 14, 2009, U.S. Appl. No. 11/147,858, filed Jun. 7, 2005.
NOA, Dec. 1, 2009, U.S. Appl. No. 12/341,212, filed Dec. 22, 2008.
FOA, Dec. 29, 2009, U.S. Appl. No. 11/251,293, filed Oct. 14, 2005.
FOA, Jan. 25, 2010, U.S. Appl. No. 12/229,281, filed Aug. 20, 2008.
FOA, Feb. 1, 2010, U.S. Appl. No. 12/109,286, filed Apr. 24, 2008.
AA, Jun. 10, 2010, U.S. Appl. No. 11/251,293, filed Oct. 14, 2005.
AA, Jun. 28, 2010, U.S. Appl. No. 12/229,281, filed Aug. 20, 2008.
FOA, Oct. 25, 2011, U.S. Appl. No. 12/229,281, filed Aug. 20, 2008.
NOA, Nov. 3, 2011, U.S. Appl. No. 12/690,051, filed Jan. 19, 2010.
FOA, Nov. 4, 2011, U.S. Appl. No. 10/717,176, filed Nov. 19, 2003.
NOA, Jan. 17, 2012, U.S. Appl. No. 12/690,051, filed Jan. 19, 2010.
FOA, Feb. 9, 2012, U.S. Appl. No. 12/465,280, filed May 13, 2009.
OA, Mar. 14, 2012, U.S. Appl. No. 12/786,338, filed May 24, 2010.
NOA, Mar. 27, 2012, U.S. Appl. No. 10/717,176, filed Nov. 19, 2003.
FOA, Sep. 12, 2012, U.S. Appl. No. 12/786,338, filed May 24, 2010.
NOA, Jan. 31, 2013, U.S. Appl. No. 12/786,338, filed May 24, 2010.
NOA, Mar. 14, 2013, U.S. Appl. No. 09/765,593, filed Jan. 22, 2001.
OA, Jan. 15, 2014, U.S. Appl. No. 12/229,281, filed Aug. 20, 2008.
FOA, Apr. 29, 2014, U.S. Appl. No. 12/229,281, filed Aug. 20, 2008.
Notice of Allowance for KR 10-2010-0044919 mailed Nov. 24, 2014.
Rejection for CN 201180035413.8 mailed Nov. 2, 2014.
Office Action for RU2012155840 mailed Apr. 8, 2015.
Office Action for EP10005039.2 mailed Jul. 22, 2015.
Office Action for 201180035413.8 mailed Jul. 7, 2015.
Notice of Allowance for CN 201180035413.8 mailed Dec. 15, 2015.
Office Action for EP10012168.0 mailed Mar. 31, 2016.
Summons for EP100050392 mailed Jan. 20, 2016.
Notice of Allowance for EP 02250090.4 mailed Apr. 28, 2016.
Office Action mailed Jun. 9, 2016 in Korean Patent Application 10-2012-7032498 filed Jan. 14, 2011.
Related Publications (1)
Number Date Country
20090083513 A1 Mar 2009 US
Provisional Applications (1)
Number Date Country
60973994 Sep 2007 US