Зачем нам инструкция по сборке от и до?

Для сетевого ввода-вывода, зачем нам нужны инструкции по сборке, чтобы получить данные из регистра nic напрямую? Кажется, что вход и выход используются в коде прерывания.

сеть io картинка

Зачем нам инструкция по сборке от и до?

IN и OUT предназначены для ввода-вывода аппаратного уровня на сопоставленные устройства.
David Hoelzer 14.02.2019 14:38

При доступе к устройствам на языке ассемблера существует два основных способа подключения аппаратного устройства к ЦП: либо прямой ввод-вывод, либо отображение памяти (доступ к регистрам устройства осуществляется через определенные адреса памяти, и поэтому они выглядят как доступ к памяти ЦП). ). IN и OUT — инструкции для доступа к прямому вводу-выводу.

lurker 14.02.2019 15:30
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
5
2
152
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы похоже не поняли как работает процессор и шина:

As you knows network i/o is based on nic interrupt.

прерывать — это механизм, запускающий короткий программа всякий раз, когда аппаратное обеспечение (например, сетевая карта) запрашивает это у ЦП.

Прерывание только запускает эту короткую программу; больше ничего не делает. Он также не передает никаких данных.

Другой механизм, показанный на вашем изображении, — прямой доступ к памяти. Используя DMA, аппаратный компонент (например, сетевая карта) может напрямую считывать данные из ОЗУ или записывать данные в ОЗУ. Очевидно, что сетевая карта использует этот механизм для копирования сетевых данных в ОЗУ и для отправки данных, хранящихся в ОЗУ.

Однако, если мы хотим отправить данные в сеть, мы сначала должны сообщить сетевой карте, что есть данные для отправки, прежде чем сетевая карта сможет получить доступ к ОЗУ с помощью DMA. То же самое верно, когда мы хотим инициализировать сетевую карту.

Таким образом, используя только DMA, мы не можем сообщить сетевой карте, что есть данные для отправки. Инициализация сетевой карты при запуске компьютера также невозможна. Прерывания нам тоже не помогут, потому что прерывания инициируются сетевой картой, а не программным обеспечением. Нам нужен третий механизм для доступа к сетевой карте.

so why do we need assembly instructions in and out to get data from nic register directly?

При использовании процессоров x86 инструкции in и out используются для прямого чтения и записи данных на какой-либо аппаратный компонент.

Действительно, аппаратное обеспечение может быть подключено к ЦП так, чтобы к нему обращались так же, как к ОЗУ: например, с помощью инструкций mov. Таким образом осуществляется доступ к памяти видеокарты. Существуют также ЦП (например, ЦП ARM, которые распространены в сотовых телефонах), которые обращаются ко всему оборудованию так же, как к ОЗУ. (У таких процессоров нет инструкций in или out.)

Однако в компьютерах, совместимых с ПК, оборудование обычно подключается таким образом, что доступ к нему должен осуществляться с помощью инструкций in и out.

Многие современные аппаратные средства имеют регистры ввода-вывода в адресном пространстве физической памяти, а не в отдельном пространстве ввода-вывода, к которому осуществляется доступ. in/out хотя бы частично сериализуются, поэтому их производительность ниже, чем у MMIO.

Peter Cordes 14.02.2019 08:27

Если термин «DMA» используется для обозначения классического интерфейса DMA ПК, такого как Интел 8237, он использует интерфейс порта (вход/выход) для стороны устройства при чтении или записи из оперативной памяти. В случае устройства Bus Mastering интерфейс на стороне устройства будет уникальным для поставщика.

rcgldr 14.02.2019 16:19

@rcgldr, «DMA» обычно используется для обозначения любого устройства, обращающегося к основной памяти, а не только так называемого «механизма DMA». Итак, сетевые карты, запоминающие устройства, графические устройства, USB-контроллеры и т. д. — все они работают с использованием прямого доступа к памяти.

prl 15.02.2019 07:42

Другие вопросы по теме