[pypy-dev] Rough draft of x86-64 JIT backend GSoC proposal
fijall at gmail.com
Wed Mar 31 04:03:58 CEST 2010
Just a meta-note, how about keeping it in svn? email is rarely a good
version control system (that's why you have your user dir on
codespeak, or you can create one in /svn/user)
On Tue, Mar 30, 2010 at 4:18 PM, Jason Creighton <jcreigh at gmail.com> wrote:
> I agree with fijal that it seems short, but I don't know what else to
> put in.
> Updated draft:
> === Proposal ===
> The PyPy JIT, which has shown substantial performance improvements over
> other implementations of Python, including CPython and Unladen Swallow,
> does not currently support the x86-64 instruction set, making it
> impractical to use on 64-bit x86 systems.
> My proposal is to extend the existing x86 JIT backend to support x86-64
> as well.
> === Deliverables ===
> Stable, tested 64-bit JIT for PyPy on Linux, Mac OS X and Windows merged
> into PyPy trunk.
> === Implementation plan ===
> This is not a research proposal. The goal is simply to have a PyPy JIT
> that works out of the box on 64-bit CPUs, implemented as conservatively
> as possible.
> As such, I will attempt to reuse as much of the existing x86 backend
> that I can. In fact, the architectural similarities between x86 and
> x86-64 are large enough that I hope to implement a unified x86/x86-64
> backend with the majority of the code working for either platform.
> There is an existing branch that, while very incomplete, has the
> beginnings of a unified x86/x86-64 instruction encoding module, which
> can encode instructions for either x86 or x86-64 in a fairly seamless
> manner. I intend to use that branch as a starting point.
> 1. Take the existing "remove-ri386-multimethod-2" branch and use it as a
> basis for instruction encoding. Modify the existing 32-bit backend to
> use the new instruction encoding scheme.
> 2. Add 64-bit support to the backend,
> A) Add tests to ensure that 64-bit instructions are being
> generated correctly.
> B) Modify register allocator to use new general purpose and
> floating point registers.
> C) Port 32-bit specific portions of the JIT (for example, guard
> failure handling) to 64-bit
> 3. Test 64-bit on Mac OS X and Windows, and fix inevitable issues.
> If the 64-bit JIT is completed before the end of the summer, I will
> spend the remainder of the time working on other 64-bit or JIT-related
> aspects of PyPy, for example adapting the "asmgcc" garbage collection
> strategy to 64-bit.
> === Development Workflow ===
> The PyPy project makes extensive use of Subversion branches for
> development, so I will follow that convention and develop the 64-bit JIT
> in one or more branches.
> For unit testing, I will use the py.test framework (already used
> throughout PyPy), aiming for 100% test coverage.
> === About Me ===
> I am a first-year Computer Science student at Flathead Valley Community
> College planning to transfer to Montana State University.
> I have several years of professional development experience. I am
> comfortable programming in Python, C and x86 assembly.
> Starting May 17th, I will be able to commit 40 hours/week to the project
> until the end of August. I may travel for a few weeks at some point in
> the summer, but I will have a laptop with me with the expectation of
> continuing full-time work.
> === Contact information ===
> Email: jcreigh at gmail.com
> IRC: "jcreigh" on Freenode
> Blog: http://jcreigh.blogspot.com
> Phone: <will be included in actual proposal, but pypy-dev is publicly
> pypy-dev at codespeak.net
More information about the Pypy-dev