Мне было интересно, должны ли все данные в компьютере проходить через процессор или есть какие-либо обходные маршруты (например, DMA), через которые проходят данные.

Рассмотрим следующие случаи:

  1. При загрузке файла: при загрузке файла данные, полученные сетевым адаптером, поступают непосредственно на жесткий диск (через ОЗУ) или они должны обрабатываться в процессоре?
  2. При открытии файла: например, скажем, я открываю аудиофайл. Так должен ли аудио файл обрабатываться процессором, или его данные напрямую передаются на аудиоустройства?
  3. Во время игры: имеет ли графический процессор прямой доступ к ОЗУ (или жесткому диску) или он должен получать данные и инструкции от центрального процессора (ЦП)?

Я хотел бы знать, что данные о маршруте берет, когда мы делаем вышеупомянутые действия.

2 ответа2

1

Для случаев 1 и 2 данные передаются через ЦП. Примите во внимание следующее: кран не может перемещать ящик на грузовик или снимать его с грузовика, когда он не проходит через кран. Чтобы процессор что-то написал, он сначала будет где-то читать данные.

Случай 3 немного отличается: в этом случае графический процессор может читать его, как и саму работу, но только после того, как центральный процессор выполняет свою работу по обеспечению того, чтобы данные находились в месте, где графический процессор может их достать, например в памяти текстур. Графический процессор не имеет прямого доступа к диску.

1

Мне было интересно, должны ли все данные в компьютере проходить через процессор или есть какие-либо обходные маршруты (например, DMA), через которые проходят данные

Вход / выход (I / O) почти всегда находится между периферийным устройством и памятью. Передача между периферийными устройствами весьма необычна, поскольку требует специального оборудования и усложняет обнаружение / восстановление ошибок. См. Почему для передачи файлов между дисками используется ОЗУ

Ввод / вывод может выполняться ЦП, который называется программируемым вводом / выводом (PIO), или драйвер устройства (SW) может делегировать задачу передачи контроллеру DMA или мастеру шины (например, хост-адаптеру SCSI). См. Https://stackoverflow.com/questions/25318145/dma-vs-interrupt-driven-io/38165400#38165400

  1. При загрузке файла: при загрузке файла данные, полученные сетевым адаптером, поступают непосредственно на жесткий диск (через ОЗУ) или они должны обрабатываться в процессоре?

Кадры Ethernet, полученные сетевым адаптером, обычно хранятся в основной памяти (NIC). Несколько сложных контроллеров Ethernet имеют выделенную память FIFO. В любом случае сетевой драйвер (SW) должен копировать каждый полученный кадр в динамический буфер для обработки стеком протоколов (SW).

Прикладная программа, выполняющая загрузку, считывает данные (в другом буфере памяти) после того, как стек протокола проверен и удален из кадров протокола. Затем эта программа может выполнить вторую половину загрузки, записав данные в файл в файловой системе.
Описание низкоуровневых операций файловой системы см. В разделе Почему копирование одного и того же объема данных занимает больше времени, если оно распределено по многим отдельным файлам?
Описание низкого уровня операций с диском см. В разделе Когда происходит чтение или запись на диск, куда направляются данные?

  1. При открытии файла: например, скажем, я открываю аудиофайл. Так должен ли аудио файл обрабатываться процессором, или его данные напрямую передаются на аудиоустройства?

Аудиофайл должен быть считан в память для аудиоустройства. Программное обеспечение, выполняющее передачу, обычно не нуждается в "обработке" этих данных.

  1. Во время игры: имеет ли графический процессор прямой доступ к ОЗУ (или жесткому диску) или он должен получать данные и инструкции от центрального процессора (ЦП)?

Графический процессор может иметь доступ к основной памяти точно так же, как контроллер DMA, но для арбитража памяти он будет иметь более низкий приоритет, чем центральный процессор.
Графический процессор не будет иметь доступа или возможности управлять жестким диском или любым другим периферийным устройством, кроме буфера кадров.
Получает ли GPU свои команды через свои регистры или блок памяти, будет зависеть от реализации.


Остерегайтесь того, как вы используете «процессор делает ...».
Процессор только «что-то делает», потому что выполняемые им инструкции являются конкретной задачей. Эти инструкции являются частью программы.
Определение этой программы и ее задачи может быть более информативным, чем просто сказать «CPU делает ...».

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .