Сообщение Re[39]: Еще от 18.06.2017 18:30
Изменено 18.06.2017 18:32 ononim
Re[39]: Еще
CS>>У CPU вообще нет доступа к видео памяти в том же виде что и основной памяти.
_>Безусловно его нет. Более того, если бы обмен данными между обычной памятью и видео-памятью происходил с помощью инструкций CPU, то это было бы катастрофически медленно. Однако в CPU (и не только — сейчас это уже даже в копеечных МК присутствует) имеется такой механизм работы с периферией как DMA, который позволяет периферийным устройствам обмениваться с памятью процессора в фоне (без его прямых команд). Соответственно при включение этого механизма запись в определённые разделы оперативной памяти по сути полностью аналогична записи в видео-память. И думаю что большинство участников дискуссии имели в виду именно это, просто не расшифровывая очевидные детали.
"Как DMA" — это называется bus mastering, который подвид DMA, позволяющий устройствам напрямую работать с памятью. Но речь не про него, а про memory-mapped space, которое фактически мапит IO порты на АП физической памяти и позволяет CPU инструкциям работы с памятью общаться с девайсом _без_ реального использования физической памяти. DMA тут вообще никаким боком не относится. Работает, разумеется, медленее чем доступ к локальной физической памяти, и работая с таким отображением надо отдавать себе в этом отчет. Кэширование там есть, но минимальное.
_>Безусловно его нет. Более того, если бы обмен данными между обычной памятью и видео-памятью происходил с помощью инструкций CPU, то это было бы катастрофически медленно. Однако в CPU (и не только — сейчас это уже даже в копеечных МК присутствует) имеется такой механизм работы с периферией как DMA, который позволяет периферийным устройствам обмениваться с памятью процессора в фоне (без его прямых команд). Соответственно при включение этого механизма запись в определённые разделы оперативной памяти по сути полностью аналогична записи в видео-память. И думаю что большинство участников дискуссии имели в виду именно это, просто не расшифровывая очевидные детали.
"Как DMA" — это называется bus mastering, который подвид DMA, позволяющий устройствам напрямую работать с памятью. Но речь не про него, а про memory-mapped space, которое фактически мапит IO порты на АП физической памяти и позволяет CPU инструкциям работы с памятью общаться с девайсом _без_ реального использования физической памяти. DMA тут вообще никаким боком не относится. Работает, разумеется, медленее чем доступ к локальной физической памяти, и работая с таким отображением надо отдавать себе в этом отчет. Кэширование там есть, но минимальное.
Re[39]: Еще
CS>>У CPU вообще нет доступа к видео памяти в том же виде что и основной памяти.
_>Безусловно его нет. Более того, если бы обмен данными между обычной памятью и видео-памятью происходил с помощью инструкций CPU, то это было бы катастрофически медленно. Однако в CPU (и не только — сейчас это уже даже в копеечных МК присутствует) имеется такой механизм работы с периферией как DMA, который позволяет периферийным устройствам обмениваться с памятью процессора в фоне (без его прямых команд). Соответственно при включение этого механизма запись в определённые разделы оперативной памяти по сути полностью аналогична записи в видео-память. И думаю что большинство участников дискуссии имели в виду именно это, просто не расшифровывая очевидные детали.
"Как DMA" — это называется bus mastering, который подвид DMA, позволяющий устройствам напрямую работать с памятью. Но речь не про него, а про memory-mapped space, которое фактически мапит IO порты на АП физической памяти и позволяет CPU инструкциям работы с памятью общаться с девайсом _без_ реального использования физической памяти. DMA тут вообще никаким боком не относится. Работает, разумеется, медленее чем доступ к локальной физической памяти, и работая с таким отображением надо отдавать себе в этом отчет. Кэширование там есть, но минимальное.
Замечу, что bus-mastering активно используется встройками которые не имеют своей видеопамяти и таким образом юзают системную память, в том числе и для фреймбуфера. Но речь, повторюсь, не про этот usecase.
_>Безусловно его нет. Более того, если бы обмен данными между обычной памятью и видео-памятью происходил с помощью инструкций CPU, то это было бы катастрофически медленно. Однако в CPU (и не только — сейчас это уже даже в копеечных МК присутствует) имеется такой механизм работы с периферией как DMA, который позволяет периферийным устройствам обмениваться с памятью процессора в фоне (без его прямых команд). Соответственно при включение этого механизма запись в определённые разделы оперативной памяти по сути полностью аналогична записи в видео-память. И думаю что большинство участников дискуссии имели в виду именно это, просто не расшифровывая очевидные детали.
"Как DMA" — это называется bus mastering, который подвид DMA, позволяющий устройствам напрямую работать с памятью. Но речь не про него, а про memory-mapped space, которое фактически мапит IO порты на АП физической памяти и позволяет CPU инструкциям работы с памятью общаться с девайсом _без_ реального использования физической памяти. DMA тут вообще никаким боком не относится. Работает, разумеется, медленее чем доступ к локальной физической памяти, и работая с таким отображением надо отдавать себе в этом отчет. Кэширование там есть, но минимальное.
Замечу, что bus-mastering активно используется встройками которые не имеют своей видеопамяти и таким образом юзают системную память, в том числе и для фреймбуфера. Но речь, повторюсь, не про этот usecase.