Как работят SSD дисковете? За да се разбере как и защо SSD дисковете са различни от въртящите се дискове, трябва да поговорим малко за твърдите дискове. Твърдият диск, отбелязван като HDD (Hard Disk Drive) съхранява данни върху серия от въртящи се магнитни дискове, наречени плочи. Има задвижваща ръка със закрепени за нея глави за четене/запис. Тази ръка позиционира главите за четене и запис над правилната зона на устройството за четене или писане на информация.
Понеже главите трябва да се поставят над площта на диска, за да четат или записват данни (а дискът се върти постоянно), минава период от време, преди да бъдат достъпни данните. На задвижващото устройство може да се наложи да чете от много места, за да стартира програма или да зареди файл, което означава, че може да се наложи да изчакате плочите да се завъртят до правилната позиция няколко пъти, преди да завърши командата. Ако устройство е в спящ режим или в състояние на ниска консумация на енергия, може да отнеме няколко секунди повече на диска, за да се завърти до пълна мощност и да започне да работи.
От самото начало е ясно, че твърдите дискове не биха могли да се справят със скоростите, с които работят процесорите. Латентността на твърдите дискове се измерва в милисекунди, сравнена с наносекунди за типичния CPU. Една милисекунда е 1 000 000 наносекунди, а обикновено на твърдия диск му отнемат 10-15 милисекунди, за да намери данните и да започне да ги чете. Индустрията на твърдите дискове въведе по-малки плочи, кеш памет върху диска и по-бързо въртене, за да противодейства на тази тенденция, но това може да стане само до скоростта, с която устройствата се въртят. С 10 000 оборота в минута (RPM) семейството дискове VelociRaptor на Western Digital са най-бързите устройства за потребителския пазар, докато някои корпоративни дискове се въртят с до 15 000 RPM. Проблемът е, че дори и най-бързо въртящият се диск, с най-големите кешове и най-малките плочи все още е болезнено бавен спрямо вашия процесор.
С какво SSD дисковете се различават
Ако бях попитал хората какво искат, те ще кажат по-бързи коне – Хенри Форд
Твърдотелните дискове (Solid-state drives, SSD се наричат така, тъй като те не разчитат на движещи се части или въртящи се дискове. Вместо това данните се запазват в съвкупност от NAND флаш памети. Самата NAND е съставена от т. нар. транзистори с плаващи гейтове. За разлика от транзисторните конструкции, използвани в DRAM, които трябва да се опресняват по няколко пъти в секунда, NAND флаш е проектирана да запазва своето състояние, дори когато няма захранване. Това прави NAND енергонезависима памет.
Диаграмата по-горе показва опростен дизайн на флаш клетка. Електроните се съхраняват в плаващ гейт, който след това се чете когато е зареден като „0“, незареден като „1“. Да, в NAND флаш „0“ означава, че данните са съхранени в клетка – точно обратното на това, което разбираме под нула или едно. NAND флаш са организирани в матрица. Цялата матрица се нарича блок, а отделните редове, които съставляват матрицата се наричат страница. Общите размери на страниците са 2K, 4K, 8K или 16K, като в един блок има от 128 до 256 страници. Размерът на блока следователно варира между 256 KB и 4 MB.
Едно от предимствата на тази система е непосредствено очевидно. Тъй като SSD дисковете нямат движещи се части, те могат да работят при скорости далеч над тези на типичния HDD. Следната диаграма показва латентността на достъп за типични носители, дадена в микросекунди.
NAND далеч не е толкова бърза, колкото основната памет (RAM), но тя е с няколко порядъка по-бърза от един твърд диск. Въпреки че латентността при запис е значително по-голяма спрямо латентността при четене при NAND флаш, тя все още изпреварва традиционните въртящи се медии.
Има две неща за отбелязване в таблицата по-горе. Първо, обърнете внимание как добавянето на повече битове за клетка в NAND въздейства значително върху производителността на паметта. По-лошо е за записа отколкото за четенето – при типичната клетка с три нива (TLC) латентността е 4 пъти по-голяма в сравнение с NAND клетка с едно ниво (SLC) при четене, но шест пъти по-зле при запис. Латентността при изтриване също има значително въздействие. Това въздействие също не е пропорционално – TLC NAND е почти два пъти по-бавна от SLC NAND, въпреки че съхранява само 50% повече данни (три бита на клетка, вместо два).
Причината TLC NAND да е по-бавна от MLC или SLC има нещо общо с това как се движат данните към и от NAND клетка. При SLC NAND контролерът трябва да знае само дали битът е 0 или 1. При MLC NAND клетката може да има четири стойности – 00, 01, 10, или 11. При TLC NAND клетката може да има осем стойности. Четенето на точната стойност от клетка изисква контролерът на паметта да използва много точно напрежение, за да е установи дали някоя клетка е заредена или не.
Четене, запис и триене
Едно от най-функционалните ограничения на SSD дисковете е, че докато те могат да четат и записват данни много бързо на празен диск, презаписването на данни е много по-бавно. Това е така, защото, докато SSD дисковете четат данните на ниво страница (което означава от отделни редове в рамките на матрицата NAND памет) и могат да записват на ниво страница, като се предполага, че околните клетки са празни, те могат да изтриват данни само на ниво блок. Това е така, защото действието на изтриване на NAND флаш изисква голямо напрежение. Въпреки че можете да изтриете теоретично NAND на ниво страница, размерът на изискваното напрежение подлага на изпитание отделните клетки около клетките, които се презаписват. Изтриването на данните на ниво блок помага да се смекчи този проблем.
3D NAND матрица на 32 нива
Единственият начин за SSD да актуализира съществуваща страница е да копира съдържанието на целия блок в паметта, да изтрие блока и след това да запише съдържанието на стария блок + актуализираната страница. Ако устройството е пълно и няма празни страници, SSD трябва първо да сканира за блокове, които са маркирани за изтриване, но които все още не са изтрити, да ги изтрие и след това да запише данните на току-що изтритата страница. Ето защо SSD дисковете могат да станат по-бавни с остаряването си – един предимно празен диск е пълен с блокове, които могат да бъдат записани веднага, а един предимно пълен диск е по-вероятно да бъде принуден да извършва цялата последователност на програмиране/изтриване.
Ако сте използвали SSD дискове, вероятно сте чували за нещо, наречено „събиране на боклука“. Събирането на боклука е фонов процес, който позволява на диска да смекчи въздействието върху производителността на цикъла програмиране/изтриване чрез извършване на определени задачи във фонов режим. Следното изображение показва стъпките на процеса „събиране на боклука“.
Изображение: Wikipedia
Имайте предвид, че в този пример, устройството се възползва от факта, че то може да записва много бързо в празни страници чрез записването на нови стойности за първите четири блока (A‘-D‘). То също е записало два нови блока E и H. Блоковете A-D вече са маркирани като остарели, което означава, че съдържат информация, която устройството е маркирало като с изтекъл срок на годност. По време на периода на празен ход SSD ще премести новите страници към нов блок, ще изтрие стария блок и ще го маркира като свободно пространство. Това означава, че следващият път, когато SSD трябва да извърши запис, той може да записва директно на вече изпразнения блок X, вместо да извършва цикъла на програмиране/изтриване.
Следващата концепцията е TRIM. Когато изтриете файл на Windows от един типичен твърд диск, файлът не се изтрива веднага. Вместо това операционната система казва на твърдия диск, че тя може да презапише тази физическа част на диска, където файлът се съхранява, следващия път, когато трябва да направи запис. Ето защо е възможно да се възстановяват файлове (и защо изтриването на файлове в Windows обикновено не изчиства много пространство на физическия диск, докато не се изпразни кошчето). С традиционен HDD не е необходимо операционната система да се занимава с това, къде се записват данните или какво е относителното състояние на блоковете или страниците. При SSD това има значение.
Командата TRIM позволява на операционната система да каже на SSD, че може да пропуснете пренаписването на някои данни следващия път, когато изпълнява изтриване на блок. Това намалява общото количество данни, които устройството записва и увеличава живота на SSD. И четенето и записването увреждат NAND флаш, но записът нанася много повече вреда от четенето. За щастие животът на блоковете не е показал, че е проблем в съвременните NAND флаш.
Последните две понятия, които са от значение са нивото на износване и увеличаването на записа. Тъй като SSD дисковете записват информация по страници, но изтриват данни по блокове, размерът на данните, които се записват на диска, винаги е по-голям от действителния презапис. Ако правите промяна във файл от 4 KB, например, целият блок, в който се намира 4K файла, трябва да бъде актуализиран и презаписан. В зависимост от броя на страниците на блок и на размера на страниците, може да се наложи да запишете 4 MB данни, за да актуализирате файл от 4 KB. Събирането на боклука намалява въздействието на увеличаването на записа, както прави командата TRIM. Поддържането на значителна част от диска свободна и/или презапасяването от производителя също може да намалят въздействието от увеличаването на записа.
Балансирането на износването означава, че трябва да се въведат практики, които да гарантират, че някои NAND блокове не се записват и изтриват по-често от други. Въпреки че балансът на износването увеличава продължителността на живота на диска и издръжливостта му чрез равномерно записване върху NAND, това всъщност може да увеличи увеличаването на записа. За да се разпределя равномерно записването върху диска, понякога е необходимо да се програмират и да се изтриват блокове, въпреки че съдържанието им в действителност не се променя. Един добър алгоритъм за баланс на износването се стреми да уравновесява тези въздействия.
Контролерът на SSD
Дотук би трябвало да е очевидно, че SSD дисковете изискват много по-сложни механизми за управление, отколкото твърдите дискове. Макар че съвсем не трябва да гледаме отвисоко на механичните предизвикателствата, свързани с балансирането на няколко глави за четене и запис над плочите, които се въртят със скорости от 5400 до 10 000 RPM. Фактът е, че твърдите дискове изпълняват това предизвикателство, докато въвеждат нови методи за записване на магнитен носител и в крайна сметка е просто невероятно, че успяват да продават дисковете на цена 3-5 цента на гигабайт.
SSD контролерите обаче са отделен клас. Те често имат област, заета с памет DDR3, за да помага на управлението на NAND. Много устройства включват и кешове с едно ниво на клетки, които действат като буфери, увеличавайки производителността на диска, като насочват бързите NAND към цикли четене/запис. Тъй като NAND флаш в SSD обикновено е свързана към контролера чрез серия от паралелни канала на паметта, можете да мислите за дисковия контролера като за балансьор на натоварването по начина, който е възприет при масивите за съхранение от висок клас – SSD дисковете не разгръщат RAID вътрешно, но балансът на износването, събирането на боклука и SLC управлението на кеша – всички имат паралели в света на големия хардуер.
Някои устройства използват също алгоритми за компресия на данни, за да намалят общия брой записи и да подобрят живота на устройството. Контролерът на SSD извършва корекции на грешки, а алгоритмите, които контролират еднобитови грешки, стават все по-сложни.
За съжаление, не може да се проникне в подробности относно SSD контролерите, защото компаниите заключват тайните на използваните съставки. Голяма част от производителността на NAND флаш се определя от контролера зад нея и фирмите не са склонни да повдигат капака твърде много, за да се види как правят това, което правят, за да не губят конкурентно предимство.
Пътят пред SSD
NAND флаш предлага огромно подобрение в сравнение с твърдите дискове, но това не е без своите недостатъци и предизвикателства. Очаква се капацитетът на дисковете да продължава да расте, а цената на гигабайт да пада, но шансът SSD дисковете да достигнат твърдите дискове в цената на гигабайт е малък. Свиването на възловите точки на процесите е значително предизвикателство за NAND флаш – по принцип хардуерът се подобрява, след като възловите точки се свиват, то NAND стават по-крехки. Времената на задържане на данните и производителността на запис са съществено по-ниски за 20 nm NAND от 40 nm NAND, дори ако плътността на данните и общият капацитет са значително подобрени.
Засега производителите на SSD предоставят по-добра производителност, като предлагат по-бързи стандарти за данните, повече трафик, както и повече канали на контролер – плюс използването на SLC кешове, които споменахме по-рано. Независимо от това, в дългосрочен план се смята, че NAND ще бъде заменен от нещо друго.
NAND е коронована за престола и се очаква да остане там най-малко през следващите 4-5 години.
Какво ще е това друго, все още не е ясно. Кандидати засега са магнитните RAM и паметта с промяна на фазата, въпреки че и двете технологии са все още в ранните етапи и трябва да преодолеят значителни предизвикателства, за да се конкурират като заместител на NAND. Дали потребителите ще забележат разликата е отворен въпрос. Ако обновявате от HDD към SSD и след това обновявате до по-бърз SSD, вие едва ли знаете, че пропастта между HDD и SSD е много по-голяма от тази между SSD и SSD, дори когато надграждате от сравнително скромен диск. Подобряването на времето за достъп от милисекунди до микросекунди има голямо значение, но подобряването му от микросекунди до наносекунди може да е под това, което хората могат реално да възприемат в повечето случаи.
Така или иначе за момента NAND е коронована за престола и се очаква да остане там най-малко през следващите 4-5 години.