This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

what is "Global Mem" perspective on C6472?

All-

From the C6472 data sheet, our understanding is that "Port 0" internal L2 memory is per-core SRAM starting at 0x0080 0000, and "Port 1" internal L2 memory is shared mem starting at 0x0010 0000.

But in the memory map given in the data sheet, the first part of the memory map table, labeled "Internal RAM and ROM", shows shared mem at 0x0020 0000.  We use that address for data shared between cores, and it seems to work fine.  But, the next part of the table, labeled "Internal RAM (Global Memory Map)", gives shared mem addresses like this:

  SL2 RAM (through DSP0)    0x1020 0000
  SL2 RAM (through DSP1)    0x1120 0000
  :

This brings up a couple of questions...

Question 1 -- when we use 0x0020 0000, is this working because it's a 'reflection' of 0x0010 0000?

Question 2 --  when the data sheet uses the term "global", is this from the perspective of HPI or other external peripherals?  If so, then does it mean to "go through DSP0"?  What happens if we make an HPI access to 0x1020 0000?  Is there something that affects core 0 and and not other cores?

-Jeff

 

  • Jeff,

    I think the 0x0010 0000 on page 97 of spru612d is a typo and should be 0x0020 0000.

    Jeff Brower said:
    Question 1 -- when we use 0x0020 0000, is this working because it's a 'reflection' of 0x0010 0000?

    Is the same data available if you move your memory window to 0x0010 0000? I would not expect a memory-address-decode mirror image when two address bits have to be opposite, like the 0010 and 0020 - that would have to be designed on purpose, and there is no logical reason for it that I can think of.

    Jeff Brower said:
    Question 2 --  when the data sheet uses the term "global", is this from the perspective of HPI or other external peripherals?  If so, then does it mean to "go through DSP0"?  What happens if we make an HPI access to 0x1020 0000?  Is there something that affects core 0 and and not other cores?

    "Local" means the memory address that Core-N can access without going outside of the C64x+ Megamodule. Shared L2 is an anomaly because of the way it is physically implemented, but Core-N does not have to go out through the Master Data Memory Access (MDMA) bus to get to SL2, so SL2 at 0x0020 0000 is consider to be a "local" resource access. No other Bus Master in the C6472 can use the "local" addresses to get to Core-N's local resources. Each Core can use a local address to get to its own local resources, but these are different than the local resources for another Core. MDMA is the M port on the Megamodule boxes on the left side of Figure 4-1.

    "Global" means the memory address that any Bus Master, including EDMA3, HPI, and all Cores, can access. All of these Global memory addresses result in the Bus Master's access going into the Slave Data Memory Access (SDMA) port of one of the DSP Cores. SDMA is the S port on the Megamodule boxes on the right side of Figure 4-1. When Core-N accesses the global address of one of its local resources, e.g. 0x1N80 0000, that access stays local as if the address used was 0x0080 0000.

    Tell me if this set of memory perspectives helps. This table shows a bunch of addresses and data from the point-of-view of different bus masters:

    Core0
    0x00200000 0x55
    0x00800000 0xF0
    0x10200000 0x55
    0x10800000 0xF0
    0x11200000 0x55
    0x11800000 0xF1
    0x12200000 0x55
    0x12800000 0xF2
    0x13200000 0x55
    0x13800000 0xF3
    0x14200000 0x55
    0x14800000 0xF4
    0x15200000 0x55
    0x15800000 0xF5

    Core1
    0x00200000 0x55
    0x00800000 0xF1
    0x10200000 0x55
    0x10800000 0xF0
    0x11200000 0x55
    0x11800000 0xF1
    0x12200000 0x55
    0x12800000 0xF2
    0x13200000 0x55
    0x13800000 0xF3
    0x14200000 0x55
    0x14800000 0xF4
    0x15200000 0x55
    0x15800000 0xF5

    Core2
    0x00200000 0x55
    0x00800000 0xF2
    0x10200000 0x55
    0x10800000 0xF0
    0x11200000 0x55
    0x11800000 0xF1
    0x12200000 0x55
    0x12800000 0xF2
    0x13200000 0x55
    0x13800000 0xF3
    0x14200000 0x55
    0x14800000 0xF4
    0x15200000 0x55
    0x15800000 0xF5

    Core3
    0x00200000 0x55
    0x00800000 0xF3
    0x10200000 0x55
    0x10800000 0xF0
    0x11200000 0x55
    0x11800000 0xF1
    0x12200000 0x55
    0x12800000 0xF2
    0x13200000 0x55
    0x13800000 0xF3
    0x14200000 0x55
    0x14800000 0xF4
    0x15200000 0x55
    0x15800000 0xF5

    Core4
    0x00200000 0x55
    0x00800000 0xF4
    0x10200000 0x55
    0x10800000 0xF0
    0x11200000 0x55
    0x11800000 0xF1
    0x12200000 0x55
    0x12800000 0xF2
    0x13200000 0x55
    0x13800000 0xF3
    0x14200000 0x55
    0x14800000 0xF4
    0x15200000 0x55
    0x15800000 0xF5

    Core5
    0x00200000 0x55
    0x00800000 0xF5
    0x10200000 0x55
    0x10800000 0xF0
    0x11200000 0x55
    0x11800000 0xF1
    0x12200000 0x55
    0x12800000 0xF2
    0x13200000 0x55
    0x13800000 0xF3
    0x14200000 0x55
    0x14800000 0xF4
    0x15200000 0x55
    0x15800000 0xF5

    HPI
    0x00200000 n/a
    0x00800000 n/a
    0x10200000 0x55
    0x10800000 0xF0
    0x11200000 0x55
    0x11800000 0xF1
    0x12200000 0x55
    0x12800000 0xF2
    0x13200000 0x55
    0x13800000 0xF3
    0x14200000 0x55
    0x14800000 0xF4
    0x15200000 0x55
    0x15800000 0xF5