JF_Aidan_Pryde
Regular
As I currently underestand, Cell has a shared (SMP) main memory. That's to say, all 9 CPUs on the chip
- Shares the main memory address space
- Have coherent access to it
In that sense, it's a 9 way SMP system with a single memory controller with 25GB/s of memory bandwidth.
The little SPE computers are still eluding me. Obviously they can communicate with each other through saving and loading from main memory, but they are better than that. The 8 SPEs are connected via a high speed internal bus (EIB) that should allow direct communication. The problem is the SPE local store is a private, non-coherent memory space. But it does have an alias in the system memory map.
Q1:
Now what does this main memory map cover?
- Main memory
- SPE alias (enough for n SPEs since the number of SPEs on the networks hould be transparent to the app)
- Locking L2 cache?
Q2:
What's the most efficient way SPEs can talk to each other?
- Writing to main memory is the obvious way
- For streaming, load appulet to SPE0 LS, store temp results to SPE0 LS, then pass them to SPE1 LS via DMA?
- Can I write directly to SPE1's LS alias in code and let the hardware handle the DMA translation? (isn't this dangerous due to lack of coherence?)
Q3:
Is it accurate to describe Cell as a 9 way SMP system AND a 8 way messege passing system with private memory? In otherwords, Cell is not NUMA, since NUMA requires:
1. Shared memory (SPEs don't share their LS)
2. Non-uniform access (main memory is uniform access).
Thanks!
- Shares the main memory address space
- Have coherent access to it
In that sense, it's a 9 way SMP system with a single memory controller with 25GB/s of memory bandwidth.
The little SPE computers are still eluding me. Obviously they can communicate with each other through saving and loading from main memory, but they are better than that. The 8 SPEs are connected via a high speed internal bus (EIB) that should allow direct communication. The problem is the SPE local store is a private, non-coherent memory space. But it does have an alias in the system memory map.
Q1:
Now what does this main memory map cover?
- Main memory
- SPE alias (enough for n SPEs since the number of SPEs on the networks hould be transparent to the app)
- Locking L2 cache?
Q2:
What's the most efficient way SPEs can talk to each other?
- Writing to main memory is the obvious way
- For streaming, load appulet to SPE0 LS, store temp results to SPE0 LS, then pass them to SPE1 LS via DMA?
- Can I write directly to SPE1's LS alias in code and let the hardware handle the DMA translation? (isn't this dangerous due to lack of coherence?)
Q3:
Is it accurate to describe Cell as a 9 way SMP system AND a 8 way messege passing system with private memory? In otherwords, Cell is not NUMA, since NUMA requires:
1. Shared memory (SPEs don't share their LS)
2. Non-uniform access (main memory is uniform access).
Thanks!