Спочатку почнемо з розуміння того, що саме є причиною погіршення продуктивності. Не знаючи цього, багато людей запропонують неадекватні рішення (як я вже бачу, що це відбувається). Суть всього цього труднощів в основному зводиться до наступного факту, як це цитується з Вікіпедії . Пам'ятайте про це, важливо:
За допомогою NAND флеш-пам’яті операції зчитування та програмування повинні виконуватись одночасно, в той час як розблокування та стирання повинні відбуватися блочно.
SSD складаються з NAND-спалаху, а спалах складається з "блоків". Кожен блок містить багато "сторінок". Для простоти, давайте уявимо, що ми щойно придбали блискучий новий SSD, який містить колосальний єдиний блок пам'яті, і цей блок складається з 4 порожніх сторінок.
Для наочності я розмежую порожні сторінки, використані сторінки та видалені сторінки з ∅, 1 та X. Ключовим є те, що між ними є різниця з точки зору контролерів! Це не так просто, як 1 та 0. Отже, для початку сторінки нашого свіжого диска виглядають так:
∅, ∅, ∅, ∅ (все порожньо)
Тепер ми переходимо записувати деякі дані на диск, і вони закінчуються зберіганням на цій першій сторінці, таким чином:
1, ∅, ∅, ∅
Далі ми записуємо трохи більше даних, лише цього разу достатньо, щоб вимагати дві сторінки, і таким чином вони зберігаються на 2-й та 3-й сторінках:
1, 1, 1, ∅
Нам не вистачає місця! Ми вирішили, що нам не потрібні початкові дані, які ми написали, тому давайте видалити їх, щоб звільнити місце.
X, 1, 1, ∅
Нарешті, у нас є ще один великий набір даних, який нам потрібно зберігати, який буде споживати дві інші сторінки. ЦЕ ДІЯ, ЯКІ ДІЯЛЬНІСТЬ HIT OCCURS У ДВІГАХ БЕЗ ТРИМИ !! Від нашого останнього стану до цього:
1, 1, 1, 1
... вимагає більше роботи, ніж більшість людей усвідомлює. Знову ж таки, це пов'язано з тим, що спалах може стиратися лише блочно, а не на сторінках, а саме цього вимагає остаточний перехід вище. Диференціатор між TRIM та SSD на основі TRIM - це коли виконується наступна робота!
Оскільки нам потрібно використовувати порожню сторінку та видалену сторінку, SSD потрібно спочатку прочитати вміст всього блоку в деякій зовнішній сховищі / пам'яті, видалити оригінальний блок, змінити вміст, а потім записати цей вміст назад у блок. Це не так просто, як "написати", натомість тепер це стає "читати-стирати-писати". Це велика зміна, і це може статися, коли ми пишемо безліч даних, мабуть, самий невідповідний час для цього. Цього можна було б уникнути, якби таку "видалену" сторінку було відновлено достроково, саме це і є TRIM. За допомогою TRIM SSD або відновлює наші видалені сторінки відразу після видалення, або в інший підходящий час, що його алгоритми TRIM вважають доцільним. Важливою частиною є те, що з TRIM це не відбувається, коли ми в середині запису!
Без TRIM ми в кінцевому підсумку не можемо уникнути описаного вище сценарію, оскільки ми наповнюємо свої накопичувачі даними. На щастя, деякі нові SSD виходять за межі просто TRIM і ефективно роблять те саме, що і TRIM у фоновому режимі на апаратному рівні без необхідних команд ATA (деякі називають це збирання сміття). Але для тих із нас, на кого не пощастило, їх немає, важливо знати, що написання нулів на весь диск недостатньо для відшкодування оригінальної роботи !!!!! Запис усіх нулів на накопичувач не вказує на контролер, що сторінка у спалаху вільна для запису. Єдиний спосіб зробити це на диску, який не підтримує TRIM, - це викликати команду ATA безпечного стерти на своєму диску, використовуючи такий інструмент, як HDDErase (через Wayback Machine) .
Я вважаю, що були деякі ранні SSD, які підтримували TRIM лише після видалення розділів або таких речей, як "Discpart очистити все" Windows 7, а не після видалення окремих файлів. Це може бути причиною того, що старший диск виявив відновлення продуктивності після виконання цієї команди. Мені це здається трохи туманним ...
Значна частина моїх знань про SSD та обладнання / гаджети в цілому походить від anandtech.com . Я подумав, що він чудово пояснює все це, але все життя я не можу його знайти!