Могу ли я подражать TRIM, записывая все нули?
Нет.
Для записи требуется стертый сектор, а затем происходит фактическая операция записи.
Операция записи указывает SSD, что этот сектор используется (противоположное условие, которое вы хотите получить с помощью настоящей команды TRIM).
Еще до того, как был записан сектор SSD, он выглядит как заполненный нулями.
Неправильно, и, видимо, ваш вопрос основан на этой ошибочной предпосылке.
Стертый сектор заполнен байтами 0xFF (все).
Формат традиционно записывает все нули в каждый сектор.
Так что, если я напишу все нули в сектор, с целью функциональности он будет выглядеть как свободный.
Нет, не будет.
Остерегайтесь наличия «свободных» секторов на уровне файловой системы и «свободных» секторов на уровне SSD. Теоретически они должны быть одинаковыми, но поскольку файловая система должна явно информировать SSD о том, что сектор является «свободным» (с командой TRIM), существуют расхождения.
ДОПОЛНЕНИЕ
Таким образом, контроллер имеет техническую возможность рассматривать его как таковой. Мои ограниченные знания об архитектуре ИС говорят о том, что с аппаратной точки зрения замедление из-за тестирования цепей для всех нулей, вероятно, будет незначительным, если вообще будет.
Вопрос в том, реализует ли это какой-нибудь контроллер флэш / SSD или что-то подобное?
Нет, потому что это приведет к непреднамеренной потере данных.
Всякий раз, когда программа записывает сектор со всеми нулями (например, образ памяти может иметь такие блоки), ваша схема позволит SSD отбрасывать этот сектор, поскольку она будет обрабатывать его как не отображенный сектор, а не используемый сектор и выделенный для него. файл.
В итоге, предложенная вами схема (с использованием данных) не работает.
Если вы хотите обозначить сектор как свободный или неиспользуемый, то есть команда TRIM.
Операции с замещающей записью не существует.