Дебютная идея процессорной технологии — делегировать максимальные вычислительные полномочия системной логике и периферийным микроконтроллерам — возвращается по законам диалектики, но на качественно ином уровне. Неотвратимость этого понималась даже тогда и именно тогда, когда концентрация функций центрального процессора достигла своего насыщения. Дальнейший рост производительности персональных компьютеров немыслим без интеллектуализации системной логики персональной платформы.
Освободить CPU от рутины призваны несколько инициатив, которым посвящены ряд публикаций «Компостера». Назовем главные из них: смысл технологии VT-d обсуждается в статье «Виртуализация Intel VT-d на марше»; технология ATS (Address Translation Services) детально рассмотрена в обзоре «PCI Express оптимизируется для поддержки VT-d». Каждая из этих технологических инициатив прямо касалась процессорной парадигмы, в рамках которой периферия только принимала на себя ряд вычислительных обязанностей CPU, влияя таким образом на эффективность платформы.
Логическим продолжением сервисов ATS, которые оставаясь в рамках централизованной модели с единым агентом перенесли часть трансляционной логики в bus-master устройство и таким образом оптимизировали процесс трансляции адресов под особенности конкретных устройств, стала технология Access Control Services.
Горизонтальный уровень взаимодействия
Технология ACS (Access Control Services) предоставляет набор ресурсов, позволяющих проконтролировать локальное взаимодействие между устройствами, находящимися в одной группе, выделенной по некоторому топологическому признаку. Во всяком случае, так это понимает в PCI Special Interest Group инженер компании Intel Махеш Вог (Mahesh Wagh), излагая ряд важных положений спецификации PCI. К сожалению, термин Access Control Service (правда, в единственном числе) используется также и командой разработчиков Microsoft, но сей предмет находится за рамками нашего обсуждения.
Постараемся разобраться в сути новации по управлению доступом на примере воспроизведения фильма на экране дисплея.
В этом примере подразумевается, что фильм на диске хранится в неупакованном, готовом для визуализации виде, либо его распаковкой занимается видео адаптер. Иначе, без вмешательства центрального процессора не обойтись.
Для выполнения этой задачи дисковый контроллер должен записать непосредственно в видео память данные, прочитанные с диска. Центральный процессор, как сюзерен, не участвует в этой транзакции, дав только разрешение на P2P-процесс. Вассалами выступают периферийные устройства, которые являются инициаторами и исполнителями режима peer-to-peer.
Ресурсы ACS контролируют транзакции bus-master устройств и выбирают один из вариантов их выполнения на основании содержимого управляющих структур. Для каждой транзакции, а по сути, для каждого запроса Peer-to-Peer Request, может быть выбран один из трех вариантов:
Нормальное выполнение запроса (Route directly to target)
Запрос беспрепятственно поступает от инициатора к исполнителю (route directly to peer-to-peer target), без участия центрального агента. В этом случае преимущества ACS очевидны: время выполнения запроса и загрузка шин ввода-вывода минимальны, а значит, производительность — максимальная.
Вернемся к нашему примеру. Инициатором является дисковый контроллер, исполнителем — видео адаптер. Функция центрального процессора — запрограммировать логику ACS перед началом операции так, чтобы трафик генерируемый инициатором (обращения дискового контроллера к видео памяти) направлялся на шину, к которой физически подключен исполнитель, в нашем случае видео адаптер.
Блокировка запроса (Peer-to-peer violation)
Запрос блокируется с генерацией ошибки, это ситуация P2P Violation (handle as an ACS violation). Этот режим используется для обеспечения реакции на некорректные действия инициатора. Например, обращение к не существующему устройству. Логика ACS фиксирует ошибку, а для ее обработки требуется вмешательство центрального процессора.
Redirect upstream
Запрос направляется к Root Complex (redirect upstream) для обработки. Решение о перенаправлении или блокировке в этом случае будет принимать центральный агент. Этот режим используется в случаях, когда процесс взаимодействия инициатора и исполнителя не может быть полностью автономным и требует управления со стороны центрального агента.
В нашем примере с просмотром фильма, это может иметь место, если процесс визуализации данных, читаемых с диска, требует вмешательства со стороны центрального процессора, поэтому данные или их определенная часть должны быть размещены не в видео памяти, а в оперативной памяти.