Мне было интересно, должны ли все данные в компьютере проходить через процессор или есть какие-либо обходные маршруты (например, DMA), через которые проходят данные
Вход / выход (I / O) почти всегда находится между периферийным устройством и памятью. Передача между периферийными устройствами весьма необычна, поскольку требует специального оборудования и усложняет обнаружение / восстановление ошибок. См. Почему для передачи файлов между дисками используется ОЗУ
Ввод / вывод может выполняться ЦП, который называется программируемым вводом / выводом (PIO), или драйвер устройства (SW) может делегировать задачу передачи контроллеру DMA или мастеру шины (например, хост-адаптеру SCSI). См. Https://stackoverflow.com/questions/25318145/dma-vs-interrupt-driven-io/38165400#38165400
- При загрузке файла: при загрузке файла данные, полученные сетевым адаптером, поступают непосредственно на жесткий диск (через ОЗУ) или они должны обрабатываться в процессоре?
Кадры Ethernet, полученные сетевым адаптером, обычно хранятся в основной памяти (NIC). Несколько сложных контроллеров Ethernet имеют выделенную память FIFO. В любом случае сетевой драйвер (SW) должен копировать каждый полученный кадр в динамический буфер для обработки стеком протоколов (SW).
Прикладная программа, выполняющая загрузку, считывает данные (в другом буфере памяти) после того, как стек протокола проверен и удален из кадров протокола. Затем эта программа может выполнить вторую половину загрузки, записав данные в файл в файловой системе.
Описание низкоуровневых операций файловой системы см. В разделе Почему копирование одного и того же объема данных занимает больше времени, если оно распределено по многим отдельным файлам?
Описание низкого уровня операций с диском см. В разделе Когда происходит чтение или запись на диск, куда направляются данные?
- При открытии файла: например, скажем, я открываю аудиофайл. Так должен ли аудио файл обрабатываться процессором, или его данные напрямую передаются на аудиоустройства?
Аудиофайл должен быть считан в память для аудиоустройства. Программное обеспечение, выполняющее передачу, обычно не нуждается в "обработке" этих данных.
- Во время игры: имеет ли графический процессор прямой доступ к ОЗУ (или жесткому диску) или он должен получать данные и инструкции от центрального процессора (ЦП)?
Графический процессор может иметь доступ к основной памяти точно так же, как контроллер DMA, но для арбитража памяти он будет иметь более низкий приоритет, чем центральный процессор.
Графический процессор не будет иметь доступа или возможности управлять жестким диском или любым другим периферийным устройством, кроме буфера кадров.
Получает ли GPU свои команды через свои регистры или блок памяти, будет зависеть от реализации.
Остерегайтесь того, как вы используете «процессор делает ...».
Процессор только «что-то делает», потому что выполняемые им инструкции являются конкретной задачей. Эти инструкции являются частью программы.
Определение этой программы и ее задачи может быть более информативным, чем просто сказать «CPU делает ...».