데이터들이 섞여있는 메모리에서 데이터를 적은 오버헤드로 조립하는 방법..

글쓴이: 익명 사용자 / 작성시간: 수, 2019/11/06 - 6:25오후
안녕하세요.
프로젝트를 하나 진행중인데, PCIE 버스를 통해서 1920*1080p60 영상 8채널이 DMA를 통해 전송됩니다.
그런데 전송되는 형태가 [1][2][3][4][5][6][7][8][1][2][3][4][5][6][7][8]....
이렇게 채널별로 1픽셀씩 번갈아가면서 메모리에 기록되는데요.
SW에서 1번 영상을 만들어내려면 버퍼를 하나 만들고 0번 픽셀 카피 8번 픽셀 카피...
이런식으로 복사를 진행해서 조립합니다.
그런데 혹시 이런 동작을 적은 오버헤드로 처리할 수 있는 방법이 있을까요?
채널별로 쭉 이어진 데이터가 메모리에 써져 있다면 memcpy 하나만으로 처리가 되는데 저렇게 데이터가 오니 성능에 많은 문제가 있네요.
* DMA를 하는 PCIE 하드웨어에서는 전송 방법에 대한 수정이 불가능한 상황입니다.
Forums:
버퍼에서 버퍼로 옮기는 에너지를 줄일수는 없으니 결국
버퍼에서 버퍼로 옮기는 에너지를 줄일수는 없으니 결국 +8 주소 인덱싱을 어떻게 효과적으로 하는지에 따라서 오버헤드가 결정될 것 같네요.
+8을 쓸수도 있고, mod 연산, block sequential 연산 등도 고려해 볼만 하네요.
그 부분만 inline assembly로 해볼만 하고요.
댓글 달기