How does it know what blocks that are junk and which belongs to files without support from the filesystem?
Eu acho que esta é uma questão importante que ninguém realmente respondeu. A unidade não pode saber quais blocos são válidos e quais blocos são válidos sem entender o sistema de arquivos sendo usado ou obtendo informações adicionais (por exemplo, do TRIM).
Nosso entendimento convencional da coleta de lixo é que blocos que contêm dados inválidos parcialmente são consolidados para liberar blocos inteiros * que podem ser gravados rapidamente (sem ter que ler dados válidos existentes e gravar com os novos dados). Sem saber quais blocos são válidos e quais blocos são inválidos, esse processo não pode ocorrer.
AnandTech especula um pouco sobre isso:
It either works by looking at the data on the drive and organizing it into a less fragmented state, or by looking at the file system on the drive and attempting to TRIM based on what it finds. Both Indilinx and Samsung have attempted to implement this sort of idle garbage collection and it appears they do it in different ways. While the end result is the same, how they get there determines the usefulness of this feature.
In the first scenario, this is not simply TRIMing the contents of the drive, the drive doesn’t know what to TRIM; it must still keep track of all data. Instead, the drive is re-organizing its data to maximize performance.
The second scenario requires a compatible file system (allegedly NTFS for the Samsung drives) and then the data is actually TRIMed as it would be with the TRIM instruction.
Já discutimos o segundo cenário, que provavelmente não funciona para o HFS +. O primeiro cenário é mais intrigante para mim, e eu não consegui localizar nenhuma informação boa sobre como ele funciona, ou como ele é eficaz no HFS +.