Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add support for generating code to run from shared RAM. "LMM" mode. #19

Open
ZiCog opened this issue Feb 20, 2018 · 1 comment
Open

Comments

@ZiCog
Copy link

ZiCog commented Feb 20, 2018

I'm led hear because java_grinder for the Parallax Propeller just got a mention on the Parallax forums. For the first time I think:
http://forums.parallax.com/discussion/168101/propeller-java. An impressive piece of work.

I don't know if you are aware but there is a way to have a very small, tight, PASM loop execute large PASM code from shared memory. Basically it fetches instructions from shared memory, one at a time, and executes them in COG. This is known in the Propeller world as LMM mode. Large Memory Model.

The C compilers for the Propeller generate LMM code so as to allow for reasonably sized programs. Despite the fetch, execute loop they do run at a usable speed. They can also, optionally, generate COG code of course.

GCC is extra clever optimization in that it has a thing called fcache. It will compile tight C loops into COG code and load that into into cog at run time. With fcache your Mandlebrot demo would probably run as fast in LMM mode as it does all from COG!

Anyway, just thought you like a heads up on the Parallax forum post and wondered if you would be interested in getting java_grinder to generate LMM code.

@mikeakohn
Copy link
Owner

Ah! This is really cool... thank you for letting me know. I didn't have plans to re-explore the Propeller generator any time soon, but it would be cool to see the difference in speed.. so I might try and find some time in the near future to give that a shot. Thanks!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants