trim is implemented in the controller in that a controller implementing trim is capable of receiving, understanding and acting upon the trim command. It&#x27;s actually issued higher up in the stack; I&#x27;ve only ever seen it mentioned in the context of an OS issuing the command to the drive if a file on a filesystem on the drive is deleted, or if a utility intended to issue trim against all empty blocks was run.<p>You&#x27;re correct in that trim is less necessary if a drive has good garbage collection. I don&#x27;t know anything about the implementation of either, but I would expect trim to be easier, cheaper and better than GC. It seems like GC would require work to discover&#x2F;remember things provided as input w&#x2F; trim. I&#x27;ve assumed that GC was only implemented by vendors in their controllers because trim wasn&#x27;t available in the popular OSs yet, and&#x2F;or because their controllers were already doing most of the work required by GC anyway so it was cheap to implement.<p>Finally, you can&#x27;t equate SSDs with the SD or eMMC used in some of the phones&#x2F;tablets. Yes it&#x27;s all flash, but an SSD is typically multi-channel with many flash modules, a DRAM cache and a much more sophisticated controller implementing a standard storage interface (AHCI&#x2F;SATA or SAS or NVMe). eMMC and SD are much simpler, cheaper and slower.