Request for an improvement on the chip
Although I know you are all very busy with improving and expanding the core of the propeller, I have a simple request
Could you possibly add another 'mode' on the hub ring encoder? It wouldn't require that much more logic, and it would
improve performance on non-deterministic hub operations.
Have two modes, Deterministic and quazi-fifo. Deterministic would only allow that cog to access the hub when the
ring is at it's index like it does now. quazi-fifo would allow a cog to perform hub operations if the hub is otherwise
indisposed, prioritized by it's index and the location of the ring buffer.
IE:
If the ring is at position 1... Do deterministic op for cog 1 if it wants it, otherwise, do 2, then 3, then 4 .. 8
If the ring is at position 2... Do deterministic op for cog 2 if it wants it, otherwise, do 3, then 4, then 5 .. 8, then 1
etc.
I only really suggest this for things like interpreted code where hub accesses are almost constant, and when performing
non-timing sensitive code where speed would be helpful (like decompression and external storage routines)
Could you possibly add another 'mode' on the hub ring encoder? It wouldn't require that much more logic, and it would
improve performance on non-deterministic hub operations.
Have two modes, Deterministic and quazi-fifo. Deterministic would only allow that cog to access the hub when the
ring is at it's index like it does now. quazi-fifo would allow a cog to perform hub operations if the hub is otherwise
indisposed, prioritized by it's index and the location of the ring buffer.
IE:
If the ring is at position 1... Do deterministic op for cog 1 if it wants it, otherwise, do 2, then 3, then 4 .. 8
If the ring is at position 2... Do deterministic op for cog 2 if it wants it, otherwise, do 3, then 4, then 5 .. 8, then 1
etc.
I only really suggest this for things like interpreted code where hub accesses are almost constant, and when performing
non-timing sensitive code where speed would be helpful (like decompression and external storage routines)
Comments
the hub controller to allow more than one access per cycle to a given cog. It would still be deterministic, but would
allow higher throughput for those cases you mentioned. I don't remember whether there were any conclusions.
The main advantage was that it was implementable reasonably in hardware and was still deterministic.
I just threw this in as a system that wouldn't cause any compatibility problems (since a cog doesn't have to access on 'off cycles')