Благодаря производительности USB SuperSpeed, контейнеры с твердотельными накопителями становятся самыми привлекательными переносными устройствами. Бонусом — стойкость к ударным нагрузкам, недоступная магнитным носителям. На это производители внешних накопителей лишний раз обращают внимание, подчеркивая конкурентные преимущества своего товара. Сегодня важным достоинством SSD-контейнера является также экстерьер устройства и его способность обслуживать современные интерфейсы, самый востребованный из которых — USB Type-C. Все перечисленные качества есть в Transcend ESD250C. Оценим, на что он способен в различных режимах USB-шины.

Про оснастку
Как и все производители, Transcend обеспечивает свою продукцию программным инструментом SSD Scope для диагностики, обслуживания и получения метрик производительности. Ожидаемо, актуальный к началу тестирования релиз отказался работать с внешним устройством ESD250C. «Компостер» доложил о ситуации в службу поддержки Transcend International, и стал терпеливо ждать обновление. Как только стала доступной новая версия v3.10.0, мы ее глазами посмотрели на работу SSD-контейнера.
На системной плате ASUS Prime B360-Plus (Intel Core i5-8400, память HyperX Savage HX430-C15SBK4/16, блок питания Seasonic Focus Plus 650 Platinum) при подключении к самому скоростному USB-порту производительность по данным SSD Scope составила:

Метрики на платформе от AMD (плата MSI X370 XPower Gaming Titanium с процессором AMD Ryzen 5 1600, память и блок питания те же) в операциях последовательного чтения-записи не уступали Intel.

Рандомные операции по оценкам SSD Scope на AMD показали обескураживающие результаты — снижение скорости чтения в полтора раза и записи чуть ли не вдвое.
Сюрпризы AMD не ограничиваются этим. Вполне сносная работа утилиты SSD Scope при подключении USB-накопителя ESD250C к разъемам Type-A, блокируется в Windows 10 x64 на интерфейсе Type-C. Помогает снять порчу манипуляция в диспетчере устройств: если поменять политику извлечения, SSD Scope работает с USB-устройством, как ни в чем ни бывало.

Возврат политики извлечения к установкам «по умолчанию» на работоспособность SSD Scope уже не влияет. Теперь опцию можно переключать согласно своим предпочтениям сколь угодно часто.
Правде в глаза
Принимать на веру информацию SSD Scope мы не стали. Лучший способ оценить таланты Transcend ESD250C — съем метрик нативной производительности SSD-накопителя в Java-окружении. Здесь нас будет интересовать только «спорт высших достижений»: оцениваем скорострельность в режиме SuperSpeed USB 10 Gbps (раньше это было маркетинговое наименование шины USB 3.1, потом USB 3.1 Gen2, в финале остановились на USB 3.2 Gen2).
Производительность ESD250C на Intel-платформе
На Intel-платформе этот режим обеспечивается системной логикой, но конкретная реализация ASUS Prime B360-Plus предлагает подключение только по USB Type-A. В представлении утилиты AIDA64 ситуация выглядит следующим образом:

Использование аппаратного теста NIOBench дает следующую картину бенчмарок производительности:

Верифицируем результаты в независимой программной среде, используя для этого утилиту AS SSD на аналогичном тестовом паттерне 1ГБ:

Что показал Transcend ESD250C на AMD?
Платформа MSI X370 XPower Gaming Titanium для процессора AMD предлагает два варианта использования высокоскоростной USB-шины. SuperSpeed USB 10 Gbps можно получить на встроенном в SoC AMD Ryzen 5 1600, но для этого требуется опциональная USB-косичка с гнездом Type-A. Второй вариант интереснее: шина USB 3.1 Gen2, формируемая ASMedia, оканчивается разъемом USB Type-C. К нему и подключим Transcend ESD250C:

Бенчмарки, полученные в Java-тесте, экивалентны результатам, полученным на Intel-платформе. Небольшое преимущество в чтении выглядит аргументом в пользу AMD:

AS SSD только подтверждает высокую скорость чтения, однако результаты записи несколько хуже, чем в NIOBench. Эти разночтения, скорее всего, можно объяснить несовершенством алгоритмов AS SSD. В сценарии Unbuffered native утилиты NIOBench файловый ввод-вывод строится на применении ОС API файловых операций с оптимизацией выравнивания расположения и размера буферов в оперативной памяти с учетом страниц памяти и секторов диска. Кроме того, процесс идет под контролем опций FILE_FLAG_NO_BUFFERING, отменяющей буферизацию и кэширование чтения, а также FILE_FLAG_WRITE_THROUGH, запрещающей отложенную запись.

Что хорошего можно сказать про Transcend ESD250C?
Производительность чтения и записи USB-накопителя Transcend ESD250C, полученная в утилитах NIOBench и AS SSD, демонстрирует кучность результатов. Логично предположить, что низкоуровневые возможности NAND нивелируются накладными расходами, неизбежно имеющими место при передаче информации по USB-шине. При условии грамотно реализованной буферизации это стало своеобразным стабилизатором производительности.
С другой стороны, измеренная скорость чтения составляет примерно половину от теоретического максимума USB3.1 Gen2, а значит у пользователей устройства есть шанс получить небольшую прибавку производительности после оптимизации драйверов или обновления внутренних микропрограмм самого устройства.
Эпилог
Как известно, производительность рандомного доступа к устройству Mass Storage может быть существенно увеличена, если поток выполняемых команд чтения-записи отсортировать в порядке, учитывающем внутреннюю специфику накопителя, разрешив их асинхронное выполнение. Для магнитных носителей это обусловлено вращением диска и позиционированием головок. Для твердотельных устройств такой эффект связан с иерархической организацией запоминающей матрицы и параллелизмом в работе внутренних каналов доступа к NAND-микросхемам.

Устройство USB BoT (Bulk Only Transport) получает следующую команду (command 2) только после завершения передачи данных ранее полученной команды (command 1); в результате в каждый момент времени устройство обрабатывает только один запрос чтения-записи и возможность оптимизации выполнения методом сортировки запросов отсутствует
Собственно, сортировку команд выполняет накопитель. Но чтобы такая сортировка была возможной, накопителю должна быть заблаговременно доставлена информацию о содержимом очереди, проще говоря, не плохо бы «заранее видеть весь план работ». Устройства, лишенные такой функции получают информацию о следующей команде только после выполнения текущей. Очевидно, сортировку и оптимизацию в этом случае выполнить невозможно.

Устройство UAS (USB Attached SCSI) способно принимать более одной команды (для упрощения примера показано только две команды command1, command2) и выполнять их асинхронно; наличие в устройстве информации о нескольких запросах, ожидающих выполнения позволяет отсортировать эти запросы в оптимальном порядке
Доставка информации об операционном контексте зависит от координации действий устройства, хост-контроллера (в нашем примере USB xHCI), его драйвера, аспектов взаимодействия xHCI и CPU посредством прерываний, передаваемых сообщениями (MSI), шинной топологии и других факторов. И здесь кроется одна из причин, в силу которых xHCI разных вендоров (Intel, AMD, ASMedia) при полной исправности и соответствии xHCI Specification, могут проявить свои индивидуальные особенности.