Usb flash. часть 3 — заключительная. протокол scsi

USB FLASH. Часть 3 — Заключительная. Протокол SCSI

В общем случае обмен по протоколу SCSI происходит так: хост посылает командный блок (CBW), далее, исходя из команды, хост может посылать блок данные, хост может принимать данные, или устройство возвращает состояние (CSW).


Рисунок 1 – Процесс обмена по протоколу SCSI

Структура командного блока (CBW):

32-битные поля структуры разбиты по 16 бит, для того, чтобы эту структуру можно было «натянуть» на приемный буфер конечной точки. А там, как я уже говорил, 32-битный доступ запрещен.

Размер, бит Поле Описание
32 dCBWSignature Число 0x43425355 («CBSU»), служащее опознавательным признаком CBW. Младший байт (0x55) передаётся первым («USBC»)
32 dCBWTag Число, которое должно совпасть со значением поля «dCSWTag» в ответном контейнере состояния команды (CSW)
32 dCBWDataTransferLength Объём информации, передаваемой на этапе пересылки данных, в байтах
8 bmCBWFlags Направление передачи на этапе пересылки данных. Бит 7 = 0 для направления OUT (от хоста к устройству). Бит 7 = 1 для направления IN (от устройства к хосту). Если этап передачи данных отсутствует, данный бит игнорируется. Все остальные биты должны быть равны нулю
8 bCBWLUN Старшие 4 бита зарезервированы и должны быть равны нулю. Младшие биты задают номер логического накопителя (LUN) (для устройств, поддерживающих несколько логических накопителей) или равны нулю
8 bCBWCBLength Старшие три бита зарезервированы и равны нулю. Младшие 5 бит задают длину команды (CDB) внутри поля «CBWCB» в байтах. Допустимы значения в диапазоне 1..16. Все определённые к настоящему моменту командные блоки имеют длину не менее шести байт
8*16 CBWCB[16] Командный блок

После приёма командного блока (CBW) устройство должно приготовиться, в зависимости от команды, к приёму данных в оконечную точку, работающую в режиме OUT, или передаче данных или контейнера состояния (CSW) из точки в режиме IN.

Структура контейнера состояния (CSW):

Размер, бит Поле Описание
32 dCSWSignature Число 0x53425355 («SBSU»), служащее опознавательным признаком CBW. Младший байт (0x55) передаётся первым
32 dCSWTag Число из поля «dCBWTag» принятого командного блока (CBW)
32 dCSWDataResidue Разница между dCBWDataTransferLength и реально обработанными данными
8 bCSWStatus 0x00 = успешное выполнение. 0x01 = ошибка исполнения. 0x02 = ошибка протокольной последовательности. Хост должен провести процедуру сброса и восстановления

Команды SCSI

Команды передаются внутри командного блока CBW. Реализуем следующий набор команд:

  1. INQUIRY
  2. REQUEST SENSE
  3. READ CAPACITY(10)
  4. MODE SENSE(6)
  5. READ(10)
  6. WRITE(10)
  7. TEST UNIT READY
  8. PREVENT ALLOW MEDIUM REMOVAL

INQUIRY

Эта команда запрашивает структуру с информацией об устройстве.

Бит EVPD – если равен 0, устройство возвращает стандартный ответ на INQUIRY; если 1 – то хост запрашивает специфическую информацию, которую можно определить по полю PAGE CODE.

Мы будем отвечать только на запрос вида: 12 00 00 00 24 00 (EVPD и CMDDT равны 0), иначе будем отвечать ошибкой в CSW.

Стандартный ответ на INQUIRY имеет следующий вид:

Байт Значение Описание
00 Блочное устройство прямого доступа
1 80 Съемный носитель
2 04 Версия стандарта SPC-2
3 02 Формат ответа, должен быть 02
4 1F Объём дополнительных данных ответа в байтах. Равен длине ответа минус 4. Для длины 36 следует устанавливать в «0x20» (На самом деле, ещё на единицу меньше — для 36 байт, т.е. без блока дополнительных параметров, длина данных равна «0x1F»)
5 00
6 00
7 00
8-15 Обозначение производителя. Выдаётся старшим байтом вперёд
16-31 Обозначение изделия. Выдаётся старшим байтом вперёд
32-35 Версия изделия. Выдаётся старшим байтом вперёд

«Скелет» функции обработки команд SCSI, с обработкой команды INQUIRY:

REQUEST_SENSE

Если хост принял CSW с полем bCSWStatus = 1, он может послать команду REQUEST_SENSE, чтобы запросить пояснительные данные (SENSE DATA).

Вот пояснительные данные, говорящие о неизвестной команде:

Добавляем обработку команды REQUEST SENSE:

READ CAPACITY 10

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

MODE SENSE 6

Ответ на нее всегда одинаковый:

READ 10

Здесь нас интересуют биты 2-5 – начальный адрес читаемого блока данных, и биты 7-8 – количество читаемых блоков.

WRITE 10

Здесь нас интересуют биты 2-5 – начальный адрес записываемого блока данных, и биты 7-8 – количество записываемых блоков.

TEST UNIT READY

Команда «TEST UNIT READY» используется хостом для выяснения степени готовности устройства к работе. Команда не предусматривает этапа пересылки данных. Если устройство готово, то оно возвращает контейнер состояния CSW со значением поля «bCSWStatus» равным «0x00». Если носитель не готов, устройство обновляет подробные данные о состоянии и возвращает контейнер состояния (CSW) со значением поля «bCSWStatus» равным «0x01» (ошибка исполнения). Хост может запросить подробную информацию о состоянии командой «REQUEST SENSE». Все блоковые устройства (SBC) должны поддерживать эту команду.

PREVENT ALLOW MEDIUM REMOVAL

Команда «PREVENT ALLOW MEDIUM REMOVAL» разрешает или запрещает извлечение носителя из устройства. 2-х битовое поле «PREVENT» команды устанавливается в состояние «00b» для разрешения или в состояние «01b» для запрета извлечения. Данная команда не подразумевает этап пересылки данных.

Так как у нас нет съемных носителей, то отвечаем успешным пакетом CSW.

Заключение

Теперь если прошить микроконтроллер, то должно появиться запоминающее устройство. Диск может не открыться, так как на флешке наверняка нет файловой системы, поэтому отформатируйте диск и пользуйтесь. Надеюсь эти статьи помогли разобраться с USB. Как-нибудь напишу про HID, там все проще.

Общение с USB-устройством

USB-устройства, по большей части флешки, отказывали у многих и прежде чем заниматься их восстановлением хотелось бы извлечь из этой флешки побольше информации — чем больше информации, тем лучше . А вот как поговрить с этим устройством, особо и не расписано. информация, конечно, имеется, но в основном вся проверка сводится к тестированию несколькими утилитами. А вот как общаются эти самые утилиты с устройством …. особо и неизвестно ….. а общаются они посредством SCSI команд (запрос/ответ). И напрашивается вывод — а может лучше самим пообщаться с устройством без всяких посредников, напрямую ?
Вот с этими способами общения и хочу ознакомить форумчан.
В основном для тестирования флешек в Linux применяют утилиту hdparm и реже sdparm.
В качестве подопытного будет 16G флешка (при возможности буду приводить похожие выводы всеми способами — обоими утилитами и SCSI командами)
# sdparm -i /dev/sdb
/dev/sdb: JetFlash Transcend 16GB 1100
malformed VPD response, VPD pages probably not supported

USB-устройство, в частности флешка, представляет собой тот же мини/микро компьютер — описывать ее устройство не собираюсь — все давно уже хорошо описано и в инете можно найти кучу схем и описаний (интересующимся даю ссылку на старую статью. там хоть и много лишнего, но хорошая схемка. что то другой похожей я у себя не нашел, а может плохо искал. )

Для начала — набор команд SCSI разрабатывался, как протокол для устройств, использующих параллельный интерфейс для малых компьютерных систем (Small Computer Systems Interface — SCSI). Команды является инструментом, позволяющим получать информацию об устройстве, менять режим его работы и читать/записывать блоки данных на носитель. Набор команд SCSI используют многие накопители данных, подключаемые через другие аппаратные интерфейсы, в том числе через USB.
Команды SCSI охватывают широкий диапазон типов устройств и задач, все заспецифицировано, а для нас важна спецификация SCSI Block Commands (SBC) — блоковые команды SCSI, которые описывает команды, используемые жёсткими дисками, флэш-дисками и другими блоковыми устройствами прямого доступа. Текущая версия — SBC-3. Кого интересует данная спецификация, формат команд, их описание и.т.п. могут обратится к первоисточнику — можно найти и скачать по названию SCSI Block Commands — 3 (SBC-3)
Ну вот, с водной можно закончить и приступить к основной части.

SCSI команды условно можно разделить на 3 группы
— специфицированные, обязательные для всех устройств;
— специфицированные, но работающие не на всех устройствах;
— неспецифицированные, применяются разработчиками, изготовителями и, как бы сказать. наладчиками. то есть эти команды не описаны в спецификации и известны узкому кругу лиц.
Специфицированных команд около 60. Но обычным пользователям достаточно 5 базовых команд — минимум команд, которые используются устройством и хостом для начала взаимодействия/общения, чтобы начать полноценную работу. Вот эти команды я и постараюсь описать.

1. INQUIRY (12 00 00 00 60 00) — запрашивает структуру с информацией об устройстве. Устройство должно возвращать ответ даже в случае неготовности носителя и невозможности отвечать на все остальные команды. Все блоковые устройства должны поддерживать команду INQUIRY. В скобках приведен формат команды.
Ответ на команду имеет длину как минимум 36 байт и указывает периферийный тип устройства («PDT»), версию набора базовых команд SPC, идентификаторы производителя и изделия, номер модификации изделия, а также данные о возможностях устройства и поддерживаемых протоколах.
Забыл написать, что для дальнейшего тестирования должен быть установлен пакет sg3_utils и загружен модуль sg . и будем использовать утилиту sg_raw
Вставляем флешку и смотрим как она определилась
# sg_map -i
/dev/sg2 /dev/sdb JetFlash Transcend 16GB 1100
Приступаем к общению ….
# sg_raw /dev/sg2 12 00 00 00 60 00
SCSI Status: Good
или более информативный вывод
# sg_raw -vv /dev/sg2 12 00 00 00 60 00
open /dev/sg2 with flags=0x802
cdb to send: 12 00 00 00 60 00
SCSI Status: Good
No errors
Попросим дать ответ в другой форме и вывести нам всю информацию об устройстве (запросим только первые 64 байта)
# sg_raw -r 64 /dev/sg2 12 00 00 00 60 00
SCSI Status: Good
Received 64 bytes of data:
00 00 80 00 01 1f 73 6d 69 4a 65 74 46 6c 61 73 68 . smiJetFlash
10 54 72 61 6e 73 63 65 6e 64 20 31 36 47 42 20 20 Transcend 16GB
20 31 31 30 30 00 80 02 00 00 00 00 00 00 00 00 00 1100.
30 00 00 00 00 00 00 28 00 03 01 82 06 00 15 00 00 . (.
формат ответа описывать не буду — кому интересно, обращайтесь к спецификации (например, 8..15 байты — обозначение производителя, 16..31 байты — обозначение изделия, 32..35 байты — версия изделия и.т.д. ). . PS. чтобы увеличить количество выводимых байт, нужно вместо 64 прописать, например, 256. иногда и там имеется полезное)
….
Аналог специальных утилит пакета sg3_utils
# sg_inq /dev/sg2 или # sginfo /dev/sg2
Аналог sdparm (но менее информативный) с опцией -i (—inquiry) команда
# sdparm -i /dev/sdb
….
2. READ CAPACITY (25 00 00 00 00 00) — возвращает структуру, содержащую логический адрес (LBA) последнего блока на носителе и размер блока в байтах. Стоит уточнить, что команда запрашивает логический адрес (LBA) последнего блока, а не количество блоков на носителе. Логический адрес первого блока равен нулю, таким образом, логический адрес последнего блока на единицу меньше количества блоков. PS. команда используется, чтобы выяснить какой объём данных может хранить устройство
# sg_raw -r 8 /dev/sg2 25 00 00 00 00 00
SCSI Status: Good
00 01 e3 bf ff 00 00 02 00
( 01e3bfff=31703039(первые 4 байта) количество блоков , (последние 4 байта) 00000200=512 — размер блока)
Проверка
$ sudo fdisk -l /dev/sdb
Диск /dev/sdb: 15,1 GiB, 16231956480 байт, 31703040 секторов
Единицы: секторов по 1 * 512 = 512 байт
Размер сектора (логический/физический): 512 байт / 512 байт
….
Аналог специальной утилиты пакета sg3_utils — # sg_readcap /dev/sg2
….
3. SEND DIAGNOSTIC (1D 00 00 00 00 00) — команда предписывает устройству провести самотестирование и/или проверку логического накопителя. Для блоковых устройств (SBC) обязательна поддержка самотестирования, способ реализации которого оставляется на усмотрение разработчика.
# sg_raw /dev/sg2 1D 00 00 00 00 00
SCSI Status: Good
или
# sg_raw -vv /dev/sg2 1D 00 00 00 00 00
open /dev/sg2 with flags=0x802
cdb to send: 1d 00 00 00 00 00
SCSI Status: Good
No errors

Читайте также  Охранно-пожарная сигнализация своими руками

4. REQUEST SENSE (03 00 00 00 00 00)(запрос о состоянии) столкнувшись с проблемами при исполнении команды или получив неизвестную команду, устройство заполняет структуру, содержащую подробную информацию о состоянии и устанавливает значение поля «bCSWStatus» (CSW) равным «0x01» (ошибка исполнения). Структура с информацией о состоянии называется пояснительными данными (SENSE DATA) и передаётся в ответ на команду REQUEST SENSE (все поля формата не привожу, а только наиболее интересующие пользователей)
Запрашиваю только первые 16 байт (можно и без опции -vv, пишу для того, чтобы увидеть No errors, хотя это и не к чему. и так все видно)
# sg_raw -vv -r 16 /dev/sg2 03 00 00 00 00 00
open /dev/sg2 with flags=0x802
cdb to send: 03 00 00 00 00 00
SCSI Status: Good
Received 16 bytes of data:
00 70 00 00 00 00 00 00 0a 00 00 00 00 00 00 00 00 p.
No errors
….
PS. Забыл отметить, что в спецификации указано, что запрос должен быть равным 252 байтам для того, чтобы устройство могло возвратить всю значимую информацию, включая внутренние данные производителя.
.
Аналог специальной утилиты пакета sg3_utils (а вот с этими двумя разными выводами руки так разобраться и не дошли, наверное, потому, что утилиты этого пакета практически не использую. нравится общаться на прямую. )
# sg_requests /dev/sg2
Decode parameter data as sense data:
Fixed format, current; Sense key: No Sense
Additional sense: No additional sense information
# sg_requests -vv /dev/sg2
open /dev/sg2 with flags=0x800
Request Sense cmd: 03 00 00 00 fc 00
Decode parameter data as sense data:
Fixed format, current; Sense key: No Sense
Additional sense: No additional sense information
Parameter data in hex
00 70 00 00 00 00 00 00 0a 00 00 00 00 00 00 00 00
10 00 00
….

Формат вывода ответа
0 байт — RESPONSE CODE — для сведений о текущих ошибках устанавливается в «0x70». Для сведений об отложенных ошибках (для команд использующих кэширование) устанавливается в «0x71»
2 байт — SENSE KEY — содержит данные, классифицирующие ошибку
7 байт — ADDITIONAL SENSE LENGTH — длина дополнительных пояснительных данных, следующих за данным полем, в байтах, 244 байта максимум

Некоторые значения поля SENSE KEY
00 — NO SENSE (нет ответа)
01 — RECOVERED ERROR (вскрытая ошибка)
02 — NOT READY (не готов)
03 — MEDIUM ERROR (ошибка носителя/средняя ошибка)
04 — HARDWARE ERROR (ошибка аппаратного обеспечения)
05 — ILLEGAL REQUEST (некорректный запрос)
06 — UNIT ATTENTION (устройство требует внимания/ предупреждение)
07 — DATA PROTECT (защищенная информация)
…. ит.п. ит.д. и, если мне не изменяет память, есть еще уточняющие коды, посмотреть можно в спецификации.
Примечание: уточнение кода SENSE KEY в части значения 05 — в случае получения неизвестной команды устройство не должно «зависать» или аварийно завершать работу. Правильный ответ на неподдерживаемую команду выглядит так:
— возвратить значение «0x01» (ошибка выполнения) в поле «bCSWStatus» (CSW);
— установить в блоке пояснительных данных («SENSE DATA») параметр «SENSE KEY» в «0x05» («Недопустимый запрос» — «ILLEGAL REQUEST»), а параметр «ADDITIONAL SENSE CODE» в «0x20» («Неверный код операции» — «INVALID COMMAND OPERATION CODE»).

Имеются и другие команды, но, если честно, что то уже устал и стал путаться (за найденные ошибки особо не пинать) — думаю для начального ознакомления этого достаточно.
PS. по ответам, напрямую посланным запросам (на низком уровне), можно судить о состоянии устройства.

Живучий SCSI

Раз уж мы начали рассматривать историю хранения данных — познакомимся поближе с одной из технологий, которую мы в прошлой статье упомянули только вскользь. Удивительно в этой технологии то, что, появившись в самом начале 80-х, она с разными изменениями дожила до современности, и не собирается уступать позиции. Речь пойдет о SCSI.

«Отцами-основателями» SCSI можно считать компанию Shugart Associates, стандарт из которого родился впоследствии SCSI изначально носил слегка неблагозвучное для русского уха название SASI (Shugart Associates System Interface). Компания эта, ныне не так широко известная, в конце 70-х практически доминировала на рынке дисководов, и именно эта компания предложила популярный формат 5¼ дюймов. Контроллеры SASI обычно были размером в половину диска и подключались 50-пиновым плоским кабелем, который впоследствии стал коннектором SCSI-1.

За переименованием стандарта стоял ANSI, к 1982 году разработавший стандарт этого интерфейса. Дело в том, что политика ANSI не разрешает использовать названия компаний названии стандартов, поэтому SASI был переименован в «Small Computer System Interface», что и дало знакомую нам аббревиатуру. «Отец» стандарта Ларри Бушер (Larry Boucher) хотел, чтоб эта аббревиатура читалась как «сэкси», но прочтение от Дал Аллана (Dal Allan) «сказзи» прижилось больше.

Несмотря на то, что в основном SCSI ассоциируется с жесткими дисками, этот стандарт позволяет создавать практически любые устройства, подключаемые по данному интерфейсу. Со SCSI выпускалась масса устройств: жесткие диски, магнитооптические накопители, CD и DVD приводы, стриммеры, принтеры и даже сканеры (LPT порт был слишком медленным для работы цветных сканеров высокого разрешения).

Несмотря на то, что в большинстве «простых компьютеров» SCSI как интерфейс не встречается, набор команд этого стандарта широко используется. Например, набор команд SCSI программно реализован в едином стеке Windows для поддержки устройств хранения данных. Так же, практически стандартом стала реализация команд SCSI поверх IDA/ATA и SATA интерфейсов, используемых для работы с CD/DVD и BlueRay, названная ATAPI. Так же эта система команд, реализованная поверх USB, стала частью стандарта Mass Storage Device, что позволяет использовать любые внешние USB хранилища данных.

Исторически, первым интерфейсом стал Parallel SCSI, использующий коннекторы на 50, 68 и 80 пин, расположенные на плоском кабеле, часто экранированном. Этот стандарт развивался на протяжении многих лет, пройдя путь от 40 МБит/с в SCSI-I до 5120 МБит/с в Ultra-640 SCSI. Несмотря на этот прогресс, данный интерфейс уже признан устаревшим, и заменяется более продвинутым решением в виде Serial Attached SCSI (SAS), но про SAS — немного позже. Пока давайте посмотрим, какие еще интерфейсы кабелей использовались в SCSI.

Реализация протокола SCSI по оптическим волоконным каналам, получившая название FCP (Fibre Channel Protocol или FC), позволяет добиваться высоких скоростей и использовать соединительные провода большой длины (до десятков километров с использованием одномодовой оптики). Из-за высокой стоимости используется в больших сетях обработки данных. Сегодня FC используется только для так называемого «фронт-энда», то есть для подключения компьютеров (в основном серверов) к системам хранения данных.

iSCSI, как понятно из первой буквы в названии — служит для обработки SCSI комманд через Интернет, но чаще всего используются все-таки в локальных IP-сетях компаний. Так как этот стандарт, в отличие от FCP, не требует дорогостоящего оборудования, он часто выступает в роли более дешевой замены «оптики». Основные два сценария применения данного стандарта — консолидация хранения данных (данные вместо разрозненных сетевых хранилищ собираются в одном месте, чаще всего в датацентрах) и защита от сбоев (iSCSI позволяет прозрачно для потребителей перемещать дисковые массивы по глобальной сети). iSCSI сильно зависит от физического и канального уровней сетевой модели, определяющих скорость и максимальные задержки в среде. Так, iSCSI на 1Gb/s Ethernet позволял передать всего лишь до 100МБ/с. Гораздо лучше дела обстоят в сетях 10GE, но технологии 10GE только сейчас отвоевывают себе значительные сегменты в корпоративных сетях.

Читайте также  Двойной удар: airplay-pi и новая жизнь старого радио

SCSI RDMA Protocol (часто сокращаемый до remote SCSI) позволяет одному компьютеру подключиться к ресурсам другого, используя протокол удаленного прямого доступа к памяти. Так как RDMA отличается низкой латентностью и высокой пропускной способностью — наибольшее применение он получил в кластерах.

USB Attached SCSI — тоже понятно из названия. Реализует подключение SCSI через USB-интерфейс. В теории способен обеспечивать скорость до 3200 МБит/с.

Serial Attached SCSI — наиболее распространенный сейчас вид интерфейса, вытесняющий старый параллельный вариант. Обеспечивает скорость до 6 Гбит/с (вариант на 12 Гбит/с находится в активной разработке и будет выпущен летом 2013 года). Этот протокол является «ближайшим родственником» используемого сейчас повсеместно SATA, более того — SATA устройства можно подключать к SAS контроллерам. В обратную сторону, правда, это не работает, и даже разъем SAS сконструирован так, чтоб не дать это сделать (разве что сборщик системы будет ну очень сильным).

В отличие от старого параллельного SCSI, SAS системы обладают следующими достоинствами:

— меньшее количество сигнальных линий, поэтому более компактные провода;
— использование соединения точка-точка, в отличии от P-SCSI, использовавшего шину, из-за чего одновременно с контроллером могло работать только одно устройство;
— SAS не нуждается в специальной насадке-терминаторе на кабель;
— новый протокол не страдает от проблемы не одновременного прохождения сигнала по разным проводам в шине;
— разительно выросло количество одновременно поддерживаемых устройств, старые SCSI поддерживали от 8 до 32, новые — более 16384;
— SAS дает более высокую пропускную способность, а что особенно хорошо — эта пропускная способность эффективно используется между каждым инициатором и целевым устройством, в то время как на параллельном SCSI пропускная способность шины делилась поровну между всеми устройствами;
— совместимость с устройствами SATA

Неразрывно с историей хранения данных, SCSI и SAS связанна и история компании LSI. Будучи одной из первых в мире компанией, внедривших устройства ASIC (Application Specific Integrated Circuit) — специализированные микросхемы, направленные на выполнение выделенных задач, LSI не могла пройти мимо настолько бурно развивающейся области. Для LSI история SCSI началась с приобретения в 1998 году подразделения Symbios, в свое время бывшей частью NCR, AT&T и Hyundai. Это подразделение было основано в NCR в 1971 году и на момент приобретения было производителем SCSI-адаптеров. Спектр устройств, выпущенных LSI, начинается с микросхемы LSI53C825AE, позволявшей пропустить до 20MB/s данных и соответствовала стандарту Fast Wide SCSI. В процессе развития была разработана так называемая архитектура Fusion-MPT (Message Passing Technology), позволяющая максимально «облегчить» драйвер устройства в операционной системе и ускорить процесс общения между компонентами подсистемы ввода-вывода. Эта технология дожила и до сегодняшних устройств SAS-3 (12Gbit/s), более чем на три порядка превосходящих по скорости первые чипы SCSI. Кроме контроллеров, для SCSI LSI также производила и другие микросхемы, такие как хост-адаптеры и конвертеры (расширители) SCSI.

Нельзя не упомянуть и еще один интересный факт. Совсем недавно компания Seagate анонсировала выпуск двухмиллиардного жесткого диска. Жесткий диск – это очень высокотехнологичное устройство, содержащее большое количество различных компонентов. LSI выпускала и продолжает выпускать довольно много микросхем для жестких дисков. Традиционно это был «Read Channel», сейчас для этого есть так называемые SOCs (System on Chip).

Еще одним крупным игроком на рынке SCSI была компания Adaptec. В отличие от LSI, всегда плотно работавшей с OEM-каналом, компания Adaptec в основном ориентировалась на готовые продукты, и поэтому более известна в мире IT под собственным именем. Около двух лет назад компания была приобретена производителем полупроводниковых устройств PMC и сейчас продукция компании носит название Adaptec by PMC. Компания также успешно пережила все поколения SCSI и теперь выпускает устройства для SAS.

История Parallel SCSI была долгой и бурной, но, в конце концов, закончилась. Уже более двух лет адаптеры P-SCSI не выпускаются, уступив технологии SAS, уже насчитывающей 2 поколения.

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

Типы стандартов USB и разница между ними

Содержание

Содержание

Вроде мы слышали, что USB 3.0 — это круче, чем USB 2.0. Но чем именно — знают не все. А тут еще появляются какие-то форматы Gen 1, Gen 2, маркировки Superspeed. Разбираемся, что значат все эти маркировки и чем они отличаются друг от друга. Спойлер: версий USB всего четыре.

USB 2.0

Когда-то было слово только USB 1.0. Сейчас это уже практически архаика, которую даже на старых устройствах почти не встретить. Еще 20 лет назад на смену первопроходцу USB 1.0 пришел улучшенный USB 2.0. Как и первая версия, эта спецификация использует два вида проводов. По витой паре идет передача данных, а по второму типу провода — питание устройства, от которого и идет передача информации. Но такой тип подключения подходил только для устройств с малым потреблением тока. Для принтеров и другой офисной техники использовались свои блоки питания.

USB версии 2.0 могут работать в трех режимах:

  • Low-speed, 10–1500 Кбит/c (клавиатуры, геймпады, мыши)
  • Full-speed, 0,5–12 Мбит/с (аудио и видеоустройства)
  • High-speed, 25–480 Мбит/с (видеоустройства, устройства для хранения данных)

USB 3.0

Стандарт USB 3.0 появился в 2008 году и до сих пор используется во многих устройствах. Скорость передачи данных выросла с 480 Мбит/с до 5 Гбит/с. Помимо скорости передачи данных, USB 3.0 отличается от версии 2.0 и силой тока. В отличие от более ранней версии, которая выдавала 500 мА, USB 3.0 способен отдавать до 4.5 Вт (5 В, 900 мА).

Новое поколение USB обратно совместима с предыдущими версиями. То есть USB 3.0 может работать и с разъемами USB 2.0 и даже 1.1. Но в этом случае буду ограничения по скорости. Подключив USB 3.0 к устройству с USB 2.0 скорость, вы получите не больше 480 Мбит/с — стандарт для версии 2.0. И наоборот, кабель 2.0 не станет более скоростным, если подключить его в устройство с USB 3.0. Это связано с количеством проводов, используемых в конкретной технологии. В версии USB 2.0 всего 4 провода, тогда как у USB 3.0 их 8.

Если вы хотите получить скорость передачи, заявленную стандартом USB 3.0, оба устройства и кабель должны быть именно версии 3.0.

USB 3.1

В 2013 году появляется версия USB 3.1 с максимальной заявленной скорость передачи данных до 10 Гбит/с, выходной мощностью до 100 Вт (20 В, 5 А). С появлением USB 3.1 произошла революция в маркировках всех стандартов. Но с ней мы разберемся чуть позже. А пока запомним главное: пропускная способность USB 3.1 увеличилась вдвое по сравнению с версией 3.0. И одновременно с обновленным стандартом появился и принципиально новый разъем — USB type-С. Он навсегда решил проблему неправильного подключения кабеля, так как стал симметричным и универсальным, и теперь все равно, какой стороной подключать провод к устройству.

Читайте также  Восстановление кислотных аккумуляторов

USB 3.2

В 2017 году появилась информация о новой версии — USB 3.2. Она получила сразу два канала (больше проводов богу проводов) по 10 Гбит/с в каждую сторону и суммарную скорость в 20 Гбит/с. Стандарт USB 3.2 также обратно совместим с режимами USB 3.1, 3.0 и ниже. Поддерживается типом подключения USB-C на более современных гаджетах.

Типы разъемов

Версий разъемов USB несколько, и для каждого есть свое предназначение.

  • type-А — клавиатуры, флешки, мышии т. п.
  • type-B — офисная техника (принтеры, сканеры) и т. п.
  • mini type-B — кардридеры, модемы, цифровые камеры и т. п.
  • micro type-B — была наиболее распространенной в последние годы . Большинство смартфонов использовали именно этот тип подключения, пока не появился type-C. До сих пор остается довольно актуальным.
  • type-C — наиболее актуальный и перспективный разъем, полностью симметричный и двухсторонний. Появился одновременно со стандартом USB 3.1 и актуален для более поздних версий стандартов USB.

Superspeed, Gen или как разобраться в маркировках стандартов USB

Как только в типах стандартов появилась USB 3.1, привычная цифровая маркировка изменилась и здорово запуталась. Вполне понятный и простой USB 3.0 автоматически превратился в USB 3.1 Gen 1 и ему была присвоена маркировка SuperSpeed. А непосредственно сам USB 3.1 стал называться USB 3.1 Gen 2 с маркировкой SuperSpeed +.

Но и это уже потеряло свою актуальность с выходом стандарта USB 3.2. Он получил название USB 3.2 Gen 2×2 и маркировку SuperSpeed ++. В итоге маркировка всех предшествующих стандартов опять меняется. Теперь USB 3.0, она же USB 3.1 Gen 1, превращается задним числом в USB 3.2 Gen 1 с прежней маркировкой SuperSpeed. А USB 3.1, ставшая USB 3.1 Gen 2, тоже поднялась до USB 3.2 Gen 2. При этом конструктивно все стандарты остались прежними — изменяются только названия. Если вы уже запутались во всех этих цифрах и маркировках, таблица ниже поможет внести ясность в актуальных названиях.

Если еще более кратко, то сейчас опознать стандарты USB можно так:

USB 3.0 — это USB 3.2 Gen 1, он же Superspeed
USB 3.1 — это USB 3.2 Gen 2, он же Superspeed+
USB 3.2 — это USB 3.2 Gen 2×2, он же Superspeed++

USB Attached SCSI

USB Attached SCSI — компьютерный интерфейс для высокоскоростного обмена с USB-устройствами хранения, таких как жесткие диски, твердотельные диски и флэш-накопители . UAS зависит от протокола USB, и использует стандартные набора команд SCSI. Предназначен для непосредственного решения недостатков USB устройства хранения данных класса Bulk-Only Transports (BOT).

Для пользователя, подключенные UASP-устройства (диски, Flash, SSD-накопители, DVD-приводы и т.п.), в операционной системе могут выглядеть как SCSI-устройства. Протокол UASP уже поддерживается современными хост-контроллерами USB 3.0 xHCI (eXtensible Host Controller Interface). Использование протокола примерно на 20% повышает скорость передачи данных. Компания Western Digital теперь предоставляет внешние жесткие диски серии Passport [1] , которые используют драйверы UAS; эти внешние накопители работают почти так же хорошо, как внутренние SATA-диски. Некоторые говорят, что UAS диски со временем может заменить встроенные SATA диски. [2]

Содержание

Особенности UAS

  • Максимальное использование асинхронной передачи данных;
  • Поддержка команд и средств управления, определенных в стандартах SPC-4, SBC-3 и SAM-5;
  • Поддержка очередей запросов (в BOT следующая команда могла передаваться только после выполнения предыдущей); До 64-ёх SCSI SAM-4 совместимых команд могут быть поставлены в очередь.
  • Реализация дополнительных управляющих команд;
  • Хост-контроллер USB-3(xHCI) обеспечивает аппаратную поддержку потоков для команд, статусов, входящих и исходящих данных, что дает более полное использование пропускной способности USB-шины.
  • Потоки были добавлены к протоколу USB 3.0 SuperSpeed ​​ для поддержки UAS
  • Минимизация дополнительных запросов между UASP-драйвером и драйвером USB-контроллера.
  • Уменьшаются накладные расходы на программное обеспечение, за счет использования имеющегося в операционной системе драйвера SCSI.

Разработка и продвижение стандарта

Технический комитет T10 Международного комитета по стандартам информационных технологий (INCITS) разрабатывает и поддерживает спецификацию UAS; UAS определяется по двум стандартам, комитета Т10: «USB Attached SCSI» (T10/2095-D) называется «UAS» спецификация, спецификация USB «Universal Serial Bus Mass Storage Class — USB Attached SCSI Protocol (UASP)». Торгово-промышленная группа SCSI Trade Association (SCSITA) продвигает UAS технологии. Рабочая группа USB mass-storage device class(MSC) разрабатывает и поддерживает UASP спецификации; Некоммерческая организация USB Implementers Forum,Inc (USB-IF), которая разработала спецификацию USB, продвигает технологию UASP.

Примечания

  1. WD and NEC Electronics Collaborate to Promote SuperSpeed USB 3.0 Standard with New Storage Interface Technology
  2. The INCITS T10 Technical Committee for SCSI Storage Interfaces | Serial Storage Wire

Ссылки

  • Презентация UASP (англ.) на www.usb.org
  • USB Attached SCSI Protocol (UASP) v1.0 and Adopters Agreement (англ.)
  • SCSI Standards Architecture (англ.)
  • Обзор и тест контроллеров USB 3.0

Wikimedia Foundation . 2010 .

  • UAIOE
  • UAS-20

Смотреть что такое «USB Attached SCSI» в других словарях:

Serial Attached SCSI — (SAS) is a data transfer technology designed to move data to and from computer storage devices such as hard drives and tape drives. It is a point to point serial protocol that replaces the parallel SCSI bus technology that first appeared in the… … Wikipedia

Serial Attached SCSI — Данные в этом разделе приведены по состоянию на 2009 год. Вы можете помочь, обновив информацию в статье … Википедия

USB — This article is about the computer bus to connect peripherals. For other uses of USB, see USB (disambiguation). Universal Serial Bus Original logo Type Computer Hardware Bus … Wikipedia

SCSI — Das Small Computer System Interface (SCSI, gesprochen [ˈskʌzi][1]) ist eine standardisierte parallele Schnittstelle für die Verbindung und Datenübertragung zwischen Peripheriegeräten und dem Computer Bus. Im Vergleich zu ATA/ATAPI ist ein… … Deutsch Wikipedia

Scsi — Das Small Computer System Interface (SCSI, gesprochen [ˈskʌzi][1]) ist eine standardisierte parallele Schnittstelle für die Verbindung und Datenübertragung zwischen Peripheriegeräten und dem Computer Bus. Im Vergleich zu ATA/ATAPI ist ein… … Deutsch Wikipedia

SCSI — Small Computer System Interface, or SCSI (pronounced skuh zee [ [http://www.bartleby.com/61/56/S0175650.html SCSI] . American Heritage Dictionary .] [cite book|title=The Book of SCSI|last=Field|pages=1] ), is a set of standards for physically… … Wikipedia

SCSI — Логотип SCSI (англ. Small Computer System Interface, произносится «скази»[1] … Википедия

Parallel SCSI — Centronics 50 SCSI plug Parallel SCSI (formally, SCSI Parallel Interface, or SPI) is one of the interface implementations in the SCSI family. In addition to being a data bus, SPI is a parallel electrical bus: There is one set of electrical… … Wikipedia

Network-attached storage — Not to be confused with Storage area network. Network attached storage Connects to Local area network via: Ethernet Hard drives via one of: SATA SAS USB Fibre Channel Common manufacturers HP NetApp Dell Cisco … Wikipedia

Direct Attached Storage — (DAS) oder Server Attached Storage bezeichnet an einen einzelnen Host angeschlossene Festplatten, die sich in einem separaten Gehäuse befinden. Die üblichen Schnittstellen sind SCSI und zunehmend SAS. Möglich sind jedoch sämtliche… … Deutsch Wikipedia