Costuma-se dizer que a interface da unidade de disco é um gargalo na transferência de dados. Por exemplo. no caso de discos rígidos, os dados são transferidos do buffer do disco rígido para o módulo de memória do disco rígido. E como o buffer do disco rígido é uma memória cache, por que a interface é um gargalo? Quer dizer, o cache é um tipo de sram. Portanto, a velocidade de transferência deve ser alta. Por que não é assim?
Responder1
Atualmente, discos rígidos e SSDs usam mais comumente uma conexão serial, mas historicamente usavam a interface IDE. O IDE era basicamente uma versão simplificada do barramento ISA usado pelos primeiros PCs. Nesses computadores, você pode acessar diretamente os registros do dispositivo, conforme sugerido. Mas quando o PCI surgiu, ele era mais rápido, então as unidades IDE mais antigas eram muito lentas para acesso direto. Revisões posteriores do IDE (ou melhor, ATA, como foi renomeado) aumentaram a velocidade (embora não a largura: o PCI tinha 32 bits de largura, mas o ATA permaneceu em 16 bits), mas a velocidade do processador continuou aumentando e nem o PCI nem o ATA conseguiram acompanhar.
Eventualmente mudamos da interface paralela do ATA para uma interface serial. Isso torna a conexão com o processador menos direta, mas as interfaces seriais podem rodar muito mais rápido, então estão muito mais próximas de rodar em velocidade total, mas ainda assim isso introduz latência e é mais lento que a RAM rápida.
As antigas unidades ATA de alta velocidade geralmente usavam memória de 70 ou 80ns, que funcionava em velocidades semelhantes às do barramento. A memória moderna é mais rápida, mas nem de longe tão rápida quanto o barramento. Imagino que as unidades modernas tenham mudado dos processadores de 16 bits que costumavam usar para tamanhos de barramento mais amplos para aumentar o rendimento.
Responder2
E como o buffer do disco rígido é uma memória cache, por que a interface é um gargalo?
Os buffers adicionam latência (mais tempo por solicitação) porque o conteúdo do buffer/cache precisa ser verificado. Então, por que os temos? porque geralmente os dados são lineares, então as chances são de que quando o buffer for verificado na próxima vez, ele já estará no buffer e o disco não precisará ser verificado.
O outro problema é
Quer dizer, o cache é um tipo de sram. Portanto, a velocidade de transferência deve ser alta. Por que não é assim?
Se os dados forem carregados do buffer/cache, será rápido. Isso só acontece se os dados já estiverem lá. Se os dados não estiverem no cache, eles vão para o disco e isso é mais lento. Se os dados estiverem sendo lidos continuamente, é provável que não estejam no cache, pois os caches são pequenos em comparação com o disco.