The J1 Forth CPU
excamera.com
excamera.com
Each core is equipped with its own little data and control Forth stacks, making it a fully fledged independent computer (that's why the more precise term is "multi-computer chips" rather than "multi-core").
The cores talk to each other via communication ports. Writing to a port suspends the core until the peer reads the value. And vice-versa. (similar to channels in Go language).
Some other interesting properties (quoting the docs):
A computer can read from multiple ports [corresponds to Go's select] and can execute instructions directly from those ports.
FINE GRAINED ENERGY CONTROL: ... The read or write instruction is automatically suspended in mid-operation if the address [one or more of communication ports and I/O pin] is inactive, consuming energy only due to transistor leakage currents, resuming when the address becomes active.
NO CLOCKS: Most computing devices have one or more clocks that synchronize all operations. When a conventional computer is powered up and waiting to respond quickly to stimuli, clock generation and distribution are consuming energy at a huge rate by our standards, yet accomplishing nothing. This is why “starting” and “stopping” the clock is a big deal and takes much time and energy for other architectures. Our architecture explicitly omits a clock, saving energy and time among other benefits.
http://www.greenarraychips.com/home/documents/greg/PB002-100...
Anything anyone in the industry dares to call a "core" (apart from NVIDIA's ALUs misnamed as "CUDA cores" or whatever) blows a GA "computer" out of the water, in particular, in terms of memory (you'll get kilobytes or more likely tens of kilobytes of cache and/or RAM per core.) And anything anyone in the industry dares to call a "computer"... well, it's in an entirely different league from a GA "computer", for starters, well, damned peripherals are considered to be a part of a "computer".
Good luck running anything of use on 144 tiny cores only talking to their neighbors, only supporting 18b integer arithmetic and having tiny RAMs for code and data. (Do you even get a DRAM interface? How about Ethernet?)
The chip is a bloody impressive achievement - an async design, no reliance on standard EDA tools, etc. etc. And perhaps it has its uses in really - really - energy-efficient applications with very - very - limited functionality.
But the "multi-computer" business... let's say that it makes GPU marketing look honest.
It's probably better to compare it with a FPGA that allows for rapid programming, than a multicore computer. Only you can sort of configure the whole thing as a SOC. Which has great power management. I'd love to see some updates from Greenarrays -- there hasn't been much news lately.
[1] http://www.greenarraychips.com/home/documents/greg/AP003-110...
[e] http://www.greenarraychips.com/home/documents/greg/AN007-141...
Also, "implement an SRAM interface" - perhaps, but not one particularly easy to program against, I believe.
Maybe "really, really smart dsp" is a way to look at it...
I mentioned DRAM because
* An FPGA could do it and the GA chips probably can't,
* You can't do a whole lot of embedded DSP apps without DRAM - it's not a question of "trying to be a PC", you just need memory to store stuff :-) and SRAM is too expensive.
Without DRAM, you're pretty much limited to what you call "streaming"; a whole lot of things don't work without being able to keep a working set in RAM. I don't argue that the chip is useless, just that it's useless in a huge range of use cases including many embedded ones, which is a sharp contrast to the connotations of its self-description as a "multi-computer chip"... And BTW even a really really dumb DSP chip can usually do DRAM :-)
I look at it as "an array of incredibly weak and energy-efficient cores" :-)
I think that it's much better than BASIC for small projects and I would love to see someone make an arduino or BASIC STAMP type product (maybe kickstarter it?) with a little bit of an ecosystem.
I think a lot of people who are hardware focused but need to do some software would benefit, and software people who want to get into hardware would benefit too.
[edit: I should say I did prefer PostScript to Forth as stack languages go, plus the the PostScript Blue Book was a lot of fun http://partners.adobe.com/public/developer/en/ps/sdk/sample/... ]
http://excamera.com/sphinx/index.html
I will let you know when it launches.
Kudos!
https://groups.google.com/forum/#!forum/comp.lang.forth
I often wonder what kind of jobs a lot of the posters do. I don't know much about the language but it's quite fun to poke around and see how small the community is.
https://github.com/phreda4/reda4https://rwmj.wordpress.com/2010/08/07/jonesforth-git-reposit...