Time for an update...
For a while now we've had some tricky reliability issues on the single core Pies. There's more details a few posts back:
http://www.stardot.org.uk/forums/viewto ... 70#p150565
Over the last several weeks, Dominic, myself and Ed have been working hard towards this goal.hoglet wrote: What does the future hold?
There is a plan afoot to shift the 6502 request handling to a process on the GPU, which we believe will really help. But this is a pretty big change, and Dominic (dp11) who is driving this work hasn't had much spare time. I'd very much like to see this happen, so Dominic if there's anything I can do to help, then please just ask.
It turns out the GPU on the Pi is actually far more than just a GPU. It also includes a general purpose ARM-like processor, and the details of it's instruction set have only recently been discovered (through a herculean black-box reverse engineering process). For the brave who want to know more, take a look at this page:
https://github.com/hermanhermitage/vide ... ers-Manual
What we (mostly Dominic) have done is taken the ARM assembler code we had for emulating the front end of the tube chip, and ported it to run on the GPU. This code is massively time critical - when the Beeb reads a tube register this code needs to run and provide the right data within ~300ns (six squares on the scope piccies below). Meeting this requirement 100% of the time proved to be impossible when sharing a single ARM code, hence the desire to offload this to the GPU. Again, if anyone is interested what this actually looks like, then take a look here:
https://github.com/hoglet67/PiTubeDirec ... e/tubevc.s
Just to give an idea of the benefit of this, here is a before and after picture showing the variation in tube-read times:
Original ARM-Only version: New GPU version: The Beeb needs tube read data to have settled by the grid line with "50ns" just above it.
I think the pictures speak for themselves!
So now even the lowly Pi Zero can effectively devote one (GPU) core to the tube interface and the other (ARM) core to the various Co Pro emulators. A side effect of offloading the tube handling onto the GPU is that the "fast" 65C02 Co Pro now goes even faster - 225.62MHz on the Pi Zero.
Anyway we're pleased to announce the availability of a "beta" release for testing that includes this new GPU code: I have tested this on the Pi Zero, Pi One, Pi Two and Pi Three. See the wiki for the recommended config.txt settings:
https://github.com/hoglet67/PiTubeDirec ... xt-options
We're particularly interested in people trying out the non-6502 cores, as these were the ones that were unreliable before on the Pi Zero/One.
But any feedback (positive or negative) is most welcome