TI中文支持网
TI专业的中文技术问题搜集分享网站

請問高度資料搬移到L2 buffer要如何和寬度資料搬的一樣快?

您好,

我的L2 buffer大小只有128KB可使用,

我在寫影像處理gray_dilation演算法時,必須將每列的資料搬移到L2 buffer,做寬度的擴增,再將每行的影像資料搬移到L2 buffer運算,做高度的擴增,

但我卻發覺當我把影像每列的資料搬到L2 buffer, 因為資料橫向排列是連續的,所以搬過去很快,

但做高度擴增時,我把每行影像資料搬到L2 buffer, 因為資料不連續的,我搬每個行的1個像素, 它其實也把整列一起搬過去,所以相當花時間,

搬行資料和搬列的資料所花費的時間差了上百倍之多,想請教有沒有什麼方法可以增快高度資料的搬移呢? 因為cache的容量並不大,

當影像的高度資料太長,搬運時間就比搬列的資料多了好多倍,下面是搬高度資料和搬寬度資料到L2 buffer的程式碼,

請問有什麼解決方法嗎?

 

//搬高度資料

 for(i=0; i<imageWidth; i++)  

   for(j=0; j<imageHeight; j++)   {    

            L2Buff[j] = imgData[i + j*imageWidth];     

   }

 

//搬寬度資料

 for(j=0; j<imageHeight; j++)

 {   

     memcpy(tmpBuff, imgData, imageWidth*sizeof(U8));  

     imgData+= imageWidth;

}

Chia-Hung Chen1:

抱歉補充一下,

台灣的列和行剛好和大陸的列和行意思相反,我這裡的列是指橫的影像寬度資料,

行是指垂直的影像高度資料

Thomas Yang1:

回复 Chia-Hung Chen1:

可以考虑用EDMA搬移嘛,里面有3D模式,可以通过指定 index 增加来调整源和目的数据的offset。

具体使用可以参考下EDMA UG的 3D模式章节

赞(0)
未经允许不得转载:TI中文支持网 » 請問高度資料搬移到L2 buffer要如何和寬度資料搬的一樣快?
分享到: 更多 (0)