ein paar fragen zu memcpy()
-
1. nutzt memcpy() den dma-controller? wenn nein, welcher befehl tut dies?
2. Gibt es eine c++ variante?
3. macht es heutzutage überhaupt noch sinn den dma zu bemühen, anstatt selber via for-schleife zu kopieren (man weiß ja nie, ich frag einfach mal ^^)
-
Sengha schrieb:
1. nutzt memcpy() den dma-controller? wenn nein, welcher befehl tut dies?
Afaik gibts dafür keine Befehle. Der DMA-Controller ist dafür da, dass Peripherie-Geräte, Steckkarten etc. auf den Speicher zugreifen können ohne die CPU zu bemühen. Deine Befehle werden auf der CPU ausgeführt (wenn du nicht grad für die Grafikkarte programmierst). Der CPU einen befehl zu geben, auf den Speicher zuzugreifen ohne die CPU zu benutzen ist etwas strange oder?

Grade wenns um Speicherbereiche geht, die eh grad im Cache liegen und auf die die CPU grade/direkt danach zugreifen soll/muss, wäre es sinnfrei (weil viel langsamer) im Hauptspeicher was zu kopieren und dann das Kopierte in den Cache zu laden, statt die Operation gleich im Cache auszuführen und erst später dessen Inhalt wieder in den Hauptspeicher zurückzuschreiben.2. Gibt es eine c++ variante?
std::copy - PODs werden vermutlich genauso effizient wie mit memcopy kopiert, andere Typen per Copy-Ctor.