Nothing Special   »   [go: up one dir, main page]

skip to main content
10.1109/MICRO.2014.50acmconferencesArticle/Chapter ViewAbstractPublication PagesmicroConference Proceedingsconference-collections
tutorial

PyMTL: A Unified Framework for Vertically Integrated Computer Architecture Research

Published: 13 December 2014 Publication History

Abstract

Technology trends prompting architects to consider greater heterogeneity and hardware specialization have exposed an increasing need for vertically integrated research methodologies that can effectively assess performance, area, and energy metrics of future architectures. However, constructing such a methodology with existing tools is a significant challenge due to the unique languages, design patterns, and tools used in functional-level (FL), cycle-level (CL), and register-transfer-level (RTL) modeling. We introduce a new framework called PyMTL that aims to close this computer architecture research methodology gap by providing a unified design environment for FL, CL, and RTL modeling. PyMTL leverages the Python programming language to create a highly productive domain-specific embedded language for concurrent-structural modeling and hardware design. While the use of Python as a modeling and framework implementation language provides considerable benefits in terms of productivity, it comes at the cost of significantly longer simulation times. We address this performance-productivity gap with a hybrid JIT compilation and JIT specialization approach. We introduce Sim JIT, a custom JIT specialization engine that automatically generates optimized C++ for CL and RTL models. To reduce the performance impact of the remaining unspecialized code, we combine Sim JIT with an off-the-shelf Python interpreter with a meta-tracing JIT compiler (PyPy). Sim JIT+PyPy provides speedups of up to 72× for CL models and 200× for RTL models, bringing us within 4--6× of optimized C++ code while providing significant benefits in terms of productivity and usability.

References

[1]
E. K. Ardestani and J. Renau. ESESC: A Fast Multicore Simulator Using Time-Based Sampling. Int'l Symp. on High-Performance Computer Architecture, Feb 2013.
[2]
J. Bachrach et al. Chisel: Constructing Hardware in a Scala Embedded Language. Design Automation Conf., Jun 2012.
[3]
S. Belloeil et al. Stratus: A Procedural Circuit Description Language Based Upon Python. Int'l Conf. on Microelectronics, Dec 2007.
[4]
N. Binkert et al. The gem5 Simulator. SIGARCH Computer Architecture News, 39(2):1--7, Aug 2011.
[5]
P. Birsinger, R. Xia, and A. Fox. Scalable Bootstrapping for Python. Int'l Conf. on Information and Knowledge Management, Oct 2013.
[6]
C. F. Bolz et al. Tracing the Meta-Level: PyPy's Tracing JIT Compiler. Workshop on the Implementation, Compilation, Optimization of Object-Oriented Languages and Programming Systems, Jul 2009.
[7]
A. Butko et al. Accuracy Evaluation of GEM5 Simulator System. Int'l Workshop on Reconfigurable Communication-Centric Systems-on-Chip, Jul 2012.
[8]
H. W. Cain et al. Precise and Accurate Processor Simulation. Workshop on Computer Architecture Evaluation Using Commercial Workloads, Feb 2002.
[9]
L. P. Carloni, K. L. McMillan, and A. L. Sangiovanni-Vincentelli. Theory of Latency-Insensitive Design. IEEE Trans. on Computer-Aided Design of Integrated Circuits and Systems, Sep 2001.
[10]
B. Catanzaro et al. SEJITS: Getting Productivity and Performance With Selective Embedded JIT Specialization. Workshop on Programming Models for Emerging Architectures, Sep 2009.
[11]
J. C. Chaves et al. Octave and Python: High-level Scripting Languages Productivity and Performance Evaluation. HPCMP Users Group Conference, Jun 2006.
[12]
M. Chevalier-Boisvert, L. Hendren, and C. Verbrugge. Optimizing MATLAB through Just-In-Time Specialization. Int'l Conf. on Compiler Construction, Mar 2010.
[13]
B. Cmelik and D. Keppel. Shade: A Fast Instruction-Set Simulator for Execution Profiling. Int'l Conf. on Measurement and Modeling of Computer Systems (SIGMETRICS), May 1994.
[14]
J. Decaluwe. MyHDL: A Python-based Hardware Description Language. Linux Journal, Nov 2004.
[15]
R. Desikan, D. Burger, and S. W. Keckler. Measuring Experimental Error in Microprocessor Simulation. Int'l Symp. on Computer Architecture, Jun 2001.
[16]
J. Gibson et al. FLASH vs. (Simulated) FLASH: Closing the Simulation Loop. Int'l Conf. on Architectural Support for Programming Languages and Operating Systems, Dec 2000.
[17]
M. Govindan, S. W. Keckler, and D. Burger. End-to-End Validation of Architectural Power Models. Int'l Symp. on Low-Power Electronics and Design, Aug 2009.
[18]
J. P. Grossman et al. The Role of Cascade, a Cycle-Based Simulation Infrastructure, in Designing the Anton Special-Purpose Supercomputers. Design Automation Conf., Jun 2013.
[19]
A. Gutierrez et al. Sources of Error in Full-System Simulation. Int'l Symp. on Performance Analysis of Systems and Software, Mar 2014.
[20]
P. Haglund et al. Hardware Design with a Scripting Language. Int'l Conf. on Field Programmable Logic, Sep 2003.
[21]
P. Hudak. Building Domain-Specific Embedded Languages. ACM Comupting Surveys, 28(4es), Dec 1996.
[22]
E. Logaras and E. S. Manolakos. SysPy: Using Python For Processor-centric SoC Design. Int'l Conf. on Electronics, Circuits, and Systems, Dec 2010.
[23]
A. Mashtizadeh. PHDL: A Python Hardware Design Framework. M.S. Thesis, EECS Department, MIT, May 2007.
[24]
C. May. Mimic: A Fast System/370 Simulator. Symp. on Interpreters and Interpretive Techniques, Jun 1987.
[25]
W. S. Mong and J. Zhu. DynamoSim: A Trace-based Dynamically Compiled Instruction Set Simulator. Int'l Conf. on Computer-Aided Design, Nov 2004.
[26]
N. Nikhil. Bluespec System Verilog: Efficient, Correct RTL from High-Level Specifications. Int'l Conf. on Formal Methods and Models for Co-Design, Jun 2004.
[27]
Numba. Online Webpage, accessed Oct 1, 2014. http://numba.pydata.org.
[28]
T. E. Oliphant. Python for Scientific Computing. Computing in Science Engineering, 9(3):10--20, 2007.
[29]
P. R. Panda. SystemC: A Modeling Platform Supporting Multiple Design Abstractions. Int'l Symp. on Systems Synthesis, Oct 2001.
[30]
D. A. Penry. The Acceleration of Structural Microarchitectural Simulation Via Scheduling. Ph.D. Thesis, CS Department, Princeton University, Nov 2006.
[31]
D. A. Penry and D. I. August. Optimizations for a Simulator Construction System Supporting Reusable Components. Design Automation Conf., Jun 2003.
[32]
D. A. Penry et al. Exploiting Parallelism and Structure to Accelerate the Simulation of Chip Multi-processors. Int'l Symp. on High-Performance Computer Architecture, Feb 2006.
[33]
L. Prechelt. An Empirical Comparison of Seven Programming Languages. IEEE Computer, 33(10):23--29, Oct 2000.
[34]
PyTest. Online Webpage, accessed Oct 1, 2014). http://www.pytest.org.
[35]
PyTest Coverage Reporting Plugin. Online Webpage, accessed Oct 1, 2014. https://pypi.python.org/pypi/pytest-cov.
[36]
PyTest Distributed Testing Plugin. Online Webpage, accessed Oct 1, 2014. https://pypi.python.org/pypi/pytest- xdist.
[37]
Greenlet Concurrent Programming Package. Online Webpage, accessed Oct 1, 2014. http://greenlet.readthedocs.org.
[38]
A. Rubinsteyn et al. Parakeet: A Just-In-Time Parallel Accelerator for Python. USENIX Workshop on Hot Topics in Parallelism, Jun 2012.
[39]
P. Schaumont, D. Ching, and I. Verbauwhede. An Interactive Codesign Environment for Domain-Specific Coprocessors. ACM Trans. on Design Automation of Electronic Systems, 11(1):70--87, Jan 2006.
[40]
O. Shacham et al. Rethinking Digital Design: Why Design Must Change. IEEE Micro, 30(6):9--24, Nov/Dec 2010.
[41]
O. Shacham et al. Avoiding Game Over: Bringing Design to the Next Level. Design Automation Conf., Jun 2012.
[42]
S. Srinath et al. Architectural Specialization for Inter-Iteration Loop Dependence Patterns. Int'l Symp. on Microarchitecture, Dec 2014.
[43]
SystemC TLM (Transaction-level Modeling). Online Webpage, accessed Oct 1, 2014. http://www.accellera.org/downloads/standards/systemc/tlm.
[44]
N. Topham and D. Jones. High Speed CPU Simulation using JIT Binary Translation. Workshop on Modeling, Benchmarking and Simulation, Jun 2007.
[45]
M. Vachharajani, N. Vachharajani, and D. I. August. The Liberty Structural Specification Language: A High-Level Modeling Language for Component Reuse. Conference on Programming Language Design and Implementation, Jun 2004.
[46]
M. Vachharajani et al. Microarchitectural Exploration with Liberty. Int'l Symp. on Microarchitecture, Dec 2002.
[47]
M. Vachharajani et al. The Liberty Simulation Environment: A Deliberate Approach to High-Level System Modeling. ACM Trans. on Computer Systems, 24(3):211--249, Aug 2006.
[48]
Verilator. Online Webpage, accessed Oct 1, 2014. http://www.veripool.org/wiki/verilator.
[49]
J. I. Villar et al. Python as a Hardware Description Language: A Case Study. Southern Conf. on Programmable Logic, Apr 2011.
[50]
H. Wagstaff et al. Early Partial Evaluation in a JIT-compiled, Retargetable Instruction Set Simulator Generated from a High-level Architecture Description. Design Automation Conf., Jun 2013.
[51]
E. Witchel and M. Rosenblum. Embra: Fast and Flexible Machine Simulation. Int'l Conf. on Measurement and Modeling of Computer Systems (SIGMETRICS), May 1996.
[52]
M. Zhang et al. Trilobite: A Natural Modeling Framework for Processor Design Automation System. Int'l Conf. on ASIC, Oct 2009.
[53]
M. Zhang, S. Tu, and Z. Chai. PDSDL: A Dynamic System Description Language. Int'l SoC Design Conf., Nov 2008.

Cited By

View all
  • (2024)Cement: Streamlining FPGA Hardware Design with Cycle-Deterministic eHDL and SynthesisProceedings of the 2024 ACM/SIGDA International Symposium on Field Programmable Gate Arrays10.1145/3626202.3637561(211-222)Online publication date: 1-Apr-2024
  • (2023)ZyPy: Intercepting NumPy operations for acceleration on FPGAsProceedings of the 13th International Symposium on Highly Efficient Accelerators and Reconfigurable Technologies10.1145/3597031.3597033(100-106)Online publication date: 14-Jun-2023
  • (2023)Modular Hardware Design with Timeline TypesProceedings of the ACM on Programming Languages10.1145/35912347:PLDI(343-367)Online publication date: 6-Jun-2023
  • Show More Cited By

Recommendations

Comments

Please enable JavaScript to view thecomments powered by Disqus.

Information & Contributors

Information

Published In

cover image ACM Conferences
MICRO-47: Proceedings of the 47th Annual IEEE/ACM International Symposium on Microarchitecture
December 2014
697 pages
ISBN:9781479969982

Sponsors

Publisher

IEEE Computer Society

United States

Publication History

Published: 13 December 2014

Check for updates

Qualifiers

  • Tutorial
  • Research
  • Refereed limited

Conference

MICRO-47
Sponsor:

Acceptance Rates

MICRO-47 Paper Acceptance Rate 53 of 279 submissions, 19%;
Overall Acceptance Rate 484 of 2,242 submissions, 22%

Contributors

Other Metrics

Bibliometrics & Citations

Bibliometrics

Article Metrics

  • Downloads (Last 12 months)5
  • Downloads (Last 6 weeks)0
Reflects downloads up to 10 Nov 2024

Other Metrics

Citations

Cited By

View all
  • (2024)Cement: Streamlining FPGA Hardware Design with Cycle-Deterministic eHDL and SynthesisProceedings of the 2024 ACM/SIGDA International Symposium on Field Programmable Gate Arrays10.1145/3626202.3637561(211-222)Online publication date: 1-Apr-2024
  • (2023)ZyPy: Intercepting NumPy operations for acceleration on FPGAsProceedings of the 13th International Symposium on Highly Efficient Accelerators and Reconfigurable Technologies10.1145/3597031.3597033(100-106)Online publication date: 14-Jun-2023
  • (2023)Modular Hardware Design with Timeline TypesProceedings of the ACM on Programming Languages10.1145/35912347:PLDI(343-367)Online publication date: 6-Jun-2023
  • (2023)A Multi-threaded Fast Hardware Compiler for HDLsProceedings of the 32nd ACM SIGPLAN International Conference on Compiler Construction10.1145/3578360.3580254(25-36)Online publication date: 17-Feb-2023
  • (2023)LOCATORJournal of Parallel and Distributed Computing10.1016/j.jpdc.2022.12.005174:C(32-45)Online publication date: 1-Apr-2023
  • (2022)Pushing the Level of Abstraction of Digital System Design: A Survey on How to Program FPGAsACM Computing Surveys10.1145/353298955:5(1-48)Online publication date: 3-Dec-2022
  • (2022)SNS's not a synthesizerProceedings of the 49th Annual International Symposium on Computer Architecture10.1145/3470496.3527444(847-859)Online publication date: 18-Jun-2022
  • (2021)Wire sorts: a language abstraction for safe hardware compositionProceedings of the 42nd ACM SIGPLAN International Conference on Programming Language Design and Implementation10.1145/3453483.3454037(175-189)Online publication date: 19-Jun-2021
  • (2020)Efficiently exploiting low activity factors to accelerate RTL simulationProceedings of the 57th ACM/EDAC/IEEE Design Automation Conference10.5555/3437539.3437655(1-6)Online publication date: 20-Jul-2020
  • (2020)BYOCProceedings of the Twenty-Fifth International Conference on Architectural Support for Programming Languages and Operating Systems10.1145/3373376.3378479(699-714)Online publication date: 9-Mar-2020
  • Show More Cited By

View Options

Get Access

Login options

View options

PDF

View or Download as a PDF file.

PDF

eReader

View online with eReader.

eReader

Media

Figures

Other

Tables

Share

Share

Share this Publication link

Share on social media