eecs 470 lecture 20 binary translationweb.eecs.umich.edu/~twenisch/470_f07/lectures/20.pdfst ata,...

23
© Wenisch 2007 ‐‐ Portions © Austin, Brehob, Falsafi, Hill, Hoe, Lipasti, Shen, Smith, Sohi, Tyson, Vijaykumar EECS 470 Lecture 20 Binary Translation Binary Translation Fall 2007 Fall 2007 Prof. Thomas Wenisch http://www.eecs.umich.edu/courses/eecs4 http://www.eecs.umich.edu/courses/eecs4 70 Slides developed in part by Profs. Austin, Brehob, Falsafi, Hill, Hoe, Lipasti, Slides developed in part by Profs. Austin, Brehob, Falsafi, Hill, Hoe, Lipasti, Lecture 20 Slide 1 EECS 470 Shen, Smith, Sohi, Tyson, and Vijaykumar of Carnegie Mellon University, Shen, Smith, Sohi, Tyson, and Vijaykumar of Carnegie Mellon University, Purdue University, University of Michigan, and University of Wisconsin. Purdue University, University of Michigan, and University of Wisconsin.

Upload: others

Post on 09-Oct-2020

3 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: EECS 470 Lecture 20 Binary Translationweb.eecs.umich.edu/~twenisch/470_F07/lectures/20.pdfst ata, [%y] ldp%r31 [%x] …. ld %r31, [%x] aliasing, …. stam%data, [%y] use %r31 …

© Wenisch 2007 ‐‐ Portions © Austin, Brehob, Falsafi, Hill, Hoe, Lipasti, Shen, Smith, Sohi, Tyson, Vijaykumar

EECS 470

Lecture 20

Binary TranslationBinary Translation

Fall 2007Fall 2007

Prof. Thomas Wenisch

http://www.eecs.umich.edu/courses/eecs4http://www.eecs.umich.edu/courses/eecs470

Slides developed in part by Profs. Austin, Brehob, Falsafi, Hill, Hoe, Lipasti, Slides developed in part by Profs. Austin, Brehob, Falsafi, Hill, Hoe, Lipasti,

Lecture 20 Slide 1EECS 470

Shen, Smith, Sohi, Tyson, and Vijaykumar of Carnegie Mellon University, Shen, Smith, Sohi, Tyson, and Vijaykumar of Carnegie Mellon University, Purdue University, University of Michigan, and University of Wisconsin. Purdue University, University of Michigan, and University of Wisconsin.

Page 2: EECS 470 Lecture 20 Binary Translationweb.eecs.umich.edu/~twenisch/470_F07/lectures/20.pdfst ata, [%y] ldp%r31 [%x] …. ld %r31, [%x] aliasing, …. stam%data, [%y] use %r31 …

© Wenisch 2007 ‐‐ Portions © Austin, Brehob, Falsafi, Hill, Hoe, Lipasti, Shen, Smith, Sohi, Tyson, Vijaykumar

Announcements

No class WednesdayNo class Wednesday

Project due 12/10Project due 12/10

Lecture 20 Slide 2EECS 470

Page 3: EECS 470 Lecture 20 Binary Translationweb.eecs.umich.edu/~twenisch/470_F07/lectures/20.pdfst ata, [%y] ldp%r31 [%x] …. ld %r31, [%x] aliasing, …. stam%data, [%y] use %r31 …

© Wenisch 2007 ‐‐ Portions © Austin, Brehob, Falsafi, Hill, Hoe, Lipasti, Shen, Smith, Sohi, Tyson, VijaykumarWhat is Binary Translation

T ki bi t bl f ISA d tTaking a binary executable from a source ISA and generate a new executable in a target ISA such that the new executable has exactly the same functional behavior as the original

Same ISA ⇒ Optimizationcompiler instruction scheduling is a restricted form of translation

ti i i ld bi i f b t ISA tibl h dre‐optimizing old binaries for new, but ISA‐compatible, hardwareReoptimization can improve performance regardless whether implementation details are exposed by the ISA

Across ISAs  ⇒ Overcoming binary compatibilitytwo processors are “binary compatible” if they can run the same set of binaries (from BIOS to OS to applications)set of binaries (from BIOS to OS to applications)Strong economic incentive

How to get all of the popular software to run on my new processor?

Lecture 20 Slide 3EECS 470

How to get my software to run on all of the popular processors?

Page 4: EECS 470 Lecture 20 Binary Translationweb.eecs.umich.edu/~twenisch/470_F07/lectures/20.pdfst ata, [%y] ldp%r31 [%x] …. ld %r31, [%x] aliasing, …. stam%data, [%y] use %r31 …

© Wenisch 2007 ‐‐ Portions © Austin, Brehob, Falsafi, Hill, Hoe, Lipasti, Shen, Smith, Sohi, Tyson, Vijaykumar

What is so hard about it?It is always possible to “interpret” an executable from any 

ISA on a machine of any ISA

T i hi i l iTuring machine simulation

But, naïve interpreters incur a lot of overhead and thus run slower and use more memoryslower and use more memory

Binary translation is not interpretationBinary translation is not interpretationemits new binaries that runs natively on the target ISA

b diffi lt if th ISA ( 86) thcan be very difficult if the source ISA (e.g x86) or the source executable (e.g. hand‐crafted assembly code) is not nice 

Lecture 20 Slide 4EECS 470

Without the high‐level source code, you can’t always statically tell what an executable is going to do

Page 5: EECS 470 Lecture 20 Binary Translationweb.eecs.umich.edu/~twenisch/470_F07/lectures/20.pdfst ata, [%y] ldp%r31 [%x] …. ld %r31, [%x] aliasing, …. stam%data, [%y] use %r31 …

© Wenisch 2007 ‐‐ Portions © Austin, Brehob, Falsafi, Hill, Hoe, Lipasti, Shen, Smith, Sohi, Tyson, Vijaykumar

Some Hard Problems in TranslationDay‐to‐day problems

Floating‐point representation and operations Precise exceptions and interruptsPrecise exceptions and interrupts

More obscure problems(Executables compiled from high‐level languages tend not to have 

these kind of problems)Self‐modifying codeA program can construct an instruction (in the old format) as a data word,  store it to memory, and jump to it

Self‐referential codeA program can checksum the code segment and compare it against 

t d l b d th i i l t bla stored value based on the original executableRegister Indirect jumps to computed addressesA program might compute a jump target that is only appropriate for the original binary format and layout

Lecture 20 Slide 5EECS 470

the original binary format and layoutA program can jump to the middle of an x86 inst on purpose

“Undocumented” x86 “features”

Page 6: EECS 470 Lecture 20 Binary Translationweb.eecs.umich.edu/~twenisch/470_F07/lectures/20.pdfst ata, [%y] ldp%r31 [%x] …. ld %r31, [%x] aliasing, …. stam%data, [%y] use %r31 …

© Wenisch 2007 ‐‐ Portions © Austin, Brehob, Falsafi, Hill, Hoe, Lipasti, Shen, Smith, Sohi, Tyson, Vijaykumar

Static vs. Dynamic TranslationStatic

+  May have source information (or at least have object code)+ Can spend as much time as you need (days to months)+  Can spend as much time as you need (days to months)‐ Isn’t always safe or possible‐ Not transparent to users

Dynamic‐ Translation time is part of program execution time ⇒ Can’t do very complex analysis / optimization⇒ Can t do very complex analysis / optimization⇒ Infrequently used code sections cost as much to translate as frequently used code sections

l l f‐ No source‐level information+ Has runtime information (dynamic profiling and optimization)+ Can fall back to interpretation if all else fails

Lecture 20 Slide 6EECS 470

+  Can be completely transparent to users

Page 7: EECS 470 Lecture 20 Binary Translationweb.eecs.umich.edu/~twenisch/470_F07/lectures/20.pdfst ata, [%y] ldp%r31 [%x] …. ld %r31, [%x] aliasing, …. stam%data, [%y] use %r31 …

© Wenisch 2007 ‐‐ Portions © Austin, Brehob, Falsafi, Hill, Hoe, Lipasti, Shen, Smith, Sohi, Tyson, Vijaykumar

How can binary translation be used?P ti ld ft t l tf ( t ti diff t ISA)Porting old software to new platforms (static, different‐ISA)

e.g translator from DEC VAX to Alpha

Binary Augmentations (static, same‐ISA)Binary Augmentations (static, same ISA)

localized modifications to shrink‐wrap binaries without sources e.g. inserting profiling code, simple optimizations

Dynamic Code Optimizations (dynamic, same‐ISA)

profile an execution and dynamically modify the executable using techniques such as trace scheduling, e.g. HP Dynamo 

Cross‐platform execution (dynamic, different‐ISA)

using a combination of interpretation and translation to very efficiently emulate a different (often nasty) ISAemulate a different (often nasty) ISAe.g. Transmeta Crusoe and Code Morphing

Efficient Virtual Machines (dynamic, different‐ISA)

Lecture 20 Slide 7EECS 470

using a combination of interpretation and translation to very efficiently emulate a different (nice‐by‐design) ISAe.g. Java virtual machines and JIT (Just‐in‐Time) compilation 

Page 8: EECS 470 Lecture 20 Binary Translationweb.eecs.umich.edu/~twenisch/470_F07/lectures/20.pdfst ata, [%y] ldp%r31 [%x] …. ld %r31, [%x] aliasing, …. stam%data, [%y] use %r31 …

© Wenisch 2007 ‐‐ Portions © Austin, Brehob, Falsafi, Hill, Hoe, Lipasti, Shen, Smith, Sohi, Tyson, Vijaykumar

A New Way to Think about ArchitectureArchitecture = dyn. translation + hardware implementation

no problem of forward or backward binary compatibilitybackward compatible processor: don’t need new softwarebackward compatible processor: don t need new software forward compatible processor: don’t need new processors

don’t need increasingly fancy HW to speedup an old ISAb th th t l t d HW b d d i d ithboth the translator and HW can be upgraded or repaired with very little disruption to the users

Processors (and systems) becomes commodity items (like DRAM)processors can become very simple but very fastslightly defective processors can still be sold with workarounds

Old l f d f b ff i l i d dOld platforms and software can be cost‐effectively revived and maintained forever 

Lecture 20 Slide 8EECS 470

Page 9: EECS 470 Lecture 20 Binary Translationweb.eecs.umich.edu/~twenisch/470_F07/lectures/20.pdfst ata, [%y] ldp%r31 [%x] …. ld %r31, [%x] aliasing, …. stam%data, [%y] use %r31 …

© Wenisch 2007 ‐‐ Portions © Austin, Brehob, Falsafi, Hill, Hoe, Lipasti, Shen, Smith, Sohi, Tyson, Vijaykumar

Transmeta Crusoe & Code Morphing

x86 applications

Completex86 OS

x86 BIOS

Completex86 

Abstraction

Code MorphingDynamic Binary Translation

NativeSW

Crusoe VLIW ProcessorHW

Crusoe boots “Code Morpher” from ROM at power‐up

C +C d M hi 86

Lecture 20 Slide 9EECS 470

Crusoe+Code Morphing == x86 processor

x86 software (including BIOS) cannot tell the difference

Page 10: EECS 470 Lecture 20 Binary Translationweb.eecs.umich.edu/~twenisch/470_F07/lectures/20.pdfst ata, [%y] ldp%r31 [%x] …. ld %r31, [%x] aliasing, …. stam%data, [%y] use %r31 …

© Wenisch 2007 ‐‐ Portions © Austin, Brehob, Falsafi, Hill, Hoe, Lipasti, Shen, Smith, Sohi, Tyson, VijaykumarCrusoe VLIW Processor

FADD ADD LD BRCC

128‐bit molecule

FPU10‐stage

ALU #07‐stage

Load/StoreUnit

Branch

64 or 128‐bit molecules directly control the in‐order VLIW pipeline (no dependence within a molecule)

1 FPU, 2 ALU, 1 LSU, and 1 BU

64 integer GPRs, 32 FPRs + shadow x86 regs

Lecture 20 Slide 10EECS 470

No hardware renaming or reordering

Same cond. code, floating‐point, and TLB format as x86

Page 11: EECS 470 Lecture 20 Binary Translationweb.eecs.umich.edu/~twenisch/470_F07/lectures/20.pdfst ata, [%y] ldp%r31 [%x] …. ld %r31, [%x] aliasing, …. stam%data, [%y] use %r31 …

© Wenisch 2007 ‐‐ Portions © Austin, Brehob, Falsafi, Hill, Hoe, Lipasti, Shen, Smith, Sohi, Tyson, Vijaykumar

Register Files

64

temporary registers forC d M hi S ft &

x86Code Morphing Software &

translated coderegisters

restorecheckpoint

shadowx86

registers

Lecture 20 Slide 11EECS 470

registers

Page 12: EECS 470 Lecture 20 Binary Translationweb.eecs.umich.edu/~twenisch/470_F07/lectures/20.pdfst ata, [%y] ldp%r31 [%x] …. ld %r31, [%x] aliasing, …. stam%data, [%y] use %r31 …

© Wenisch 2007 ‐‐ Portions © Austin, Brehob, Falsafi, Hill, Hoe, Lipasti, Shen, Smith, Sohi, Tyson, Vijaykumar

Executing x86 to as uOPs or atoms

te rder hP che

FUs

r

Tran

slatx86 uOP

Out‐of‐Or

Dispa

tch

P4 uOP

Trace Ca

Parallel F

In‐Order

Retire

O

TranslationCache

s

Code Morphing SW(translate & interpret)

x86

VLIW

Dispa

tch

VLIW

 FUs

Lecture 20 Slide 12EECS 470

Page 13: EECS 470 Lecture 20 Binary Translationweb.eecs.umich.edu/~twenisch/470_F07/lectures/20.pdfst ata, [%y] ldp%r31 [%x] …. ld %r31, [%x] aliasing, …. stam%data, [%y] use %r31 …

© Wenisch 2007 ‐‐ Portions © Austin, Brehob, Falsafi, Hill, Hoe, Lipasti, Shen, Smith, Sohi, Tyson, VijaykumarCode Morphing Software (CMS)

The only software written natively for Crusoe processorsbegins execution at power‐upfetches previously unseen x86 basic block from memorytranslates a block of x86 instructions at a time into Crusoe VLIWtranslates a block of x86 instructions at a time into Crusoe VLIWcaches the translation for future usejumps to the generated Crusoe code for execution, execution can continue directly into other blocks if translation is cachedregains control when execution reaches a unknown basic blockinterprets the execution of “unsafe” x86 instructionsinterprets the execution of  unsafe  x86 instructionsretranslates a block after collecting profiling information

CMS uses a separate region of memory that cannot be touched p g yby code translated from x86

Crusoe processors do not need to be binary compatible between ti

Lecture 20 Slide 13EECS 470

generations 

⇒ can make different design trade‐offs but needs a new translator with a new processor

Page 14: EECS 470 Lecture 20 Binary Translationweb.eecs.umich.edu/~twenisch/470_F07/lectures/20.pdfst ata, [%y] ldp%r31 [%x] …. ld %r31, [%x] aliasing, …. stam%data, [%y] use %r31 …

© Wenisch 2007 ‐‐ Portions © Austin, Brehob, Falsafi, Hill, Hoe, Lipasti, Shen, Smith, Sohi, Tyson, VijaykumarCost of Translation

Translation time is part of execution time!

Translation cost has to be amortized over repeat use

1st pass translation must be fast and safealmost like interpretationx86 instructions are examined and translated byte‐by‐byteCMS constructs a function that is equivalent to the basic blockCMS constructs a function that is equivalent to the basic blockCMS jumps to the function and regain control when the fxn returnscollects statistics, i.e. execution frequency, branch histories

Re‐translate an often “repeated” basic block (after ~50 times)

examines execution profileapplies full‐blown analysis and optimizationapplies full blown analysis and optimizationbuilds inlined Crusoe code that can run directly out of the translation cache without intervention by CMScan do cross basic block optimizations such as speculative code

Lecture 20 Slide 14EECS 470

can do cross‐basic block optimizations, such as speculative code motion and trace scheduling

Caches translation for reuse to amortize translation cost

Page 15: EECS 470 Lecture 20 Binary Translationweb.eecs.umich.edu/~twenisch/470_F07/lectures/20.pdfst ata, [%y] ldp%r31 [%x] …. ld %r31, [%x] aliasing, …. stam%data, [%y] use %r31 …

© Wenisch 2007 ‐‐ Portions © Austin, Brehob, Falsafi, Hill, Hoe, Lipasti, Shen, Smith, Sohi, Tyson, Vijaykumar

Example of a Translationx86 Binary Code

A:  addl %eax, (%esp)  // load data from stack, add to %eaxB: addl %ebx, (%esp) // load data from stack, add to %ebxC:  movl %esi, (%ebp) // load from mem (%ebp) into %esiD: subl %ecx, 5 // subtract 5 from %ecx

lit l t l ti

1st Pass Sequential Crusoe Atomsld %r30 [%esp] // A: load data from stack save to temp

literal translation

ld  %r30,  [%esp]  // A:  load data from stack, save to tempadd.c %eax, %eax, %r30 //      add to %eax, set condition code

ld %r31, [%esp] // B: load data from stack, save to templd  %r31,  [%esp]  // B:  load data from stack, save to tempadd.c %ebx, %ebx, %r31 //      add to %ebx, set condition code

ld %esi,  [%ebp] // C: load from mem (%ebp) into %esi

Lecture 20 Slide 15EECS 470

p p

sub.c %ecx, %ecx, 5 // D: subtract 5 from %ecx

Page 16: EECS 470 Lecture 20 Binary Translationweb.eecs.umich.edu/~twenisch/470_F07/lectures/20.pdfst ata, [%y] ldp%r31 [%x] …. ld %r31, [%x] aliasing, …. stam%data, [%y] use %r31 …

© Wenisch 2007 ‐‐ Portions © Austin, Brehob, Falsafi, Hill, Hoe, Lipasti, Shen, Smith, Sohi, Tyson, VijaykumarExample of an Optimization

1st Pass Sequential Crusoe Atomsld  %r30,  [%esp] add.c %eax, %eax, %r30 // cc is never tested ld  %r31,  [%esp]  // %r31 and %r30 are common sub‐expradd.c %ebx, %ebx, %r31 // cc is never tested ld %esi,  [%ebp]b % % 5sub.c %ecx, %ecx, 5

basic optimizations

2nd Pass Optimized Crusoe Atomsld  %r30,  [%esp]  // [%esp] is loaded once and reusedadd %eax, %eax, %r30 // don’t need to set condition code

// ’add %ebx, %ebx, %r30 // don’t need to set condition codeld %esi,  [%ebp]sub.c %ecx, %ecx, 5

Lecture 20 Slide 16EECS 470

Optimizations include common sub‐expr elimination, dead‐code elimination (include unnecessary cc), loop invariant removal, etc. (see L19 for more)

Page 17: EECS 470 Lecture 20 Binary Translationweb.eecs.umich.edu/~twenisch/470_F07/lectures/20.pdfst ata, [%y] ldp%r31 [%x] …. ld %r31, [%x] aliasing, …. stam%data, [%y] use %r31 …

© Wenisch 2007 ‐‐ Portions © Austin, Brehob, Falsafi, Hill, Hoe, Lipasti, Shen, Smith, Sohi, Tyson, Vijaykumar

Example of Scheduling

2nd Pass Optimized Crusoe Atomsld  %r30,  [%esp] add %eax, %eax, %r30add %ebx, %ebx, %r30ld %esi,  [%ebp]b % % 5sub.c %ecx, %ecx, 5

VLIW Scheduling

Final Pass Scheduled Crusoe Molecules{ ld %r30, [%esp] ; sub.c %ecx, %ecx, 5 }{ ld  %r30,  [%esp] ; sub.c %ecx, %ecx, 5 }{ ld %esi,  [%ebp] ; add %eax, %eax, %r30 ; add %ebx, %ebx, %r30 }

Lecture 20 Slide 17EECS 470

In‐order execution of scheduled molecules on a Crusoe processor mimics the dynamic superscalar execution of uOPs in Pentium’s 

Page 18: EECS 470 Lecture 20 Binary Translationweb.eecs.umich.edu/~twenisch/470_F07/lectures/20.pdfst ata, [%y] ldp%r31 [%x] …. ld %r31, [%x] aliasing, …. stam%data, [%y] use %r31 …

© Wenisch 2007 ‐‐ Portions © Austin, Brehob, Falsafi, Hill, Hoe, Lipasti, Shen, Smith, Sohi, Tyson, Vijaykumar

Branch PredictionStatic prediction based on dynamic profiling

Translation can favor the more frequent traversed arm of an if‐Translation can favor the more frequent traversed arm of an ifthen‐else statement by making that arm the fall through (not‐taken) path

T h d liTrace schedulingconstruct traces such that the most frequently traversed control flow paths encounters no branches at allenlarged scoped of ILP schedulingneeds compensation code when falling off trace

“select” instructionselect  instruction“SEL  CC, Rd, Rs, Rt” means if (CC) Rd=Rs else Rd=Rta limited variant of predicated execution

Lecture 20 Slide 18EECS 470

supports if‐conversion, i.e change control‐flow to dataflow

Page 19: EECS 470 Lecture 20 Binary Translationweb.eecs.umich.edu/~twenisch/470_F07/lectures/20.pdfst ata, [%y] ldp%r31 [%x] …. ld %r31, [%x] aliasing, …. stam%data, [%y] use %r31 …

© Wenisch 2007 ‐‐ Portions © Austin, Brehob, Falsafi, Hill, Hoe, Lipasti, Shen, Smith, Sohi, Tyson, Vijaykumar

Detecting Load/Store Aliasing

….%d [% ]

potential….ldp %r31 [%x]st %data, [%y]

….ld %r31, [%x]

paliasing

ldp %r31, [%x]….stam %data, [%y]

use %r31 ….use %r31

ld‐and‐protect records the location and size of the load

store‐under‐alias‐mask checks aliasing against the region protected by ldpprotected by ldp

if stam discovers a conflict, it triggers an exception so CMS can “discard” the effects of this basic block and re‐run a different 

l i h d h h l d d d d

Lecture 20 Slide 19EECS 470

translation that does not have the load and store reordered

Page 20: EECS 470 Lecture 20 Binary Translationweb.eecs.umich.edu/~twenisch/470_F07/lectures/20.pdfst ata, [%y] ldp%r31 [%x] …. ld %r31, [%x] aliasing, …. stam%data, [%y] use %r31 …

© Wenisch 2007 ‐‐ Portions © Austin, Brehob, Falsafi, Hill, Hoe, Lipasti, Shen, Smith, Sohi, Tyson, VijaykumarEliminating Repeated Loads

ld %r30, [%x]….

….ldp %r30, [%x]

st %data, [%y]….ld %r31, [%x]

….stam %data, [%y]….

Due to limited number of ISA regs, x86 programs keep most variables on the stack

ld %r3 , [%x]use %r31

….use %r30

⇒ the same value is reloaded from stack for each use 

(there isn’t a spare x86 ISA register to hold it between use)

CMS detects repeated load from the same address as common sub‐expression and holds a value in a temporary register for reuse

A store in between the loads can make the optimization unsafe

Lecture 20 Slide 20EECS 470

A store in between the loads can make the optimization unsafe

stam allows CMS to optimize for the common case

Page 21: EECS 470 Lecture 20 Binary Translationweb.eecs.umich.edu/~twenisch/470_F07/lectures/20.pdfst ata, [%y] ldp%r31 [%x] …. ld %r31, [%x] aliasing, …. stam%data, [%y] use %r31 …

© Wenisch 2007 ‐‐ Portions © Austin, Brehob, Falsafi, Hill, Hoe, Lipasti, Shen, Smith, Sohi, Tyson, Vijaykumar

Precise Exception HandlingCMS and Crusoe must emulate x86 behavior exactly, 

including precise exception

But, an x86 instruction maps to several atoms and can be reordered with atoms of other x86 instructions and can be dispersed over a large code block after optimization and h d lischeduling

Solution (assumes exceptions are rare)check point x86 machine state at the start of everycheck point x86 machine state at the start of every translated blockif execution reaches the end of the block without exception then continue to the next blockthen continue to the next blockif exceptions is triggered in the middle of a block, CMS restores x86 machine state from check point and reruns the same block by “interpreting” the original x86 code, one 

Lecture 20 Slide 21EECS 470

y p g g ,instruction at a time

Page 22: EECS 470 Lecture 20 Binary Translationweb.eecs.umich.edu/~twenisch/470_F07/lectures/20.pdfst ata, [%y] ldp%r31 [%x] …. ld %r31, [%x] aliasing, …. stam%data, [%y] use %r31 …

© Wenisch 2007 ‐‐ Portions © Austin, Brehob, Falsafi, Hill, Hoe, Lipasti, Shen, Smith, Sohi, Tyson, Vijaykumar

Check Pointing x86 Machine StateR i t Fil

Temporary registers forCode Morphing Software &

x86i t

Register File

‐ a special “commit” instruction makes a copy of x86 register contents in the h d i t

p g ftranslated code

restorecommit    

registersshadow registers

‐ shadow registers is not touched by program execution

Gated Store Buffer

shadowx86

registers

‐ “restore” restores the shadowed values

Gated Store Buffer

all stores are intercepted and held in a special bufferafter a commit point, all earlier gated stores are released to update cache or memory as appropriatecache or memory as appropriateIf a restore event is triggered, the content of the gated store buffer is discarded

After a commit any earlier effects cannot be undone

Lecture 20 Slide 22EECS 470

‐ After a commit, any earlier effects cannot be undone‐ An restore returns x86 machine state to the last commit point

Page 23: EECS 470 Lecture 20 Binary Translationweb.eecs.umich.edu/~twenisch/470_F07/lectures/20.pdfst ata, [%y] ldp%r31 [%x] …. ld %r31, [%x] aliasing, …. stam%data, [%y] use %r31 …

© Wenisch 2007 ‐‐ Portions © Austin, Brehob, Falsafi, Hill, Hoe, Lipasti, Shen, Smith, Sohi, Tyson, Vijaykumar

Performance of Transmeta’s “x86”Execution Time

TM5400 at 667 MHz is about the same as a Pentium III running at 500MHz500MHzUnamortized translation cost leads to lower benchmark results

Low CostMuch simpler hardwareTM5400 is a about 7 million transistors (P4 is at 41 Million)

Easier to design more scalable easier to reach high clock rateEasier to design, more scalable, easier to reach high clock rate, more room for caches, better yield, etcDoesn’t have to worry about binary compatibility!!

Low Powerless hardware ⇒ lower powerAdditional power management features (such as variable supply

Lecture 20 Slide 23EECS 470

Additional power management features (such as variable supply voltage and clock frequency)