[pypy-svn] r70911 - pypy/extradoc/talk/jan10

pedronis at codespeak.net pedronis at codespeak.net
Wed Jan 27 12:39:11 CET 2010


Author: pedronis
Date: Wed Jan 27 12:39:10 2010
New Revision: 70911

Added:
   pypy/extradoc/talk/jan10/
      - copied from r70884, pypy/extradoc/talk/jitdec09/
   pypy/extradoc/talk/jan10/benchs.pdf   (contents, props changed)
Removed:
   pypy/extradoc/talk/jan10/result.png
Modified:
   pypy/extradoc/talk/jan10/talk.html
   pypy/extradoc/talk/jan10/talk.txt
Log:
various pypy technology aspects talk

Added: pypy/extradoc/talk/jan10/benchs.pdf
==============================================================================
Binary file. No diff available.

Modified: pypy/extradoc/talk/jan10/talk.html
==============================================================================
--- pypy/extradoc/talk/jitdec09/talk.html	(original)
+++ pypy/extradoc/talk/jan10/talk.html	Wed Jan 27 12:39:10 2010
@@ -5,9 +5,9 @@
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
 <meta name="generator" content="Docutils 0.5: http://docutils.sourceforge.net/" />
 <meta name="version" content="S5 1.1" />
-<title>A generated JIT compiler for Python</title>
+<title>PyPy Technologies</title>
 <meta name="author" content="Samuele Pedroni, Open End AB" />
-<meta name="date" content="December '09" />
+<meta name="date" content="January '10" />
 <style type="text/css">
 
 /*
@@ -311,13 +311,13 @@
 
 </div>
 <div id="footer">
-<h1>A generated JIT compiler for Python</h1>
+<h1>PyPy Technologies</h1>
 
 </div>
 </div>
 <div class="presentation">
 <div class="slide" id="slide0">
-<h1 class="title">A generated JIT compiler for Python</h1>
+<h1 class="title">PyPy Technologies</h1>
 <table class="docinfo" frame="void" rules="none">
 <col class="docinfo-name" />
 <col class="docinfo-content" />
@@ -325,7 +325,7 @@
 <tr><th class="docinfo-name">Author:</th>
 <td>Samuele Pedroni, Open End AB</td></tr>
 <tr><th class="docinfo-name">Date:</th>
-<td>December '09</td></tr>
+<td>January '10</td></tr>
 </tbody>
 </table>
 <!-- Definitions of interpreted text roles (classes) for S5/HTML data. -->
@@ -346,32 +346,14 @@
 =================== -->
 
 </div>
-<div class="slide" id="idea">
-<h1>Idea</h1>
-<p>Derive a dynamic compiler from a sufficiently rich intermediate representation
-of the interpreter while it is turned into a VM</p>
-<ul class="simple">
-<li>all features supported by construction</li>
-<li>semantics are more easily encoded as interpreting code</li>
-</ul>
-</div>
-<div class="slide" id="tracing-jit-compiler">
-<h1>Tracing JIT compiler</h1>
+<div class="slide" id="generated-tracing-jit-compiler">
+<h1>Generated Tracing JIT compiler</h1>
 <p>Template: use the streamlined approach introduced by tracing JITs</p>
 <ul class="simple">
 <li>identify hot loops</li>
 <li>produce linear traces with stay-on-trace checks (guards), follow calls!</li>
 <li>compile the traces to assembler which run the loop</li>
-</ul>
-</div>
-<div class="slide" id="details">
-<h1>Details</h1>
-<ul class="simple">
-<li>Identifying loops: hints for the JIT runtime to identify the
-interpreter loop, and back edges of user loops</li>
-<li>Tracing: build encoding such that interpreter functions can be
-executed and their operation recorded in the traces</li>
-<li>Exploit when heap allocation can be forgone, mirror Python frames on
+<li>exploit when heap allocation can be forgone, mirror Python frames on
 the CPU stack</li>
 </ul>
 </div>
@@ -389,24 +371,32 @@
 </div>
 <div class="slide" id="benchmarks">
 <h1>Benchmarks</h1>
-<div align="center" class="align-center"><img alt="result.png" class="align-center" src="result.png" /></div>
 </div>
-<div class="slide" id="work-left">
-<h1>Work Left</h1>
+<div class="slide" id="stackless-python-features">
+<h1>Stackless Python features</h1>
+<ul class="simple">
+<li>C stack frame chains can be migrated back and forth to the heap</li>
+<li>coroutines</li>
+<li>tasklets and channels (inspired by Limbo and predecessors)</li>
+</ul>
+</div>
+<div class="slide" id="memory-management-and-gc">
+<h1>Memory Management and GC</h1>
+<p>Pluggable GCs</p>
 <ul class="simple">
-<li>Further work on memory footprint</li>
-<li>Correct and improved behavior in the presence of exceptions: work in progress</li>
-<li>Better results for recursion, asm to asm calls</li>
-<li>Bugs, correctness (sys.settrace for example)</li>
+<li>generational GC with semi-space 2nd generation</li>
+<li>experimented with mark-and-compact GC</li>
 </ul>
+<!-- refcounting: not really -->
+<!-- Recent work in real-time GCs could be incorporated (Metronome GC) -->
 </div>
-<div class="slide" id="work-left-ii">
-<h1>Work Left (ii)</h1>
+<div class="slide" id="footprint">
+<h1>Footprint</h1>
 <ul class="simple">
-<li>Machine code management, discard no longer valid traces</li>
-<li>Make the interpreter more JIT-friendly</li>
-<li>Interpreter-level algorithmic improvements</li>
-<li>Intel x86-64</li>
+<li>larger basic footprint (code generation overhead, more extensions
+compiled in by default)</li>
+<li>smaller layout for many objects though (e.g. shared dicts for object
+instances)</li>
 </ul>
 </div>
 <div class="slide" id="links">

Modified: pypy/extradoc/talk/jan10/talk.txt
==============================================================================
--- pypy/extradoc/talk/jitdec09/talk.txt	(original)
+++ pypy/extradoc/talk/jan10/talk.txt	Wed Jan 27 12:39:10 2010
@@ -1,25 +1,16 @@
 .. include:: <s5defs.txt>
 
 =========================================================
-A generated JIT compiler for Python
+PyPy Technologies
 =========================================================
 
 :Author: Samuele Pedroni, Open End AB
-:Date: December '09
+:Date: January '10
 
 
-Idea
-==========
 
-Derive a dynamic compiler from a sufficiently rich intermediate representation
-of the interpreter while it is turned into a VM
-
-- all features supported by construction
-
-- semantics are more easily encoded as interpreting code
-
-Tracing JIT compiler
-=======================
+Generated Tracing JIT compiler
+=================================
 
 Template: use the streamlined approach introduced by tracing JITs
 
@@ -27,16 +18,7 @@
 - produce linear traces with stay-on-trace checks (guards), follow calls!
 - compile the traces to assembler which run the loop
 
-Details
-=========
-
-- Identifying loops: hints for the JIT runtime to identify the
-  interpreter loop, and back edges of user loops
-
-- Tracing: build encoding such that interpreter functions can be
-  executed and their operation recorded in the traces
-
-- Exploit when heap allocation can be forgone, mirror Python frames on
+- exploit when heap allocation can be forgone, mirror Python frames on
   the CPU stack
 
 Example
@@ -54,24 +36,34 @@
 Benchmarks
 ============
 
-.. image:: result.png
-   :align: center
+Stackless Python features
+==========================
+
+- C stack frame chains can be migrated back and forth to the heap
+- coroutines
+- tasklets and channels (inspired by Limbo and predecessors)
+
+
+Memory Management and GC
+=========================
+
+Pluggable GCs 
+
+- generational GC with semi-space 2nd generation
+- experimented with mark-and-compact GC
+
+.. refcounting: not really
+.. Recent work in real-time GCs could be incorporated (Metronome GC)
+
+Footprint
+=======================
+
+- larger basic footprint (code generation overhead, more extensions
+  compiled in by default)
 
-Work Left
-==========
+- smaller layout for many objects though (e.g. shared dicts for object
+  instances)
 
-- Further work on memory footprint
-- Correct and improved behavior in the presence of exceptions: work in progress
-- Better results for recursion, asm to asm calls
-- Bugs, correctness (sys.settrace for example)
-
-Work Left (ii)
-===============
-
-- Machine code management, discard no longer valid traces
-- Make the interpreter more JIT-friendly
-- Interpreter-level algorithmic improvements
-- Intel x86-64
 
 Links
 ============



More information about the Pypy-commit mailing list