De presentatie wordt gedownload. Even geduld aub

De presentatie wordt gedownload. Even geduld aub

De Transmeta Crusoe processor Een VLIW CPU met x86 compatibiliteit.

Verwante presentaties


Presentatie over: "De Transmeta Crusoe processor Een VLIW CPU met x86 compatibiliteit."— Transcript van de presentatie:

1 De Transmeta Crusoe processor Een VLIW CPU met x86 compatibiliteit

2 Agenda Voor- en nadelen van VLIW en Superscalar Voor- en nadelen van VLIW en Superscalar De Crusoe CPU De Crusoe CPU Dynamic Binary Translation – Code Morphing Dynamic Binary Translation – Code Morphing Voor- en nadelen van de Crusoe Voor- en nadelen van de Crusoe Conclusie Conclusie

3 Voor- en nadelen van VLIW Voordelen Voordelen Simpele hardware Simpele hardware Low-power Low-power Goedkoop Goedkoop Nadelen Nadelen Scheduling door compiler Scheduling door compiler Niet backwards compatibel Niet backwards compatibel

4 Voor- en nadelen van Superscalar Voordelen Voordelen Scheduling door CPU Scheduling door CPU High-performance High-performance Nadelen Nadelen Complexe hardware (veel oppervlak) Complexe hardware (veel oppervlak) Niet low-power Niet low-power Duur Duur

5 Transmeta Crusoe CPU

6 VLIW CPU heeft 2 integer units, een floating point unit, een load/store unit en een branche unit CPU heeft 2 integer units, een floating point unit, een load/store unit en een branche unit CPU kan 4 instructies parallel uitvoeren CPU kan 4 instructies parallel uitvoeren 64 integer registers en 32 floating point registers 64 integer registers en 32 floating point registers CPU krijgt VLIW instructies in de vorm van 64 of 128 bits molecules CPU krijgt VLIW instructies in de vorm van 64 of 128 bits molecules Molecules bestaan uit atoms Molecules bestaan uit atoms

7 Blokschema van de Crusoe

8 Stap 1 – van x86 naar atoms na x86 instructies na x86 instructies A. addl %eax,(%esp)// load data from stack, add to %eax A. addl %eax,(%esp)// load data from stack, add to %eax B. addl %ebx,(%esp) // ditto, for %ebx B. addl %ebx,(%esp) // ditto, for %ebx C. movl %esi,(%ebp) // load %esi from memory C. movl %esi,(%ebp) // load %esi from memory D. subl %ecx,5 // subtract 5 from %ecx register D. subl %ecx,5 // subtract 5 from %ecx register na het frontend na het frontend ld %r30,[%esp] // load from stack, into temporary ld %r30,[%esp] // load from stack, into temporary add.c %eax,%eax,%r30 // add to %eax, set condition codes. add.c %eax,%eax,%r30 // add to %eax, set condition codes. ld %r31,[%esp] ld %r31,[%esp] add.c %ebx,%ebx,%r31 add.c %ebx,%ebx,%r31 ld %esi,[%ebp] ld %esi,[%ebp] sub.c %ecx,%ecx,5 sub.c %ecx,%ecx,5

9 Stap 2 – van atoms naar optimized atoms na het frontend na het frontend ld %r30,[%esp] // load from stack, into temporary ld %r30,[%esp] // load from stack, into temporary add.c %eax,%eax,%r30 // add to %eax, set condition codes. add.c %eax,%eax,%r30 // add to %eax, set condition codes. ld %r31,[%esp] ld %r31,[%esp] add.c %ebx,%ebx,%r31 add.c %ebx,%ebx,%r31 ld %esi,[%ebp] ld %esi,[%ebp] sub.c %ecx,%ecx,5 sub.c %ecx,%ecx,5 na de optimizer na de optimizer ld %r30,[%esp] // load from stack only once ld %r30,[%esp] // load from stack only once add %eax,%eax,%r30 add %eax,%eax,%r30 add %ebx,%ebx,%r30 // reuse data loaded earlier add %ebx,%ebx,%r30 // reuse data loaded earlier ld %esi,[%ebp] ld %esi,[%ebp] sub.c %ecx,%ecx,5 // only this last condition code needed sub.c %ecx,%ecx,5 // only this last condition code needed

10 Stap 3 – van optimized atoms naar scheduled molucules na de optimizer na de optimizer ld %r30,[%esp] // load from stack only once ld %r30,[%esp] // load from stack only once add %eax,%eax,%r30 add %eax,%eax,%r30 add %ebx,%ebx,%r30 // reuse data loaded earlier add %ebx,%ebx,%r30 // reuse data loaded earlier ld %esi,[%ebp] ld %esi,[%ebp] sub.c %ecx,%ecx,5 // only this last condition code needed sub.c %ecx,%ecx,5 // only this last condition code needed na de scheduler na de scheduler 1. ld %r30,[%esp]; sub.c %ecx,%ecx,5 1. ld %r30,[%esp]; sub.c %ecx,%ecx,5 2. ld %esi,[%ebp]; add %eax,%eax,%r30; add %ebx,%ebx,%r30 2. ld %esi,[%ebp]; add %eax,%eax,%r30; add %ebx,%ebx,%r30

11 Voor- en nadelen van de Crusoe Voordelen Voordelen Nieuwe CPU -> niet hercompileren Nieuwe CPU -> niet hercompileren Code morphing software kan steeds geupdate worden Code morphing software kan steeds geupdate worden Ook andere instructie set mogelijk dan x86 Ook andere instructie set mogelijk dan x86 Low-power Low-power Hardware goedkoop Hardware goedkoop Nadelen Nadelen Veel nieuwe instructies achter elkaar worden langzaam uitgevoerd door de vertaling Veel nieuwe instructies achter elkaar worden langzaam uitgevoerd door de vertaling In het begin is hij erg traag, doordat het translation cache leeg is In het begin is hij erg traag, doordat het translation cache leeg is Gemiddelde performance (slechte maat, maar ongeveer 70% van vergelijkbare pentium III) Gemiddelde performance (slechte maat, maar ongeveer 70% van vergelijkbare pentium III)

12 Conclusie Zeer geschikt voor PDA’s en notebooks Zeer geschikt voor PDA’s en notebooks Met name voor alledaags gebruik (bijv. tekstverwerking, internet, multimedia) Met name voor alledaags gebruik (bijv. tekstverwerking, internet, multimedia)


Download ppt "De Transmeta Crusoe processor Een VLIW CPU met x86 compatibiliteit."

Verwante presentaties


Ads door Google