Call for Tiny Objects (Plez!) to go in a Massive Prop Computing Machine
Humanoido
Posts: 5,770
Request
I'm looking for "beta-writers" to create tiny simple SPIN object programs, very small in size, that will run self contained in one cog, and can accomplish a single task each.
Reason
I am stoking up the fires of the 40 Propeller-Chip Computing Machine and need many small programs for demonstration. Small because theoretically up to 1024 can run in one cog.
http://forums.parallax.com/showthread.php?t=123828
Possible Suggestions
very small programs to do simple things - display, sensors, popular math, generate whole cube roots, simple algorithms, clever routines, utilities, very tiny games, input/output, TV, Keyboard, memory, eeprom, run a couple keys, LCD, clock, cog observing, and routines that are fun & interesting. Demo code is also useful, i.e. show a use for the counters/other cog resources.
Contributors can also suggest URLs to existing code if the code is small.
Thank you sincerely.
I can be reached in this thread, pm, and email.
Humanoido
I'm looking for "beta-writers" to create tiny simple SPIN object programs, very small in size, that will run self contained in one cog, and can accomplish a single task each.
Reason
I am stoking up the fires of the 40 Propeller-Chip Computing Machine and need many small programs for demonstration. Small because theoretically up to 1024 can run in one cog.
http://forums.parallax.com/showthread.php?t=123828
Possible Suggestions
very small programs to do simple things - display, sensors, popular math, generate whole cube roots, simple algorithms, clever routines, utilities, very tiny games, input/output, TV, Keyboard, memory, eeprom, run a couple keys, LCD, clock, cog observing, and routines that are fun & interesting. Demo code is also useful, i.e. show a use for the counters/other cog resources.
Contributors can also suggest URLs to existing code if the code is small.
Thank you sincerely.
I can be reached in this thread, pm, and email.
Humanoido
Comments
It is:
a) Small and simple for running in COGs.
b) Could probably run many Life cells in each COG.
c) Requires decent communication between all those COGs and Props as a two dimensional grid.
d) easy to display the resuly on a video Prop somewhere.
:smilewinkgrin:
A Life Cell or more per COG is interesting. Getting them all running collaboratively with a central video display would be *very* interesting. Of course, that's probably beyond the scope of the project.
Humanoido
Props get hot running all cogs full-tilt. Vertical orientation of chips and boards greatly facilitates free-convection.
As Leon suggested, creating Mandelbrot images is a great use for a bunch of cogs, until they become communications-bound. To display the results, though, you'd have to use something like a PC as a frame-grabber. If you could swing that, you could have wonderful - and zippy - adventures through the Mandelbrot set.
Ironically, I do a lot of my work living just down the street from Taipei 101 in Taiwan. The skyscraper is so tall, the top portion is in the clouds lots of times and obscured. Maybe this influenced the Prop machine design. I know that circulating wind around a skyscraper forms an accumulating vortex, thus enhancing circulation.
They get hot and I have developed some cooling methods, but the most simple is to simply put a fan next to the tower. The air flows smoothly and rapidly around the top and bottom of all boards. Since the unit makes a good apartment heater, an air conditioner is a good supplement. I'm experimenting with alternate ways of cooling and supercooling and exploring overclocking with voltage variance.
This is very good, and Leon has many good ideas for parallel processing. There is a kind of PC frame grabber already in place on the 40-prop computing machine. I run a virtual keyboard and monitor and have capability to save various states. It's a very cool thing, and saves some power over running more hardware.
Experiment 101
For now, in this experiment, I'm looking for tiny simple programs that are unique. They do some tiny task and leave their neighbors alone. Since I will need hundreds of these tiny cog programs, and don't have the time to write every one, I have asked Forum members to help out. My hope is someone will have some simple short little code saved somewhere, or know where to find some programs that are simple short and little. The code only needs to run independent in one cog. My guess is no one has written a tiny clock before..
Humanoido
Humanoido
What do you think tiny programs should do?
Things
- Tiny real time clock
- Tiny keyboard 2x2 = 4-key matrix
- Ultra tiny 1-pin oscilloscope
- Simple function generator
- Beeper made with a piezo speaker
- Record 1-word from mic (2 seconds)
- Tiny Word Processor (1-page)
- Tiny Tune
- IR Remote
- Thermometer
Simple Math- Calculate whole cubes, such as 1x1x1=1, 2x2x2=8, 3x3x3=27...
- Calculate hypercube combinations
- Calculate remaining real time memory in a cog
- Return the real time counter number
- Small base conversion dec/binary
- Almost Endlessly calculate Pi until too big
Limited Utilities- Tiny driver for serial LCD
- Read cog memory
- Write/read eeprom
- Show all pins status high/low
- Determine clock speed
- Random number generator
- Display Cog stats
- Cycle display ASCII characters
Tiny Gameshttp://www.atariarchives.org/basicgames/
http://www.atariarchives.org/basicgames/showpage.php?page=57
http://www.atariarchives.org/basicgames/showpage.php?page=101
http://www.atariarchives.org/basicgames/showpage.php?page=171
http://www.atariarchives.org/basicgames/showpage.php?page=40
http://www.atariarchives.org/basicgames/showpage.php?page=167
- Game of Life
- Tiny AI
- Tiny Pong
- Dice
- Tic tac toe
- Checkers
- 3D Plot
Benchmarks- Time counting from 1 to n
- Time to display ascii hello n times
- Time for a small but popular benchmark
Demo- Hello World
- Clever little display demo
LanguageFor example, a 32 bit system bus with 16 2 to 1 mux/buffers and system addressing so that when DDR is used, you could theoretically load a single long into each cog in about 26 clocks by OR'ing upper/lower 16bit of each long on the bus through 16 pins on each prop conneced through the mux. Something like: So in something like 20-26 clocks you can load/send a long using an external 2 to 1 line mux and a 32bit bus. Say it took 26 clocks to load 1 long, 128 longs per cog x 4 cogs prop = 166.4uS to load/send 512 longs per prop. 166.4uS = 6.01KHz bus freq to load one prop with 2KB of data to proccess. Using the same 32 bit bus with one 32 bit data buffer/latch and 2 octal 2 to 1 muxes per propeller -where each prop uses 16 I/O for data lines-, you can then implement the DDR technique on the 32 bit bus, interleave loading 2 cogs (1 ea per prop, per bus clock). The QDR technique need only 1 additional clock line attatched to all propeller's C & D (ie, 10 ea. Prop computing group A,B,C,D) and can use the same 32 bit bus, the drawback here lies within the increased addressing logic complexity and bus bandwidth frequency (since the data lines change @ 4x the clock 1 freq in a QDR setup).
Again, your bandwidth is limited to two things in either a DDR/QDR bus system, I/O's and pin + stray capacitances which limit speed on the data lines.
In any case, it would be cool to see the full potential of 320 cogs parallel proccessing anything. But forgive me for being skeptical about this tower working as intended. I am very curious about the final bus architecture..
(With apologies to the Big Guy.)
320 cogs can go a long way and maybe the "full potential" will not be realized in my lifetime - as the machine could serve a lot of purposes to a lot of people. My ambitions may be much more simple. It is currently working as intended for learning, and developing various parallel algorithms. You know it was recycled from at least 14 Propeller projects before it - this may be recycled too, for a larger project.
The final bus? It may not have a "final" bus. The idea here is a learning experience of trying out different hardware and learning from those choices. I have noted some of the connections in these large machines may take considerable work to implement, even over a lifetime, as in the case when the wires multiply by connection from processor to processor in higher ordered Hypercubes. My projects are considerably shorter, and simpler.
So are you working on any tiny short simple sweet spin programs for the cause?
Humanoido
Humanoido
One thing I thought of is sound. It's not to difficult to wire all the props up to a common set of sound outputs.
Maybe perform some classical music?
Use the Sidcog a whole bunch of times.
http://translate.google.com/translate?hl=en&sl=de&u=http://hive-project.de/content/1759&ei=kmV8TNyCL4SovQONzeHBAg&sa=X&oi=translate&ct=result&resnum=8&ved=0CD8Q7gEwBw&prev=/search%3Fq%3Dsidcog%26hl%3Den
The BASIC Stamp Supercomputer has an app for creating a Jacob's Ladder of sound, with a peizo speaker on each processor board. This could create ten part sound in real time.
http://forums.parallax.com/showthread.php?t=116129&highlight=handbook+basic+stamp+supercomputing
This project would be amazing on the Propeller chip, synthesizing an entire orchestra. You could have 320 instruments simultaneously playing and output through the headphone jack to an amp. Or.. I wonder what that would sound like with 320 peizo speakers?
Actually, I was just asking for some simple short peizo speaker code in spin.
Humanoido
EDIT: If I recall, there's an app for the prop to beep and no need for a peizo speaker.
Theres objects that do PWM in NCO mode for note playing giving more depth than just beeping, cant recall if they're in the obex or the hydra cd, hmm...
But to answer your earlier querry, i cant think of a usefull object that i could write to benifit your cause.. i'm focused right now on car security system based on RFID. And i beleive the bus architecture will singl handedly determine how fast this tower can actually compute, its the spinal cord of your computer.