LINUX.ORG.RU

Как работает шина?

 , ,


2

4

Всем привет!

Вопрос понимающим в железе.

Возьмем, например, локальную проводную сеть. На самом низком уровне, НЯЗ, она работает так: сетевая карта «выставляет на шину» пакет, т.е. последовательность сигналов 1/0, содержащий заголовок какого-то самого низкоуровневого протокола и данные. В заголовке - физический адрес сетевой карты-получателя. Этот пакет принимают ВСЕ карты, сверяют адрес получателя со своим собственным, и выкидывают пакет, если адрес не совпадает. Вопросы:

  1. В вышеописанном все верно, или нет?

  2. Непонятны детали: как карты между собой разбираются, чей черед слать пакет? Как регламентируется длина пакета? Кто вообще отвечает за синхронизацию, особенно в одноранговой сети?

Теперь про шину внутри компа на материнке. Она работает аналогично? Как там вообще происходит?

  1. Допустим, если всем рулит процессор: такт 1 - он выставляет на шину адрес и в старших битах - код устройства, к которому обращается, и команду «чтение/запись»; такт 2 - устройство (при чтении) или процессор (при записи) выставляет на шину данные. Или все совсем не так?

  2. Что насчет DMA? Оно же тоже должно шину использовать, например при копировании данных с устройства в RAM. Кем и как принимается решение, кто занимает шину в следующий такт - процессор или DMA?

Благодарствую. :)


В вышеописанном все верно, или нет?

Так было давно, когда все карты соединялись одним проводом, и чуть менее давно (но тоже давно), когда вместо свитчей были тупые хабы (уже с витой парой). Сейчас широковещаельных локалок считай нет, пакет от сетевухи идёт только до свитча, а тот уже выбирает когда и куда его слать дальше. Но если ты сейчас соединишь 10 сетевух в одну электрическую сеть скруткой (без свитча) - они скорее всего будут работать, да, как раз так как ты описал.

Непонятны детали: как карты между собой разбираются, чей черед слать пакет? Как регламентируется длина пакета? Кто вообще отвечает за синхронизацию, особенно в одноранговой сети?

Пытается слать, если видит что другая тоже попыталась (конфликт) - ждёт рандомное время и пытается снова, надеясь что на этот раз получится. Глобальной синхронизации нет.

Теперь про шину внутри компа на материнке.

Мне кажется там всё сложнее и может зависеть от платформы (amd vs intel и разные поколения).

Допустим, если всем рулит процессор: такт 1 - он выставляет на шину адрес и в старших битах - код устройства, к которому обращается, и команду «чтение/запись»; такт 2 - устройство (при чтении) или процессор (при записи) выставляет на шину данные. Или все совсем не так?

Так было 35 лет назад на шине ISA, сейчас наверно уже нет.

firkax ★★★★★
()
Ответ на: комментарий от firkax

Спасибо, про рандомный таймаут и сигнал помехи - стало понятнее.

Сейчас широковещаельных локалок считай нет, пакет от сетевухи идёт только до свитча, а тот уже выбирает когда и куда его слать дальше.

Про это даже не подумал. У самого в роутер воткнуто несколько кабелей 1-к-1, а когда писал, думал про старые коаксиалки. Хотя сам вопрос - скорее подвод к вопросу про шину на материнке, где тоже несколько устройств «на скрутке».

pr849
() автор топика
Ответ на: комментарий от pr849

Сигнал помехи и в принципе несогласованный мультимастер допустимы только там, где хардвар это позволяет. На RS485, например, это эквивалентно короткому замыканию, и китайские драйвера, не соблюдающие требования к защите от него, гореть будут. На i2c и подобных допустимо бай дизигн.

sislochka
()
Последнее исправление: sislochka (всего исправлений: 3)
Ответ на: комментарий от sislochka

Это не рекомендация к действию была (свитчи не просто так придумали и не для того, чтобы нубо-сетевиков на деньги разводить), а пример. Но со скрутками и правда скорее всего будет работать весьма пристойно, по крайней мере на 10-100мбит линках и не сильно длинных кабелях (в пределах 10м) и с не сильно загруженной сетью (т.е. мало конфликтов).

firkax ★★★★★
()
Последнее исправление: firkax (всего исправлений: 2)
Ответ на: комментарий от sislochka

Непонятно где ты взял гигабитные хабы, по-моему хабы перестали производить раньше чем гигабит в массы пришёл (или даже раньше чем вообще появился).

И вообще к чему это было написано?

firkax ★★★★★
()
Последнее исправление: firkax (всего исправлений: 1)
Ответ на: комментарий от firkax

В ДНСе, там полно всякой некондиции.

Флужу в меру своих сил.

sislochka
()
Ответ на: комментарий от firkax

Интерестно, как «скруткой» без хаба соединять? У 10Base-T в halfduplex наличие сигнала на Rx входе сетёвки, когда она ведёт передачу, означает коллизию.

Давно на nag.ru писали, что можно намотать трансформаторы и на один порт хаба подключать 3 компа, но они между собою не общаются и не видят коллизий в этом сегменте из трёх компов, за это «отдувается» повторная передача пакетов на уровне tcp.

mky ★★★★★
()
Ответ на: комментарий от mky

А, немного перепутал, там должен быть ещё эхо-подавитель кроме скруток. Это конечно чуть сложнее, но всё равно устройство полностью пассивное (самая простая схема - из пачки резисторов, по второй ссылке из диодов предлагают).

https://www.qrz.ru/schemes/contribute/comp/passive-hub.shtml

https://www.rlocman.ru/shem/schematics.html?di=66876

firkax ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.