LINUX.ORG.RU

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

 , ,


2

4

Всем привет!

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

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

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

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

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

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

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

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


Можно начать с https://ru.wikipedia.org/wiki/Домен_коллизий

Шина памяти, которая «на материнке», примитивная, адресации как таковой там нет, активная планка задаётся отдельными линиями. Так что этим занимается процессор (северный мост, хз).

Как правило, на шинах есть один мастер и набор слейвов, тогда коллизию может вызвать только помеха/неисправность, и ситуация тривиальна. Если мастер-узлов много, как правило, действует система обнаружения коллизий. В случае с Ethernet при обнаружении таковой на линию срётся сигнал помехи, чтобы точно все поняли, что передача запорота, и узел выжидает рандомное количество времени.

sislochka
()

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

И работать бы никто не успевал. :) Все маны на свете не прочитаешь. Имело бы смысл, если бы я собирался профессионально погружаться в эту область.

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

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

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

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

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

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

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

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

sislochka
()

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

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

anonymous
()

У Столярова можешь почитать. Начало первого тома, «Процессор, память, шина».

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

Решил ознакомиться с творчеством человека, у которого аншлаги постоянные на лоре.

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

При чём тут программирование? Если ты захочешь узнать про HTTP ты же не на форумы полезешь, а RFC читать пойдёшь. Программирование штука сложная, а стандарты это штука примитивная, за редким исключением и ни в каких разъяснениях не нуждаются кроме спецификации.

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

У автора вопросы из серии «я познаю мир». Тут надо не в спеки отсылать, а ссылку на учебник или множество учебников давать.

seiken ★★★★★
()
  1. приблизительно.

  2. в современных эзернетах дуплекс, про хабы давно все забыли поэтому никто никому не мешает. никак. почитай текст 20-летней давности как работает эзернет

  3. приблизительно

  4. почитай что-нибудь популярное про микропроцессоры 40 летней давности. что-нибудь типа 8080, 8085, Z80, pdp-11. хороший выбор второй том Хоровиц-Хилл

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

Если ты захочешь узнать про HTTP ты же не на форумы полезешь, а RFC читать пойдёшь.

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

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

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

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

mky ★★★★★
()

Ну про DMA могли хоть немного почитать. https://ru.wikipedia.org/wiki/Прямой_доступ_к_памяти

Шина очень абстрактное понятие, если говорить про что-то наподобие ISA, то там кроме линий адреса/данные ещё куча вспомогательных линий (запросы на прерывание, запросы на DMA). И при этом DMА контроллер имеет отдельную аппаратную пару линий для взаимодействия с процессором, по одной контроллер просит процессор освободить шину, а по другой процессор подтверждает освобождение шины...

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

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

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

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

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

Если бы все читали мануалы, лора бы не было бы

Хорошо вам ребята, у вас все просто, все ответы на все вопросы лежать в манах. И вот когда чел столкнулся с тем что надо было на голом железе кое-что написать под популяную железку, то вдруг столкнулся что ни (x) не работает. Оказалось что адреса переферии в документации и реальные адреса совершено разные. Это выяснилось когда он написал тем мудакам которые эту документацию составляли. Они конечно же объяснили фейковые адреса обусловлены обратной совместимостью и прочим бредом но факт остается фактом: на деле все работает не так как написано в документации. Работает похоже, но не так. С помощью документации можно составить примерную картину понимания работы, но узнать как на самом деле работает можно только от тех кто это создал или от тех кто сумел опытом проверить все. Так что когда люди заходят с такими вопросами, это не потому что им лень читать, а потому что появились какие-то нестыковки, которые заставляют его пересмотреть все снова. Только (x) толку спрашивать тех кто свято верит в маны, ну или просто не знают и поэтому тупо кидают ссылки, ведь сказать то им нечего. А так кинул ссылку и типа умный, типа дебил тот кто спрашиват, ведь все уже давно же написано, только надо читать и уметь пользоваться гуглом.

anonymous
()

я тебе скажу больше, что даже интеловцы когда городили заборы нагородили такое с адресацией что для самих их стало приятным сюрпризом что все работает не так как они запланировали изначально. Вот почему адресация на x86 вызывает сильное недоумение. Это от того что планировали одно, получилось совсем другое, и уже отталкиваясь получившегося придумывали новое.

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

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

sislochka
()

Всем большое спасибо за ответы. Сожалею, что не успел это написать до начала украиносрача.

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