Re: 'dmad' - fundamental question to specialists

Started by Jeff Brower June 3, 2004

I think:

-dmad == direct memory address

-yes DP is ignored

-MVMM specifies a short mem address(es) and/or short constant
values *inside* the op-code; e.g. a memory-mapped register

So I think when you say MVDM ARn,ARm you are "wasting" two words in instruction
and can use a single MVMM instead, even though the answer is the same. When you
"performance" you really mean "result", rather than amount of memory used and
of cycles.

To think about where TI's head was on C5xxx, you have to back up to a larger
picture. Without cache, sophisticated DMA, VLIW, multiple execution units, and
advanced features, TI had to concentrate on reducing code space and optimizing
pipeline whenever possible. Clearly, over time, that becomes more and more
and leads to a weird, non-uniform instruction set. At some point, fundamental
changes to device architecture have to be made -- i.e. C6xxx.

-Jeff Ilya Druker wrote:
> Gentlemen,
> I am desperately looking for answer to the question what is 'dmad'
> addressing mode? The TI's materials don't give an intelligible
> definition but only foggiest discriptions like "16-bits immediate data
> memory address (0<=dmad<e535)" or "uses a specific value to specify
> and address in data space" or "the syntax for dmad uses a symbol or a
> number to specify an address in data space" etc. I dared to ask TI's
> support and their answer was:
> "dmad is using immediate addressing.
> In C54x TI terminology, immediate addressing is a "fixed" address
> composed of 2 "halves".
> 7-bits contained within the instruction's opcode
> 9-bits contained in the the DP (Data-memory page Pointer) register"
> It seems wrong as in the following example all 16 bits were put by
> compiler to the opcode of the instruction (to remind - the syntax is
> "MVDM dmad,MMR"):
> MVDM *(33000),AR3
> Moreover, I don't see any difference in the performance under
> different environment conditions:
> 1. MVDM AR2,AR3 ; when CPL=0 and DP=0
> 2. MVDM AR2,AR3 ; when CPL=0 and DP!=0
> 3. MVDM AR2,AR3 ; when CPL=1 and DP=0
> 4. MVDM AR2,AR3 ; when CPL=1 and DP!=0
> 5. MVDM *(AR2),AR3
> It seems that DSP just ignores DP when the mode is dmad. If it is so
> why do we need MVMM for copying content of one register to another if
> we can use MVDM for that: instead of
> use
> or
> MVMD AR2,AR3 ?
> Can somebody make an order in this mess? I would really appreciate a
> competent answer or a reference.
> Thank you,
> Ilya Druker