i.MX 8M Plus: SDMA Memory to Memory Performance

キャンセル
次の結果を表示 
表示  限定  | 次の代わりに検索 
もしかして: 

i.MX 8M Plus: SDMA Memory to Memory Performance

514件の閲覧回数
stollg
Contributor I

Hi,

We are currently developing an application where we have to copy 16384Bytes of data from shared memory (protected by a Messaging Unit)  to "normal" memory. The copy process is executed by the M7 co-processor at 800MHz an takes:

  • ~150us on a non-cacheable memory area (110MB/s)
  • ~90us on a cacheable memory area (190MB/s)
  • ~50-90us when using stack memory (200-400MB/s)

Since we are working on shared-memory, we are talking about non-cacheable memory and therefore it takes 150us. To make the process faster, we tried to use the Memory to Memory function of the Smart Direct Memory Access Controller (SDMA). But also with that one:

  • 133us on non-cacheable memory area (124MB/s)

This is a little bit faster, but still not really faster than the standard memcpy on the M7 processor. At 800MHz on the SDMA this would also mean, that it takes at least 7 instructions per byte. Or if we assume that the SDMA uses 32bit transfer, we would talk about 29 instructions per transfer.
All the memory areas are aligned at 32Bytes. Is there anything else which can be done to increase the SDMAs performance?

Used code:

sdma_handle_t g_SDMA_Handle = {0};
volatile bool g_Transfer_Done = false;
AT_NONCACHEABLE_SECTION_ALIGN(sdma_context_data_t context, 4);
AT_NONCACHEABLE_SECTION_ALIGN(uint32_t srcAddr[BUFF_LENGTH], 32);
AT_NONCACHEABLE_SECTION_ALIGN(uint32_t destAddr[BUFF_LENGTH], 32);
 
int main() {
...
SDMA_GetDefaultConfig(&userConfig);
userConfig.ratio = kSDMA_ARMClockFreq;
SDMA_Init(EXAMPLE_SDMAARM, &userConfig);
SDMA_CreateHandle(&g_SDMA_Handle, EXAMPLE_SDMAARM, 1, &context);
SDMA_SetCallback(&g_SDMA_Handle, SDMA_Callback, NULL);
SDMA_PrepareTransfer(&transferConfig, (uint32_t)srcAddr, (uint32_t)destAddr, sizeof(srcAddr[0]), sizeof(destAddr[0]),
sizeof(srcAddr[0]), sizeof(srcAddr), 0, kSDMA_PeripheralTypeMemory, kSDMA_MemoryToMemory );
SDMA_SubmitTransfer(&g_SDMA_Handle, &transferConfig);
SDMA_SetChannelPriority(EXAMPLE_SDMAARM, 1, 2U);
g_Transfer_Done = false;

uint32_t tStart = timerGetMicroSeconds();
SDMA_StartTransfer(&g_SDMA_Handle);
while (g_Transfer_Done != true){ }
int32_t timerDiff = timerDiffMicroSeconds(timerGetMicroSeconds(), tStart);
...
}



 

0 件の賞賛
返信
4 返答(返信)

485件の閲覧回数
Bio_TICFSL
NXP TechSupport
NXP TechSupport

Hello,

Not possible, copy ram to ram, with current SDMA API.

Regards

0 件の賞賛
返信

438件の閲覧回数
stollg
Contributor I

Sorry, but I can not accepts this answer, since the copy from ram to ram is possible with the code snipped provided in the original answer.
It uses the SDMA script located at SDMA address 644:
   #define FSL_SDMA_M2M_ADDR 644
    sdma_transfer_type_t is kSDMA_MemoryToMemory

But the problem is, that it is not faster compared to a standard memcpy on the M7-core.


In the datasheet there is also a dedicated section which describes a fast ram to ram copy:
    7.2.3.12.1.9 Burst DMA Unit Copy Mode.

So, how can we use this feature?

BR

0 件の賞賛
返信

416件の閲覧回数
Bio_TICFSL
NXP TechSupport
NXP TechSupport

Hello,

You are copy from M7 to cortex or viceversa that;s possible. but copy from the same source is not possible in the current SDMA API.

Regards

0 件の賞賛
返信

372件の閲覧回数
stollg
Contributor I

Hi,

thank you for the fast reply, but it does not answer my question.

I know that it is possible to copy from one memory location to another memory location using the current SDMA API. But the question was:

  1. Why is the performance of the SDMA so slow: 124MB/s?
  2. And is there a way to increase the throughput?

BR

0 件の賞賛
返信
%3CLINGO-SUB%20id%3D%22lingo-sub-2149269%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3Ei.MX%208M%20Plus%3A%20SDMA%E3%83%A1%E3%83%A2%E3%83%AA%E9%96%93%E3%83%91%E3%83%95%E3%82%A9%E3%83%BC%E3%83%9E%E3%83%B3%E3%82%B9%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-2149269%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%3CP%3E%E3%81%93%E3%82%93%E3%81%AB%E3%81%A1%E3%81%AF%E3%80%81%3C%2FP%3E%3CP%3E%E7%8F%BE%E5%9C%A8%E3%80%81%E5%85%B1%E6%9C%89%E3%83%A1%E3%83%A2%E3%83%AA%20(%E3%83%A1%E3%83%83%E3%82%BB%E3%83%BC%E3%82%B8%E3%83%B3%E3%82%B0%20%E3%83%A6%E3%83%8B%E3%83%83%E3%83%88%E3%81%AB%E3%82%88%E3%81%A3%E3%81%A6%E4%BF%9D%E8%AD%B7%E3%81%95%E3%82%8C%E3%81%A6%E3%81%84%E3%82%8B)%20%E3%81%8B%E3%82%89%E3%80%8C%E9%80%9A%E5%B8%B8%E3%81%AE%E3%80%8D%E3%83%A1%E3%83%A2%E3%83%AA%E3%81%AB%2016384%20%E3%83%90%E3%82%A4%E3%83%88%E3%81%AE%E3%83%87%E3%83%BC%E3%82%BF%E3%82%92%E3%82%B3%E3%83%94%E3%83%BC%E3%81%99%E3%82%8B%E5%BF%85%E8%A6%81%E3%81%8C%E3%81%82%E3%82%8B%E3%82%A2%E3%83%97%E3%83%AA%E3%82%B1%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3%E3%82%92%E9%96%8B%E7%99%BA%E3%81%97%E3%81%A6%E3%81%84%E3%81%BE%E3%81%99%E3%80%82%E3%82%B3%E3%83%94%E3%83%BC%20%E3%83%97%E3%83%AD%E3%82%BB%E3%82%B9%E3%81%AF%E3%80%81M7%20%E3%82%B3%E3%83%97%E3%83%AD%E3%82%BB%E3%83%83%E3%82%B5%E3%81%AB%E3%82%88%E3%81%A3%E3%81%A6%20800MHz%20%E3%81%A7%E5%AE%9F%E8%A1%8C%E3%81%95%E3%82%8C%E3%80%81%E6%AC%A1%E3%81%AE%E6%99%82%E9%96%93%E3%81%8C%E3%81%8B%E3%81%8B%E3%82%8A%E3%81%BE%E3%81%99%E3%80%82%3C%2FP%3E%3CUL%3E%3CLI%3E%E3%82%AD%E3%83%A3%E3%83%83%E3%82%B7%E3%83%A5%E4%B8%8D%E5%8F%AF%E8%83%BD%E3%81%AA%E3%83%A1%E3%83%A2%E3%83%AA%E9%A0%98%E5%9F%9F%E3%81%A7%E7%B4%84150us%EF%BC%88110MB%2F%E7%A7%92%EF%BC%89%3C%2FLI%3E%3CLI%3E%E3%82%AD%E3%83%A3%E3%83%83%E3%82%B7%E3%83%A5%E5%8F%AF%E8%83%BD%E3%81%AA%E3%83%A1%E3%83%A2%E3%83%AA%E9%A0%98%E5%9F%9F%E3%81%A7%E7%B4%8490us%EF%BC%88190MB%2F%E7%A7%92%EF%BC%89%3C%2FLI%3E%3CLI%3E%E3%82%B9%E3%82%BF%E3%83%83%E3%82%AF%E3%83%A1%E3%83%A2%E3%83%AA%EF%BC%88200%E3%80%9C400MB%2F%E7%A7%92%EF%BC%89%E4%BD%BF%E7%94%A8%E6%99%82%E3%81%AF%E3%80%9C50%E3%80%9C90us%3C%2FLI%3E%3C%2FUL%3E%3CP%3E%E7%A7%81%E3%81%9F%E3%81%A1%E3%81%AF%E5%85%B1%E6%9C%89%E3%83%A1%E3%83%A2%E3%83%AA%E3%81%AB%E5%8F%96%E3%82%8A%E7%B5%84%E3%82%93%E3%81%A7%E3%81%84%E3%82%8B%E3%81%9F%E3%82%81%E3%80%81%E3%82%AD%E3%83%A3%E3%83%83%E3%82%B7%E3%83%A5%E4%B8%8D%E5%8F%AF%E8%83%BD%E3%81%AA%E3%83%A1%E3%83%A2%E3%83%AA%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6%E8%A9%B1%E3%81%97%E3%81%A6%E3%81%8A%E3%82%8A%E3%80%81%E3%81%9D%E3%81%AE%E3%81%9F%E3%82%81%20150us%20%E3%81%8B%E3%81%8B%E3%82%8A%E3%81%BE%E3%81%99%E3%80%82%E3%83%97%E3%83%AD%E3%82%BB%E3%82%B9%E3%82%92%E9%AB%98%E9%80%9F%E5%8C%96%E3%81%99%E3%82%8B%E3%81%9F%E3%82%81%E3%81%AB%E3%80%81Smart%20Direct%20Memory%20Access%20Controller%20(SDMA)%20%E3%81%AE%E3%83%A1%E3%83%A2%E3%83%AA%E9%96%93%E6%A9%9F%E8%83%BD%E3%82%92%E4%BD%BF%E7%94%A8%E3%81%97%E3%82%88%E3%81%86%E3%81%A8%E3%81%97%E3%81%BE%E3%81%97%E3%81%9F%E3%80%82%E3%81%97%E3%81%8B%E3%81%97%E3%80%81%E3%81%93%E3%82%8C%E3%82%82%E3%81%BE%E3%81%9F%3A%3C%2FP%3E%3CUL%3E%3CLI%3E%E3%82%AD%E3%83%A3%E3%83%83%E3%82%B7%E3%83%A5%E4%B8%8D%E5%8F%AF%E8%83%BD%E3%81%AA%E3%83%A1%E3%83%A2%E3%83%AA%E9%A0%98%E5%9F%9F%E3%81%A7133us%EF%BC%88124MB%2Fs%EF%BC%89%3C%2FLI%3E%3C%2FUL%3E%3CP%3E%E3%81%93%E3%82%8C%E3%81%AF%E5%B0%91%E3%81%97%E9%AB%98%E9%80%9F%E3%81%A7%E3%81%99%E3%81%8C%E3%80%81M7%20%E3%83%97%E3%83%AD%E3%82%BB%E3%83%83%E3%82%B5%E3%81%AE%E6%A8%99%E6%BA%96%20memcpy%20%E3%82%88%E3%82%8A%E3%81%AF%E5%AE%9F%E9%9A%9B%E3%81%AB%E3%81%AF%E9%AB%98%E9%80%9F%E3%81%A7%E3%81%AF%E3%81%82%E3%82%8A%E3%81%BE%E3%81%9B%E3%82%93%E3%80%82SDMA%20%E3%81%AE%20800MHz%20%E3%81%A7%E3%81%AF%E3%80%811%20%E3%83%90%E3%82%A4%E3%83%88%E3%81%82%E3%81%9F%E3%82%8A%E5%B0%91%E3%81%AA%E3%81%8F%E3%81%A8%E3%82%82%207%20%E3%81%A4%E3%81%AE%E5%91%BD%E4%BB%A4%E3%81%8C%E5%BF%85%E8%A6%81%E3%81%AB%E3%81%AA%E3%82%8B%E3%81%93%E3%81%A8%E3%82%82%E6%84%8F%E5%91%B3%E3%81%97%E3%81%BE%E3%81%99%E3%80%82%E3%81%82%E3%82%8B%E3%81%84%E3%81%AF%E3%80%81SDMA%20%E3%81%8C%2032%20%E3%83%93%E3%83%83%E3%83%88%E8%BB%A2%E9%80%81%E3%82%92%E4%BD%BF%E7%94%A8%E3%81%99%E3%82%8B%E3%81%A8%E4%BB%AE%E5%AE%9A%E3%81%99%E3%82%8B%E3%81%A8%E3%80%81%E8%BB%A2%E9%80%81%E3%81%94%E3%81%A8%E3%81%AB%2029%20%E5%80%8B%E3%81%AE%E5%91%BD%E4%BB%A4%E3%81%8C%E5%BF%85%E8%A6%81%E3%81%AB%E3%81%AA%E3%82%8A%E3%81%BE%E3%81%99%E3%80%82%3CBR%20%2F%3E%E3%81%99%E3%81%B9%E3%81%A6%E3%81%AE%E3%83%A1%E3%83%A2%E3%83%AA%E9%A0%98%E5%9F%9F%E3%81%AF%2032%20%E3%83%90%E3%82%A4%E3%83%88%E3%81%AB%E6%8F%83%E3%81%88%E3%82%89%E3%82%8C%E3%81%A6%E3%81%84%E3%81%BE%E3%81%99%E3%80%82SDMA%20%E3%81%AE%E3%83%91%E3%83%95%E3%82%A9%E3%83%BC%E3%83%9E%E3%83%B3%E3%82%B9%E3%82%92%E5%90%91%E4%B8%8A%E3%81%95%E3%81%9B%E3%82%8B%E3%81%9F%E3%82%81%E3%81%AB%E4%BB%96%E3%81%AB%E4%BD%95%E3%81%8B%20CAN%20%E3%81%99%E3%82%8B%E3%81%93%E3%81%A8%E3%81%AF%E3%81%82%E3%82%8A%E3%81%BE%E3%81%99%E3%81%8B%3F%3CBR%20%2F%3E%3CBR%20%2F%3E%3C%2FP%3E%3CP%3E%E4%BD%BF%E7%94%A8%E3%81%97%E3%81%9F%E3%82%B3%E3%83%BC%E3%83%89%3A%3C%2FP%3E%3CDIV%3E%3CDIV%3E%3CDIV%3E%3CDIV%3E%3CSPAN%3Esdma_handle_t%3C%2FSPAN%3E%20%3CSPAN%3Eg_SDMA_Handle%3C%2FSPAN%3E%20%3CSPAN%3E%3D%20%7B%3C%2FSPAN%3E%20%3CSPAN%3E0%3C%2FSPAN%3E%20%3CSPAN%3E%7D%3B%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E%E6%8F%AE%E7%99%BA%E6%80%A7%3C%2FSPAN%3E%3CSPAN%3E%E3%83%96%E3%83%BC%E3%83%AB%3C%2FSPAN%3E%3CSPAN%3Eg_Transfer_Done%3C%2FSPAN%3E%20%3CSPAN%3E%3D%3C%2FSPAN%3E%20%3CSPAN%3Efalse%3C%2FSPAN%3E%20%3CSPAN%3E%3B%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3EAT_NONCACHEABLE_SECTION_ALIGN%3C%2FSPAN%3E%20%3CSPAN%3E(%3C%2FSPAN%3E%20%3CSPAN%3Esdma_context_data_t%3C%2FSPAN%3E%3CSPAN%3E%E3%82%B3%E3%83%B3%E3%83%86%E3%82%AD%E3%82%B9%E3%83%88%E3%80%81%3C%2FSPAN%3E%20%3CSPAN%3E4%3C%2FSPAN%3E%20%3CSPAN%3E)%3B%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3EAT_NONCACHEABLE_SECTION_ALIGN%3C%2FSPAN%3E%20%3CSPAN%3E(%3C%2FSPAN%3E%20%3CSPAN%3Euint32_t%3C%2FSPAN%3E%20%3CSPAN%3EsrcAddr%3C%2FSPAN%3E%20%3CSPAN%3E%5B%3C%2FSPAN%3E%20%3CSPAN%3EBUFF_LENGTH%3C%2FSPAN%3E%20%3CSPAN%3E%5D%2C%3C%2FSPAN%3E%20%3CSPAN%3E32%3C%2FSPAN%3E%20%3CSPAN%3E)%3B%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3EAT_NONCACHEABLE_SECTION_ALIGN%3C%2FSPAN%3E%20%3CSPAN%3E(%3C%2FSPAN%3E%20%3CSPAN%3Euint32_t%3C%2FSPAN%3E%20%3CSPAN%3EdestAddr%3C%2FSPAN%3E%20%3CSPAN%3E%5B%3C%2FSPAN%3E%20%3CSPAN%3EBUFF_LENGTH%3C%2FSPAN%3E%20%3CSPAN%3E%5D%2C%3C%2FSPAN%3E%20%3CSPAN%3E32%3C%2FSPAN%3E%20%3CSPAN%3E)%3B%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%26nbsp%3B%3C%2FDIV%3E%3C%2FDIV%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3Eint%3C%2FSPAN%3E%3CSPAN%3E%E3%83%A1%E3%82%A4%E3%83%B3%3C%2FSPAN%3E%3CSPAN%3E()%20%7B%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E...%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3ESDMA_GetDefaultConfig%3C%2FSPAN%3E%20%3CSPAN%3E(%26amp%3BuserConfig)%3B%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3EuserConfig%3C%2FSPAN%3E%20%3CSPAN%3E.%3C%2FSPAN%3E%20%3CSPAN%3Eratio%3C%2FSPAN%3E%20%3CSPAN%3E%3D%20kSDMA_ARMClockFreq%3B%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3ESDMA_Init%3C%2FSPAN%3E%20%3CSPAN%3E(%3C%2FSPAN%3E%20%3CSPAN%3EEXAMPLE_SDMAARM%3C%2FSPAN%3E%20%3CSPAN%3E%2C%20%26amp%3BuserConfig)%3B%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3ESDMA_CreateHandle%3C%2FSPAN%3E%20%3CSPAN%3E(%26amp%3Bg_SDMA_Handle%E3%80%81%3C%2FSPAN%3E%20%3CSPAN%3EEXAMPLE_SDMAARM%3C%2FSPAN%3E%20%3CSPAN%3E%E3%80%81%3C%2FSPAN%3E%20%3CSPAN%3E1%3C%2FSPAN%3E%20%3CSPAN%3E%E3%80%81%26amp%3Bcontext)%3B%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3ESDMA_SetCallback%3C%2FSPAN%3E%20%3CSPAN%3E(%26amp%3Bg_SDMA_Handle%E3%80%81SDMA_Callback%E3%80%81%3C%2FSPAN%3E%20%3CSPAN%3ENULL%3C%2FSPAN%3E%20%3CSPAN%3E)%3B%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3ESDMA_PrepareTransfer%3C%2FSPAN%3E%20%3CSPAN%3E(%26amp%3BtransferConfig%2C%20(%3C%2FSPAN%3E%20%3CSPAN%3Euint32_t%3C%2FSPAN%3E%20%3CSPAN%3E)srcAddr%2C%20(%3C%2FSPAN%3E%20%3CSPAN%3Euint32_t%3C%2FSPAN%3E%20%3CSPAN%3E)destAddr%2C%3C%2FSPAN%3E%20%3CSPAN%3Esizeof%3C%2FSPAN%3E%20%3CSPAN%3E(%3C%2FSPAN%3E%20%3CSPAN%3EsrcAddr%3C%2FSPAN%3E%20%3CSPAN%3E%5B%3C%2FSPAN%3E%20%3CSPAN%3E0%3C%2FSPAN%3E%20%3CSPAN%3E%5D)%2C%3C%2FSPAN%3E%20%3CSPAN%3Esizeof%3C%2FSPAN%3E%20%3CSPAN%3E(%3C%2FSPAN%3E%20%3CSPAN%3EdestAddr%3C%2FSPAN%3E%20%3CSPAN%3E%5B%3C%2FSPAN%3E%20%3CSPAN%3E0%3C%2FSPAN%3E%20%3CSPAN%3E%5D)%2C%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3Esizeof%3C%2FSPAN%3E%20%3CSPAN%3E(%3C%2FSPAN%3E%20%3CSPAN%3EsrcAddr%3C%2FSPAN%3E%20%3CSPAN%3E%5B%3C%2FSPAN%3E%20%3CSPAN%3E0%3C%2FSPAN%3E%20%3CSPAN%3E%5D%20)%E3%80%81%3C%2FSPAN%3E%20%3CSPAN%3Esizeof%3C%2FSPAN%3E%20%3CSPAN%3E(srcAddr)%E3%80%81%3C%2FSPAN%3E%20%3CSPAN%3E0%3C%2FSPAN%3E%20%3CSPAN%3E%E3%80%81%20kSDMA_PeripheralTypeMemory%E3%80%81%20kSDMA_MemoryToMemory%20)%3B%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3ESDMA_SubmitTransfer%3C%2FSPAN%3E%20%3CSPAN%3E(%26amp%3Bg_SDMA_Handle%E3%80%81%26amp%3BtransferConfig)%3B%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3ESDMA_SetChannelPriority%3C%2FSPAN%3E%20%3CSPAN%3E(%3C%2FSPAN%3E%20%3CSPAN%3EEXAMPLE_SDMAARM%3C%2FSPAN%3E%20%3CSPAN%3E%2C%3C%2FSPAN%3E%20%3CSPAN%3E1%3C%2FSPAN%3E%20%3CSPAN%3E%2C%3C%2FSPAN%3E%20%3CSPAN%3E2U%3C%2FSPAN%3E%20%3CSPAN%3E)%3B%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3Eg_Transfer_Done%20%3D%3C%2FSPAN%3E%20%3CSPAN%3Efalse%3C%2FSPAN%3E%20%3CSPAN%3E%3B%3C%2FSPAN%3E%3C%2FDIV%3E%3CBR%20%2F%3E%3CDIV%3E%3CSPAN%3Euint32_t%3C%2FSPAN%3E%20%3CSPAN%3EtStart%20%3D%3C%2FSPAN%3E%20%3CSPAN%3EtimerGetMicroSeconds%3C%2FSPAN%3E%20%3CSPAN%3E()%3B%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3ESDMA_StartTransfer%3C%2FSPAN%3E%20%3CSPAN%3E(%26amp%3Bg_SDMA_Handle)%3B%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E(%3C%2FSPAN%3E%20%3CSPAN%3Eg_Transfer_Done%20!%3D%3C%2FSPAN%3E%20%3CSPAN%3Etrue%3C%2FSPAN%3E%20%3CSPAN%3E)%7B%20%7D%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3Eint32_t%3C%2FSPAN%3E%20%3CSPAN%3EtimerDiff%20%3D%3C%2FSPAN%3E%20%3CSPAN%3EtimerDiffMicroSeconds%3C%2FSPAN%3E%20%3CSPAN%3E(%3C%2FSPAN%3E%20%3CSPAN%3EtimerGetMicroSeconds%3C%2FSPAN%3E%20%3CSPAN%3E()%2C%20tStart)%3B%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E...%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E%7D%3C%2FSPAN%3E%3C%2FDIV%3E%3C%2FDIV%3E%3CP%3E%3CBR%20%2F%3E%3CBR%20%2F%3E%3C%2FP%3E%3CBR%20%2F%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-2154083%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%20translate%3D%22no%22%3ERe%3A%20i.MX%208M%20Plus%3A%20SDMA%20Memory%20to%20Memory%20Performance%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-2154083%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%3CP%3E%E3%81%93%E3%82%93%E3%81%AB%E3%81%A1%E3%81%AF%E3%80%81%3C%2FP%3E%3CP%3E%E7%B4%A0%E6%97%A9%E3%81%84%E8%BF%94%E4%BF%A1%E3%81%82%E3%82%8A%E3%81%8C%E3%81%A8%E3%81%86%E3%81%94%E3%81%96%E3%81%84%E3%81%BE%E3%81%99%E3%80%82%E3%81%97%E3%81%8B%E3%81%97%E3%80%81%E7%A7%81%E3%81%AE%E8%B3%AA%E5%95%8F%E3%81%AB%E3%81%AF%E7%AD%94%E3%81%88%E3%81%A6%E3%81%84%E3%81%BE%E3%81%9B%E3%82%93%E3%80%82%3C%2FP%3E%3CP%3E%E7%8F%BE%E5%9C%A8%E3%81%AE%20SDMA%20API%20%E3%82%92%E4%BD%BF%E7%94%A8%E3%81%97%E3%81%A6%E3%80%81%E3%81%82%E3%82%8B%E3%83%A1%E3%83%A2%E3%83%AA%E4%BD%8D%E7%BD%AE%E3%81%8B%E3%82%89%E5%88%A5%E3%81%AE%E3%83%A1%E3%83%A2%E3%83%AA%E4%BD%8D%E7%BD%AE%E3%81%AB%E3%82%B3%E3%83%94%E3%83%BC%E3%81%A7%E3%81%8D%E3%82%8B%E3%81%93%E3%81%A8%E3%81%AF%E3%82%8F%E3%81%8B%E3%81%A3%E3%81%A6%E3%81%84%E3%81%BE%E3%81%99%E3%80%82%E3%81%97%E3%81%8B%E3%81%97%E3%80%81%E7%96%91%E5%95%8F%E3%81%AF%E6%AC%A1%E3%81%AE%E9%80%9A%E3%82%8A%E3%81%A7%E3%81%99%E3%80%82%3C%2FP%3E%3COL%3E%3CLI%3ESDMA%20%E3%81%AE%E3%83%91%E3%83%95%E3%82%A9%E3%83%BC%E3%83%9E%E3%83%B3%E3%82%B9%E3%81%8C%20124MB%2F%E7%A7%92%E3%81%A8SO%E9%81%85%E3%81%84%E3%81%AE%E3%81%A7%E3%81%97%E3%82%87%E3%81%86%E3%81%8B%3F%3C%2FLI%3E%3CLI%3E%E3%82%B9%E3%83%AB%E3%83%BC%E3%83%97%E3%83%83%E3%83%88%E3%82%92%E5%90%91%E4%B8%8A%E3%81%95%E3%81%9B%E3%82%8B%E6%96%B9%E6%B3%95%E3%81%AF%E3%81%82%E3%82%8A%E3%81%BE%E3%81%99%E3%81%8B%3F%3C%2FLI%3E%3C%2FOL%3E%3CP%3EBR%3C%2FP%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-2153699%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%20translate%3D%22no%22%3ERe%3A%20i.MX%208M%20Plus%3A%20SDMA%20Memory%20to%20Memory%20Performance%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-2153699%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%3CP%3E%E3%81%93%E3%82%93%E3%81%AB%E3%81%A1%E3%81%AF%E3%80%81%3C%2FP%3E%0A%3CP%3EM7%20%E3%81%8B%E3%82%89%20Cortex%20%E3%81%B8%E3%80%81%E3%81%BE%E3%81%9F%E3%81%AF%E3%81%9D%E3%81%AE%E9%80%86%E3%81%AB%E3%82%B3%E3%83%94%E3%83%BC%E3%81%99%E3%82%8B%E3%81%93%E3%81%A8%E3%81%8C%E5%8F%AF%E8%83%BD%E3%81%A7%E3%81%99%E3%80%82%E3%81%9F%E3%81%A0%E3%81%97%E3%80%81%E7%8F%BE%E5%9C%A8%E3%81%AE%20SDMA%20API%20%E3%81%A7%E3%81%AF%E5%90%8C%E3%81%98%E3%82%BD%E3%83%BC%E3%82%B9%E3%81%8B%E3%82%89%E3%81%AE%E3%82%B3%E3%83%94%E3%83%BC%E3%81%AF%E3%81%A7%E3%81%8D%E3%81%BE%E3%81%9B%E3%82%93%E3%80%82%3C%2FP%3E%0A%3CP%3E%E3%82%88%E3%82%8D%E3%81%97%E3%81%8F%E3%81%8A%E9%A1%98%E3%81%84%E3%81%97%E3%81%BE%E3%81%99%E3%80%82%3C%2FP%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-2153337%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%20translate%3D%22no%22%3ERe%3A%20i.MX%208M%20Plus%3A%20SDMA%20Memory%20to%20Memory%20Performance%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-2153337%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%3CP%3E%E7%94%B3%E3%81%97%E8%A8%B3%E3%81%82%E3%82%8A%E3%81%BE%E3%81%9B%E3%82%93%E3%81%8C%E3%80%81%E5%85%83%E3%81%AE%E5%9B%9E%E7%AD%94%E3%81%A7%E6%8F%90%E4%BE%9B%E3%81%95%E3%82%8C%E3%81%A6%E3%81%84%E3%82%8B%E3%82%B3%E3%83%BC%E3%83%89%E3%82%92%E5%88%87%E3%82%8A%E5%8F%96%E3%81%A3%E3%81%A6%E4%BD%BF%E7%94%A8%E3%81%99%E3%82%8C%E3%81%B0%20RAM%20%E3%81%8B%E3%82%89%20RAM%20%E3%81%B8%E3%81%AE%E3%82%B3%E3%83%94%E3%83%BC%E3%81%8C%E5%8F%AF%E8%83%BD%E3%81%AA%E3%81%9F%E3%82%81%E3%80%81%E3%81%93%E3%81%AE%E5%9B%9E%E7%AD%94%E3%82%92%E5%8F%97%E3%81%91%E5%85%A5%E3%82%8C%E3%82%8B%E3%81%93%E3%81%A8%E3%81%AF%E3%81%A7%E3%81%8D%E3%81%BE%E3%81%9B%E3%82%93%E3%80%82%3CBR%20%2F%3E%E3%81%93%E3%82%8C%E3%81%AF%E3%80%81SDMA%20%E3%82%A2%E3%83%89%E3%83%AC%E3%82%B9%20644%20%E3%81%AB%E3%81%82%E3%82%8B%20SDMA%20%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%97%E3%83%88%E3%82%92%E4%BD%BF%E7%94%A8%E3%81%97%E3%81%BE%E3%81%99%E3%80%82%3CBR%20%2F%3E%20%23FSL_SDMA_M2M_ADDR%20644%20%E3%82%92%E5%AE%9A%E7%BE%A9%E3%81%99%E3%82%8B%3CBR%20%2F%3Esdma_transfer_type_t%20%E3%81%AF%20kSDMA_MemoryToMemory%20%E3%81%A7%E3%81%99%3CBR%20%2F%3E%3CBR%20%2F%3E%E3%81%97%E3%81%8B%E3%81%97%E5%95%8F%E9%A1%8C%E3%81%AF%E3%80%81M7%20%E3%82%B3%E3%82%A2%E3%81%AE%E6%A8%99%E6%BA%96%20memcpy%20%E3%81%A8%E6%AF%94%E3%81%B9%E3%81%A6%E9%AB%98%E9%80%9F%E3%81%A7%E3%81%AF%E3%81%AA%E3%81%84%E3%81%93%E3%81%A8%E3%81%A7%E3%81%99%E3%80%82%3C%2FP%3E%3CP%3E%3CBR%20%2F%3E%E3%83%87%E3%83%BC%E3%82%BF%E3%82%B7%E3%83%BC%E3%83%88%E3%81%AB%E3%81%AF%E3%80%81RAM%20%E3%81%8B%E3%82%89%20RAM%20%E3%81%B8%E3%81%AE%E9%AB%98%E9%80%9F%E3%82%B3%E3%83%94%E3%83%BC%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6%E8%AA%AC%E6%98%8E%E3%81%99%E3%82%8B%E5%B0%82%E7%94%A8%E3%81%AE%E3%82%BB%E3%82%AF%E3%82%B7%E3%83%A7%E3%83%B3%E3%82%82%E3%81%82%E3%82%8A%E3%81%BE%E3%81%99%E3%80%82%3CBR%20%2F%3E%207.2.3.12.1.9%E3%83%90%E3%83%BC%E3%82%B9%E3%83%88%20DMA%20%E3%83%A6%E3%83%8B%E3%83%83%E3%83%88%20%E3%82%B3%E3%83%94%E3%83%BC%20%E3%83%A2%E3%83%BC%E3%83%89%E3%80%82%3CBR%20%2F%3E%3CBR%20%2F%3ESO%E3%80%81%E3%81%93%E3%81%AE%E6%A9%9F%E8%83%BD%E3%81%AF%E3%81%A9%E3%81%AE%E3%82%88%E3%81%86%E3%81%AB%E4%BD%BF%E7%94%A8%E3%81%99%E3%82%8C%E3%81%B0CAN%E3%81%A7%E3%81%97%E3%82%87%E3%81%86%E3%81%8B%3F%3C%2FP%3E%3CP%3EBR%3C%2FP%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-2150148%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%20translate%3D%22no%22%3ERe%3A%20i.MX%208M%20Plus%3A%20SDMA%20Memory%20to%20Memory%20Performance%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-2150148%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%3CP%3E%E3%81%93%E3%82%93%E3%81%AB%E3%81%A1%E3%81%AF%E3%80%81%3C%2FP%3E%0A%3CP%3E%E7%8F%BE%E5%9C%A8%E3%81%AE%20SDMA%20API%20%E3%81%A7%E3%81%AF%E3%80%81RAM%20%E3%82%92%20RAM%20%E3%81%AB%E3%82%B3%E3%83%94%E3%83%BC%E3%81%99%E3%82%8B%E3%81%93%E3%81%A8%E3%81%AF%E4%B8%8D%E5%8F%AF%E8%83%BD%E3%81%A7%E3%81%99%E3%80%82%3C%2FP%3E%0A%3CP%3E%E3%82%88%E3%82%8D%E3%81%97%E3%81%8F%E3%81%8A%E9%A1%98%E3%81%84%E3%81%97%E3%81%BE%E3%81%99%E3%80%82%3C%2FP%3E%3C%2FLINGO-BODY%3E