Акселерация от Samsung: к вопросу о TurboWrite

Технология TurboWrite у Samsung до­ста­точ­но сход­на с ра­нее рас­смот­рен­ны­ми тех­но­ло­ги­я­ми ак­се­ле­ра­ции за­пи­си, в ос­но­ве ко­то­рых — пе­ре­вод ог­ра­ни­чен­но­го чис­ла TLC-яче­ек за­по­ми­на­ю­щей NAND-мат­ри­цы в ре­жим SLC. До­ку­мен­та­ция на сай­те про­из­во­ди­те­ля сви­де­тель­ст­ву­ет о на­ли­чии тех­но­ло­гии Turbo­Write во мно­гих уст­рой­ст­вах, раз­ра­бо­тан­ных ком­па­ни­ей Sam­sung, в том чис­ле и в се­рии PM871b. Не­смот­ря на то, что ал­фа­вит­но-циф­ро­вой код, сов­па­да­ю­щий с точ­но­стью до мо­де­ли ис­сле­ду­е­мо­го об­раз­ца, от­сут­ст­ву­ет в до­ку­мен­те, код се­рии со­в­па­да­ет с од­ной из над­пи­сей на мар­ки­ров­ке на­ко­пи­те­ля. По­лу­чив бенч­мар­ки про­из­во­ди­тель­но­с­ти это­го SSD, мо­жем спо­кой­но раз­об­рать­ся с осо­бен­но­с­тя­ми ре­а­ли­за­ции оз­на­чен­ной тех­но­ло­гии.

Код серии M.2 NGFF-накопителя Samsung PM871b с SATA-интерфейсом совпадает с одной из надписей на маркировке устройства

 

Диаграмма состояний

Как следует из иллюстрации при­ве­ден­ной ниже, в «мед­лен­ной» за­по­ми­на­ю­щей матрице, построенной на ос­но­ве мно­го­у­ров­не­вых ячеек, выделяется «быстрая» область, ра­бо­та­ю­щая в режиме SLC. В об­щем слу­чае это мо­жет быть ап­па­рат­но об­о­соб­лен­ный блок, либо (что более вероятно) ми­к­ро­про­г­рам­ма уст­рой­с­т­ва имеет воз­мож­ность по сво­е­му ус­мот­ре­нию ис­поль­зо­вать оп­ре­де­лен­ную часть мно­го­у­ров­не­вых яче­ек в качестве од­но­у­ров­не­вых (допуская только два уровня из набора со­сто­я­ний мно­го­у­ров­не­вой ячей­ки), если объем сво­бод­но­го пространства на­ко­пи­те­ля по­зво­ля­ет ском­пен­си­ро­вать уменьшение плот­нос­ти записи, неизбежно со­про­вож­да­ю­щее такое пе­ре­оп­ре­де­ле­ние.

Samsung TurboWrite Technology Algorithm

Стрелка Write to buffer на левом верхнем ри­сун­ке оз­на­ча­ет за­пись в TurboWrite Buffer по SLC-прин­ци­пу, что под­чер­ки­ва­ет спо­соб­ность выполнить запись значительно быстрее по сравнению с основной частью за­по­ми­на­ю­щей мат­ри­цы. Эту ско­рость ра­з­ум­но со­от­не­с­ти с пи­ко­вой величиной Write Speed = 435 MBPS, полученной ранее.

Результаты тестирования SSD-накопителя Samsung MZ-NLN128C в форм-факторе M.2 NGFF

 

Правый верхний рисунок на блок-схеме Turbo­Write Tech­no­lo­gy Al­go­rithm ха­рак­те­ри­зу­ет действия на­ко­пи­те­ля, на­прав­лен­ные на ос­во­бож­де­ние SLC-буфера от ранее записанных данных с целью под­го­тов­ки к ак­се­ле­ра­ции сле­ду­ю­щих ци­к­лов за­пи­си. Для этого данные пе­ре­пи­сы­ва­ют­ся в основную часть запоминающей мат­ри­цы. Сло­во Idle позволяет пред­по­ло­жить, что эта операция, асинхронная по отношению к об­слу­жи­ва­нию запросов хоста, начнется только в том слу­чае, если в течение определенного времени от хос­та не по­сту­па­ет новых за­про­сов. Это согласуется с тезисом о ста­биль­ной скорости чтения устройства: ос­во­бож­де­ние SLC-буфера, как кон­ку­ри­ру­ю­щий процесс, имеет меньший при­о­ри­тет, чем обслуживание те­ку­щей на­груз­ки, по­сту­па­ю­щей от хоста.

И наконец, нижний рисунок ха­рак­те­ри­зу­ет со­сто­я­ние пе­ре­пол­не­ния SLC-кэш. Стрелка Write directly to the main area оз­на­ча­ет не­воз­мож­ность использовать SLC-кэш по причине его переполнения и не­об­хо­ди­мость за­пи­си в основную об­ласть за­по­ми­на­ю­щей матрицы. Скорость такой записи логично со­от­не­с­ти с ме­ди­ан­ной ве­ли­чи­ной Write Speed = 162 MBPS, полученной нами ранее.

Для некоторых моделей, ин­фор­ма­цию об объеме SLC-буфера, в част­но­с­ти зависимость его объема от объ­е­ма на­ко­пи­те­ля можно найти в до­ку­мен­та­ции. В общем случае этот параметр может зависеть от вер­сии про­шив­ки, поэтому тре­бу­ет отдельного внимания.

ddd

SLC-кэш: аспекты реализации

Firmware накопителя и внутренняя многозадачность

Продолжительность ин­тер­ва­ла «молчания хоста» Idle, после ко­то­ро­го на­ко­пи­тель принимает решение о за­пус­ке фо­но­во­го про­цес­са освобождения SLC-буфера и методы экспериментального определения это­го зна­че­ния — тема от­дель­но­го исследования. Можно предположить, что этот параметр может зависеть не толь­ко от вер­сии про­шив­ки, но и от параметров инициализации накопителя драйвером при старте ОС. Воз­мож­но, упо­ми­на­ние о таком параметре по­я­вит­ся в спе­ци­а­ли­зи­ро­ван­ных утилитах?

О циклической перезаписи

Еще один вопрос о циклической перезаписи блока. Происходит ли ускорение, если суммарный объем за­пи­сан­ных дан­ных пре­вы­ша­ет объем SLC-кэш, но при этом выполняется повторная перезапись блока, объем ко­то­ро­го мень­ше объ­е­ма SLC-кэш?

Трактовка результатов требует аккуратности

В общем случае, можно выделить 4 класса факторов, формирующих профиль зависимости про­из­во­ди­тель­но­с­ти SSD-на­ко­пи­те­лей от объема обработанной информации. Рассмотрим их применительно к SATA-уст­рой­с­т­ву в ус­ло­ви­ях эксперимента:

  1. Штатные программные механизмы бу­фе­ри­за­ции, кэ­ши­ро­ва­ния, и отложенной записи в опе­ра­ци­он­ной системе.
  2. Фирменные технологии, программно реализующие буферизацию, кэ­ши­ро­ва­ние и отложенную за­пись, ус­та­нав­ли­вая собственные драйверы на нижних уровнях про­г­рам­мн­ого стека уп­рав­ле­ния.
  3. Буферное ОЗУ на плате накопителя.
  4. Технологии акселерации записи, такие как SLC-кэ­ши­ро­ва­ние Samsung TurboWrite.

Очевидно, что в первых двух случаях кэш-попадание оз­на­ча­ет под­ме­ну доступа к накопителю ко­пи­ро­ва­ни­ем ин­фор­ма­ции в системном ОЗУ, про­пуск­ная спо­соб­ность которого кратно превышает воз­мож­но­с­ти ин­тер­фей­са SATA. Второй вариант от­ли­ча­ет­ся от первого некоторой спекулятивностью, по­сколь­ку опции от­клю­че­ния кэ­ши­ро­ва­ния, дей­ст­ву­ю­щие на уровне входных параметров ОС API могут ут­ра­чи­вать свои фун­к­ции, что вли­я­ет на результаты бенч­ма­рок, за счет «скрытого» кэ­ши­ро­ва­ния.

Последние два случая основаны на внутренних ресурсах накопителя, поэтому «потолок» увеличения ско­рос­ти фи­зи­че­ски ог­ра­ни­чен возможностями интерфейса SATA3 (600 MBPS). Увы, фирменная до­ку­мен­та­ция, пред­о­став­ля­е­мая вен­до­ра­ми, мягко говоря, лаконична. Подробная информация об ин­тер­фей­с­ном про­цес­со­ре, мик­ро­схе­мах NAND и DRAM отсутствует в открытом доступе. Управляя опциями тес­та, оце­ни­вая уров­ни из­ме­не­ния скоростей чтения, за­пи­си и ко­пи­ро­ва­ния, анализируя средние и пиковые зна­че­ния ско­рос­тей (ось Y) и объ­емы информации (ось X), при ко­то­рых имели место точки перегиба мы мо­жем пред­по­ло­жить, что ос­нов­ной вклад в на­блю­да­е­мый эффект внесла тех­но­ло­гия TurboWrite, хотя ал­го­рит­мы ра­бо­ты и чис­лен­ные ха­рак­те­рис­ти­ки бу­фер­но­го ОЗУ на­ко­пи­те­ля заслуживают от­дель­но­го ана­ли­за.

Резюме

Настало время перейти от теории к потребительским ха­рак­те­рис­ти­кам про­тес­ти­ро­ван­но­го уст­рой­с­т­ва. «Ви­нов­ник тор­же­с­т­ва» с тестовой нагрузкой справился довольно неплохо, достойно от­ре­а­ги­ро­вав на оп­ти­ми­за­цию тес­то­во­го сце­на­рия, частью которой был переход от мно­го­крат­но­го по­вто­ре­ния за­пи­си, ко­пи­ро­ва­ния и чте­ния одного файла к по­сле­до­ва­тель­но­му вы­пол­не­нию записи, ко­пи­ро­ва­ния и чте­ния для се­рии фай­лов. Ре­зуль­тат — рост ме­ди­ан­ной ско­ро­с­ти чте­ния от 485 до 510-520 MBPS.

Стабильность и отсутствие на графиках зна­чи­тель­ных воз­му­ще­ний в нехарактерных точках дает ос­но­ва­ния пред­по­ло­жить, что внутренние сервисные операции накопителя (в частности, освобождение SLC-кэш), асин­хрон­но за­пус­ка­е­мые встро­ен­ным про­цес­со­ром и кон­ку­ри­ру­ю­щие с об­слу­жи­ва­ни­ем те­ку­щих запросов хос­та, на­хо­дят­ся на уме­рен­ном при­о­ри­те­те. Альтернатива в виде агрессивной оп­ти­ми­за­ции записи в ущерб чте­нию вряд ли была бы ра­зум­ной.