Alguém sabe por que casos antigos de unidades USB têm um limite de tamanho de 2TB?

6

Eu recentemente atualizei um disco rígido externo caseiro de 1 TB para 3 TB. Ao fazer isso, aprendi que a placa de bridge não suporta unidades maiores que 2 TB. Eu tive que pegar um caso mais novo para suportar este disco.

Alguém sabe por que isso deveria ser verdade?

Do ponto de vista da interface SATA, não deve haver nenhum problema. O sistema LBA-28 de identificação de blocos impôs um limite de 128GiB (assumindo os habituais blocos de 512 bytes), mas isso não tem sido uma preocupação séria há mais de 10 anos. Tudo desde então (incluindo todos os dispositivos SATA) suporta o LBA-48, que atinge 128PiB e, portanto, deve suportar facilmente 3TB.

Estou ciente do problema da tabela de partições MBR com seu limite de 2TB, mas isso não deve afetar um chip ponte SATA-USB, já que é (ou deveria ser) apenas a conversão de blocos de disco entre dois protocolos.

Estou pensando que isso pode ser simplesmente um caso de fabricantes de chips ficando preguiçosos, usando números inteiros de 32 bits para um aplicativo que realmente precisa suportar valores de 48 bits. É realmente assim tão simples (e IMO, indesculpável) ou há algo mais que eu estou sentindo falta?

Apenas curioso, mas ainda não consegui uma resposta do Google em nenhum lugar.

    
por David C. 22.07.2013 / 22:31

1 resposta

8

OK, estou respondendo minha própria pergunta 30 minutos depois. Não pude deixar de procurar uma razão e acho que a encontrei. Não é a especificação ATA, que suporta endereços de bloco de 48 bits. Na verdade, é a especificação USB.

De acordo com a Wikipedia ( link ), a classe de armazenamento em massa USB implementa o conjunto de comandos transparente SCSI. Olhando para o comando SCSI Read ( link ) como um exemplo, vejo que existem três versões diferentes de o comando. O original tem um endereço de bloco de 21 bits (portanto, chegando a 1 GB no valor de blocos de 512 bytes). Em 1987, eles adicionaram uma versão que usa endereços de bloco de 32 bits (chegando a 2TB). Então, em 2000, eles adicionaram uma versão com endereços de bloco de 64 bits (chegando a 8Zib - 8 gigabytes).

Neste ponto, acho que a resposta é clara. Os chips originais não implementaram as chamadas com endereços de 64 bits, imaginando que não havia sentido. Então, quando as unidades de 3 TB foram disponibilizadas, elas foram aprimoradas para suportar as chamadas de endereço de 64 bits.

Não sei se isso está correto, mas é lógico.

    
por 22.07.2013 / 23:10