Учебники

Допуск латентности

Скорость микропроцессоров увеличилась более чем в десять раз за десятилетие, но скорость памяти товаров (DRAM) только удвоилась, т. Е. Время доступа сократилось вдвое. Следовательно, задержка доступа к памяти с точки зрения тактовых циклов процессора возрастает в шесть раз за 10 лет. Мультипроцессоры обострили проблему.

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

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

Обзор толерантности к задержке

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

Проблема использования в базовой структуре связи состоит в том, что либо процессор, либо архитектура связи заняты в данный момент времени, и в конвейере связи одновременно занят только один этап, так как одно передаваемое слово проходит путь от источника к месту назначения. Цель обеспечения устойчивости к задержкам состоит в том, чтобы максимально перекрывать использование этих ресурсов.

Допуск латентности при явной передаче сообщений

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

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

Допуск латентности в общем адресном пространстве

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

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

Блокировка передачи данных в общем адресном пространстве

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

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

Продолжение прошлых событий с большими задержками в общем адресном пространстве

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

Предварительная связь в общем адресном пространстве

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

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

Многопоточность в общем адресном пространстве

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

  • Не требует специального анализа программного обеспечения или поддержки.

  • Поскольку он вызывается динамически, он может обрабатывать непредсказуемые ситуации, такие как конфликты в кэше и т. Д., А также предсказуемые.

  • Как и предварительная выборка, она не меняет модель согласованности памяти, поскольку не изменяет порядок доступа в потоке.

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

Не требует специального анализа программного обеспечения или поддержки.

Поскольку он вызывается динамически, он может обрабатывать непредсказуемые ситуации, такие как конфликты в кэше и т. Д., А также предсказуемые.

Как и предварительная выборка, она не меняет модель согласованности памяти, поскольку не изменяет порядок доступа в потоке.

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

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