WikiDer > Арбитр (электроника)
Арбитры электронные устройства, которые распределяют доступ к общим ресурсам.
Автобусный арбитр
Арбитр шины - это устройство, используемое в мультимастерном автобус система, чтобы решить, какому мастеру шины будет разрешено управлять шиной для каждого цикла шины. Наиболее распространенным видом арбитра шины является арбитр памяти в системная шина система.
Арбитр памяти - это устройство, используемое в Общая память система решает для каждого цикла памяти, какому процессору будет разрешен доступ к этой разделяемой памяти.[1][2][3]
Немного атомарные инструкции зависеть от арбитра, чтобы предотвратить чтение памяти другими процессорами "на полпути" атомарного читать-изменять-писать инструкции.
Арбитр памяти обычно интегрирован в контроллер памяти/Контроллер DMA.
Некоторые системы, такие как обычный PCI, имеют одно централизованное устройство арбитража шины, на которое можно указать как на «арбитра шины». В других системах используется децентрализованный арбитраж шины, когда все устройства взаимодействуют, чтобы решить, кто будет следующим.[4][5]
Когда каждый ЦП, подключенный к арбитру памяти, имеет синхронизированные циклы доступа к памяти, арбитр памяти может быть спроектирован как синхронный арбитр. В противном случае арбитр памяти должен быть спроектирован как асинхронный арбитр.
Асинхронные арбитры
Важная форма арбитра используется в асинхронные схемы для выбора порядка доступа к общему ресурсу среди асинхронных запросов. Его функция - предотвратить одновременное выполнение двух операций, когда этого не должно быть. Например, на компьютере с несколькими процессорами или другими устройствами, имеющими доступ к память компьютера, и имеет более одного Часысуществует вероятность того, что запросы от двух несинхронизированных источников могут поступать почти одновременно. «Почти» может быть очень близко по времени, в суб-фемтосекунда ассортимент. Затем арбитр памяти должен решить, какой запрос обслуживать первым. К сожалению, сделать это за фиксированное время невозможно [Anderson 1991].[требуется разъяснение]
Иван Сазерленд и Джо Эбергенв своей статье «Компьютеры без часов» описывают арбитров следующим образом:
- "Арбитр подобен дорожному инспектору на перекрестке, который решает, какая машина может проехать следующей. Принимая только один запрос, Арбитр незамедлительно разрешает соответствующее действие, задерживая любой второй запрос до завершения первого действия. Когда Арбитр получает два запроса он должен сразу решить, какой запрос предоставить первым. Например, когда два процессора запрашивают доступ к общей памяти примерно в одно и то же время, арбитр помещает запросы в последовательность, предоставляя доступ только одному процессору за раз. Арбитр гарантирует, что никогда не происходит двух действий одновременно, так же как инспектор дорожного движения предотвращает аварии, следя за тем, чтобы две машины никогда не проезжали перекресток на встречных курсах ».
- «Хотя схемы арбитров никогда не удовлетворяют более одного запроса за раз, нет способа создать арбитра, который всегда будет принимать решение в течение фиксированного срока. Современные арбитры принимают решения в среднем очень быстро, обычно в течение нескольких сотни пикосекунд. [...] Однако, когда вы сталкиваетесь с близкими вызовами, схемы могут иногда занимать вдвое больше времени, а в очень редких случаях время, необходимое для принятия решения, может быть в 10 раз дольше обычного ».[6]
Асинхронные арбитры и метастабильность
Арбитры разрывают связи. Как схема триггера, арбитр имеет два стабильных состояния, соответствующих двум вариантам выбора. Если два запроса поступают в арбитр в течение нескольких пикосекунд (сегодня фемтосекунды) друг друга, цепь может стать метастабильный до достижения одного из своих стабильных состояний, чтобы разорвать связь. Классические арбитры специально созданы для того, чтобы они не колебались в дикой природе, когда метастабильны, и чтобы они не выходили из метастабильности как можно быстрее, обычно за счет использования дополнительной мощности. Вероятность недостижения стабильного состояния экспоненциально уменьшается со временем после ввода входных данных.
Надежное решение этой проблемы было найдено в середине 1970-х годов. Хотя арбитр, который принимает решение в фиксированное время, невозможен, можно заставить работать арбитр, который иногда занимает немного больше времени в сложных случаях (закрытие запросов). Необходимо использовать многоступенчатую синхронизация цепь, которая обнаруживает, что арбитр еще не перешел в стабильное состояние. Затем арбитр откладывает обработку до достижения стабильного состояния. Теоретически арбитру может потребоваться сколь угодно много времени, чтобы принять решение, но на практике редко требуется больше, чем несколько задержка ворот раз. Классической статьей является [Kinniment and Woods 1976], в которой описывается, как построить «триггер с тремя состояниями» для решения этой проблемы, и [Ginosar 2003], предостережение инженерам относительно типичных ошибок в проектировании арбитров.
Этот результат имеет большое практическое значение, так как мультипроцессор без него компьютеры не работали бы надежно. Первые многопроцессорные компьютеры появились в конце 1960-х годов, еще до появления надежных арбитров. Некоторые ранние мультипроцессоры с независимыми часами для каждого процессора страдали от арбитра условия гонки, а значит, и ненадежность. Сегодня это больше не проблема.
Синхронные арбитры
Арбитры также используются в синхронных контекстах для предоставления доступа к общему ресурсу. А арбитр волнового фронта является примером синхронного арбитра, который присутствует в одном типе больших Сетевой коммутатор.
использованная литература
- ^ Майкл Фингерофф."Синяя книга по синтезу высокого уровня".2010.p. 270.quote: «Арбитр шины или памяти обрабатывает запрос от разных процессов и решает, кто получит доступ к шине / памяти».
- ^ Артен Эса, Брайан Майерс.«Дизайн арбитра для памяти DDR3».2013.
- ^ Kearney, D.A .; Вельдман, Г."Одновременный арбитр памяти с несколькими банками для динамических IP-ядер, использующий циклический перебор с пропуском простоя".2003.DOI: 10.1109 / FPT.2003.1275789.
- ^ Тим Дауни.«Автобусный арбитраж»
- ^ Шун Ян Чунг.«Автобусный арбитраж»
- ^ Сазерленд, Иван Э.; Эберген, Джо (август 2002 г.). «Компьютеры без часов». Scientific American. 287 (2): 62–69. Bibcode:2002SciAm.287b..62S. Дои:10.1038 / scientificamerican0802-62. PMID 12140955.
- Д.Дж. Kinniment и J.V. Woods. Схемы синхронизации и арбитража в цифровых системах. Труды IEEE. Октябрь 1976 г.
- Карвер Мид и Линн Конвей. Введение в системы СБИС Эддисон-Уэсли. 1979 г.
- Сазерленд, Иван; Эберген, Джо (август 2002 г.), «Компьютеры без часов» (PDF), Scientific American, 287 (2): 62–69, Bibcode:2002SciAm.287b..62S, Дои:10.1038 / scientificamerican0802-62, PMID 12140955, заархивировано из оригинал (PDF) на 2004-12-14[мертвая ссылка]
- Ран Гиносар. "Четырнадцать способов обмануть ваш синхронизатор«ASYNC 2003.
- Дж. Андерсон и М. Гауда "Новое объяснение феномена сбоя ", Acta Informatica, Vol. 28, No. 4, pp. 297–309, апрель 1991 г.