私は arm cortex-a9 クアッド コア デバイスを使用しており、マルチプロセス アプリケーションをプログラミングしています。これらのプロセスは、同じ入力ソース (mmap() 呼び出しを使用してすべてアクセスする DMA バッファ) を共有します。
プロセスが DMA メモリにアクセスするのにかかる時間が、入力のソースを通常の割り当てられたバッファ (つまり、malloc を使用して割り当てられた) に変更した場合よりも大幅に長くなることに気付きました。
DMAバッファがキャッシュ不可でなければならない理由は理解していますが、バッファが安定している(ほとんどの場合、ハードウェアによって変更されていない)かダーティ(データが変更されている)かを判断できるためです。メモリ領域を一時的にキャッシュ可能にすると、速度が大幅に向上する可能性があります。
それを行う方法はありますか?
現在、この行を使用してメモリをマップしています。
void *buf = mmap(0, size, PROT_READ | PROT_WRITE,MAP_SHARED, fd, phy_addr);
ありがとう!