Multi-core + sockets
BADHABIT
Posts: 138
I ran across this earlier and thought it somewhat related to multi-prop s/u's.
BH
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔UG employee said...
NX can take advantage of up to 4 threads.··Actually it's Parasolid that is doing all the work in this case as the kernel will continue to parse out work to the available treads up to a maximum of 4.··However that being said, do not be mislead into thinking that quad-cores are therefore the best solution, as that is not the case.
From a purely raw NX performance point of view (or really ANY SMP enabled software) the order of performance, best to worse, is as follows (this is assuming that all else is equal, such as clock-speed, memory, IO bus-speed, etc.):
1) Four single-core CPU's in 4 sockets
2) Two dual-core CPU's in 2 sockets
3) Two single-core CPU's in 2 sockets
4) One dual-core CPU in 1 socket
5) One quad-core CPU in 1 socket
6) One single-core CPU in 1 socket
Now 4 & 5 could go either way depending on the actual part models and what was being done, but the reason for THIS ORDER OF PROGRESSION is that dual- and quad-core CPU's share a lot of resources and so very little is gained if anything (as the number of cores on the same CPU goes up, the actual performance of any one core goes down even if the clock speed was the same) for an application like NX even if it can theoretically use all four threads, which is also why multiple CPU, multiple socket systems will ALWAYS be superior, albeit at a much higher cost for hardware.··Now this may change over time, but for now, this is about how it all shakes out.
Anyway, I hope this helps.
John R. Baker, P.E.
Product 'Evangelist'
NX Design
Siemens PLM Software Inc.
BH
Comments
In the case of the Propeller, there are 8 cores per socket. Unlike the kind of CPU they're talking about, the bottlenecks for the Propeller are the limited set of I/O pins (32 or 28 depending on how much you want to use the last 4) and the limited amount of hub memory. Both resources have to be shared among the 8 cores. To the extent that the application doesn't need all the I/O pins and doesn't need all of the hub memory, there may not be any contention among the cores for those resources.
However, what we are doing with the prop is offloading the smart I/O routines into self-contained routines that can run the I/O independantly and concurrently. This is vastly different from breaking one block of code into threads for multiprocessing. The reason we have multiple cores in Intel like chips is that we cannot get faster clocks yet, but we do have transistors available, so the logical step is to place multiple cpus on a chip.
The prop approach is to put 8 identical processors with I/O capabilities onto a chip. The processors can also handle the intelligent I/O. So, instead of having a dedicated UART, VGA, TV, Keyboard, Mouse ports, they all can be handled by processors and can be however intelligent the programmer wnats them to be.
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
Links to other interesting threads:
· Home of the MultiBladeProps: TriBladeProp, SixBladeProp, website (Multiple propeller pcbs)
· 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)
· Search the Propeller forums (via Google)
My cruising website is: ·www.bluemagic.biz·· MultiBladeProp is: www.bluemagic.biz/cluso.htm
About those last 4 I/O pins.
I can see how 30 and 31 would be usable since they are connected to nothing once the
USB programming dongle is removed. But how can 28 and 29 be used at all for I/O since they
are always connected to the eeprom???
About having multiple processors on the same board.. I sometimes add an ATtiny to an AVR
project if 20mips is not quite enough. It only cost about $2 and can use the same clock.
Pins 28 and 29 can sometimes be used for other I/O. For example, you can connect other I2C devices of all sorts. You would need to put a pullup on the SCL line if it's not already present.
If your I/O device can tolerate extra pulses, you could use 28 and 29. For example, SPI devices ignore their clock and data lines if the chip select is false (high). The main problem you'd run into would be that of an I2C device misinterpreting data going by as a device select.
I/O sounds a bit iffy for those pins. I will just hope I never absolutely
have to use them...and if I do, I will come begging to you for help
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
--Steve
Propalyzer: Propeller PC Logic Analyzer
http://forums.parallax.com/showthread.php?p=788230
There are some nice I2C 8 and 16 bit I/O Expanders that you can just hook up in parallel with the EEPROM. There's also a real time clock with SRAM and an ADC (4-chan)/DAC (1-chan) device. The PropellerBoeBot I did for BoeBotBasic uses an 8-bit I/O Expander in parallel with the boot EEPROM to interface to an HM55B compass (an SPI device) ... not at all iffy.
Have you ever posted a schematic of those I/O expanders hooked up to a prop?
If so please give me a link to that as I am very interested
Also, that real time clock..is it very accurate? are they expensive?
Here is a I2C expander that you can get two samples for free from maxim.
http://datasheets.maxim-ic.com/en/ds/MAX6956.pdf
I actually had one of these around from a while ago, and am now going to interface it to my prop.
Maxim chips tend to be on the expensive side (they are pretty custom, tho) and you can't always find a different source other than maxim.
This chip is $2.95 @ 1k. Per chip might be around 4$.
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
TERMS OF USE: MIT License
"Permission is hereby granted, free of charge, to any pers...........................
..............................OMITTED FOR FORUM...............................................
.................. OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. "
Perfect.
http://obex.parallax.com/objects/109/
See people, at this rate, we will have an obex object for EVERYTHING MWAHAHAHAHAHA...
Then we can rule the world.
"This chip is $2.95 @ 1k. Per chip might be around 4$."
It might just be better to use another propeller chip as an expander, almost
as cheap and it's customizable.
Thats what i thought, but then, consider,
EEPROM, pull up/down resistors, crystal, plus the pcb space for all that and the prop.
And also now you have to deal with programming both... it all adds up to where that 3$ chip is really worth it.
If you have spare output pins on the first prop you can...
1. Load the second prop via 3 pins (SI, SO and -RST) so no eeprom is required, and you can then use the SI & SO pins anyway
2. Another pin and a cog will allow you to output the clock saving the xtal, but this is about 50c anyway.
Now you have a really good programmable/intelligent expansion device for about $9 And it is the same as you are already using.
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
Links to other interesting threads:
· Home of the MultiBladeProps: TriBladeProp, SixBladeProp, website (Multiple propeller pcbs)
· 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)
· Search the Propeller forums (via Google)
My cruising website is: ·www.bluemagic.biz·· MultiBladeProp is: www.bluemagic.biz/cluso.htm
General purpose CPU's have a such a different architecture that there probably not really comparable to the Prop.
However, re the gen.purpose CPUs and your quote of the Siemans fellow:
4) One dual-core CPU in 1 socket
5) One quad-core CPU in 1 socket
6) One single-core CPU in 1 socket
Pretty incredible that the quad core ranks worse than the dual, and only one notch above the single! Siemans is a very serious company about stuff they publish (I've worked under contract for them in Germany myself) so this is probably a reliable result. Makes me wonder why we should even bother with duals and quads - then again, this is in the context of that NX software, and is probably more an issue of the SMP bus layout and management than the CPU per se.
- Howard
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
"This device contains recyclable materials, which can be re-decomposed
and re-integrated into brand new marvels... We strongly encourage you
to contact the provided information and recycle yourself always. "
Download BoeBotBasic.· There's also an entry for this somewhere in the Completed Projects forum on my Propeller BoeBot.· I used the PCA9554 I/O expander (I think that's the number) and just wired it in series with the EEPROM's SCL and SDA lines.· There's a series resistor between the PCA9554 and the EEPROM lines since the PCS9554 is powered by +5V, but I2C is all open-drain and should work without the resistor.· It's still safer to use it.· I think it was 1K.
Using a Propeller as an I/O expander makes sense.· Unless you're using timing dependent code (like asynchronous serial I/O), you can use the RCFAST clock.· If your main Propeller has an extra I/O pin, you can use that to generate a clock for the 2nd Propeller.
As you mentioned, you can dispense with the EEPROM and download code from the main Propeller.· We're talking about a total of 4 I/O pins (clock, reset, and·2 serial I/O)·to get you 32K of SRAM and another 28 I/O pins.· The download pins can be used for I/O expander communications.
Post Edited (Mike Green) : 6/17/2009 6:14:05 PM GMT
The problem with SMP(and has been known for decades) is that doesn't scale well at all. 4 processors aren't even as good 2 in SMP.
As far as bus layout is concerned, there are a lot of very bright people working on this and they haven't found a good work around for the problems with SMP.
Is there any way to just hook a second propeller to the same crystal the first one is using??