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.

[C6416] What instructions are fetched for a branch target?

Hi,

Is the address, generated in the PG stage of the fetch pipeline, forced to align at the 256-bit boundary?

For example, if a B instruction places the address 0x00000208 in the program fetch counter (PFC), then what will be sent in the next PS stage? Is it 0x00000208 (exactly the value of PFC), or 0x00000200 (forced to be at the 32-byte boundary)?

And if it was 0x00000208, let's suppose, then what would be fetched? Was it 0x00000200~0x00000220 (aligned), or 0x00000208~0x00000228 (cross the 32-byte boundary)?

I did not find out an explicit declaration about that in spru732j or some other docuements. Did I miss something?

Thanks and best regards,

  • Lu Feng,

    There are many details of the the C64x architecture that are not appropriate for public documentation. In the CPU & Instruction Set Reference Guide, we have documented the items that we consider to be required for users of the DSP. If you require design details that are not publicly available, please contact your marketing or local sales contacts to enter into a contractual relationship with TI so you can receive that information, if you and TI reach a mutual agreement.

    The only part I can comfortably address is that a Fetch Packet will not cross a 32-byte boundary, so the fetch in your case will not be 0x00000208-0x00000228. Whether the actual fetch will be 0x00000208-0x0000021F or 0x00000208-0x0000020B, I do not know. I suspect an entire cache line will be transferred, but that would not be a performance issue when reading from internal memory like this.

    Why do you seek this level of detail on the internal methods of the processor? Have you struck a performance issue that you are trying to resolve?

    Regards,
    RandyP

  • Hi RandyP,

    I'm sorry for not knowing that the information at this level is not public. I just started a job with C6416 recently. I investigated some public documents, trying to make a basic understanding to the characteristic of the way it works. This is a personal habit. And this question is for personal interesting ;-)

    Well, though my question is not fully answered, your patiently reply has satisfied me a lot.

    Thank you very much!

    Best regards,

    Lu