C++À̳ª C#¿¡¼­ RAM³»ºÎÀǵ¥ÀÌÅ͸¦ ´Ù¸¥À§Ä¡·Î ¿Å±â´Â È¿À²ÀûÀÎ ¹æ¹ýÀÌ ÀÖÀ»±î¿ä?

tritob   
   Á¶È¸ 2724   Ãßõ 0    

RAM에 올라와있는 데이터중 대략 1~3GB정도의 데이터를 RAM의 다른 위치로 옮기는 작업을 하려고 합니다.

(여러번 반복해서 수행합니다)


Parallel.For문 안에서 Buffer.MemoryCopy함수를 이용해서 옮겨보니, CPU점유율도 너무 많이 사용하고, 시간도 오래걸리네요


지금 프로그램에서 다른 연산을 수행하느라 이미 점유율을 8~90%정도 사용하고있어서 리소스를 대기하느라


오래걸리는 것 같기도 합니다.


DMA같은 방식도 찾아보았는데, 이건 주변장치와 통신할때만 가능한 것으로 보이네요.


혹시 CPU점유율을 최소화 하거나, 빠른 속도로 RAM내부의 데이터를 다른 위치로 옮기는 방법을 아시는분이 있으실까요??

ªÀº±Û Àϼö·Ï ½ÅÁßÇÏ°Ô.
C++ À̶ó¸é Có·³ "Æ÷ÀÎÅÍ"°¡ µÉÅÙµ¥, ±»ÀÌ ¿Å±æ ÇÊ¿ä°¡?
     
tritob 2023-04
´Ù¸¥ PC·Î ¸Þ¸ð¸®³»¿ëÀ» º¸³»ÁÖ´Â ½ÃÄö½º°¡ Àִµ¥ À̶§ º¸³¾·Á¸é ƯÁ¤ ¸Þ¸ð¸®À§Ä¡·Î ¿øÇÏ´Â µ¥ÀÌÅ͸¦ À̵¿ÇØÁà¾ß Çؼ­¿ä..
±¸Â÷´Ï 2023-04
¸Þ¸ð¸®´Â OS¿¡ ÀÇÇؼ­ °¡»ó ¸Þ¸ð¸®¿¡ ¸ÊÇεǾî ÇÒ´çµÇÁö physical memory address·Î ÇÒ´çµÇ´Â°Ô ¾Æ´Ñµ¥ ƯÁ¤ À§Ä¡¶ó´Â°Ô ¾î¶² ÀǹÌÀÎÁö ¸ð¸£°Ú½À´Ï´Ù.
¾Æ¹«Æ° ´ë¿ë·® ¸Þ¸ð¸®¸¦ »çº»À» ¸¸µé¾î¼­ ÇØ¾ß ÇÑ´Ù¸é.. cpu¸¦ ¼Ò¸ðÇؼ­ º¹»çÇϴ¼ö ¹Û¿¡ ¾øÀ» °Ì´Ï´Ù.
±×·±µ¥.. ÀÓº£µðµåµµ ¾Æ´Ï°í ¿äÁò PC¿¡¼­ °íÀÛ(?) 1~3GB Á¤µµ memcpy ÇÑ´Ù°í ºÎÇÏ°¡ °É¸±¸¸Å­ ´À¸®Áø ¾ÊÀ»°Í °°Àºµ¥
ó¸®ÇÏ´Â ¾çÀÌ ¸¹°Å³ª º¹»çȽ¼ö°¡ ¸¹Àº°Ç ¾Æ´Ò±î¿ä?
     
tritob 2023-04
³× º¹»çȽ¼ö°¡ »ó´çÈ÷ ¸¹½À´Ï´Ù. ´ë·« 500¹øÁ¤µµÀÇ Copy°¡ ¼øÂ÷ÀûÀ¸·Î ²÷ÀÓ¾øÀÌ ÁøÇàµÇ¾ßÇؼ­ 1°³¸¦ CopyÇÏ´Â ºÎÇÏ°¡ óÀ½ºÎÅÍ ³¡±îÁö °è¼Ó °É¸®°ÔµÇ´Â »óȲÀÔ´Ï´Ù. ±âÁ¸ÀÇ 8~90%ºÎÇÏ¿Í ÁßøµÇ¸é¼­ 100%¸¦ Âï°ÔµÇ°í °á±¹ ¾çÂÊ ¿¬»êÀÌ ¸ðµÎ ´À·ÁÁö´Â °á°ú°¡ ³ª¿À°í ÀÖ½À´Ï´Ù..
          
±¸Â÷´Ï 2023-04
Àüü ·ÎÁ÷À» ¾Ë ¼ö ¾ø¾î µµ¿òµå¸®±â°¡ Èûµé °Í °°Áö¸¸..
±×·¸ ¸¹Àº º¹»ç°¡ ÇÊ¿äÇÏ´Ù´Â °ÍÀº ¿¬»êÇÏ´Â ÇÔ¼ö ÀÚü°¡ À߸ø ¼³°èµÈ°Ô ¾Æ´Ò±î ÇÕ´Ï´Ù.
zero-copy ÄÁ¼ÁÀ¸·Î µ¥ÀÌÅÍ´Â À¯ÁöÇÏ°í À妽º¸¦ ¿Å°Ü¼­ µ¥ÀÌÅ͸¦ ºÁ¾ßÁö
¿øÇÏ´Â À§Ä¡·Î µ¥ÀÌÅ͸¦ ¸Å¹ø º¹»çÇÏ´Â°Ç ¿À¹öÇìµå°¡ ³Ê¹« Å®´Ï´Ù.
               
tritob 2023-04
´Ù¸¥ ÇÁ·Î¼¼¼­·Î µ¥ÀÌÅ͸¦ Àü¼ÛÇØÁÖ´Â DMA±â´ÉÀ» »ç¿ëÇؾßÇؼ­ À妽º¸¦ ¿Å±â´ÂÁ¤µµ·Î´Â ºÒ°¡´ÉÇÏ°í, °°Àº À妽º¿¡ °è¼ÓÇؼ­ ´Ù¸¥ µ¥ÀÌÅ͸¦ ½á¾ßÇÏ´Â »óȲÀÔ´Ï´Ù ¤Ð
          
ÇÁ·Î±×·¥ÀÇ µ¿ÀÛÀÌ ÀüÇô ÃÖÀûÈ­ µÇ¾î ÀÖÁö ¾ÊÀºµí ÇÕ´Ï´Ù.

¾Æ¹«¸® ¼º´ÉÀÌ ÁÁÀº CPU¸¦ ½áµµ ´Ù·®ÀÇ ¸Þ¸ð¸® º¹»ç°¡ ÀϾ¸é
󸮼ӵµ°¡ ÃÖ¾ÇÀ¸·Î ¶³¾îÁý´Ï´Ù. ¼º´ÉÁÁÀº ÄÄÇ»ÅÍ·Î ¹Ù²Û´Ù°í ÇØ°áµÉ ¹®Á¦·Î º¸ÀÌÁø ¾Ê³×¿ä.

¿øº»¼Ò½ºÄڵ尡 Á¸ÀçÇÏ´Â »óȲÀ̶ó¸é, ´É·ÂÀÖ´Â °³¹ßÀÚ¿¡°Ô ÃÖÀûÈ­ ¼öÁ¤À» ¿äûÇغ¸¼¼¿ä.
ºí·°À¸·Î ³ª´²¼­ ¾²·¹µå ó¸® ÇÏÁö ¾Ê³ª¿ä?
AVX°è¿­, SSE instrinsic °è¿­À» ¾²¸é (Á» ½Å°æÀ» ½á¼­ ¾²¾ß Çϱä ÇÏÁö¸¸... glibcÀÇ memcpy¿¡µµ ÀÌ¹Ì µé¾îÀÖÀ» Áö ¸ð¸£°ÚÁö¸¸...) È®½ÇÈ÷ »¡¶óÁö±ä ÇÕ´Ï´Ù.
     
Ȥ½Ã³ª Çؼ­ Å×½ºÆ® ÇØ º¸´Ï ¿ÀÈ÷·Á memcpy°¡ Á¦ÀÏ ºü¸£´õ±º¿ä. ¤Ð¤Ð
  https://github.com/st1page/SIMDdemo ÀÇ ÇÁ·Î±×·¥À» ¹Þ¾Æ¼­ ÇØ ºÃ´Âµ¥... »ý°¢°ú ´Ù¸£°Ô ³ª¿Í¼­ Á» ´çȤ½º·´³×¿ä. memcpyµµ AVX¸¦ ¾²´Â °ÍÀ¸·Î ¾Æ´Âµ¥...
¶ô °°Àº°Ô °É¸®´Â°Í ¾Æ´Ñ°¡¿ä?
3g X 500 °³ÀÇ ¸Þ¸ð¸® ¿ë·®À» °¡Áø°Ô ¾Æ´Ï¸é °°Àº ¸Þ¸ð¸®¸¦ °øÀ¯Çؼ­ ÀÛ¾÷ÇؾßÇÏ´Ï ¹®Á¦°¡ µÉ¼ö ÀÖ½À´Ï´Ù.
°øÀ¯ÇÏÁö ¾Êµµ·Ï ¿¬»ê ÀÚü¸¦ ºÐÇÒÇؼ­ ÇÏ´Â°Ô ¾î¶³±î¿ä?
     
tritob 2023-04
¿¬»êÀ» ºÐÇÒÇÏ´Â°Ô ¾î¶²ÀǹÌÀϱî¿ä??
Èæ±â»ç 2023-04
ÁÖº¯±â±â(±×·¡ÇÈÄ«µå, µð½ºÅ© µî)·Î DMA Àü¼Û ó¸®Çϴ°ǰ¡¿ä? DMA·Î ¿ÜºÎ Çϵå¿þ¾î¿¡ ´ë·®Àü¼ÛÇØ¾ß ÇÑ´Ù¸é ¹°¸®ÁÖ¼Ò ¸ÅÇÎ ¶§¹®¿¡ ¾î¿ ¼ö ¾øÁö¸¸ ´Ü¼øÈ÷ ÇÁ·Î¼¼½º³¢¸® µ¥ÀÌÅÍ ³Ñ°Ü¹Þ´Â°Å¶ó¸é ½Ã½ºÅÛÄÝ Á÷Á¢ È£ÃâÇؼ­ ÇÁ·Î¼¼½ºµé°£¿¡ shared memory ¸ÅÇÎ(¹°¸®ÁÖ¼Ò Æ¯Á¤ ÇÑ¿µ¿ªÀ» ¿©·¯ ÇÁ·Î¼¼½º°¡ ÀÚ±â³× °¡»óÁÖ¼Ò·Î ¸ÅÇÎ)Çؼ­ ¾²´Â°Ô ³´½À´Ï´Ù. ÇÊ¿äÇϸé ÇÁ·Î¼¼½ºµé³¢¸® shared memory Á¤º¸¸¦ °øÀ¯ÇÏ´Â ÆÄÀÌÇÁµµ ¸¸µé°í¿ä.

C++À̸é new, delete ¿À¹ö¶óÀ̵åÇÏ°í °øÀ¯¸Þ¸ð¸® °ü¸®ÇÏ´Â ÄÚµå Ãß°¡ÇÏ°í °øÀ¯ÇÏ´Â ÇÁ·Î¼¼½º°£ shared memory ¿µ¿ª ¾µ¶§ ²¿ÀÌ´Â °ÍÀ» ¹æÁöÇϵµ·Ï ·ÎÁ÷ ¼öÁ¤ÇÏ¸é °¡´ÉÇÕ´Ï´Ù.

±Ùµ¥ »ç¿ëÇϽô C++ÀÌ ´å³Ý C++Àΰ¡¿ä? win32api/MFC »ç¿ëÇÏ´Â C++À̸é C ÇÔ¼ö È£ÃâÀÌ °¡´ÉÇÏ´Ï ÀÌ ¹æ¹ýÀ¸·Î ÇØ°á °¡´ÉÇÏÁö¸¸, C#À̳ª ´å³Ý C++ (¸¶¼Ò¿¡¼­´Â ´å³ÝÀ¸·Î µµ´Â C++À» managed C++ÀÌ°í ºÎ¸£´õ±º¿ä)ÀÌ¸é ´ä¾ø½À´Ï´Ù. º¹»ç ¾ÈÇÏ°í ó¸®ÇÏ´Â ´Ù¸¥ ¹æ¹ý ã¾Æ¾ß ÇÒ°Ì´Ï´Ù. ƯÈ÷ ´å³ÝÀº ÀÚ¹Ùó·³ VM/¹ÙÀÌÆ®ÄÚµå¹æ½ÄÀ¸·Î µµ´Â°Å¶ó ³×ÀÌƼºê·Î ÄÄÆÄÀϵǴ C++¿¡ ºñÇØ ÆÛÆ÷¸Õ½º°¡ ´õ ¸¹ÀÌ ¶³¾îÁö°í, Àú·¸°Ô ¼ö½Ã·Î ±â°¡±Þ ´ÜÀ§ º¹»çÇϸé Ç®·Îµå °É¸±¼ö¹Û¿¡ ¾ø½À´Ï´Ù.
     
tritob 2023-04
ÀÏ´Ü Á÷Á¢ Å×½ºÆ®´Â Çغ¸°ÚÁö¸¸,
Ȥ½Ã ´å³Ý¿¡¼­ CLR·Î C++À» È£ÃâÇؼ­ »ç¿ëÇصµ, ÆÛÆ÷¸Õ½º°¡ ¸¹ÀÌ ¶³¾îÁú±î¿ä??
C++·Î º¹»çÇÏ´Â Äڵ带 ¼öÁ¤ÇÑ´Ù¸é, memcpy°¡ °¡Àå ÁÁÀº ¹æ¹ýÀÏÁöµµ ±Ã±ÝÇϳ׿ä..
±è°æö 2023-04
ÀζóÀÎ ¾î¼Àºí¸® ½á¼­  movsd ¸í·ÉÀ¸·Î 8¹ÙÀÌÆ®¾¿ Àо ¾²°ÔÇϴ°ÍÀÌ Á¦ÀÏ ºü¸¦°Í °°½À´Ï´Ù..¸¸,
¾Æ¸¶ C/C++ÀÇ memcpy()°¡ ÀÌ¹Ì ±×·¸°Ô ±¸ÇöµÇ¾î ÀÖÀ»°Í °°½À´Ï´Ù.


QnA
Á¦¸ñPage 313/5693
2015-12   1556444   ¹é¸Þ°¡
2014-05   5021104   Á¤ÀºÁØ1
2015-02   5640   ¸¶Å°
2011-01   7163   ÀÌÁ¾¼Û1
2013-09   6121   ¸ÚÀïÀÌ
2016-04   3978   ºÒ¹«°ñ
2022-04   1838   ºÀ·¡
2011-01   8278   ÀüÀçÇö
2018-06   5056   inquisitive
2020-11   2662   swswsws
2017-03   5065   ±è°Ç¿ì
2018-06   3399   ³Ä¾Æ¾Æ¾Æ¾Ï
2016-04   4409   ½ÅÀº¿Ö
2017-03   4207   lovin09
2017-03   5029   µÎcpu
2013-10   7505   ½ÂÈÆ
2019-08   3547   newretrowave
01-04   2444   ¹¹µçÆȾƿä
2017-03   5802   ¹öµð
2017-03   8325   ¼ÛÁøÈ«
2020-11   2568   GPGPU
2011-03   16192   Àü±ÙÇö