Propeller 'Super Computer'
LoopyByteloose
Posts: 12,537
With the high degree of smarts around Parallax Forums I wonder if I am reinventing the wheel?
Has anybody created a parallel computing configuration for multiple Propeller chips?
I have just soldered up 3 Propeller Proto Boards into a stack configuration that is open ended: one could easily stack 10 boards if one was so inclined. I have provided for a 16 pin bus of which I presume an 8 bit data bus and and 8 bit system control bus is useful. The other 16 pins remain for multiple video, mouse, and key board or whatever I/O one might like to localize. Without these features, the bus could accomodate nearly all of the I/O pin allotment.
The system uses 9 pins wire wrap strips having a socket on top and an extended pin for plug-in below. Ground is shared system wide, but 3.3 volt power is localized to each Proto Board. I have two ground connections per board, so I am wondering about potential for ground loops exists.
I have no code for this. I presume that I need to provide a system wide clock on one of the pins to synch all Propeller read and writes to the system wide data bus. Three pins might be used to provide a board address of 3 bits [noparse][[/noparse]for a stack of up to 8 boards]. That leaves another 4 pins for greater system control, maybe an interrupt or read/write indicator. I imagine there is some pro and con argument of peer-to-peer versus master/slave relationships within the stack.
At this point, I need to clean up the stack of boards and provide a power harness for a photo. Any suggestions are welcome.
There is one 'trick' to get the boards to stack properly. In addition to the wire wrap strip providing a plug top-side and a pin bottom-side, I use another 1x10pin connector [noparse][[/noparse]there are no nine pin of this kind] that allows the height to be somewhat adjustible. Wire wrap pins will NOT properly plug into their own sockets as they are too fat. On the other hand, this additional connector is flat pinned on the board side, while accepting of the fat wire wrap pin. I've used this configuration before in fit stackable architecture.
Let me know what you know and what you think.
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
Ain't gadgetry a wonderful thing?
aka G. Herzog [noparse][[/noparse] 黃鶴 ] in Taiwan
Has anybody created a parallel computing configuration for multiple Propeller chips?
I have just soldered up 3 Propeller Proto Boards into a stack configuration that is open ended: one could easily stack 10 boards if one was so inclined. I have provided for a 16 pin bus of which I presume an 8 bit data bus and and 8 bit system control bus is useful. The other 16 pins remain for multiple video, mouse, and key board or whatever I/O one might like to localize. Without these features, the bus could accomodate nearly all of the I/O pin allotment.
The system uses 9 pins wire wrap strips having a socket on top and an extended pin for plug-in below. Ground is shared system wide, but 3.3 volt power is localized to each Proto Board. I have two ground connections per board, so I am wondering about potential for ground loops exists.
I have no code for this. I presume that I need to provide a system wide clock on one of the pins to synch all Propeller read and writes to the system wide data bus. Three pins might be used to provide a board address of 3 bits [noparse][[/noparse]for a stack of up to 8 boards]. That leaves another 4 pins for greater system control, maybe an interrupt or read/write indicator. I imagine there is some pro and con argument of peer-to-peer versus master/slave relationships within the stack.
At this point, I need to clean up the stack of boards and provide a power harness for a photo. Any suggestions are welcome.
There is one 'trick' to get the boards to stack properly. In addition to the wire wrap strip providing a plug top-side and a pin bottom-side, I use another 1x10pin connector [noparse][[/noparse]there are no nine pin of this kind] that allows the height to be somewhat adjustible. Wire wrap pins will NOT properly plug into their own sockets as they are too fat. On the other hand, this additional connector is flat pinned on the board side, while accepting of the fat wire wrap pin. I've used this configuration before in fit stackable architecture.
Let me know what you know and what you think.
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
Ain't gadgetry a wonderful thing?
aka G. Herzog [noparse][[/noparse] 黃鶴 ] in Taiwan
Comments
I removed the power jack from the bottom unit on mind and fed voltage from
the bottom to power the top unit. No problems.
http://forums.parallax.com/showthread.php?p=768729
OBC
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
New to the Propeller?
Visit the: The Propeller Pages @ Warranty Void.
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
--Steve
Propalyzer: Propeller PC Logic Analyzer
http://forums.parallax.com/showthread.php?p=788230
Thanks, your 2x may provide some useful info. My impression of the Hydra is that it would be a great enhancement to provide a sound Propeller and a video Propeller as the sound provides so much of the drama to playing a game. Besides, leaving video to its own 8 cogs just provides more features to the video.
Steve,
I wonder what one would need 64 cogs for other than game playing.
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
Ain't gadgetry a wonderful thing?
aka G. Herzog [noparse][[/noparse] 黃鶴 ] in Taiwan
here is a picture of how easy it was,, but like I said software wise while I added the bread boards for experimenting all my boards really operate separately , I can tie the power and the serial lines together and have a zillion I/O's
I would like to have an operating system that would take advantage of the parallel abilities of stacking a bunch of these chips together.
The box my $80 card came in says "640 Stream Processing Units .... Core Clock 575MHz...Memory Clock 1800MHz...Memory Size 512MB...256-bit"
It's a Radeon card. That's a lot of power for 10x the cost of a propeller. I bet it's a devil to program in assember though.
No frakin wonder it needed a fan on it
I bet if some genius made an experimenters board that powerful video cards could just plug into so people could easily experiment
and provided a gcc compiler for it that it would sell bigtime.
You are on to something. The Sony PlayStation can be adapted to Linux {MS has made their XBOX unfriendly to Linux, I wonder why?] and 10 or more of them have be put together for supercomputing tasks. In fact, the Sony PlayStation, loaded with Linux is used in oil exploration to control underwater ROVs as it provides an optimal platform and ergonomic user interface. Take a look in Wikipedia for hacking the Playstation with Linux. I just don't have the time and know how to exploit it.
On the other hand, the Propeller as supercomputer provides a good entry to handling parallel processing as the assembly code isn't that cumbersome.
You gotta begin learning somewhere. Why not here?
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
Ain't gadetry a wonderful thing?
aka G. Herzog [noparse][[/noparse] 黃鶴 ] in Taiwan
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
--Steve
Propalyzer: Propeller PC Logic Analyzer
http://forums.parallax.com/showthread.php?p=788230
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
propmod_us and propmod_1x1 are temporarily out of stock(selling faster then expected). Only $30. PCB available for $5
Need to upload large images or movies for use in the forum. you can do so at uploader.propmodule.com for free.
I've got a Radeon nVidia graphics card which can be used as a number-crunching unit and for very high-performance graphics:
gpgpu.org/developer
graphics.stanford.edu/projects/brookgpu/
I've tried the software out, it's very impressive. I can remember when we needed a very expensive SGI machine where I once worked to get that sort of performance. I think it cost about $250,000.
Leon
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
Amateur radio callsign: G1HSM
Suzuki SV1000S motorcycle
Frankly, having 8 Propellers on one board still begs the question of utility. Without some board real estate for expansion, it is more of an academic exercise. Most of us have trouble using 8 cogs, let along 64. For now I am happy with the 24 tied together and I can easily disassemble and reconfigure. One really need a purpose before one will learn much of anything from such architecture. In video, there is a huge demand for getting pixel recalculation done in 1/60th of a second for an entire screen. But in most of what a microcontroller does, it is merely handling a few tasks in parallel and the adequate response time might be 1/10th of a second.
An 8 Propeller board would be much more interesting if build with an appropriate SRAM video buffer scheme.
I am still wondering if I should be worried about the creation of ground loops in my construction. I have each board running to a common ground on the barrel plug and then I have two of the ground pins next to the i/o going from board to board.
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
Ain't gadetry a wonderful thing?
aka G. Herzog [noparse][[/noparse] 黃鶴 ] in Taiwan
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
propmod_us and propmod_1x1 are temporarily out of stock(selling faster then expected). Only $30. PCB available for $5
Need to upload large images or movies for use in the forum. you can do so at uploader.propmodule.com for free.
to separate programmers from that complexity or little useful work will get done. Of course much speed will
be lost compared to programming the bare metal in asm or some such...but nobody can possible program a
chip (or more likely a cube) with many thousands of processors buzzing away inside....a programmer can handle
8 cogs in a propeller but can't handle orders of magnitude beyond that.
I'll take a look. Is that 12 bit data bus with other bits for system control or 12 i/o pins? I can widen my bus to nearly all 32 i/o pins, but just started with what seemed useful. 6 meg/second is roughly 100K per 1/60th of a second. That would be useful for video.
I need to get some photos posted of what I've done - maybe within 24 hours. It is 4am here.
Mainly, I am very interested in what others thing a bus should be and do. I considered 16bit wide data with 8bit wide control. But without experience, one can only begin and try.
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
Ain't gadetry a wonderful thing?
aka G. Herzog [noparse][[/noparse] 黃鶴 ] in Taiwan
P10,11 can be used for io or bus.
6m requires only 8-9 pins. I think jazzed made an sram module compatible with this board.
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
propmod_us and propmod_1x1 are temporarily out of stock(selling faster then expected). Only $30. PCB available for $5
Need to upload large images or movies for use in the forum. you can do so at uploader.propmodule.com for free.
I wondered where you were that it would be 4am so I looked at your profile and you are in Taiwan ..wow
That's a Loooong way from here Are you Asian? Bet you can get great buys on parts and tech stuff
in Taiwan.
http://images.apple.com/macosx/technology/docs/OpenCL_TB_brief_20090608.pdf
In the way of what holly said, "layer to separate programmers from that complexity" is provided by the language, OpenCL.
A shared SRAM design would require multiple mastering. I haven't given too much thought to it, but multi-master communications with the intent of having any Propeller own the SRAM will take more than 12 pins. Would need 13 for 1MB SRAM access (8 Address/Data + 2 Address + WE* + ALE* + OE*) and a 14th pin at minimum for an asynchrounous arbitration binary semaphore locking scheme. You might get 4MB/s data rates like this. The more unlatched pins you throw at the problem, the faster the access up to a point.
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
--Steve
Propalyzer: Propeller PC Logic Analyzer
http://forums.parallax.com/showthread.php?p=788230
256MB SRAM for $10 http://search.digikey.com/scripts/DkSearch/dksus.dll?Detail&name=557-1065-1-ND
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
propmod_us and propmod_1x1 are temporarily out of stock(selling faster then expected). Only $30. PCB available for $5
Need to upload large images or movies for use in the forum. you can do so at uploader.propmodule.com for free.
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
my 6.250MHz custom Crystals now available - run your Propeller at 100MHz!
Las - Large model assembler for the Propeller (alpha version released)
Largos - a feature full nano operating system for the Propeller
www.mikronauts.com - a new blog about microcontrollers
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
propmod_us and propmod_1x1 are temporarily out of stock(selling faster then expected). Only $30. PCB available for $5
Need to upload large images or movies for use in the forum. you can do so at uploader.propmodule.com for free.
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
--Steve
Propalyzer: Propeller PC Logic Analyzer
http://forums.parallax.com/showthread.php?p=788230
Of course much speed will be lost compared to programming the bare metal in asm or some such...but nobody can possible program a chip (or more likely a cube) with many thousands of processors buzzing away inside....a programmer can handle
Some speed will be lost but then again some chips aren't really made for human generated assembly code anyways.
That said, some degree of abstraction is necessary when the level of complexity gets out of hand.
In addition not all programs/application are suitable for massively parallel systems. Heck just try and part out a program that uses 64 Cogs effectively.
Here is a photo of the 3x Proto Boards stacked and powered. I am using a 6V gel cell to power everything
Now I would love input about useful bus configuration. I''ve proposed 8bits for data, 3bits for board identity. I suppose that another one might need another 3bits to identify each cog. That would leave 1 bit for a system wide clock and one bit to indicate read or write. I personally am thinking peer-to-peer rather than master/slave as I'd prefer a purely parallel concept.
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
Ain't gadetry a wonderful thing?
aka G. Herzog [noparse][[/noparse] 黃鶴 ] in Taiwan
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
propmod_us and propmod_1x1 are temporarily out of stock(selling faster then expected). Only $30. PCB available for $5
Need to upload large images or movies for use in the forum. you can do so at uploader.propmodule.com for free.
You could always use a serial mesh network where each Propeller has a serial connection to the other Propeller.
If you want a parallel bus, it's much faster to use propeller pins p0..p7 (ignore p8) for data with the movs instruction.
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
--Steve
Propalyzer: Propeller PC Logic Analyzer
http://forums.parallax.com/showthread.php?p=788230
I would have a go at ultra high speed serial. Two wires only. You could use 3 wires for this and send out 9 bits per byte (1 bit for address). Each prop has an output pin, and two inputs (one from each of the other props). It is relatively easy and saves the pins. See Beau's hugh speed example.
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
Links to other interesting threads:
· Home of the MultiBladeProps: TriBladeProp, RamBlade, TwinBlade,·SixBlade, website
· Single Board Computer:·3 Propeller ICs·and a·TriBladeProp board (ZiCog Z80 Emulator)
· Prop Tools under Development or Completed (Index)
· Emulators: Micros eg Altair, and Terminals eg VT100 (Index) ZiCog (Z80), MoCog (6809)
· Search the Propeller forums (via Google)
My cruising website is: ·www.bluemagic.biz·· MultiBladeProp is: www.bluemagic.biz/cluso.htm
The hardware construction was rather easy. The wirewrap sockets allow extension above and below. llObviously the OS for multiple Propellers is the real project and I had given almost no consideration to it. 3 boards merely proved the construction is feasible. I may have to buy a pile of more Protoboards to really have something.
At this point I am thinking that some shared memory would be quite useful. Not everything needs to be passed from cog to cog immediately. So another board with some SRAM might be added to the stack. Something would have to be done to the bus to assure that memory reads/writes were different from transfers between cogs. A high impedance state for the memory would have to be evoked.
High speed serial is interesting as it certain reduces the pin count. I suppose serial transfers could take place simultaneously between 8 cogs. 8 bit parallel in a 32bit system seems to be only useful if the additional SRAM is 8 bit. I am wondering if both could exist within the same system.
My biggest question at this point is how to write a utility that would confirm that all 3 boards are indeed properly connected and that the bus is fully operational. It seems to be a logical place to begin and might reveal the best methods of creation of stacked Propellers. Both serial and parallel data transfers could be benchmarked.
All the theory is rather pointless if the hardware cannot be proven useful for further efforts.
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
Ain't gadetry a wonderful thing?
aka G. Herzog [noparse][[/noparse] 黃鶴 ] in Taiwan
Post Edited (Loopy Byteloose) : 6/24/2009 8:21:18 AM GMT
I guess I really did not have to but I kept screwing up wiring because I mostly use the proto prop from parallax
Hey Loopy very nice boards looks good ,, I was wondering though how you have yours wired together I just ended up stacking all my unused I/O but would love some kind of monitor program or Kernel that would allow real parallel processing of the seperate boards
open C (cuda) it is a function of all newer nVIDIA cards, and it is open source.....the new ATI offerings also are open c capable....nVIDIAS efforts are much more mature (google nVIDIA tesla)