The present invention is a system, method, and product for improving the speed of dynamic translation systems by efficiently positioning translated instructions in a computer memory unit. More specifically, the speed of execution of translated instructions, which is a factor of particular relevance to dynamic optimization systems, may be adversely affected by inefficient jumping between traces of translated instructions. The present invention efficiently positions the traces with respect to each other and with respect to "trampoline" instructions that redirect control flow from the traces. For example, trampoline instructions may redirect control flow to an instruction emulator if the target instruction has not been translated, or to the translation of a target instruction that has been translated. When a target instruction has been translated, a backpatcher of the invention may directly backpatch the jump to the target so that the trampoline instructions are no longer needed. A method of the present invention includes: (1) designating "chunks" of memory locations, and (2) positioning a translated trace and its corresponding trampoline instructions in the same chunk. The size of the chunk generally is based on a "machine-specific shortest jump distance" that is the shortest maximum distance that a jump instruction may specify. In particular, the chunk length may be determined so that, for every translated trace and trampoline instruction positioned in the same chunk, the greatest distance between a translated jump instruction and its target trampoline instruction is not greater than the machine-specific shortest jump distance for that type of jump instruction.

La présente invention est un système, une méthode, et un produit pour améliorer la vitesse des systèmes de traduction dynamiques en plaçant efficacement des instructions traduites dans une unité de mémoire d'ordinateur. Plus spécifiquement, la vitesse de l'exécution des instructions traduites, qui est un facteur d'importance particulière pour les systèmes dynamiques d'optimisation, peut être compromise par sauter inefficace entre les traces des instructions traduites. La présente invention place efficacement les traces en ce qui concerne l'un l'autre et en ce qui concerne les instructions de "trempoline" qui réorientent l'écoulement de commande des traces. Par exemple, les instructions de trempoline peuvent réorienter l'écoulement de commande à un émulateur d'instruction si l'instruction de cible n'a pas été traduite, ou à la traduction d'une instruction de cible qui a été traduite. Quand une instruction de cible a été traduite, un backpatcher de l'invention peut directement backpatch le saut à la cible de sorte que les instructions de trempoline ne soient nécessaires plus. Une méthode de la présente invention inclut : (1) indiquant des "gros morceaux" des endroits de mémoire, et (2) plaçant une trace traduite et ses instructions correspondantes de trempoline dans le même gros morceau. La taille du gros morceau généralement est basée sur "une distance propre à une machine de saut la plus courte" qui est la distance maximum la plus courte qu'une instruction de saut peut indiquer. En particulier, la longueur de gros morceau peut être déterminée de sorte que, parce que chaque instruction traduite de trace et de trempoline placée dans le même gros morceau, la plus grande distance entre une instruction de saut traduite et sa instruction de trempoline de cible ne soit pas plus grande que la distance propre à une machine de saut la plus courte pour ce type d'instruction de saut.

 
Web www.patentalert.com

< (none)

< Multiplex amplification of short tandem repeat loci

> System for persistently encrypting critical software file to prevent installation of software program on unauthorized computers

> (none)

~ 00006