SSD с интерфейсом PCI Express: обзор и тестирование пяти моделей. Разъем PCI Express: что такое интерфейс PCIe? Контроллер шины pci express

08.11.2021 Office

USB - наиболее популярный современный интерфейс для подключения внешней периферии. Конкретно стандарт USB 2.0 обеспечивает скорость передачи данных до 480 Мбит/с. Он считается устаревшим и в свете появления более быстрых и продвинутых версий - 3.0 и 3.1. Тем не менее, возможностей USB 2.0 вполне достаточно для периферийных устройств, не требующих высокой скорости обмена данными или мощного питания - клавиатур, мышей, веб-камер, «флешек» и т. п.; а обходится данный интерфейс недорого. Так что разъемы этого типа все еще продолжают широко применяться в компьютерной технике, и навряд ли ситуация в ближайшее время изменится.

USB 3.2 gen1

USB - наиболее популярный современный интерфейс для подключения внешней периферии. USB 3.2 gen1 (ранее маркировка была USB 3.1 gen1 и USB 3.0) является следующим, после 2.0, поколением данного интерфейса. В этой версии скорость передачи данных была увеличена до 4,8 Гбит/с, также возросла мощность питания, которое может подаваться на разъем.

USB 3.2 gen2

USB - наиболее популярный современный интерфейс для подключения внешней периферии. Версия 3.2 gen2 (прежнее название USB 3.1 gen2 и USB 3.1) обладает скоростью передачи данных до 10 Гбит/с.

USB C 3.2 gen1

ESATA представляет собой специализированный интерфейс для подключения внешних накопителей. Он обеспечивает скорость передачи данных в 2.4 Гбит/с (в 5 раз выше, чем по стандарту USB 2.0). Также подключение по eSATA удобно тем, что накопитель не занимает порт USB, который может пригодиться для другой периферии. С другой стороны, периферийных устройств с таким разъемом выпускается сравнительно немного.

COM-порт

Под термином «COM-порт» обычно подразумевается интерфейс RS-232. Это служебный разъем, в наше время применяемый в основном для подключения различного специализированного оборудования - станков с ЧПУ, источников бесперебойного питания, программируемых логических контроллеров, некоторых моделей роутеров и т п. Помимо этого, данный интерфейс может применяться для прямого соединения между двумя компьютерами, а также для управления настройками телевизоров, проекторов, аудиоресиверов и другой аудио- и видеотехники. COM-порт редко устанавливается в современные компьютеры при первоначальной сборке, так что для использования данного интерфейса обычно требуется установка PCI-контроллера.

LPT-порт

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

Отметим, что LPT имеет довольно крупные размеры, поэтому предусмотреть более двух таких разъемов в PCI-контроллере проблематично. Впрочем, на практике чаще всего достаточно и одного порта.

SAS (SFF-8088)

SFF-8088 является одним из типов разъемов, применяемых для подключения внешних накопителей по интерфейсу SAS. Такое подключение обеспечивает скорость передачи данных до 12 Гбит/с, что особенно удобно при работе с большими объемами данных. В то же время периферии с таким разъемом выпускается сравнительно немного, поэтому и разъемы этого типа встречаются довольно редко.

USB 2.0

Количество внутренних портов USB 2.0, предусмотренное в контроллере.

Подробнее о самом интерфейсе см. «USB 2.0» выше. А внутренние порты располагаются непосредственно на плате контроллера и направлены, в соответствии с названием, внутрь корпуса. Они хорошо подходят для периферийных устройств, которые нужно держать постоянно подключенными к системе и которые можно спрятать в корпус; в качестве примера подобных устройств можно привести Wi-Fi и Bluetooth адаптеры. Преимуществами подключения к внутреннему USB является то, что устройство не торчит из корпуса и не занимает наружных портов, которые могут пригодиться для другой периферии.

USB 3.2 gen1

Количество внутренних портов USB 3.2 gen1 (прежнее название USB 3.1 gen1 и USB 3.0), предусмотренное в контроллере.

Подробнее о самом интерфейсе см. «USB 3.2 gen1» выше. А внутренние порты располагаются непосредственно на плате контроллера и направлены, в соответствии с названием, внутрь корпуса. Они хорошо подходят для периферийных устройств, которые нужно держать постоянно подключенными к системе и которые можно спрятать в корпус; в качестве примера подобных устройств можно привести Wi-Fi и Bluetooth адаптеры. Преимуществами подключения к внутреннему USB является то, что устройство не торчит из корпуса и не занимает наружных портов, которые могут пригодиться для другой периферии.

USB 3.2 gen2

Количество внутренних портов USB 3.2 gen2 (прежнее название USB 3.1 gen2 и USB 3.1), предусмотренное в контроллере.

Подробнее о самом интерфейсе см. «USB 3.2 gen2» выше. А внутренние порты располагаются непосредственно на плате контроллера и направлены, в соответствии с названием, внутрь корпуса. Они хорошо подходят для периферийных устройств, которые нужно держать постоянно подключенными к системе и которые можно спрятать в корпус; в качестве примера подобных устройств можно привести Wi-Fi и Bluetooth адаптеры. Преимуществами подключения к внутреннему USB является то, что устройство не торчит из корпуса и не занимает наружных портов, которые могут пригодиться для другой периферии.

SATA

При оценке количества коннекторов стоит учитывать, что один коннектор может быть выведен на два USB-порта.

Объем кэш-памяти

Объем кэш-памяти, предусмотренной в контроллере.

Кэш-память применяется в контроллерах RAID (см. «Тип»). Она служит для хранения данных, которые наиболее часто используются в процессе работы устройства: кэш обеспечивает высокую скорость доступа к этим данным, улучшая таким образом общее быстродействие контроллера. Чем объемнее кэш - тем больше данных может в нем храниться и тем быстрее может работать устройство; с другой стороны, большие объемы памяти соответствующим образом сказываются на стоимости.

Дополнительное питание

Тип коннектора для подключения дополнительного питания , на который рассчитан контроллер.

- Molex . Характерный четырехконтактный разъем питания, имеющий довольно крупные размеры. Довольно универсален, применяется для питания самых разнообразных компонентов системы

- SATA . Разъем питания, выпущенный одновременно с соответствующим интерфейсом передачи данных (см. выше) специально для жестких дисков; однако может использоваться и для других комплектующих. Имеет 15-контактный штекер.

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

Занимаемых слотов

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

Низкопрофильная

Данная особенность означает, что плата контроллера имеет небольшую высоту; а высота в данном случае - это то, насколько плата выступает над «материнкой», в которую она установлена.

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

Длина платы

Общая длина контроллера - от планки, закрепляемой на задней стенке корпуса ПК, до противоположного конца платы. Данная информация позволяет оценить, хватит ли в корпусе места для установки данного компонента.

Если спросить, какой интерфейс следует использовать для твердотельного накопителя с поддержкой протокола NVMe, то любой человек (вообще знающий, что такое NVMe) ответит: конечно PCIe 3.0 x4! Правда, с обоснованием у него, скорее всего, возникнут сложности. В лучшем случае получим ответ, что такие накопители поддерживают PCIe 3.0 x4, а пропускная способность интерфейса имеет значение. Иметь-то имеет, однако все разговоры об этом начались только тогда, когда некоторым накопителям на некоторых операциях стало тесно в рамках «обычного» SATA. Но ведь между его 600 МБ/с и (столь же теоретическими) 4 ГБ/с интерфейса PCIe 3.0 x4 - просто пропасть, причем заполненная массой вариантов! А вдруг и одной линии PCIe 3.0 хватит, поскольку это уже в полтора раза больше SATA600? Масла в огонь подливают производители контроллеров, грозящиеся в бюджетной продукции перейти на PCIe 3.0 x2, а также тот факт, что у многих пользователей и такого-то нет. Точнее, теоретически есть, но высвободить их можно, лишь переконфигурировав систему или даже что-то в ней поменяв, чего делать не хочется. А вот купить топовый твердотельный накопитель - хочется, но есть опасения, что пользы от этого не будет совсем никакой (даже морального удовлетворения от результатов тестовых утилит).

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

PCI Express: существующие стандарты и их пропускная способность

Начнем с того, что́ представляет собой PCIe и с какой скоростью этот интерфейс работает. Часто его называют «шиной», что несколько неверно идеологически: как таковой шины, с которой соединены все устройства, нет. На деле имеется набор соединений «точка-точка» (похожий на многие другие последовательные интерфейсы) с контроллером в середине и присоединенными к нему устройствами (каждое из которых само по себе может быть и концентратором следующего уровня).

Первая версия PCI Express появилась почти 15 лет назад. Ориентация на использование внутри компьютера (нередко - и в пределах одной платы) позволила сделать стандарт скоростным: 2,5 гигатранзакции в секунду. Поскольку интерфейс последовательный и дуплексный, одна линия PCIe (x1; фактически атомарная единица) обеспечивает передачу данных на скоростях до 5 Гбит/с. Однако в каждом направлении - лишь половина от этого, т. е. 2,5 Гбит/с, причем это полная скорость интерфейса, а не «полезная»: для повышения надежности каждый байт кодируется 10 битами, так что теоретическая пропускная способность одной линии PCIe 1.x составляет примерно 250 МБ/с в каждую сторону. На практике нужно еще передавать служебную информацию, и в итоге правильнее говорить о ≈200 МБ/с передачи пользовательских данных. Что, впрочем, на тот момент времени не только покрывало потребности большинства устройств, но и обеспечивало солидный запас: достаточно вспомнить, что предшественница PCIe в сегменте массовых системных интерфейсов, а именно шина PCI, обеспечивала пропускную способность в 133 МБ/с. И даже если рассматривать не только массовую реализацию, но и все варианты PCI, то максимумом были 533 МБ/с, причем на всю шину, т. е. такая ПС делилась на все подключенные к ней устройства. Здесь же 250 МБ/с (поскольку и для PCI приводится обычно полная, а не полезная пропускная способность) на одну линию - в монопольном использовании. А для устройств, которым нужно больше, изначально была предусмотрена возможность агрегирования нескольких линий в единый интерфейс, по степеням двойки - от 2 до 32, т. е. предусмотренный стандартом вариант х32 в каждую сторону мог передавать уже до 8 ГБ/с. В персональных компьютерах х32 не использовался из-за сложности создания и разведения соответствующих контроллеров и устройств, так что максимумом стал вариант с 16 линиями. Использовался он (да и сейчас используется) в основном видеокартами, поскольку большинству устройств столько не требуется. Вообще, немалому их количеству и одной линии вполне достаточно, но некоторые применяют с успехом и х4, и х8: как раз по накопительной теме - RAID-контроллеры или SSD.

Время на месте не стояло, и около 10 лет назад появилась вторая версия PCIe. Улучшения касались не только скоростей, но и в этом отношении был сделан шаг вперед - интерфейс начал обеспечивать 5 гигатранзакций в секунду с сохранением той же схемы кодирования, т. е. пропускная способность удвоилась. И еще раз она удвоилась в 2010 году: PCIe 3.0 обеспечивает 8 (а не 10) гигатранзакций в секунду, но избыточность уменьшилась - теперь для кодирования 128 бит используется 130, а не 160, как ранее. В принципе, и версия PCIe 4.0 с очередным удвоением скоростей уже готова появиться на бумаге, но в ближайшее время в железе мы ее массово вряд ли увидим. На самом деле и PCIe 3.0 до сих пор в массе платформ используется совместно с PCIe 2.0, потому что и производительность последней для многих сфер применения просто... не нужна. А где нужна - работает старый добрый метод агрегации линий. Только каждая из них стала за прошедшие годы вчетверо быстрее, т. е. PCIe 3.0 х4 - это PCIe 1.0 x16, самый быстрый слот в компьютерах середины нулевых. Именно этот вариант поддерживают топовые контроллеры SSD, и именно его рекомендуется использовать. Понятно, что если такая возможность есть - много не мало. А если ее нет? Будут ли возникать какие-то проблемы, и если да, то какие? Вот с этим-то вопросом нам и предстоит разобраться.

Методика тестирования

Провести тесты с разными версиями стандарта PCIe несложно: практически все контроллеры позволяют использовать не только поддерживаемый ими, но и все более ранние. Вот с количеством линий - сложнее: нам хотелось непосредственно протестировать и варианты с одной-двумя линиями PCIe. Используемая нами обычно плата Asus H97-Pro Gamer на чипсете Intel H97 полного набора не поддерживает, но кроме «процессорного» слота х16 (который обычно и используется) на ней есть еще один, работающий в режимах PCIe 2.0 х2 или х4. Вот этой тройкой мы и воспользовались, добавив к ней еще и режим PCIe 2.0 «процессорного» слота, дабы оценить, есть ли разница. Все-таки в этом случае между процессором и SSD посторонних «посредников» нет, а вот при работе с «чипсетным» слотом - есть: собственно чипсет, фактически соединяющийся с процессором тем же PCIe 2.0 x4. Можно было добавить еще несколько режимов работы, но основную часть исследования мы все равно собирались провести на другой системе.

Дело в том, что мы решили воспользоваться случаем и заодно проверить одну «городскую легенду», а именно поверие о полезности использования топовых процессоров для тестирования накопителей. Вот и взяли восьмиядерный Core i7-5960X - родственника обычно применяемого в тестах Core i3-4170 (это Haswell и Haswell-E), но у которого ядер в четыре раза больше. Кроме того, обнаруженная в закромах плата Asus Sabertooth X99 нам сегодня полезна наличием слота PCIe x4, на деле способного работать как х1 или х2. В этой системе мы протестировали три варианта х4 (PCIe 1.0/2.0/3.0) от процессора и чипсетные PCIe 1.0 х1, PCIe 1.0 х2, PCIe 2.0 х1 и PCIe 2.0 х2 (во всех случаях чипсетные конфигурации отмечены на диаграммах значком (c) ). Есть ли смысл сейчас обращаться к первой версии PCIe, с учетом того, что вряд ли найдется хоть одна плата с поддержкой только этой версии стандарта, способная загрузиться с NVMe-устройства? С практической точки зрения - нет, а вот для проверки априори предполагаемого соотношения PCIe 1.1 х4 = PCIe 2.0 х2 и подобных оно нам пригодится. Если проверка покажет, что масштабируемость шины соответствует теории, значит, и неважно, что нам не удалось пока получить практически значимые способы подключения PCIe 3.0 x1/х2: первый будет идентичен как раз PCIe 1.1 х4 или PCIe 2.0 х2, а второй - PCIe 2.0 х4. А они у нас есть.

В плане ПО мы ограничились только Anvil’s Storage Utilities 1.1.0: разнообразные низкоуровневые характеристики накопителей она измеряет неплохо, а ничего другого нам и не нужно. Даже наоборот: любое влияние других компонентов системы является крайне нежелательным, так что низкоуровневая синтетика для наших целей безальтернативна.

В качестве «рабочего тела» мы использовали Patriot Hellfire емкостью 240 ГБ . Как было установлено при его тестировании, это не рекордсмен по производительности, но его скоростные характеристики вполне соответствуют результатам лучших SSD того же класса и той же емкости. Да и более медленные устройства на рынке уже есть, причем их будет становиться все больше. В принципе, можно будет повторить тесты и с чем-нибудь более быстрым, однако, как нам кажется, необходимости в этом нет - результаты предсказуемы. Но не станем забегать вперед, а посмотрим, что же у нас получилось.

Результаты тестов

Тестируя Hellfire, мы обратили внимание на то, что максимальную скорость на последовательных операциях из него можно «выжать» лишь многопоточной нагрузкой, так что это тоже надо принимать во внимание на будущее: теоретическая пропускная способность на то и теоретическая, что «реальные» данные, полученные в разных программах по разным сценариям, будут больше зависеть не от нее, а от этих самых программ и сценариев - в том случае, конечно, когда не помешают обстоятельства непреодолимой силы:) Как раз такие обстоятельства мы сейчас и наблюдаем: выше уже было сказано, что PCIe 1.x x1 - это ≈200 МБ/с, и именно это мы и видим. Две линии PCIe 1.x или одна PCIe 2.0 - вдвое быстрее, и именно это мы и видим. Четыре линии PCIe 1.x, две PCIe 2.0 или одна PCIe 3.0 - еще вдвое быстрее, что подтвердилось для первых двух вариантов, так что и третий вряд ли будет отличаться. То есть в принципе масштабируемость, как и предполагалось, идеальная: операции линейные, флэш с ними справляется хорошо, так что интерфейс имеет значение. Флэш перестает справляться хорошо на PCIe 2.0 x4 для записи (значит, подойдет и PCIe 3.0 x2). Чтение «может» больше, но последний шаг дает уже полутора-, а не двукратный (каким он потенциально должен быть) прирост. Также отметим, что заметной разницы между чипсетным и процессорным контроллером нет, да и между платформами тоже. Впрочем, LGA2011-3 немного впереди, но на самую малость.

Все ровно и красиво. Но шаблоны не рвет : максимум в этих тестах составляет лишь немногим больше 500 МБ/с, а это вполне по силам даже SATA600 или (в приложении к сегодняшнему тестированию) PCIe 1.0 х4 / PCIe 2.0 х2 / PCIe 3.0 х1 . Именно так: не стоит пугаться выпуску бюджетных контроллеров под PCIe х2 или наличию лишь такого количества линий (причем версии стандарта 2.0) в слотах М.2 на некоторых платах, когда больше-то и не нужно. Иногда и столько не нужно: максимальные результаты достигнуты при очереди в 16 команд, что для массового ПО не типично. Чаще встречается очередь с 1-4 командами, а для этого обойтись можно и одной линией самого первого PCIe и даже самым первым SATA. Впрочем, накладные расходы и прочее имеют место быть, так что быстрый интерфейс полезен. Однако излишне быстрый - разве что не вреден.

А еще в этом тесте по-разному ведут себя платформы, причем с единичной очередью команд - принципиально по-разному. «Беда» вовсе не в том, что много ядер - плохо. Они тут все равно не используются, разве что одно, и не настолько, чтоб вовсю развернулся буст-режим. Вот и имеем разницу где-то в 20% по частоте ядер и полтора раза по кэш-памяти - она в Haswell-E работает на более низкой частоте, а не синхронно с ядрами. В общем, топовая платформа может пригодиться разве что для вышибания максимума «йопсов» посредством максимально многопоточного режима с большой глубиной очереди команд. Жаль только, что с точки зрения практической работы это совсем уж сферическая синтетика в вакууме:)

На записи положение дел принципиально не изменилось - во всех смыслах. Но, что забавно, на обеих системах самым быстрым оказался режим PCIe 2.0 х4 в «процессорном» слоте. На обеих! И при многократных проверках/перепроверках. Тут уж поневоле задумаешься, нужны ли эти ваши новые стандарты или лучше вообще никуда не торопиться...

При работе с блоками разного размера теоретическая идиллия разбивается о то, что повышение скорости интерфейса все же имеет смысл. Результирующие цифры такие, что хватило бы пары линий PCIe 2.0, но реально в таком случае производительность ниже, чем у PCIe 3.0 х4, пусть и не в разы. И вообще тут бюджетная платформа топовую «забивает» в куда большей степени. А ведь как раз такого рода операции в основном в прикладном ПО и встречаются, т. е. эта диаграмма - наиболее приближенная к реальности. В итоге нет ничего удивительного, что никакого «вау-эффекта» толстые интерфейсы и модные протоколы не дают. Точнее, переходящему с механики - дадут, но ровно такой же, какой ему обеспечит любой твердотельный накопитель с любым интерфейсом.

Итого

Для облегчения восприятия картины по больнице в целом мы воспользовались выдаваемым программой баллом (суммарным - по чтению и записи), проведя его нормирование по «чипсетному» режиму PCIe 2.0 x4: на данный момент именно он является наиболее массово доступным, поскольку встречается даже на LGA1155 или платформах AMD без необходимости «обижать» видеокарту. Кроме того, он эквивалентен PCIe 3.0 x2, который готовятся освоить бюджетные контроллеры. Да и на новой платформе AMD АМ4, опять же, именно этот режим как раз можно получить без влияния на дискретную видеокарту.

Итак, что мы видим? Применение PCIe 3.0 x4 при наличии возможности является, безусловно, предпочтительным, но не необходимым: NVMe-накопителям среднего класса (в своем изначально топовом сегменте) он приносит буквально 10% дополнительной производительности. Да и то - за счет операций в общем-то не столь уж часто встречающихся на практике. Для чего же в данном случае реализован именно этот вариант? Во-первых, была такая возможность, а запас карман не тянет. Во-вторых, есть накопители и побыстрее, чем наш тестовый Patriot Hellfire. В-третьих, есть такие области деятельности, где «атипичные» для настольной системы нагрузки - как раз вполне типичные. Причем именно там наиболее критично быстродействие системы хранения данных или, по крайней мере, возможность сделать ее часть очень быстрой. Но к обычным персональным компьютерам это все не относится.

В них, как видим, и использование PCIe 2.0 x2 (или, соответственно, PCIe 3.0 х1) не приводит к драматическому снижению производительности - лишь на 15-20%. И это несмотря на то, что потенциальные возможности контроллера в этом случае мы ограничили в четыре раза! Для многих операций и такой пропускной способности достаточно. Вот одной линии PCIe 2.0 уже недостаточно, поэтому контроллерам имеет смысл поддерживать именно PCIe 3.0 - и в условиях жесткой нехватки линий в современной системе это будет работать неплохо. Кроме того, полезна ширина х4 - даже при отсутствии поддержки современных версий PCIe в системе она все равно позволит работать с нормальной скоростью (пусть и медленнее, чем могло бы потенциально), если найдется более-менее широкий слот.

В принципе, большое количество сценариев, в которых узким местом оказывается собственно флэш-память (да, это возможно и присуще не только механике), приводит к тому, что четыре линии третьей версии PCIe на этом накопителе обгоняют одну первой примерно в 3,5 раза - теоретическая же пропускная способность этих двух случаев различается в 16 раз. Из чего, разумеется, не следует, что нужно спешно бежать осваивать совсем медленные интерфейсы - их время ушло безвозвратно. Просто многие возможности быстрых интерфейсов могут быть реализованы лишь в будущем. Или в условиях, с которыми обычный пользователь обычного компьютера никогда в жизни непосредственно не столкнется (за исключением любителей меряться известно чем). Собственно, и всё.

Добавил с помощью этой карточки два порта USB 3.0 в свой компьютер. Материнская плата родных портов не имеет, а делать апгрейд пока нет желания. Тем более, в зависимости от степени древности, это ведет также к смене процессора, оперативы, БП и корпуса. Поэтому обошелся PCI-E контроллером.

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

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

посмотреть


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


Установил в свободный PCI-E, использовал x4, тот, что для второй видеокарты. Переходник питания не понадобился, т.к. взял шнурок из БП, которым запитывают дисковод.

посмотреть




Для установки под Windows 7 использовал драйвер с диска. Определяется как NEC, как в инструкции. В ней же сказано, что MAC и Linux не поддерживаются.

посмотреть



По использованию ничем не отличается от обычных USB портов. Только шнурок удлинителя пришлось купить новый.

Результаты при использовании внешнего HDD (ST32000542AS) в док-станции (AgeStar):
Скорость последовательной записи ~70 Mb/s.
Скорость последовательного чтения ~80 Mb/s.

Сравнивал со встроенными USB3 на новых мат. платах - результат примерно тот же.

В общем, можно купить. Копирует действительно быстрее старых USB, стоит недорого.

Планирую купить +8 Добавить в избранное Обзор понравился +9 +13

PCI Express, полное техническое название "Peripheral Component Interconnect Express", но зачастую воспринимаемый сокращенной аббревиатурой PCIe или PCI-E, это стандартный тип подключения для внутренних девайсов, такие как видеокарты, звуковые карты, wifi адаптеры и прочих периферийных устройств на персональном компьютере.

Разбираемся в различиях PCI-E разъема.

Как правило, данный высокоскоростной порт относится к фактическим слотам расширения на материнской плате, которые принимают платы расширения на основе традиционного PCIe и типы карт расширения.


Старая видеокарта с интерфейсом AGP

PCI Express практически заменил и PCI, оба из которых заменили старейший широко используемый тип соединения, называемый ISA. Хотя пк могут содержать различные слоты расширения, PCI Express считается стандартным внутренним интерфейсом самого быстрого разъема. Сегодня многие материнские платы для персональных компьютеров производятся только с разъемами PCI Express.

Как работает PCI Express?

Подобно старым стандартам, таким как PCI и AGP, устройство на базе Express физически переходит в высокоскоростной разъем на материнской плате.

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

Хотя это не очень распространено, также существует внешняя версия высокоскоростного порта, что неудивительно называется External PCI Express, но часто сокращается до PCIe. Для устройств ePCIe, являющихся внешними, требуется специальный кабель для подключения любого внешнего устройства PCIe к пк через порт PCIe, обычно расположенный на задней панели пк, поставляемый либо материнской платой, либо специальной внутренней PCIe-картой.

Какие типы карт PCI Express существуют?

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

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

Карты контроллера жесткого диска могут быть наиболее полезными для PCI-E после видеокарты. Подключение высокоскоростного SSD-накопителя к этому высокоскоростному интерфейсу позволяет значительно быстрее считывать, потом записывать диск. Некоторые контроллеры жестких дисков PCIe даже включают встроенный SSD, сильно изменяя, как устройства хранения традиционно подключены внутри пк.

Конечно, замена PCIe на PCI и AGP полностью на более новые системные платы, почти каждый тип внутренней карты расширения, основанной на старых интерфейсах, перестраивается для возможности использования шины PCI Express. Это включает в себя такие вещи, как карты расширения , карты Bluetooth и т.д.

Каковы различные форматы PCI Express?


Показаны различные контроллеры на материнской плате

Express x1 ... Express 3.0 ... Express x16. Что означает «х»? Как узнаете, поддерживает ли ваш пк? Если есть карта PCI Express x1, и есть только разъем Express x16, совместимо ли это работает? Если нет, каковы ваши варианты?

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

Размеры PCIe: x16, x8, x4, и x1

Как следует из заголовка, число после x указывает физический размер платы PCI-E или слота, причем x16 самый большой, а x1 наименьший.

Вот как формируются различные размеры:

Независимо от размера высокоскоростного порта или карты, ключевой вырез, это небольшое место в карте или слоте, всегда находится на выводе 11. То есть, длина вывода 11 продолжает увеличиваться по мере перехода от PCIe x1 к PCIe x16. Это позволяет гибко использовать карты одного размера вместе со слотами другого.

Карты PCIe подходят в любом слоте высокопроизводительного порта на системной плате, который по крайней мере такой же большой. Например, карта PCIe x1 будет входить в любой слот PCIe x4, PCIe x8 или PCIe x16. Карта PCIe x8 будет входить в любой слот PCIe x8 или PCIe x16. PCIe-карты, размер которых больше, чем слот PCIe, могут входить в меньший слот, но только если этот слот PCI-E открытый (т.е. Не имеет пробки в конце гнезда).


Видеокарта Radeon с интерфейсом PCI-Express x16

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

Версия PCIe: 4.0, 3.0, 2.0 и 1.0

Любое число после PCIe, которое вы найдете на устройстве или системной плате, указывает номер последней версии используемой спецификации PCI Express.

Вот как сравниваются различные версии контроллера PCI Express:

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

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

Максимизация совместимости совместно с PCIe

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

Например, графическая карта на высокоскоростном порту 3.0 x16 даст вам максимальную производительность, но только если материнская плата поддерживает высокоскоростной порт версии 3.0 и имеет свободный высокоскоростной порт x16. Если модель системной платы использует исключительно PCIe 2.0, карта будет работать только с поддерживаемой скоростью (например, 64 Гбит/с в слоте x16).

Большинство материнских плат и персональных компьютеров, выпущенных в 2013 году или позже, вероятно, поддерживают Express v3.0. Если вы не уверены, проверьте руководство по материнской плате или пк. Если не получается найти какую-либо окончательную информацию о версии PCI, возможности использования вашей материнской платой, я рекомендую купить самую большую и последнюю версию PCIe-карты, если она подойдет, конечно.

Что заменит PCIe?


Очки виртуальной реальности VR

Разработчики видеоигр всегда ищут игры, которые становятся все более реалистичными, но могут сделать это только в том случае, если они смогут передавать больше данных из своих игровых программ в гарнитуру VR или на экран пк, и для этого требуются более быстрые интерфейсы. Из-за этого PCI Express никак не будет продолжать господствовать над своими лаврами. PCI Express 3.0 удивительно быстрый, но мир стремится сделать невероятно быструю передачу.

PCI Express 5.0, который должен быть завершен к 2019 году, будет использовать пропускную способность 31,504 гигабит в секунду на полосу (3938 мегабайт в секунду), что в два раза больше, чем предлагается у высокоскоростного разъема версии 4.0. Существует ряд других стандартов интерфейса, отличных от PCIe, на которые смотрит технологическая индустрия, но поскольку для них потребуются серьезные аппаратные изменения, PCIe, похоже останется лидером в течение некоторого, очень продолжительного времени как самый быстрый из существующих когда-либо.

В компьютерах уже давно есть шина PCI Express v3.0 x16; Тесты современных видеоадаптеров показывают на этой шине скорость около 12 Гбайт/с. Хотелось бы сделать модуль на ПЛИС который обладает такой же скоростью. Однако доступные ПЛИС имеют HARDWARE контроллер только для PCIe v3.0 x8; Реализации SOFT IP Core есть, но очень дорогие. Но выход есть.

ПЛИС Virtex 7 VX330T имеет два контроллера PCI Express v3.0 x8; Очевидным решением является размещение коммутатора, который имеет на стороне разъёма x16 и две шины x8 которые подключены к ПЛИС. Получается вот такая структура:


По такой схеме построен модуль HTG-728 компании HighTechGlobal.

По другому пути идёт комания Alpha-Data. Модуль ADM-PCIE-KU3-X16 не имеет коммутатора. Но на разъём x16 выводятся две шины x8. В ПЛИС возможна реализация двух независимых контроллеров. Для этого на ПЛИС заведены два сигнала сброса и две опорных частоты. Но работать это модуль будет только в специальных системных платах, где так же на разъём x16 выводятся два x8. Таких системных плат я не встречал, но видимо они есть.

В нашей компании было принято решение по реализации модуля FMC122P с внутренним коммутатором. Главной задачей была проверка максимальной скорости обмена. Другой, не менее важной задачей, является достижение совместимости с существующим программным обеспечением и компонентами ПЛИС.

Контроллер PCI Express для Virtex 7 кардинально отличается от контроллеров для Virtex 6, Kintex 7. Он стал более удобным, но он другой. На рисунке представлена структурная схема контроллера:

Контроллер имеет две части Completer и Requester, каждая из которых имеет две шины AXI_Stream. Через узел Completer приходят запросы со стороны шины PCI Express. Эти запросы передаются на шину m_axis_cq. По шине s_axis_cc должен прийти ответ со стороны User компонента. Обычно это узел доступа к внутренним регистрам ПЛИС.

Через узел Requester по шине s_axis_rq контроллер DMA посылает запросы на шину PCI Express. Ответы приходят через шину m_axis_rc.

Моделирование шины

В состав IP Core входит example проект по которому можно понять как это работает. Проект написан на Verilog и, к сожалению, он также может служить примером того как не надо разрабатывать. Давайте рассмотрим структурную схему примера.

Эта диаграмма взята из описания IP Core. На первый взгляд всё прекрасно – это замечательная картинка, её можно показать менеджерам, руководителям проектов, клиентам. Проблемы начинаются в реализации. В этой системе очень много мест где используется возможности Verilog для доступа к объектам по абсолютному пути. На мой взгляд, в данной системе это оправдано только в одном месте – это обход узлов GTP для моделирования на уровне PIPE. А вот делать связь между userapp_tx и userapp_rx с использованием абсолютных путей совершенно не нужно.

В проекте это выглядит так:

В компоненте pci_exp_usrapp_tx есть функция TSK_SYSTEM_INITIALIZATION которая вызывает через абсолютный путь функцию из pci_exp_userapp_cfg:

board.RP.cfg_usrapp.TSK_WRITE_CFG_DW (здесь и далее я называю функцией то что в Verilog описывается через task). Смотрим компонент pci_exp_userapp_cfg, что видим: cfg_ds_bus_number <= board.RP.tx_usrapp.RP_BUS_DEV_FNS;

Смотрим компонент pci_exp_userapp_rc, там тоже самое: board.RP.com_usrapp.TSK_PARSE_FRAME(`RX_LOG);

Это не только стилистически не правильно. Это мешает применить модель в своём проекте. Во первых совершенно не обязательно, что в собственном проекте файл верхнего уровня будет называться board и там останется та же самая иерархия. Во вторых может быть два компонента. У нас как раз произошли оба случая. Пришлось поработать с Verilog, хотя мне он совершенно не нравиться. Как оказалось, путём небольшой перестановки весь компонент root_port можно привести к полностью иерархическому виду. В итоге получились файлы компонентов:

  • xilinx_pcie_3_0_7vx_rp_m2.v
  • pci_exp_usrapp_tx_m2.v
  • pci_exp_usrapp_cfg_m2.v
И файлы с функциями:
  • task_bar.vh
  • task_rd.vh
  • task_s1.vh
  • task_test.vh
Это позволило включить в модель два компонента root_port. В компоненте VHDL включение двух root_port выглядит так:

root_port

gen_rp0: if(is_rp0=1) generate rp0: xilinx_pcie_3_0_7vx_rp_m2 generic map(INST_NUM => 0) port map(sys_clk_p => sys_clk_p, sys_clk_n => sys_clk_n, sys_rst_n => sys_rst_n, -- Передача команд cmd_rw => cmd_rw, -- Признак чтения-записи: 0 - чтение, 1 - запись cmd_req => cmd_req, -- 1 - Запрос операции cmd_ack => cmd_ack, -- 1 - подтверждение опреации cmd_adr => cmd_adr, -- адрес для команды чтения-записи cmd_data_i => cmd_data_i, -- данные для записи cmd_data_o => cmd_data_o, -- прочитанные данные cmd_init_done => cmd_init_done_0 -- 1 - инициализация завершена); end generate; gen_rp1: if(is_rp1=1) generate rp1: xilinx_pcie_3_0_7vx_rp_m2 generic map(INST_NUM => 1) port map(sys_clk_p => sys_clk_p, sys_clk_n => sys_clk_n, sys_rst_n => sys_rst_n, cmd_init_done => cmd_init_done_1 -- 1 - инициализация завершена); end generate;


Через компонент rp0 производятся обращения по записи или чтению 32-х разрядных слов. Компонент rp1 только проводит инициализацию.

К сожалению это моделируется очень долго, даже если проводить моделирование на уровне PIPE. Типичный сеанс моделирования это около десяти минут (а может и больше, я уже не помню). Для оперативной работы с DMA каналом это не подходит. В данной ситуации было принято совершенно естественное решение это удалить из модели контроллер PCI Express. Тем более, что он уже был изучен.

Структурная схема контроллера

Обобщённая схема контроллера представлена на рисунке.

Два одинаковых компонента core256_top_engine обеспечивают доступ к двум контроллерам EP0, EP1. core256_top_engine обеспечивает обращение к регистрам со стороны PCI Express, для этого используется только EP0 и компонент reg_access. Компонент dma_access содержит главную логику управления контроллером. Его структурная схема на рисунке ниже:

Всем управляет узел ctrl_main. Узел ctrl_dsc содержит блок дескрипторов. Узел ctrl_adr преобразует дескриптор в последовательность адресов четырёхкилобайтных блоков. Адреса поступают на узлы cmd0 и cmd1 для обмена с узлами core256_top_engine;

Со стороны пользовательской части ПЛИС есть две шины шириной 512 бит. Но данные по этим шинам должны передаваться блоками по 4 килобайта и строго по очереди. Это требуется для поочерёдного заполнения узлов памяти ram0, ram1. Каждый узел памяти содержит четыре блока по 4 килобайта. На этих узлах памяти происходит расщепление исходного потока шириной 512 бит на два потока по 256 бит. В дальнейшем два потока по 256 бит уже полностью независимы. Данные потоков встретятся только в оперативной памяти компьютера, где они окажутся по соседним адресам.

Моделирование dma_access

Узел dma_access является самой сложной частью контроллера. Соответственно, он должен быть промоделирован особенно тщательно. Как я уже написал выше, моделировать два ядра PCI Express очень долго. Для ускорения разработана модель которая подключается вместо core256_top_engine. Для dma_access остался тот же самый интерфейс, а скорость моделирования выросла на порядок. В этом проекте, так же как и в проекте PROTEQ используется автоматический запуск тестов через tcl файл.

Вот фрагмент tcl-файла:

Run_test "stend_m4" "test_read_8kb " 6 "50 us" run_test "stend_m4" "test_read_16kb " 7 "100 us" run_test "stend_m4" "test_read_49blk " 8 "150 us" run_test "stend_m4" "test_read_8x4_cont " 9 "150 us" run_test "stend_m4" "test_read_128x1_cont " 12 "200 us" run_test "stend_m4" "test_read_16kbx2 " 13 "150 us" run_test "stend_m4" "test_read_step " 14 "200 us" run_test "stend_m4" "test_read_8kb_sg_eot " 15 "100 us" run_test "stend_m4" "test_read_64x1 " 16 "100 us"
Это автоматический запуск девяти тестов. Для примера приведу код одного теста:

test_read_4kb

procedure test_read_4kb (signal cmd: out bh_cmd; --! команда signal ret: in bh_ret --! ответ) is variable adr: std_logic_vector(31 downto 0); variable data: std_logic_vector(31 downto 0); variable str: line; variable L: line; variable error: integer:=0; variable dma_complete: integer; variable data_expect: std_logic_vector(31 downto 0); begin write(str, string"("TEST_READ_4KB")); writeline(log, str); ---- Формирование блока дескрипторов --- for ii in 0 to 127 loop adr:= x"00100000"; adr:=adr + ii*4; int_mem_write(cmd, ret, adr, x"00000000"); end loop; int_mem_write(cmd, ret, x"00100000", x"00008000"); int_mem_write(cmd, ret, x"00100004", x"00000100"); -- int_mem_write(cmd, ret, x"00100080", x"00008000"); -- int_mem_write(cmd, ret, x"00100084", x"00000100"); int_mem_write(cmd, ret, x"001001F8", x"00000000"); int_mem_write(cmd, ret, x"001001FC", x"762C4953"); ---- Программирование канала DMA ---- block_write(cmd, ret, 4, 8, x"00000025"); -- DMA_MODE block_write(cmd, ret, 4, 9, x"00000010"); -- DMA_CTRL - RESET FIFO block_write(cmd, ret, 4, 20, x"00100000"); -- PCI_ADRL block_write(cmd, ret, 4, 21, x"00100000"); -- PCI_ADRH block_write(cmd, ret, 4, 23, x"0000A400"); -- LOCAL_ADR block_write(cmd, ret, 4, 9, x"00000001"); -- DMA_CTRL - START wait for 20 us; block_read(cmd, ret, 4, 16, data); -- STATUS write(str, string"("STATUS: ")); hwrite(str, data(15 downto 0)); if(data(8)="1") then write(str, string"(" - Дескриптор правильный")); else write(str, string"(" - Ошибка чтения дескриптора")); error:= error + 1; end if; writeline(log, str); if(error=0) then ---- Ожидание завершения DMA ---- dma_complete:= 0; for ii in 0 to 100 loop block_read(cmd, ret, 4, 16, data); -- STATUS write(str, string"("STATUS: ")); hwrite(str, data(15 downto 0)); if(data(5)="1") then write(str, string"(" - DMA завершён ")); dma_complete:= 1; end if; writeline(log, str); if(dma_complete=1) then exit; end if; wait for 1 us; end loop; writeline(log, str); if(dma_complete=0) then write(str, string"("Ошибка - DMA не завершён ")); writeline(log, str); error:=error+1; end if; end if; for ii in 0 to 3 loop block_read(cmd, ret, 4, 16, data); -- STATUS write(str, string"("STATUS: ")); hwrite(str, data(15 downto 0)); writeline(log, str); wait for 500 ns; end loop; block_write(cmd, ret, 4, 9, x"00000000"); -- DMA_CTRL - STOP write(str, string"(" Прочитано: ")); writeline(log, str); data_expect:= x"A0000000"; for ii in 0 to 1023 loop adr:= x"00800000"; adr:=adr + ii*4; int_mem_read(cmd, ret, adr, data); if(data=data_expect) then fprint(output, L, "%r: %r - Ok\n", fo(ii), fo(data)); fprint(log, L, "%r: %r - Ok\n", fo(ii), fo(data)); else fprint(output, L, "%r: %r Ожидается: %r - Error \n", fo(ii), fo(data), fo(data_expect)); fprint(log, L, "%r: %r Ожидается: %r - Error \n", fo(ii), fo(data), fo(data_expect)); error:=error+1; end if; data_expect:= data_expect + 1; end loop; -- block_write(cmd, ret, 4, 9, x"00000010"); -- DMA_CTRL - RESET FIFO -- block_write(cmd, ret, 4, 9, x"00000000"); -- DMA_CTRL -- block_write(cmd, ret, 4, 9, x"00000001"); -- DMA_CTRL - START fprint(output, L, "\nTest time: %r \n", fo(now)); fprint(log, L, "\nTest time: %r \n", fo(now)); -- вывод в файл -- writeline(log, str); if(error=0) then write(str, string"("TEST finished successfully")); cnt_ok:= cnt_ok + 1; else write(str, string"("TEST finished with ERR")); cnt_error:= cnt_error + 1; end if; writeline(log, str); writeline(log, str); -- вывод в консоль -- writeline(output, str); if(error=0) then write(str, string"("TEST finished successfully")); else write(str, string"("TEST finished with ERR")); end if; writeline(output, str); writeline(output, str); end test_read_4kb


Команды int_mem_write обеспечивают запись в ОЗУ HOST компьютера. В данном тесте туда записывается блок дескрипторов. Команды block_write и block_read обеспечивают обращения к регистрам DMA контроллера. Производится программирование контроллераю, его запуск и завершение обмена. После этого командами int_mem_read производится считывание и проверка принятых данных. Код этого теста практически полностью совпадает с тестом от контроллера PCIe_DS_DMA, который я опубликовал как open source проект на opencores.org; По сравнению с оригиналом добавлена проверка принятых данных.

Логическая организация контроллера

На уровне регистров контроллер полностью повторяет наши предыдущие контроллеры для ПЛИС Virtex 4, Virtex 5, Virtex 6, Kintex 7; С организацией можно ознакомиться в проекте PCIe_DS_DMA.
Особенностью всех контроллеров является объединение одиночных дескрипторов в блок дескрипторов. Это даёт резкое увеличение скорости при использовании фрагментированной памяти.

Подключение к тетрадам

Для нас важно подключить данный контроллер к нашим тетрадам. Что такое тетрады я написал в предыдущей статье: «Интерфейс ADM: Что такое тетрада» . Работа с шиной 512 бит потребовала изменение подхода. Для подключения тетрады пришлось использовать дополнительный узел перепаковщика. Структураная схема - на рисунке.

Перепаковщик решает две задачи:

  • трассировку шины по кристаллу, для этого можно задать число дополнительных стадий конвейера
  • подключение к тетрадам с шинами 64 и 128 разрядов
Использование памяти

Конечной целью разработки контроллера и подключения к тетрадам является получение непрерывного потока данных от АЦП на компьютер. И здесь мы сталкиваемся с тем, что шина PCI Express не обеспечивает стабильной скорости. На шине возможны задержки. Это особенно заметно проявляется на высоких скоростях обмена. Задержки возникают из-за работы других устройств. Величина задержки может быть разной, это может быть 5 – 10 мкс, а может и больше. Задержка в 10 мкс на скорости 11 Гбайт/с соответствует блоку памяти в 110 килобайт. Для внутренней памяти даже современных ПЛИС это очень много. А ведь задержка может быть и больше. Если поток данных нельзя приостановить, а это как раз тот случай, когда используются АЦП, то единственным выходом является буферизация во внешней памяти. Причём память должна уметь работать на скорости 22 Гбайта/с. У нас на модуле установлены два SODIMM DDR3-1600. Память работает на частоте 800 МГц. Это соответствует непрерывному потоку данных 8400 Мбайт/с. Это цифра подтверждена экспериментом. Хочу заметить, что скорость 8400 Мбайт/с превосходит скорость выдачи данных от нашего самого быстрого субмодуля в котором установлены два АЦП на 1800 МГц.

Трассировка

На скриншоте представлен результат трассировки в программе PlanAhead:

На картинке видно два контроллера PCI Express (подсвечены жёлтым и зелёным) и два контроллера памяти (рядом с PCI Express).

Как оказалась, такой проект является очень сложным для Vivado, она с ним справляется очень плохо. Проект в Vivado разводится плохо и часто просто не работает. ISE показывает гораздо более стабильные результаты. Узлы PCI Express разведены в соответствии с рекомендациями Xilinx, при этом оказалось что они разнесены по кристаллу. А это уже создаёт проблему для совместного использования остальных мультигигабитных линий.

Результаты

Работа модуля проверялась на нескольких компьютерах. Результаты довольно интересные.

Intel Core i7 4820K P9X79 WS DDR3-1866 11140 МБайт/с
Intel Core i7 5820K X99-A DDR4-2400 11128 МБайт/с
Intel Core i7 3820K P9X79 DDR3-1600 11120 МБайт/с

Это скорость ввода данных без проверки. Производится непрерывный ввод данных в буфер размером 1 Гбайт выделенный в системной области памяти, т. е. непрерывный по физическим адресам. Измеряется средняя скорость ввода на интервале не менее 1 минуты.

На компьютере с памятью DDR3-1600 при включении проверки скорость падает до 8500 Мбайт/с.

На компьютере с DDR3-1866 скорость при одном модуле и включённой проверке скорость не уменьшается.

Два модуля FMC122P в компьютере с DDR3-1866 без проверки также показывают максимальную скорость около 11000 Мбайт/с для каждого модуля. Но при включении проверки скорость падает.

При данных измерениях принято что 1 Мбайт это 1024 кбайт, а 1 кбайт это 1024 байта.

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

P.S. Пока шла разработка Virtex 7 успел устареть. Kintex Ultrascale уже удобнее в работе. А Kintex Ultrascale+ уже имеет HARD блок PCI Express v3.0 x16 – так что такое разделение уже не нужно.

P.S.S. Но Kintex Ultrascale+ также имеет HARD блок PCI Express v4.0 x8 – может всё таки разделение пригодится?