pymtl pydgin tutorial schedule
play

PyMTL/Pydgin Tutorial Schedule 8:30am 8:50am Virtual Machine - PowerPoint PPT Presentation

Presentation Presentation Hands-On Presentation Hands-On Presentation Hands-On Overview Pydgin Intro GCD Instr PyMTL Intro Max/RegIncr ML Modeling GCD Unit PyMTL/Pydgin Tutorial Schedule 8:30am 8:50am Virtual Machine


  1. ⇣ Presentation Presentation Hands-On Presentation Hands-On Presentation Hands-On ⌘ Overview Pydgin Intro GCD Instr PyMTL Intro Max/RegIncr ML Modeling GCD Unit PyMTL/Pydgin Tutorial Schedule 8:30am – 8:50am Virtual Machine Installation and Setup 8:50am – 9:00am Presentation: PyMTL/Pydgin Tutorial Overview 9:00am – 9:10am Presentation: Introduction to Pydgin 9:10am – 10:00am Hands-On: Adding a GCD Instruction using Pydgin 10:00am – 10:10am Presentation: Introduction to PyMTL 10:10am – 11:00am Hands-On: PyMTL Basics with Max/RegIncr 11:00am – 11:30am Coffee Break 11:30am – 11:40am Presentation: Multi-Level Modeling with PyMTL 11:40am – 12:30pm Hands-On: FL, CL, RTL Modeling of a GCD Unit PyMTL/Pydgin Tutorial: Python Frameworks for Highly Productive Computer Architecture Research ISCA 2015 19 / 125

  2. ⇣ Presentation Presentation Hands-On Presentation Hands-On Presentation Hands-On ⌘ Overview Pydgin Intro GCD Instr PyMTL Intro Max/RegIncr ML Modeling GCD Unit The Pydgin Framework !! Pydgin&ADL& State! Encoding! SemanBcs! Pydgin!! Pydgin! Interpreter! JIT! Loop! AnnotaBons! Python& RPython! ISS& TranslaBon! Script& Toolchain! Pydgin& Pydgin& ISS& DBTUISS& Executable& Executable& PyMTL/Pydgin Tutorial: Python Frameworks for Highly Productive Computer Architecture Research ISCA 2015 20 / 125

  3. ⇣ Presentation Presentation Hands-On Presentation Hands-On Presentation Hands-On ⌘ Overview Pydgin Intro GCD Instr PyMTL Intro Max/RegIncr ML Modeling GCD Unit The Pydgin ADL: ARMv5 Architectural State !! Pydgin&ADL& !!!!class!State(!object!):! State! !! Encoding! !!!!!!def!__init__(!self,!memory,!reset_addr=0x400!):! SemanBcs! !!!!!!!!self.pc!!=!reset_addr! !!!!!!!!self.rf!!=!ArmRegisterFile(!self,!num_regs=16!)! !!!!!!!!self.mem!=!memory! Pydgin!! Pydgin! !! Interpreter! JIT! !!!!!!!!self.rf[!15!]!=!reset_addr! Loop! AnnotaBons! !! !!!!!!!!#!current!program!status!register!(CPSR)! !!!!!!!!self.N!!!!=!0b0!!!!!!#!Negative!condition! Python& RPython! !!!!!!!!self.Z!!!!=!0b0!!!!!!#!Zero!condition! ISS& TranslaBon! !!!!!!!!self.C!!!!=!0b0!!!!!!#!Carry!condition! Script& Toolchain! !!!!!!!!self.V!!!!=!0b0!!!!!!#!Overflow!condition! !! !!!!!!def!fetch_pc(!self!):! !!!!!!!!return!self.pc ! Pydgin& Pydgin& ISS& DBTUISS& Executable& Executable& PyMTL/Pydgin Tutorial: Python Frameworks for Highly Productive Computer Architecture Research ISCA 2015 21 / 125

  4. ⇣ Presentation Presentation Hands-On Presentation Hands-On Presentation Hands-On ⌘ Overview Pydgin Intro GCD Instr PyMTL Intro Max/RegIncr ML Modeling GCD Unit The Pydgin ADL: ARMv5 Encodings !! Pydgin&ADL& encodings!=![! State! ! Encoding! !!['nop',!!!'00000000000000000000000000000000'],! SemanBcs! !!['mul',!!!'xxxx0000000xxxxxxxxxxxxx1001xxxx'],! !!['umull',!'xxxx0000100xxxxxxxxxxxxx1001xxxx'],! !!['adc',!!!'xxxx00x0101xxxxxxxxxxxxxxxxxxxxx'],! Pydgin!! Pydgin! !!['add',!!!'xxxx00x0100xxxxxxxxxxxxxxxxxxxxx'],! Interpreter! JIT! !!['and',!!!'xxxx00x0000xxxxxxxxxxxxxxxxxxxxx'],! Loop! AnnotaBons! !!['b',!!!!!'xxxx1010xxxxxxxxxxxxxxxxxxxxxxxx'],! !!['bl',!!!!'xxxx1011xxxxxxxxxxxxxxxxxxxxxxxx'],! !!['bic',!!!'xxxx00x1110xxxxxxxxxxxxxxxxxxxxx'],! Python& RPython! !!['bkpt',!!'111000010010xxxxxxxxxxxx0111xxxx'],! ISS& TranslaBon! ! Script& Toolchain! !!#!...! ! !!['teq',!!!'xxxx00x10011xxxxxxxxxxxxxxxxxxxx'],! !!['tst',!!!'xxxx00x10001xxxxxxxxxxxxxxxxxxxx'],! Pydgin& Pydgin& ISS& DBTUISS& ! Executable& Executable& ] ! PyMTL/Pydgin Tutorial: Python Frameworks for Highly Productive Computer Architecture Research ISCA 2015 22 / 125

  5. ⇣ Presentation Presentation Hands-On Presentation Hands-On Presentation Hands-On ⌘ Overview Pydgin Intro GCD Instr PyMTL Intro Max/RegIncr ML Modeling GCD Unit The Pydgin ADL: ARMv5 Instruction Semantics !! Pydgin&ADL& def!execute_add(!s,!inst!):! State! !! Encoding! ARM&ISA&MANUAL&SPEC& !!if!condition_passed(!s,!inst.cond!):! SemanBcs! !!!!a,!!!=!s.rf[!inst.rn!]! !!!!b,!_!=!shifter_operand(!s,!inst!)! if!ConditionPassed(cond)!then! !!!!result!=!a!+!b! ! Pydgin!! Pydgin! !!!!s.rf[!inst.rd!]!=!trim_32(result)! !!Rd!=!Rn!+!shifter_operand! Interpreter! JIT! !! ! Loop! AnnotaBons! !!if!S!==!1!and!Rd!==!R15!then! !!!!if!inst.S:! !!!!if!CurrentModeHasSPSR()!then!! !!!!!!#!...! !!!!!!CPSR!=!SPSR! !!!!!!s.N!=!(result!>>!31)&1! !!!!else!UNPREDICTABLE! Python& RPython! ! !!!!!!s.Z!=!trim_32(result)!==!0! !!else!if!S!==!1!then! ISS& TranslaBon! !!!!!!s.C!=!carry_from(result)! !!!!N!Flag!=!Rd[31]! Script& Toolchain! !!!!!!s.V!=!overflow_from(a,!b,!result)! !!!!Z!Flag!=!if!Rd!==!0!then!1!else!0! !!!!C!Flag!=!CarryFrom(Rn!+!shifter_operand)! !! !!!!V!Flag!=!OverflowFrom(Rn!+!shifter_operand) & !!!!if!inst.rd!==!15:! !!!!!!return! Pydgin& Pydgin& ISS& DBTUISS& !!s.rf[PC]!=!s.fetch_pc()!+!4 ! Executable& Executable& PyMTL/Pydgin Tutorial: Python Frameworks for Highly Productive Computer Architecture Research ISCA 2015 23 / 125

  6. ⇣ Presentation Presentation Hands-On Presentation Hands-On Presentation Hands-On ⌘ Overview Pydgin Intro GCD Instr PyMTL Intro Max/RegIncr ML Modeling GCD Unit An RPython Instruction Set Simulator !! Pydgin&ADL& ! State! ! Encoding! !! SemanBcs! def!instruction_set_interpreter(!memory!):! !!state!=!State(!memory!)! !! Pydgin!! Pydgin! !!while!True:! Interpreter! JIT! ! Loop! AnnotaBons! ! !!!!pc!!!!!!=!state.fetch_pc()! !! Python& RPython! !!!!inst!!!!=!memory[!pc!]!!!!!!#!fetch! ISS& TranslaBon! !!!!execute!=!decode(!inst!)!!!!#!decode! Script& Toolchain! !!!!execute(!state,!inst!)!!!!!!#!execute! !! ! Pydgin& Pydgin& ISS& DBTUISS& >!python!iss.py!arm_binary & Executable& Executable& PyMTL/Pydgin Tutorial: Python Frameworks for Highly Productive Computer Architecture Research ISCA 2015 24 / 125

  7. ⇣ Presentation Presentation Hands-On Presentation Hands-On Presentation Hands-On ⌘ Overview Pydgin Intro GCD Instr PyMTL Intro Max/RegIncr ML Modeling GCD Unit The RPython Translation Toolchain RPython � Source Pydgin&ADL& State! Encoding! Type � Inference SemanBcs! Pydgin!! Pydgin! Op � miza � on Interpreter! JIT! Loop! AnnotaBons! Code � Genera � on Python& RPython! ISS& TranslaBon! Script& Toolchain! Compila � on Compiled � Interpreter Pydgin& Pydgin& ISS& DBTUISS& >!./pydgin[nojit!arm_binary & Executable& Executable& PyMTL/Pydgin Tutorial: Python Frameworks for Highly Productive Computer Architecture Research ISCA 2015 25 / 125

  8. ⇣ Presentation Presentation Hands-On Presentation Hands-On Presentation Hands-On ⌘ Overview Pydgin Intro GCD Instr PyMTL Intro Max/RegIncr ML Modeling GCD Unit An RPython ISS with JIT Annotations !! Pydgin&ADL& jd!=!JitDriver(!greens!=!['pc'],! State! !!!!!!!!!!!!!!!!reds!!!=!['state']!)! Encoding! !! SemanBcs! def!instruction_set_interpreter(!memory!):! !!state!=!State(!memory!)! !! Pydgin!! Pydgin! !!while!True:! Interpreter! JIT! !!!! jd.jit_merge_point(!s.fetch_pc(),!state!)! Loop! AnnotaBons! ! !!!!pc!!!!!!=!state.fetch_pc()! !! Python& RPython! !!!!inst!!!!=!memory[!pc!]!!!!!!#!fetch! ISS& TranslaBon! !!!!execute!=!decode(!inst!)!!!!#!decode! Script& Toolchain! !!!!execute(!state,!inst!)!!!!!!#!execute! !! !!!! if!state.fetch_pc()!<!pc:!! !!!!!!jd.can_enter_jit(!s.fetch_pc(),!state!) & Pydgin& Pydgin& ISS& DBTUISS& ! Executable& Executable& PyMTL/Pydgin Tutorial: Python Frameworks for Highly Productive Computer Architecture Research ISCA 2015 26 / 125

  9. ⇣ Presentation Presentation Hands-On Presentation Hands-On Presentation Hands-On ⌘ Overview Pydgin Intro GCD Instr PyMTL Intro Max/RegIncr ML Modeling GCD Unit The RPython Translation Toolchain JIT Generator !! RPython � Source Pydgin&ADL& State! Encoding! Type � Inference SemanBcs! Pydgin!! Pydgin! Op � miza � on JIT � Generator Interpreter! JIT! Loop! AnnotaBons! Code � Genera � on Python& RPython! ISS& TranslaBon! Script& Toolchain! Compila � on Compiled � Interpreter � with � JIT Pydgin& Pydgin& ISS& DBTUISS& >!./pydgin[jit!arm_binary & Executable& Executable& PyMTL/Pydgin Tutorial: Python Frameworks for Highly Productive Computer Architecture Research ISCA 2015 27 / 125

  10. ⇣ Presentation Presentation Hands-On Presentation Hands-On Presentation Hands-On ⌘ Overview Pydgin Intro GCD Instr PyMTL Intro Max/RegIncr ML Modeling GCD Unit JIT Annotations !! Crea>ng&a&compe>>ve&JIT&requires& addi>onal&RPython&JIT&hints:&& & + !Minimal!JIT!AnnotaBons! + !Elidable!InstrucBon!Fetch! + !Elidable!Decode! + !Constant!PromoBon!of!PC!and!Memory! + !WordNBased!Target!Memory! + !Loop!Unrolling!in!InstrucBon!SemanBcs! + !Virtualizable!PC!and!StaBsBcs!! See&our&paper&in&ISPASS2015&for&& detailed&informa>on! ! PyMTL/Pydgin Tutorial: Python Frameworks for Highly Productive Computer Architecture Research ISCA 2015 28 / 125

Download Presentation
Download Policy: The content available on the website is offered to you 'AS IS' for your personal information and use only. It cannot be commercialized, licensed, or distributed on other websites without prior consent from the author. To download a presentation, simply click this link. If you encounter any difficulties during the download process, it's possible that the publisher has removed the file from their server.

Recommend


More recommend