6

Недавно я обновил домашний внешний жесткий диск с 1 ТБ до 3 ТБ. При этом я узнал, что это мостовая плата не поддерживает диски размером более 2 ТБ. Я должен был получить более новый случай, чтобы поддержать этот двигатель.

Кто-нибудь знает, почему это должно быть правдой?

С точки зрения интерфейса SATA проблем не должно быть. Система идентификации блоков LBA-28 наложила ограничение в 128 ГБ (при условии обычных блоков по 512 байт), но это не было серьезной проблемой более 10 лет. Все с тех пор (включая все устройства SATA) поддерживает LBA-48, который достигает максимума в 128PiB и поэтому должен легко поддерживать 3TB.

Мне известно о проблеме таблицы разделов MBR с ее пределом в 2 ТБ, но это не должно повлиять на микросхему моста SATA-USB, поскольку она (или должна быть) просто переводит дисковые блоки между двумя протоколами.

Я думаю, что это может быть просто причиной того, что производители микросхем становятся ленивыми, используя 32-разрядные целые числа для приложения, которое действительно должно поддерживать 48-разрядные значения. Это действительно так просто (и IMO, непростительно) или я что-то упускаю?

Просто любопытно, но я нигде не смог найти ответ от Google.

1 ответ1

8

Хорошо, я отвечаю на свой вопрос через 30 минут. Я не мог перестать искать причину, и я думаю, что нашел ее. Это не спецификация ATA, которая поддерживает 48-битные адреса блоков. Это на самом деле спецификация USB.

Согласно Википедии (http://en.wikipedia.org/wiki/USB_mass_storage_device_class#Device_access) класс USB-накопителей реализует прозрачный набор команд SCSI. Рассматривая команду чтения SCSI (http://en.wikipedia.org/wiki/SCSI_Read_Commands#Read_.286.29) в качестве примера, я вижу, что существует три разных версии команды. Оригинал имеет 21-битный адрес блока (следовательно, его максимальная емкость составляет 512 байт на 1 ГБ). В 1987 году они добавили версию, которая использует 32-битные адреса блоков (до 2 ТБ). Затем в 2000 году они добавили версию с 64-битными адресами блоков (с максимальным объемом 8Zib - 8 гига-терабайт).

На данный момент, я думаю, ответ ясен. Оригинальные чипы не реализовывали вызовы с 64-битными адресами, полагая, что в этом нет никакого смысла. Затем, когда стали доступны диски емкостью 3 ТБ, они были расширены для поддержки 64-битных адресных вызовов.

Я не знаю, правильно ли это, но это логично.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .