Prop and RISC
ServoM
Posts: 10
I am not expert on instruction set architectures, but wonder if anyone has done a comparison (written up somewhere) of the Propeller instruction set and register architecture with other architectures, mainly RISC.
Are there notable similarities and differences?· What is the closest RISC architecture that is similar (if it exists)?
·
Are there notable similarities and differences?· What is the closest RISC architecture that is similar (if it exists)?
·
Comments
No, there's not been a formal written comparison.
It would be difficult to say what other RISC architectures are similar. Various parts of the Propeller's architecture can be seen in different historical computers. Having conditionally executed instructions controlled by a condition code in all instructions is an idea that's very old. Similarly, having results conditionally changed (like the flags and result operand) is a very old idea in computer design that's appeared over and over. There's really nothing in the Propeller's design that's fundamentally new, but the combination of choices along with the implementation and the attention to detail is unusual.
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
Propeller Wiki: Share the coolness!
8x8 color 80 Column NTSC Text Object
Safety Tip: Life is as good as YOU think it is!
I probably should have expanded some. The combination of the COG - HUB separate memory address spaces, where code only executes on the COG is pretty unique. The non-associative copy to COG on cognew, in particular is not something I've seen elsewhere. Anyway, if you've some references in mind, please link me up! I like reading that kind of stuff.
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
Propeller Wiki: Share the coolness!
8x8 color 80 Column NTSC Text Object
Safety Tip: Life is as good as YOU think it is!
Post Edited (potatohead) : 3/15/2010 1:37:21 AM GMT
Running the individual processors that share such multiport RAM on their own local non-shared RAM is a pretty Propeller-unique idea, particularly making the unshared space so small and the instruction set so rich. As for the cognew process for transferring a hub RAM image to a Cog, IME you're right; never seen anything quite like that anywhereelse. I do wish it had occurred to Chip to provide cleaner ways to reclaim those 2K images for later use once the Cogs are launched; with only 32K of Hub RAM a few 2K cog images are an important resource worth reclaiming.
Wouldn't it be possible for the compiler to be modified to bunch all the code stuff up in the top of memory or somewhere? At present we use the DAT directive but dat doesn't mean that it's PASM so we really need a CODE/PASM/COG directive to assist the compiler to place the image in an area that's easy to reclaim rather than interspersed throughout. Buffers could shadow the cog image provided of course that the image doesn't get wiped before it's used! Anyway, if we at least had the option of specifying these things as well as VAR origins I would for instance shadow the cog images with video memory and start up the video last. Having all that PASM in a reusable area means I can pack more Spin code in, and I need to pack more in.
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
*Peter*
One thing I'm not clear on is the HUB operating at 8X. Since it's round-robin, doesn't that really mean it's just 1X?
The trade off with round robin, I think is most significant, is the ease of use. Having bits of code just work, no matter what the state of the multi-processor is, really is powerful. Easy things are pretty easy, while not making hard things impossible. Some peak speed potential is off the table, but given the mess I've seen associated with more complex shared memory systems, the case for not using them well at all is strong, where that isn't the case on the Propeller.
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
Propeller Wiki: Share the coolness!
8x8 color 80 Column NTSC Text Object
Safety Tip: Life is as good as YOU think it is!
Most shared memory systems deliver considerably better average performance than that, at the cost of a lot worse worst-case performance when the stars don't line up.
Now that I'm thinking about it I wonder why the Hub runs at half speed; maybe the Hub needs an extra clock cycle to change state before it can use a clock cycle to access Hub RAM? It would sure change the complexion of things if the Hub could sync every 8 cycles instead of every 16.
Hub memory was called Common and Cog memory was called Partition. It could have up to 20 Partitions. The System Ten ended up with 16 instructions including multiply and divide memory to memory, no registers. It was a decimal machine - yes memory was decimally addressed. A multiply could multiply up to 10 digits by up to 10 digits and the result would be the length of both A & B and stored in the B for a length of A+B, all in decimal, no overflow possible.
The Partitions were actually time-sliced by hardware. It was programmed in assembler and ran online order entry, etc, which was very unusual at the time.
http://www.computermuseum.org.uk/fixed_pages/icl_system_25.html
http://members.iinet.net.au/~daveb/S10/Sys-10.html
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
Links to other interesting threads:
· Home of the MultiBladeProps: TriBlade,·RamBlade,·SixBlade, website
· Single Board Computer:·3 Propeller ICs·and a·TriBladeProp board (ZiCog Z80 Emulator)
· Prop Tools under Development or Completed (Index)
· Emulators: CPUs Z80 etc; Micros Altair etc;· Terminals·VT100 etc; (Index) ZiCog (Z80) , MoCog (6809)·
· Prop OS: SphinxOS·, PropDos , PropCmd··· Search the Propeller forums·(uses advanced Google search)
My cruising website is: ·www.bluemagic.biz·· MultiBlade Props: www.cluso.bluemagic.biz
I think it's worth noting that machine did actually have one memory space, where one of it's concurrent tasks executed in a "local" partition, where memory addressing would be consistent, where positive offsets are "task" or "partition" relative, but still in the physical RAM, and negative offsets operated in the shared memory, non partitioned.
The non-associative, and separate memory space of the COG, as seen in the Propeller, is quite unique, IMHO. It is a seperate address space both physically and logically, where as the S10 machine appeared to have logically separate memory spaces, but not physically separate.
Still, that machine shares a lot of interesting design ideas. Good read. Thanks again for linking that.
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
Propeller Wiki: Share the coolness!
8x8 color 80 Column NTSC Text Object
Safety Tip: Life is as good as YOU think it is!
I wrote an emulation for the System 25 in the early 90's which was formally validated but not sold. It ran 3x faster on an 80486 33MHz. I wrote it in assembler and targetted the 486 instructions for speed. Maybe some time I will write an emulation for it on RamBlade
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
Links to other interesting threads:
· Home of the MultiBladeProps: TriBlade,·RamBlade,·SixBlade, website
· Single Board Computer:·3 Propeller ICs·and a·TriBladeProp board (ZiCog Z80 Emulator)
· Prop Tools under Development or Completed (Index)
· Emulators: CPUs Z80 etc; Micros Altair etc;· Terminals·VT100 etc; (Index) ZiCog (Z80) , MoCog (6809)·
· Prop OS: SphinxOS·, PropDos , PropCmd··· Search the Propeller forums·(uses advanced Google search)
My cruising website is: ·www.bluemagic.biz·· MultiBlade Props: www.cluso.bluemagic.biz
I should have been more clear in my post above. The document you linked, did clearly say it was separate memory, and you gotta love hand configuring those too. That's almost like a COG! No wonder you like the Prop [noparse]:)[/noparse]
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
Propeller Wiki: Share the coolness!
8x8 color 80 Column NTSC Text Object
Safety Tip: Life is as good as YOU think it is!
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
Links to other interesting threads:
· Home of the MultiBladeProps: TriBlade,·RamBlade,·SixBlade, website
· Single Board Computer:·3 Propeller ICs·and a·TriBladeProp board (ZiCog Z80 Emulator)
· Prop Tools under Development or Completed (Index)
· Emulators: CPUs Z80 etc; Micros Altair etc;· Terminals·VT100 etc; (Index) ZiCog (Z80) , MoCog (6809)·
· Prop OS: SphinxOS·, PropDos , PropCmd··· Search the Propeller forums·(uses advanced Google search)
My cruising website is: ·www.bluemagic.biz·· MultiBlade Props: www.cluso.bluemagic.biz