Это интересно! Pci e скорость
только ли физические ограничения влияют на скорость передачи? / Хабр
А получается удивительная вещь. Если USB 2.0 устройство воткнуто в «голубенький» разъём (это который USB 3.0), то скорость получается одна. Если в «чёрненький» — другая. Вот мой график зависимости скорости записи в USB от длины передаваемых данных. USB3 и USB2 — это тип разъёма, устройство всегда USB 2.0 HS.
Я пробовал в разных машинах. Результат — близок. Никто не мог объяснить мне этот феномен. Уже потом я нашёл наиболее вероятную причину. А причина очень проста. Вот свойства контроллера USB 2.0:
У контроллеров, управляющих «голубеньким» разъёмом такого нет. А разница — как раз примерно процентов 20.
Из этого мы делаем вывод, что не всегда ограничения пропускной способности определяются физическими свойствами шины. Иногда накладываются ещё какие-то вещи. Переходим с этими знаниями в наши дни.
Первичный эксперимент
Итак. Всё начиналось весьма буднично. Шла проверка одной программы. Проверялся процесс записи данных одновременно на несколько дисков. Аппаратура простая: имеется материнская плата с четырьмя PCIe-слотами. Во все слоты воткнуты совершенно одинаковые карточки с AHCI-контроллерами, каждый из которых поддерживает исключительно PCIe x1.Каждая карта обслуживает 4 накопителя. И вот выясняется следующий эффект. Берём один диск и начинаем записывать на него данные. Получаем скорость от 180 до 220 мегабайт в секунду (здесь и далее, мегабайт — это 1024*1024 байт):
Берём второй накопитель. Скорость записи на него — от 170 до 190 МБ/с:
Пишем сразу на оба — получаем просадку скорости:
Суммарная скорость получается в районе 290 МБ/с. Но удивительность состоит в том, что отлаживали (так получилось) эту программу мы на тех же накопителях, но на других каналах. И там всё было хорошо. Быстро перетыкаем в те каналы (они будут идти через другую карту), получаем прекрасную работу:
Куплю слот в хорошем районе
Сразу скажу, что винить во всём какие-то чужие компоненты не стоит. Здесь всё написано нами, начиная от самой программы, заканчивая драйверами. Так что весь путь прохождения данных может быть проконтролирован. Неизвестность наступает только когда запрос ушёл в аппаратуру.После первичного разбора выяснилось, что скорость не ограничивается в «длинных» слотах PCIe и ограничивается в «коротких». Длинные — это куда можно вставить карты x16 (правда, один из них работает в режиме не выше x4), а короткие — только для карт x1.
Всё бы ничего, но контроллеры в текущих картах в принципе не могут работать в режиме, отличном от PCIex1. То есть, все контроллеры должны быть в абсолютно идентичных условиях, независимо от длины слота! Ан нет. Кто живёт в «длинном» — работает быстро, кто в «коротком» — медленно. Хорошо. А быстро — насколько быстро? Добавляем третий накопитель, пишем на все три.
В «коротких» слотах ограничение всё ещё в районе 290 МБ/с:
В «длинных» — в районе 400 МБ/с:
Я перерыл весь Интернет. Во-первых, через некоторое время я уже смеялся со статей, где говорится о том, что пропускная способность PCIe gen 1 и gen 2 для x1 составляет 250 и 500 МБ/с. Это «сырые» мегабайты. За счёт оверхеда (я использую это нерусское слово, чтобы обозначить служебный обмен, идущий по тем же линиям, что и основные данные) для gen 2 получается именно 400 мегабайт в секунду полезного потока. Во-вторых, я упорно не мог найти ничего про магическую цифру 290 (забегая вперёд — до сих пор не нашёл).
Отлично. Пытаемся глянуть на топологию включения наших контроллеров. Вот она (013-015 — это суффиксы имён устройств, по которым я сопоставил их, чтобы как-то различать). Зелёные —быстрые, красные — медленные.
Контроллер «015» мы даже не рассматриваем. Он живёт в привилегированном слоте, предназначенном для видеокарты. Но 013-й подключён к тому же коммутатору, что и 012-й с 014-м. Чем он отличается?
Отдельные статьи говорят, что разные карты могут отличаться параметрами Max Payload. Я изучил конфигурационное пространство всех карт — этот параметр стоит у всех в одном и том же, минимально возможном значении. Мало того, в документации на чипсет этой материнки сказано, что иного значения и быть не может.
В общем, я перерыл всё в конфигурационном пространстве — всё настроено идентично. А скорость разная! Многократно перечитал документацию на чипсет — никаких настроек пропускной способности. Приоритеты — да, что-то про них написано, но тесты же ведутся при полном отсутствии нагрузки по другим каналам! То есть дело не в них.
На всякий случай, я даже отключил работу программы по прерываниям. Нагрузка на процессор возросла до безумных величин, ведь теперь он постоянно тупо читает бит готовности, но показания скорости не изменились. Так что обвинить в проблемах эту подсистему тоже нельзя.
А что там у других плат?
Попробовали поменять материнскую плату на точно такую же. Никаких изменений. Попробовали заменить процессор (были основания считать, что он барахлит). Тоже никаких изменений скорости (но старый процессор и правда барахлил). Поставили материнскую плату более нового поколения — всё просто летает на всех слотах. Причём предельная скорость уже не 400, а 418 мегабайт в секунду, хоть в «длинных», хоть в «коротких» слотах:Но здесь — никаких чудес. Привычным движением руки (за эти дни уже привык) считываем конфигурационное пространство и видим, что параметр Max Payload установлен не на 128, а на 256 байт.
Больше размер пакета — меньше количество пакетов. Меньше оверхед на их пересылку — больше полезных данных успевает пробежать за то же время. Всё верно.
Так кто же виноват?
Точного ответа на вопрос из заголовка, со ссылкой на документы, я не дам. Но мысль моя пошла по следующему пути: допустим, что ограничение потока задано внутри чипсета. Его нельзя программировать, оно задано намертво, но оно есть. Например, оно равно 290 мегабайт в секунду на каждую дифф. пару. Больше — режется уже где-то внутри чипсета на его внутренних механизмах. Поэтому в «длинном» слоте (куда можно воткнуть карты вплоть до x4) внутри чипсета для нашей карты ничего не режется, а мы упираемся в физический предел шины x1. В «коротком» же разъёме мы упираемся в это ограничение.Теперь добавляем те 4 диска, которые фигурировали в первых тестах. Скорость работы SSD предсказуемо просела:
Вычисляем суммарную скорость, проходящую через SAS-контроллер, получаем 1175 мегабайт в секунду. Делим на 4 (столько линий идёт в «длинный» слот), получаем… Барабанная дробь… 293 мегабайта в секунду. Где-то я это число уже видел!
Итак, в рамках данного проекта было доказано, что дело не в нашей программе или драйвере, а в странных ограничениях чипсета, которые наверняка «зашиты» намертво. Была выведена методика подбора материнских плат, которые могут быть использованы в проекте. А в целом, выводы делаем следующие.
Заключение
- Зачастую в реальной жизни аппаратура имеет меньшую производительность, чем теоретически возможная. Ограничения могут накладываться даже драйверами, как показано в случае USB. Иногда удаётся подобрать такую аппаратуру, которая (или драйверы которой) не имеет таких ограничений.
- Ограничения могут быть даже недокументированными, но чётко выраженными.
- Масса статей, в которых говорится, что одна дифференциальная пара PCIe gen. 1 и gen 2 даёт примерно 250 и 500 мегабайт в секунду, ошибочны. Они копируют друг у друга одну и ту же ошибку — мегабайт «сырых» данных в секунду. Оверхед накапливается на нескольких уровнях интерфейса. При Max Payload 128 байт, на PCIe gen2 реально получается около 400 мегабайт в секунду. В более новых поколениях PCIe всё должно быть чуть лучше, так как там физическое кодирование не 8b/10b, а более экономичное, но пока не найдено ни одного контроллера дисков, на которых можно было бы проверить это на практике.
habr.com
PCI Express 3.0 — в два раза лучше прежнего стандарта
30 ноября
Скоро разработчики смогут воспользоваться преимуществами новой технологии PCI Express третьего поколения. Стандарт пока еще не утвержден, но уже известны его основные характеристики и отличия от существующих версий. Статья представляет собой сокращенный перевод работы [1].
С
каждым новым поколением PCI Express полоса пропускания шины удваивается. Не исключение и стандарт PCI Express 3.0, который появится в скором будущем. Производительность шины будет увеличена до 8 Гбит/с на линии или 128 Гбит/с в режиме передачи по 16 каналам. Основные характеристики различных версий PCI Express приведены в таблице 1. Шина PCI Express 3.0 оптимизирована по ряду параметров и обеспечивает более высокую целостность сигнала. Кроме того, она полностью совместима с предыдущими версиями по стеку протоколов и может взаимодействовать с устройствами, поддерживающими только медленный режим обмена.
Таблица 1. Основные характеристики PCI Express
Стандарт |
Скорость передачи сигнала, Гбит/с |
Полезная скорость передачи (за вычетом добавочных битов), Гбит/с |
Скорость передачи по 16 каналам, Гбит/с |
PCI Express 1.0 |
2,5 |
2,0 |
32 |
PCI Express 2.0 |
5,0 |
4,0 |
64 |
PCI Express 3.0 |
8,0 |
8,0 |
128 |
Полоса пропускания PCI Express 3.0 в два раза превышает пропускную способность PCI Express 2.0 не за счет увеличения скорости передачи. Для сравнения: скорость передачи в PCI Express 2.0 составляет 5 Гбит/с, а с учетом кодирования 8b/10b полезная скорость передачи равна 4 Гбит/с. Самый простой способ удвоить полосу пропускания — это увеличить скорость передачи до 10 Гбит/с, сохранив кодирование 8b/10b. Однако после тщательного анализа было выявлено, что целесообразно заменить избыточное кодирование на скремблирование — тогда количество добавочных битов уменьшается (128b/130b). Таким образом, с применением скремблирования требуемая скорость составляет не 10, а 8 Гбит/с. За счет этого снижается мощность потребления, увеличивается целостность сигнала и, следовательно, снижается стоимость и увеличивается КПД системы. Однако за все надо платить. При добавлении проверочных битов в каждый байт данных гарантируется отсутствие дрейфа постоянной составляющей. Это позволяет обеспечить связь физических сигналов по переменному току и облегчить процедуру восстановления данных, что в свою очередь позволяет упростить схему приемника. Скремблирование — это маскирование данных с помощью известного полинома. При восстановлении данных применяется обратный полином. Недостаток этого подхода заключается в незащищенности от дрейфа постоянной составляющей. Следовательно, необходимо либо корректировать сигнал в приемнике, либо схема приемника должна быть устойчива к этому эффекту. Второй недостаток проявляется на уровне протоколов. При использовании шифрования 8b/10b по добавочным битам всегда можно найти начало и конец пакета. При скремблировании это преимущество теряется, и в приемники и передатчики надо встраивать дополнительные элементы, например, счетчики длины пакетов. Тем не менее, даже такие недостатки с лихвой окупаются теми преимуществами, которые обеспечивает схема скремблирования: работа на физическом уровне идет на сниженной на 20% частоте, а пропускная способность системы передачи не меняется.
Увеличенная вдвое полоса пропускания — не единственное нововведение в PCI Express 3.0. Сетевой уровень PCI Express претерпел два изменения: добавлены возможности взаимодействия в качестве управляющего устройства (host), чтобы ускорить работу, и средства для лучшего управления и уменьшения мощности потребления (оповещение о стойкости к задержке, динамическое распределение мощности и т.д.). Стоит заметить, что эти опции уже были реализованы в PCI Express 2.1, поскольку они не зависят от скорости работы. На физическом уровне улучшена целостность сигнала, особенно в случае прохождения длинных трасс или при наличии разрывов, обусловленных отверстиями на плате и другими явлениями.Схема предварительного усиления позволяет преобразовывать энергию в передатчике в порции сигнала без изменения общей мощности потребления на физическом уровне. Для внесения предыскажений в канал применяется фильтр с конечной импульсной характеристикой (FIR — finite impulse response), чтобы снизить потери и согласовать канал. За счет этого увеличивается целостность сигнала. В схему приемника включен блок коррекции с решающей обратной связью (DFE — Decision Feedback Equalizer). В отличие от других видов фильтров, которые усиливают шум, DFE только удаляет межсимвольную интерференцию и отражения. Этот тип фильтров особенно хорошо подходит для преодоления эффекта дискретных разрывов в канале, которые возникают, например, при резком изменении направления прохождения сигнала в отверстиях или слоях. Фильтр DFE имеет режим с пониженным расходом мощности. Приемник также имеет стационарную линейную схему коррекции (CTLE — continuous time linear equalizer), которая позволяет оптимизировать передачу по длинным каналам. Для компенсации изменений в параметрах аналоговой схемы и применения настроек эквалайзера используется автоматическая калибровка. В итоге в системе могут использоваться более длинные трассы на плате — это повышает гибкость разводки и надежность. Более того, в приемнике есть улучшенный блок детектирования, что позволяет предотвратить потерю сигнала из-за затухания или малой амплитуды сигнала в длинном канале связи. В PCI Express 3.0 появились новые возможности отладки и тестирования: инжекция джиттера для повышения допустимого искажения сигнала и автоматическая генерация глазковой диаграммы. Таким образом, испытать целостность сигнала можно без использования дорогостоящего оборудования. При анализе глазковой диаграммы можно измерить не только ширину глаза, как в PCI Express 2.0, но и его высоту. По мере развития стандарта возможны и другие нововведения.
Разрешение и сложность графических дисплеев продолжают расти. Соответственно, растет потребность в полосе пропускания соединителей для графических карт, а также требования к быстродействию графического процессора. Увеличив полосу в два раза по сравнению с 2.0, PCI Express 3.0 делает изображение более четким, а движение — более реалистичным. Функция multi-cast улучшает работу многопроцессорных систем. Как показано на рисунке 1, для рисования изображения на экране используются два графических процессора.
Рис. 1. Двуядерная схема вывода изображения на дисплей |
Поскольку обработка изображения производится по заранее известному алгоритму, то центральный процессор может одновременно посылать команды в оба графических процессора, каждый из которых отвечает за свою область на экране. Как показано на рисунке 2, процессор GPU2 пересылает изображение в GPU1 через интерфейс передачи между равноправными устройствами, встроенный в коммутатор PCI Express 3.0. После этого ядро GPU1 выводит на экран обе части изображения. Такая организация обмена не только улучшает качество изображения, но и позволяет разгрузить основной процессор для выполнения других задач. Технология PCI Express 3.0 будет также использоваться в приложениях с высоким быстродействием, таких как захват видеосигнала или широкополосное вещание. Для видеопроцессоров следующего поколения необходимы коммутаторы ввода/вывода, которые потребляют меньше энергии и обеспечивают большую полосу пропускания. Современные системы захвата видеосигнала работают на соединителях PCI и PCI Express 1.0, которые подсоединяют видеокодеки к ЦП. Если потребность в увеличении разрешения будет расти, ее пропускной способности уже не хватит. Стандарт PCI Express 3.0 уже вот-вот появится, и, как и предыдущие версии PCI Express, в нем в два раза будет увеличена пропускная способность и улучшены другие характеристики. Таким образом, PCI Express станет еще более выгодным решением для обработки графики и других приложений, где требуются высокая скорость, малое потребление и сравнительно низкая стоимость.
1. PCI Express Gen 3: Twice as Nice and Then Some//RTC, август 2009 г.
Вы можете скачать эту статью в формате pdf здесь.
www.russianelectronics.ru
SSD SATA против SSD PCI-E
В любом устройстве всегда найдется слабое звено – bottle neck (бутылочное горлышко), самый слабый компонент, который будет лимитировать производительность остальных частей. Долгое время в настольных компьютерах главными “тормозами перестройки” были жёсткие диски, и ни 7200, ни 10000, ни даже 15000 оборотов в минуту, не меняли ситуацию кардинально. С появлением твердотельных накопителей дело сдвинулось с мёртвой точки. Но прогресс не щадит и это быстрое решение. Интерфейс SATA не способен удовлетворить запросы пользователей, поэтому стали появляться новые стандарты и интерфейсы.Есть два новых пути развития SSD с интерфейсом PCI-E: SATA Express и NVMe – о них следует разговаривать отдельно, да и в продаже их не часто встретишь. Поэтому пока попробуем разобраться с обычными, доступными в рознице накопителями с интерфейсами PCI Express и SATA 6 ГБит/с.
Начнём с плюсов и минусов обоих интерфейсов:
SATA-диски
Краткая справочка из Wikipedia про этот интерфейс. Самый распространенный на сегодняшний день способ подключения твердотельного накопителя.
Достоинства:
- Доступность на рынке
- Большое количество производителей
- Возможность подключения к любым современным материнским платам
- Демократичная цена
- Доступны объемы от 64 Гб до 1 Тб
Недостатки:
- Ограничение по скорости передачи данных — предел интерфейса — 600 МБ/с на один канал.
- Необходимость работы с контроллерами AHCI, которые разрабатывались для классических жёстких дисков
PCI Express
Снова дам ссылочку на Wikipedia — там много и подробно расписано про разные поколения этого интерфейса. Быстрый, классный, универсальный, дорогой.
Достоинства:
- Высокая скорость передачи данных — пропускная способность одной линии шины ревизии 3.0 — 1 ГБ/с
Недостатки:
- Высокая цена на рынке
- Небольшой ассортимент брендов и моделей
- Для некоторых моделей характерно падение производительности со временем (неработающий или не настроенный TRIM)
Потребительские сценарии
- Обычные пользователи Откровенно говоря, большей части юзеров будет безразлично какой интерфейс имеет SSD-диск, более того, мало кто по настоящему почувствует разницу между SATA 3 ГБит/с и SATA 6 ГБит/с. При использовании только веб-браузеров, электронной почты, базовых офисных программ пользователь не увидит разницы и будет счастлив просто наличию SSD-диска в системе, так как программы будут загружаться очевидно быстрее, чем на HDD.
- Продвинутые юзеры работающие с мультимедиа материалами, часто ищут способы увеличения производительности дисковой системы. Простой пример: буйно начал расти сегмент 4К-видео. Несжатый поток 4К (3840х2160, 12 бит, 24 кадра в секунду) потребует пропускной способности около 900 МБ/с. И даже если вы работаете со сжатыми потоками, то при одновременной обработке нескольких, обязательно упрётесь в потолок SATA 6 ГБит/с. RAID 0 спасёт ситуацию, но скорее всего в пике при построении RAID 0 на 4-х накопителях будет около 1,6 ГБ/с. PCI Express предлагает решение вопроса: каждая линия PCI-Express имеет пропускную способность до 1,0 ГБ/с (то есть в 1,6 раза больше, чем SATA) при почти таком же энергопотреблении – разумеется, грешно не пользоваться такими возможностями. И пусть цена на SSD PCI Express выше, любители работать с видео высокого разрешения просто обязаны смотреть именно на такой стандарт.
- Геймеры Для настоящих хардкорщиков (а по мне так просто нетерпеливых людей), конечно же, нужен PCI Express. Огромные по размеру TitanFall или CoD:Ghosts будут грузится достаточно долго, я уж молчу про авиасимуляторы, “вес” которых доходит до сотен гигабайт. Для обычных же людей, которые любят Diablo III и прочие Bioshock Infinite, будет вполне достаточно топового SSD 6 ГБит/с.
- Энтерпрайз-клиенты Ожидания клиента в этой сфере существенно выше, чем просто быстрая загрузка или обработка видеофайла. Чем крупнее сервер, тем больше к нему осуществляется обращений от пользователей и тут на первый план выходят IOPS. Для вышеперечисленных категорий людей обычная очередь к контроллеру составляет 3-5 запросов, в энтерпрайзе все измеряется сотнями. SSD прекрасно проявляют себя, когда нужно показывать высокую производительность на протяжении долгого времени, и если классических дисков потребуется несколько сотен, то высокопроизводительный SSD может справиться в одиночку.
Вместо вывода
Что можно сказать в итоге. Для розничных покупателей и геймеров можно и нужно выбирать среди SATA-дисков. Большинство офисных пользователей будут счастливы, если в их рабочих станциях поселятся быстрые и бесшумные накопители, но 90 процентов из них никогда даже не задумаются о том, какой интерфейс у диска и бывают ли они вообще разные. Геймерам же придётся сложнее, выбор большой, запутаться сложно, зачастую производитель недобросовестно завышает показатели чтения и записи. Следите за нашим блогом и мы расскажем, какая методика тестирования на самом деле правильная.Для корпоративного рынка и людей, работающих с мультимедиа контентом – крайне рекомендованы накопители с интерфейсом PCI-Express. Обработка огромных растровых изображений или работа с 4К-видео с GoPro Hero4 – всё это потребует от системы хранения высокой производительности. Если ваша основная задача – производить контент – смело выбирайте диски PCI-Express. Энтерпрайз сегмент уже практически перешёл на контроллеры NVMe – о таких SSD будет отдельный пост – они заслуживают много внимания.
Теоретические раскладки обязательно надо проверять на практике. Поэтому следующий пост будет про практическое сравнение PCI-E SSD диска и SATA SSD (в том числе в режиме RAID 0). С наступающим Новым Годом!
habr.com