PyMTL and Pydgin Tutorial. Python Frameworks for Highly Productive Computer Architecture Research



Similar documents
PyCompArch: Python-Based Modules for Exploring Computer Architecture Concepts

12. Introduction to Virtual Machines

ECE 5745 Complex Digital ASIC Design Course Overview

Reminders. Lab opens from today. Many students want to use the extra I/O pins on

ECE 5745 Complex Digital ASIC Design, Spring Course Syllabus

Systems on Chip Design

Multi-/Many-core Modeling at Freescale

McPAT: An Integrated Power, Area, and Timing Modeling Framework for Multicore and Manycore Architectures

BY STEVE BROWN, CADENCE DESIGN SYSTEMS AND MICHEL GENARD, VIRTUTECH

7a. System-on-chip design and prototyping platforms

MAJORS: Computer Engineering, Computer Science, Electrical Engineering

Testing & Verification of Digital Circuits ECE/CS 5745/6745. Hardware Verification using Symbolic Computation

Secured Embedded Many-Core Accelerator for Big Data Processing

Architectures and Platforms

Lecture 1 Introduction to Android

IOTIVITY AND EMBEDDED LINUX SUPPORT. Kishen Maloor Intel Open Source Technology Center

ESE566 REPORT3. Design Methodologies for Core-based System-on-Chip HUA TANG OVIDIU CARNU

Agenda. Michele Taliercio, Il circuito Integrato, Novembre 2001

Multi-core Programming System Overview

Design Cycle for Microprocessors

FLIX: Fast Relief for Performance-Hungry Embedded Applications

Performance monitoring at CERN openlab. July 20 th 2012 Andrzej Nowak, CERN openlab

Intro to Virtualization

Virtual Platforms Addressing challenges in telecom product development

Neptune. A Domain Specific Language for Deploying HPC Software on Cloud Platforms. Chris Bunch Navraj Chohan Chandra Krintz Khawaja Shams

General Introduction

The Emerging Trends in Electrical and Computer Engineering

Digital Systems Design! Lecture 1 - Introduction!!

Development With ARM DS-5. Mervyn Liu FAE Aug. 2015

CS312 Solutions #6. March 13, 2015

Tensilica Software Development Toolkit (SDK)

Virtual Machines. Virtual Machines

Echtzeittesten mit MathWorks leicht gemacht Simulink Real-Time Tobias Kuschmider Applikationsingenieur

Virtual Platforms in System-on-Chip Design

Huawei Agile Network FAQ What is an agile network? What is the relationship between an agile network and SDN?... 2

Applications to Computational Financial and GPU Computing. May 16th. Dr. Daniel Egloff

SystemC Tutorial. John Moondanos. Strategic CAD Labs, INTEL Corp. & GSRC Visiting Fellow, UC Berkeley

BSc in Computer Engineering, University of Cyprus

So#ware Tools and Techniques for HPC, Clouds, and Server- Class SoCs Ron Brightwell

Undergraduate Major in Computer Science and Engineering

PERFORMANCE ANALYSIS OF KERNEL-BASED VIRTUAL MACHINE

Testing of Digital System-on- Chip (SoC)

ON SUITABILITY OF FPGA BASED EVOLVABLE HARDWARE SYSTEMS TO INTEGRATE RECONFIGURABLE CIRCUITS WITH HOST PROCESSING UNIT

Virtual Machines.

Using EDA Databases: Milkyway & OpenAccess

Android Development: a System Perspective. Javier Orensanz

Lecture 3: Evaluating Computer Architectures. Software & Hardware: The Virtuous Cycle?

Xeon+FPGA Platform for the Data Center

A hypervisor approach with real-time support to the MIPS M5150 processor

ns-3 development overview ns-3 GENI Eng. Conf., Nov

NIOS II Based Embedded Web Server Development for Networking Applications

VMware Server 2.0 Essentials. Virtualization Deployment and Management

Introduction to Android Development. Jeff Avery CS349, Mar 2013

Seeking Opportunities for Hardware Acceleration in Big Data Analytics

Fundamentals of Computer Science (FCPS) CTY Course Syllabus

9/14/ :38

Virtualization. Clothing the Wolf in Wool. Wednesday, April 17, 13

System Structures. Services Interface Structure

High-Level Synthesis for FPGA Designs


OpenSPARC Program. David Weaver Principal Engineer, UltraSPARC Architecture Principal OpenSPARC Evangelist Sun Microsystems, Inc.

Floating Point Fused Add-Subtract and Fused Dot-Product Units

ARM Cortex-A9 MPCore Multicore Processor Hierarchical Implementation with IC Compiler

High Performance or Cycle Accuracy?

Application Note: AN00141 xcore-xa - Application Development

Codesign: The World Of Practice

Beyond Virtualization: A Novel Software Architecture for Multi-Core SoCs. Jim Ready September 18, 2012

Enterprise-Class Virtualization with Open Source Technologies

LASTLINE WHITEPAPER. In-Depth Analysis of Malware

OpenSoC Fabric: On-Chip Network Generator

An Embedded Wireless Mini-Server with Database Support

Unit 4: Performance & Benchmarking. Performance Metrics. This Unit. CIS 501: Computer Architecture. Performance: Latency vs.

5MD00. Assignment Introduction. Luc Waeijen

KEEP IT SYNPLE STUPID

Chapter 3.2 C++, Java, and Scripting Languages. The major programming languages used in game development.

CHAPTER 1 INTRODUCTION

Jenkins World Tour 2015 Santa Clara, CA, September 2-3

Enhanced Project Management for Embedded C/C++ Programming using Software Components

Research and Design of Universal and Open Software Development Platform for Digital Home

Java and Real Time Storage Applications

Extending the Power of FPGAs. Salil Raje, Xilinx

Reconfigurable Architecture Requirements for Co-Designed Virtual Machines

PyCompArch: Python-Based Modules for Exploring Computer Architecture Concepts

RAPID PROTOTYPING OF DIGITAL SYSTEMS Second Edition

Example Software Development Process.

Curriculum for a Master s Degree in ECE with focus on Mixed Signal SOC Design

How To Understand The Design Of A Microprocessor

An Easier Way for Cross-Platform Data Acquisition Application Development

Building Embedded Systems

Transcription:

PyMTL and Pydgin Tutorial Python Frameworks for Highly Productive Computer Architecture Research Derek Lockhart, Berkin Ilbeyi, Christopher Batten Computer Systems Laboratory School of Electrical and Computer Engineering Cornell University 42nd Int l Symp. on Computer Architecture, June 2015

Typical Research Methodologies: Application-Level Application Algorithm Programming Language Operating System Instruction Set Arch. Microarchitecture Register-Transfer Level Gate Level Circuits Devices Technology I General Approach. Use real machines. Use real machines with dynamic instrumentation (e.g., Pin). Use fast instruction set simulators or emulators (e.g., SimIt-ARM, QEMU) I Benefits. Fast execution enables experimenting with large, realistic applications I Challenges. Difficult to explore applications for emerging architectures which do not exist yet ISCA 2015 PyMTL/Pydgin Tutorial: Python Frameworks for Highly Productive Computer Architecture Research 2 / 125

Typical Research Methodologies: Architecture-Level Application Algorithm Programming Language Operating System Instruction Set Arch. Microarchitecture Register-Transfer Level Gate Level Circuits Devices Technology I General Approach. Use standard benchmark suite (e.g., Splash2, PARSEC, Rodina). Modify standard cycle-level C/C++ simulator (e.g., SESC, Simics, gem5). Use standard high-level physical modeling tool (e.g., CACTI, Wattch, Orion, McPAT) I Benefits. More accurate than ISA simulation. Faster and more flexible design-space exploration than lower-level models I Challenges. Experimenting with large, realistic apps. Physical modeling of radically new arch ISCA 2015 PyMTL/Pydgin Tutorial: Python Frameworks for Highly Productive Computer Architecture Research 3 / 125

Typical Research Methodologies: VLSI-Level Application Algorithm Programming Language Operating System Instruction Set Arch. Microarchitecture Register-Transfer Level Gate Level Circuits Devices Technology I General Approach. Possibly start with open-source IP (e.g., FabScalar, OpenRISC/SPARC, NetMaker). Write small microbenchmarks or embedded applications. Implement SystemVerilog/Verilog/VHDL RTL (or Bluespec GAA) model of design. Use standard commercial ASIC CAD tools to estimate cycle time, area, energy I Benefits. More accurate physical characterization. Increases credibility of design I Challenges. Only small apps possible due to slow sims. Cumbersome design-space exploration ISCA 2015 PyMTL/Pydgin Tutorial: Python Frameworks for Highly Productive Computer Architecture Research 4 / 125

Vertically-Integrated Modeling Environment Application Algorithm Programming Language Operating System Instruction Set Arch. Microarchitecture Register-Transfer Level Gate Level Circuits Devices Technology App Arch VLSI I Unified package with integrated applications, test programs, cross compilers, proxy kernels, full OS kernels, ISA emulators, microarchitectural models, RTL models, ASIC/FPGA CAD scripts, and unit tests I Support for rapid/iterative design-space exploration across abstraction layers especially for emerging applications and radically new architectures ISCA 2015 PyMTL/Pydgin Tutorial: Python Frameworks for Highly Productive Computer Architecture Research 5 / 125

Highly Productive Modeling Environment Change Simulator Configuration Modify Simulator Slightly Modify Simulator Significantly Sim Time Sim Sim I Choose language at the application, architecture, and VLSI level to emphasize productivity over performance I Possibly use a single language at all abstraction levels + Write Emerging Apps + Implement RTL Models Sim Highly Productive Modeling Env Sim ISCA 2015 PyMTL/Pydgin Tutorial: Python Frameworks for Highly Productive Computer Architecture Research 6 / 125

Previous Vertically Integrated Methodology Software Toolflow C++ Application Kernel Hardware Toolflow Verilog RTL Results Cycle Count Native Compiler Native Binary Cross Compiler Cross Binary Verilog RTL Simulator Synthesis Place&Route Gate-Level Model Layout Area & Cycle Time C++ ISA Sim C++ Microarch Sim Verilog GL Simulator Software and hardware toolflows are driven by a combination of Makefiles and Autoconf Switching Activity Power Analysis Energy ISCA 2015 PyMTL/Pydgin Tutorial: Python Frameworks for Highly Productive Computer Architecture Research 7 / 125

Python-Based Vertically Integrated Methodology Software Toolflow C++ Application Kernel Hardware Toolflow PyMTL Verilog RTL Results Cycle Count Native Compiler Native Binary Cross Compiler Cross Binary Verilog PyMTL RTL Simulator RTL Synthesis Place&Route Gate-Level Model Layout Area & Cycle Time Pydgin C++ ISA Sim PyMTL C++ Microarch FL & CL Sim Verilog GL Simulator Software and hardware toolflows are driven by a combination of Makefiles and Autoconf Switching Activity Power Analysis Energy ISCA 2015 PyMTL/Pydgin Tutorial: Python Frameworks for Highly Productive Computer Architecture Research 8 / 125

Why Python? I Python is well regarded as a highly productive language with lightweight, pseudocode-like syntax I Python supports modern language features to enable rapid, agile development (dynamic typing, reflection, metaprogramming) I Python has a large and active developer and support community I Python includes extensive standard and third-party libraries I Python enables embedded domain-specific languages I Python facilitates engaging application-level researchers I Python includes built-in support for integrating with C/C++ I Python performance is improving with advanced JIT compilation ISCA 2015 PyMTL/Pydgin Tutorial: Python Frameworks for Highly Productive Computer Architecture Research 9 / 125

What&is&PyMTL?& What is PyMTL?! A!Python!EDSL!for!concurrentNstructural!hardware!modeling! A!Python!API!for!analyzing!models!described!in!the!PyMTL!EDSL!! A!Python!tool!for!simulaBng!PyMTL!FL,!CL,!and!RTL!models! A!Python!tool!for!translaBng!PyMTL!RTL!models!into!Verilog! A!Python!tesBng!framework!for!model!validaBon!! TesBng!Framework!! Model!EDSL! API! SimulaBon! Tool! TranslaBon! Tool! ISCA 2015 PyMTL/Pydgin Tutorial: Python Frameworks for Highly Productive Computer Architecture Research 10 / 125

What is PyMTL for and not (currently) for? I PyMTL is for.... Taking an accelerator design from concept to implementation. Construction of highly-parameterizable RTL chip generators. Rapid design, testing, and exploration of hardware mechanisms. Quickly prototyping models and interfacing them with GEM5. Interfacing models with imported Verilog I PyMTL is not (currently) for.... Python high-level synthesis. Many-core simulations with hundreds of cores. Full-system simulation with real OS support. Users needing a complex OOO processor model out of the box. Users needing an ARM/x86 processor model out of the box. Users needing a mature modeling framework that will not change ISCA 2015 PyMTL/Pydgin Tutorial: Python Frameworks for Highly Productive Computer Architecture Research 11 / 125

What&is&Pydgin?& What is Pydgin? Pydgin!is!a!PythonNbased!framework!for! producbvely!generabng!very!fast! Pydgin is a Python-based framework for productively generating instrucbon!set!simulators!! very fast instruction-set simulators Architectural! DescripBon! Language! Pydgin InstrucBon!Set! Interpreter!in!C! with!dbt! I Flexible, productive, pseudocode-like ADL syntax Flexible,!producBve,!pseudocodeNlike!ADL!syntax! I ADL embedded in a popular, general-purpose language ADL!embedded!in!a!popular,!generalNpurpose!language! I Tracing-JIT generator applies across many different ISAs RPython! I TracingNJIT!generator!applies!across!many!different!ISAs! Leverages advancements TranslaBon! from dynamic-language JIT research I Capable Leverages!advancements!from!dynamicNlanguage!JIT!research! of simulating RISCToolchain! instruction sets at 100 s of MIPS! ISCA 2015 PyMTL/Pydgin Tutorial: Python Frameworks for Highly Productive Computer Architecture Research 12 / 125

What is Pydgin for and not (currently) for? I Pydgin is for.... Building your own very fast instruction set simulators. Experimenting with emerging research instruction sets. Easily instrumenting an instruction set simulator for early analysis I Pydgin is not (currently) for.... Multi-core simulations (planned for the near future). Full-system simulation. Users needing an ARMv8/x86 simulator out of the box. Users needing a mature modeling framework that will not change ISCA 2015 PyMTL/Pydgin Tutorial: Python Frameworks for Highly Productive Computer Architecture Research 13 / 125

I PyMTL/Pydgin in Research PyMTL/Pydgin in Practice. PyMTL CL modeling used in recent XLOOPS accelerator project. PyMTL/Pydgin modeling used in current HLS accelerator work. PyMTL/Pydgin modeling used in current data-parallel accelerator work. Pydgin used in porting PBBS to our PARC instruction set I PyMTL/Pydgin in Teaching. Graduate-Level Complex Digital ASIC Design Course. Undergraduate-Level Computer Architecture Course ISCA 2015 PyMTL/Pydgin Tutorial: Python Frameworks for Highly Productive Computer Architecture Research 14 / 125

PyMTL Pydgin PyMTL: A Unified Framework for Vertically Integrated Computer Architecture Research [ MICRO 2014 ] https://github.com/cornell-brg/pymtl Pydgin: Generating Fast Instruction Set Simulators from Simple Architecture Descriptions with Meta-Tracing JIT Compilers [ ISPASS 2015 ] https://github.com/cornell-brg/pydgin ISCA 2015 PyMTL/Pydgin Tutorial: Python Frameworks for Highly Productive Computer Architecture Research 15 / 125

PyMTL/Pydgin Project Sponsors Funding partially provided by the National Science Foundation through NSF CAREER Award #1149464 Funding partially provided by the Defense Advanced Research Projects Agency through a DARPA Young Faculty Award ISCA 2015 PyMTL/Pydgin Tutorial: Python Frameworks for Highly Productive Computer Architecture Research 16 / 125

PyMTL/Pydgin Tutorial Organizers Derek Lockhart I N th -Year Ph.D. Candidate, ECE, Cornell University I Graduating this summer and heading to Google Platforms I Research Interests: Hardware design methodologies, computer architecture, VLSI design I Lead researcher/developer for PyMTL framework I Co-Lead researcher/developer for Pydgin framework Berkin Ilbeyi I 3 nd -Year Ph.D. Candidate, ECE, Cornell University I Research Interests: Computer architecture, just-in-time compilation, novel hardware/software interfaces I First real user of PyMTL framework for XLOOPS project I Co-Lead researcher/developer for Pydgin framework ISCA 2015 PyMTL/Pydgin Tutorial: Python Frameworks for Highly Productive Computer Architecture Research 17 / 125

PyMTL/Pydgin Tutorial Schedule 8:30am 8:50am Virtual Machine Installation and Setup 8:50am 9:00am : PyMTL/Pydgin Tutorial 9:00am 9:10am : Introduction to Pydgin 9:10am 10:00am : Adding a uction using Pydgin 10:00am 10:10am : Introduction to PyMTL 10:10am 11:00am : PyMTL Basics with 11:00am 11:30am 11:30am 11:40am 11:40am 12:30pm Coffee Break : Multi-Level Modeling with PyMTL : FL, CL, RTL Modeling of a ISCA 2015 PyMTL/Pydgin Tutorial: Python Frameworks for Highly Productive Computer Architecture Research 18 / 125