Что такое аппаратный семафор? - PullRequest
3 голосов
/ 14 марта 2011

Как его можно использовать из программного обеспечения, если это аппаратный семафор?Это то, что есть программный API, который на самом деле реализован в HW?

Я спрашиваю, как я реализую прошивку для взаимодействия с некоторым оборудованием.Будет много обмена информацией между оборудованием и прошивкой.Я говорил об аппаратном семафоре и просто хотел узнать больше информации о нем.Некоторая литература по этому вопросу была бы полезна

Ответы [ 3 ]

4 голосов
/ 14 марта 2011

Вы в основном правы. Существует SW API, который требует специального оборудования для правильной работы. Реализации семафоров в программном обеспечении, которых немного, основаны на некоторой инструкции HW, которая гарантированно является атомарной.

Атомность в HW требуется для реализации семафора. Обычно инструкции HW не являются атомарными.

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

1 голос
/ 27 сентября 2011

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

0 голосов
/ 19 января 2018

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

...