|
|
|
|
|
by cwzwarich
3949 days ago
|
|
Two factors require any GC support to be behind the CPU's MMU: 1) GC itself operates on virtual addresses. 2) If you want concurrent collection you're probably going to need a read barrier, and that will require some GC / MMU interaction. The Azul Vega had a lot of interesting features to support GC (and other Java constructs), but the most important by far is the HW read barrier. |
|
2. Barriers are one method. They're among the most expensive. An IBM prototype used careful lock management (supported by lock registers) and scheduling to avoid barriers. There's actually quite a few ways in the literature to avoid barriers in concurrency. I figure a team would have to leverage them plus asynchronous I/O from CPU to FPGA for optimal performance. I see it as a series of hand-offs to FPGA which, once it has necessary information, acts on those hand-offs with CPU assuming it completed after certain time, seeing a part of memory saying so, or receiving an interrupt.
That's a rough sketch.