Программирование NAND FLASH. NAND и NOR: что они такое, и с чем их едят

Всем привет! Буквально на днях встретил своего давнишнего приятеля. Мы разговорились, и он, со словами «Смотри с каким телефоном я сейчас хожу!», продемонстрировал свою старенькую кнопочную Nokia. Выяснилось, что на его iPhone стала постоянно «слетать» прошивка - пришлось отдать смартфон в сервисный центр. Казалось бы, обычное дело...

Однако, для приятеля оказался необычным тот перечь работ, которые будет проводить сервис. Полная диагностика, обновление программного обеспечения (при необходимости) и другие «обычные штуки» - здесь все стандартно и понятно. Главный же вопрос вызвала вот такая фраза мастера - «скорей всего, надо перекатывать Nand Flash».

Я, конечно, в сервисе не показал что не понимаю о чем речь - дескать и так все знаю без вас. Вы главное - делайте. Но пришел домой и сразу полез «гуглить» - а что это вообще такое, Nand Flash? И на фига его куда-то катать внутри iPhone?

Посмеялись с ним, разошлись, а я подумал - почему бы не написать коротенькую заметку на эту тему? Много времени это не займет, а людям, которые столкнулись с той же проблемой что и мой знакомый, станет чуточку понятней, что вообще происходит с их смартфоном. Подумал - сделал. Поехали!:)

Что такое Nand Flash в iPhone?

Это внутренняя память устройства. Да, да, то самое и которого очень часто не хватает владельцам iPhone на 16 GB.

Грубо говоря, Nand Flash в iPhone 7 32 GB это и есть те самые 32 GB внутренней памяти.

Расположена память на основной системной плате устройства и ни чем примечательным не выделяется - самый обычный чип.

Естественно, это никакая не флешка - нельзя разобрать iPhone, легко отсоединить Nand Flash, поставить другую и думать что все будет «ОК». Не будет. Хотя, стоит оговориться, что в некоторых случаях это все-таки возможно. Но об это чуть дальше. А пока переходим к неполадкам...

Причины неисправности

Вариантов не очень много, и все они, как правило «стандартные»:

  1. Падения устройства.
  2. Иные физические повреждения.
  3. Попадание жидкости.
  4. Брак.
  5. Джейлбрейк.

Здесь особо и расписывать нечего - понятное дело, что если устройство бросать и заливать водой, то это скажется на его работоспособности.

Хотя, отдельно все-таки отмечу такой пункт, как заводской брак - такое тоже очень даже возможно. Я был свидетелем подобной ситуации - iPhone только что куплен, а работать толком не работает - перезагружается, при восстановлении показывает ошибки и вообще ведет себя странно. Отдали в сервис, как итог - брак Nand Flash памяти и последующая замена устройства.

Симптомы неисправности Flash памяти iPhone

Каких-то четких и определенных симптомов у этой неисправности нет (на экране не выскакивает надпись - у вашего устройства проблемы с памятью), поэтому обо всем этом можно догадаться только по косвенным признакам:


Кстати, об ошибках...

Ошибки iTunes, указывающие на неисправность Nand Flash

Самый верный способ борьбы с различными неполадками в работе устройства. Однако, если у iPhone существуют проблемы с Nand Flash памятью, то процесс восстановления может прерываться и сопровождаться следующими характерными ошибками:


Но, важно помнить вот о чем - iTunes устроен таким образом, что одна и та же цифра ошибки может иметь несколько причин.

Например, ошибка 4013 может сигнализировать как о проблемах с самой микросхемой, так и о неоригинальности использования провода для подключения к ПК.

Как видите, разброс очень большой - от простого провода, до очень сложного ремонта. Поэтому, использовать этот перечень ошибок для предварительного анализа ситуации можно, а вот слепо доверять - нельзя.

Ремонт Nand Flash памяти - возможно ли это?

Возможно. Но, конечно же, не «в домашних условиях». Более того, далеко не все сервисные центры умеют проделывать эту операцию. Например, «в палатке на рынке» вам с большой долей вероятности помочь не смогут - там просто не будет необходимого оборудования. Да и навык, какой-никакой, должен быть.

В который раз отдельно замечу - если у вашего iPhone не закончился гарантийный срок (), то ничего выдумывать не нужно - . С большой долей вероятности вы получите взамен новое устройство.

Если с гарантией «пролет», а ремонт Nand Flash памяти все-таки необходим, то у сервисного центра есть два варианта исправления ситуации:


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

Какой вывод можно сделать из всего этого? Проблемы с памятью iPhone - это достаточно серьезная поломка, которую очень тяжело исправить самостоятельно. Но и безнадежной ситуацию назвать нельзя. Главное - найти хороший сервисный центр с грамотными специалистами и необходимым оборудованием. И тогда iPhone еще долго будет радовать вас своей работой!

P.S. Да уж, короткой заметки не получилось:) Впрочем, что есть, то есть - не удалять же теперь. Да и информация полезная - кому-нибудь да пригодится. Согласны? Ставьте «лайки», жмите на кнопки социальных сетей - поддержите автора! Он старался, честно. Спасибо!

P.S.S. Остались какие-то вопросы? Есть чем дополнить статью или хочется рассказать свою историю? Для этого существуют комментарии - пишите смело!

В 1989 году состоялся анонс Nand Flash памяти, данная разработка была представлена компанией Toshiba на International Solid-State Circuits Conference. До этого существовали только разработки NOR памяти, основными недостатками которой были: скорость работы и большая площадь чипа. Основным отличием NAND Flash от Nor Flash являются особенности адресации, если в NOR Flash можно адресовать произвольную ячейку, то в NAND Flash применена страничная адресация (обычно размер страницы 528, 2112, 4224, 4304, 4320, 8576 байт).

На сегодня существует масса устройств, где используются микросхемы NAND Flash в том числе и в различных носителях информации, таких как SSD накопители, USB Flash, различные Flash card (MMC, RS-MMC, MMCmicro, SD, miniSD, MicroSD, SDHC, CF, xD, SmartMedia, Memory Stick и т.д.)

Принципиально носители информации на NAND Flash из себя представляют микроконтроллер, который обеспечивает работу с микросхемами памяти, а также работу с различными устройствами по заданному стандартами интерфейсу. В большинстве устройств это выглядит как небольшая плата, на которой размещены одна или несколько микросхем NAND Flash памяти в конструктивном исполнении TSOP-48, short TSOP-48 или TLGA-52 и микроконтроллер. Миниатюрные устройства, как правило выполнены в виде одного чипа в который интегрированы как микросхема Nand Flash, так и микроконтроллер.

Основные недостатки NAND Flash памяти - это недостаточно высокая скорость и не очень большое количество циклов записи, которые способна выдержать микросхема. Для обхода этих проблем, производители контроллеров идут на некоторые ухищрения, такие как организация записи в NAND Flash в несколько потоков, для поднятия быстродействия и организация логических банков разбитых на достаточно крупные блоки и организация сложной системы трансляции.

Для равномерного износа NAND Flash практически во всех контроллерах организованно разделение адресного пространства на логические банки, которые в свою очередь разделяются на блоки (состоящие из нескольких страниц памяти), обычно на 256-2048 блоков. Контроллером ведется учет количества записей в каждый из блоков. Для того чтобы данные пользователя можно было свободно перемещать внутри банка, для этого имеется логическая нумерация блоков т.е. на практике при чтении микросхемы в дамп видим картину что данные пользователя в виде достаточно крупных блоков (16кб – 4Мб) хаотично перемешаны. Порядок работы с пользовательскими данными отражен в трансляторе в виде таблицы в которой указан порядок построения блоков для того чтобы получить упорядоченное логическое пространство.

Для увеличения операций чтения/записи производители контроллеров реализуют функции распараллеливания данных, то есть прямая аналогия с RAID массивом уровня 0 (stripe), только немного более сложная реализация. На практике это выглядит либо в виде внутриблочного распараллеливания (интерлива), на более мелкие подблоки (как правило от 1 байта, до 16Кб), также симметричное распараллеливание (страйп) между физическим банками микросхемы NAND Flash и между несколькими микросхемами.

Стоит понимать, что при таком принципе работы, транслятор накопителя – постоянно изменяющаяся таблица, практически при каждой записи в NAND Flash. Исходя из принципа работы с NAND Flash – чтение блока в буфер, внесение изменений и запись блока на место, очевидно, что наиболее опасны для данных являются незавершенные операции записи; например, когда происходит запись измененного транслятора. В результате необдуманного обращения с накопителями: внезапного извлечения их из USB разъема или из разъема кардридера во время записи, чревато разрушением служебных данных, в частности таблицы трансляции.

При разрушение служебных данных, накопитель не может функционировать или в некоторых случаях функционирует неверно. Извлечение данных программными средствами, как правило, не представляется возможным по многим причинам. Одно из решений – это выпаивание микросхем NAND Flash с последующим чтением на соответствующем считывателе (программаторе). Учитывая, что оригинальный транслятор отсутствует, либо поврежден, предстоит работа по разбору дампа извлеченного из микросхемы NAND Flash. Многие, наверное, обратили внимание на кажущийся странным размер страниц памяти в NAND Flash. Это объясняется тем, что в каждой странице, кроме данных пользователя имеются служебные данные обычно это представлено в виде 512/16; 2048/64; 4096/128; 4096/208 (существуют и значительно более сложные варианты организации данные/служебка). В служебных данных присутствую различные маркеры (маркер, номера блока в логическом банке; маркер ротации блока; ECC; и т.п.) Восстановление пользовательских данных сводится к устранению распараллеливания данных внутри блоков, между банков и между микросхемами памяти для получения цельных блоков. Если есть необходимость, то устраняются внутриблочные ротации, ренумерации и т.п. Дальнейшая задача, состоит в поблочной сборке. Для того чтобы ее осуществить необходимо четко уяснить количество логических банков, количество блоков в каждом логическом банке, количество используемых блоков в каждом банке (задействованы не все) местонахождение маркера в служебных данных, алгоритм нумерации. И только потом производить сбор блоков в конечный файл-образ из которого можно будет произвести чтение пользовательских данных. В процессе сбора подстерегают подводные камни в виде нескольких блоков-претендентов на одну позицию в конечный файл-образ. После решение данного круга задач, получаем файл-образ с пользовательской информацией.

В случаях, когда данные не играют никакой роли, но есть желание восстановить работоспособность самого накопителя, то лучшие вариант коррекции проблем со служебными данными – это выполнение процедуры форматирования фирменной утилитой с сайта производителя накопителя. Многие утилиты фактически переписывают всю служебную информацию, создают чистый транслятор, и выполняют процедуру форматирования с созданием новой файловой системы. Если же производитель не удосужился выложить Recovery-утилиту, тогда выход в виде поиска утилит форматирования накопителей на NAND Flash «по контроллеру», единственно, что покажется сложным пользователю – это обилие производителей контроллеров и сложности с идентификацией последнего.

Павел Янчарский

Перепечатка материалов разрешена только с указанием активной ссылки на оригинал статьи

Для успешной работы с микросхемами NAND FLASH (нанд флэш) необходимо, как минимум:

    Иметь представление о структуре NAND FLASH (нанд флэш), существующих способах и алгоритмах использования информации хранимой в такой памяти.

    Иметь программатор, который корректно поддерживает работу с памятью NAND Flash т.е. позволяет выбрать и реализовать необходимые параметры и алгоритмы обработки.

Программатор для NAND FLASH должен быть очень быстрым . Программирование или чтение микросхемы обьемом в несколько Гбит на обычном программаторе по времени занимает несколько часов. Очевидно, что для более или менее регулярного программирования NAND Flash нужен специализированный быстрый программатор, адаптированный для работы с мс. высокой плотности. На сегодняшний день, самый быстрый программатор Flash NAND - ChipProg-481.

Программирование NAND FLASH на программаторах ChipProg

При работе с NAND Flash программатор предоставляет широкий спектр возможностей по выбору/настройке способов и параметров программирования. Все параметры влияющие на алгоритм работы программатора с микросхемой, выводятся в окно "Редактор параметров микросхемы и алгоритма программирования". При необходимости, любой из этих параметров может быть изменен, с тем что бы выбранное действие (программирование, сравнение, чтение, стирание) - производилось по алгоритму необходимому пользователю программатора.

Окно "Редактор параметров микросхемы и алгоритма программирования" в интерфейсе программатора при программировании NAND Flash .

Большое количество настраиваемых параметров, формирующих алгоритм работы программатора NAND Flash продиктовано желанием предоставить универсальный инструмент, позволяющий пользователю максимально полно реализовать все особенности присущие структуре NAND Flash . Для облегчения жизни, программаторы ChipProg-481 предоставляют следующие возможности при выборе любой микросхемы NAND Flash :

  • Все параметры принимают значения заданные в предшествующем сеансе (сессии) программирования выбранной NAND Flash . (количество сохраненных сессий неограниченно).
  • Все параметры принимают значения заданные для данной NAND Flash в рамках "проекта" (количество "проектов" неограниченно)
  • Все параметры автоматически принимают необходимые значения после запуска "скрипта". "Скрипты" пишутся на встроенном в оболочку программатора C подобном языке.
  • Все (или выборочно) параметры принимают значения по умолчанию.
  • Значения всех параметров доступны для редактирования в графическом интерфейсе программатора.

Рассмотрим режимы и параметры программирования реализованные в программаторе.

Режимы программирования.

  1. Invalid Block Management
  2. Spare Area Usage
  3. Guard Solid Area
  4. Tolerant Verify Feature
  5. Invalid Block Indication Option

1. Работа с плохими блoками .

Перед программированием NAND Flash можно/нужно выбрать один из способов работы с плохими блоками.

2. Использование области Spare Area.

Do Not Use

Spare Area в микросхеме не используется. В микросхеме программируются страницы памяти без учета Spare Area.

User Data

Spare Area используется как пользовательская память. В этом случае при программировании микросхемы информация из буфера помещается сначала в основную страницу микросхемы, а затем в дополнительную область Spare Area. В этом случае буфер программатора выглядит как непрерывный поток основных страниц микросхемы и пристыкованных к ним областей Spare Area.

User Data with IB Info Forced

Spare Area интерпретируется аналогично предыдущему случаю за исключением того, что маркеры плохих блoкoв прописываются вместо информации пользователя.

3. Guard Solid Area

Режим использования специальной области без плохих блoкoв. Обычно такие области используются в качестве загрузчиков микропроцессоров. В этой области недопустимо использование плoxих блoкoв.
Опция используется совместно с параметрами:

  • Solid Area - Start Block - начальный блoк области без плoxих блoкoв.
  • - количество блoкoв в этой области.

В случае, если внутри заданного диапазона Solid Area попадется плохой блoк, программатор выдаст ошибку.

4. Не чувствительность к ошибкам сравнения.

Эта опция позволяет включить режим не чувствительности к ошибкам сравнения.
Обычно, эту опцию имеет смысл использовать, если в устройстве пользователя применяются алгоритмы контроля и коррекции ошибок (ECC). В этих случаях допускается наличия определенного количества ошибок на определенный размер массива данных. Эти параметры и указываются в параметрах алгоритма программирования NAND Flash :

  • ECC Frame size (bytes) - размер массива данных.
  • Acceptable number of errors - допустимое количество однобитных ошибок.

5. Invalid Block Indication Option.

В этой опции выбирается информация, которая используется в качестве маркера плохих блоков. Допускается выбрать либо значение 00h, либо 0F0h.

  • IB Indication Value ~ 00 или F0

Параметры программирования.

  1. User Area
  2. Solid Area
  3. RBA Area
  4. ECC Frame size
  5. Acceptable number of errors

a. Пользовательская область.

Пользовательская область - это область микросхемы, с которой работают процедуры Программирования, Чтения и Сравнения.
Процедуры Стирания и Контроля на чистоту работают со всем массивом микросхемы.

Пользователю необходимо установить параметры:

  • User Area - Start Block - начальный блoк пользовательской области.
  • User Area - Number of Blocks - количество блoков в пользовательской области.

b. Область без ошибок.

Параметры режима Guard Solid Area.

  • Solid Area - Start Block - начальный блoк области без плoхих блоков.
  • Solid Area - Number of Blocks - количество блоков в этой области.

c. Область размещения RBA.

  • RBA Area - Start Block - начальный блок таблицы RBA.
  • RBA Area - Number of Blocks - количество блоков в таблице RBA.

d. Размер фрейма ECC .

  • ECC Frame Size - параметр определяющий размер массива данных, в котором допускаются однобитные ошибки.

e. Допустимое количество ошибок .

  • Acceptable number of errors - параметр определяет количество однобитных ошибок, допустимых в массиве, размер, которого определяется параметром ECC Frame size.

Карта плохих блоков

Карта плохих блоков создается в подслое Invalid Block Map. Карта блоков представляется как непрерывный массив бит. Хорошие блоки представляются значением 0, плохие блоки - 1.

Например, значение 02h по нулевому адресу говорит о том, что 0,2,3,4,5,6,7 блоки являются хорошими, 1-ый блок является плохим. Значение 01h по первому адресу говорит о том, что только 8-ой блок является плохим из группы блоков 8..15.

Копирование NAND Flash

В качестве иллюстрации важности "зрячего" выбора режимов и параметров при программировании NAND Flash в программаторе, рассмотрим ситуацию, при которой у некоторых программистов возникают проблемы. Чаще всего, это замена NAND Flash в "устройстве", которое перестало работать. Стандартный подход - по аналогии с заменой обычной микросхемы памяти:

  1. Получить прошивку работающей микросхемы. Как правило, для этого считывается содержимое из микросхемы-оригинала.
  2. Прошить новую аналогичную микросхему.
  3. Сравнить содержание запрограммированной мс. с прошивкой "оригинала". Если сравнение прошло, микросхема - копия готова.

В случае, когда требуется программировать NAND Flash , не все так просто и однозначно.

  1. Прошивка Nand Flash , полученная при считывании программатором из "оригинала" - существенным образом зависит от установленных в программаторе режимов и параметров.
  2. Для того что бы корректно запрограммировать новую NAND Flash и получить полную копию, необходимо перед программированием установить в программаторе режимы и параметры соответствующие прошивке "оригинала". При этом, необходимо учитывать возможность существования плохих блоков.

Для получения микросхемы-копии, у которой прошивка NAND Flash идентична образцу, необходимо поступать следующим образом.

Подготовка к копированию.

Для копирования необходимы микросхема-оригинал и микросхема-копия (мс. в которую предполагается записать образ оригинала). Обязательные требования:

  1. Обе микросхемы NAND Flash и оригинал и копия должны быть одного типа.
  2. Микросхема-копия не должна иметь плохих блоков.

Чтобы определить, имеет ли микросхема-копия плохие блоки, необходимо установить микросхему в программатор, и в окне “Редактор параметров микросхемы” задать параметры микросхемы по умолчанию - кнопка "All Default".

Запускается процедура контроля на стертость (для экономии времени можно сразу же отменить эту процедуру, считывание карты плохих блоков осуществляется в самом начале). В окне "Программирование" интерфейса программатора, в поле “Информация об операциях” появляется информация о плохих блоках.


Копирование.

Перед копированием микросхемы NAND Flash в программаторе обязательно должны быть сделаны следующие настройки параметров в окне “Редактор параметров микросхемы”:

Invalid Block(IB) Management

Do NOT USE

Spare Area Usage

User Data

User Area – Number of Blocks

Максимальное значение блоков в микросхеме

В программатор устанавливается NAND Flash образец и считывается. Затем в программатор устанавливается микросхема-копия, стирается, записывается и сравнивается. В случае успешного прохождения всех трех процедур запрограммированная NAND Flash оказывается полной копией оригинала.

Структура памяти NAND Flash.

NAND Flash память * подразделяется на блоки (Block) памяти, которые в свою очередь делятся на страницы (Page). Страницы бывают большие (large page) и маленькие (small page). Размер страницы зависит от общего размера микросхемы. Для маленькой страницы обычно характерны микросхемы объемом от 128Kбит до 512Кбит. Микросхемы с большим размером страницы имеют объем от 256Кбит до 32Гбит и выше. Маленький размер страницы равен 512 байтам для микросхем с байтной организацией и 256 словам для микросхем со словной организаций шины данных. Большая страница имеет размер 2048 байт для байтных микросхем и 1024 для словных. В последнее время появляются микросхемы с еще большим размером страницы. Она уже составляет 4096 байт для байтных микросхем.

Структура памяти микросхем NAND Flash с малым размером страницы фирмы STMicroelectronics.

Структура памяти микросхем с большим размером страницы фирмы STMicroelectronics.

Плохие блоки NAND Flash

Характерной особенностью микросхем NAND Flash является наличие плохих (дефектных) блоков (Bad blocks) как в новых микросхемах, так и появление таких блоков в процессе эксплуатации. Для маркирования плохих блоков, а также для сохранения дополнительной служебной информации или кодов коррекции, в архитектуре NAND Flash в дополнении к каждой странице памяти данных предусмотрена добавочная область Spare area. Для микросхем с малой страницей эта область имеет размер 16 байт / 8 слов. Для микросхем с большой страницей - 64 байта / 32 слова.

Обычно производитель микросхем гарантирует количество плохих блоков, не превышающее определенного размера. Информация о плохих блоках поставляется производителем микросхем в определенном месте дополнительной области Spare Area.

Маркирование плохих блоков в микросхемах NAND Flash осуществляется записью обычно значения 0 по определенному адресу в области Spare Area нулевой страницы плохого блока. Маркеры плохих блоков лежат в определенных адресах области Spare Area.

Организация памяти

Адрес маркеров плохих блоков в Spare Area

Байтная организация, размер страницы - 512 байт.

Словная организация, размер страницы - 256 слов.

Байтная организация, размер страницы - 2048 байт и больше.

Словная организация, размер страницы - 1024 слов и больше.

Нужно иметь ввиду, что маркеры плохих блоков помещаются в обычные ячейки Flash памяти Spare Area, которые стираются при стирании всего блока памяти. Поэтому для сохранения информации о плохих блоках перед стиранием обязательно нужно сохранить эту информацию, а после стирания ее - восстановить.
В программаторах ChipProg при установке опции InvalidBlockManagement в любое значение кроме Do Not Use сохранение и восстановление информации о плохих блоках происходит автоматически.

Существует три наиболее распространенных способа обработки плохих блоков:

  1. Skip Bad Blocks (Пропуск плохих блоков. )
  2. Reserved Block Area (Резервирование блоков)
  3. Error Checking and Correction (Контроль и коррекция ошибок. )

1. Пропуск плохих блоков .

Алгоритм пропуска плохих блоков заключается в том, что при записи в микросхему анализируется в какой блок осуществляется запись. В случае наличия плохого блока, запись в этот блок не осуществляется, плохой блок пропускается, запись осуществляется в блок следующий после плохого.

2. Резервирование блоков.

В этом методе память всей микрохемы делится на три области: User Block Area (UBA) - пользовательская область, Block Reservoir - резервная область, следуемая сразу за пользовательской областью, и таблицу соответствия плохих блоков хорошим (Reserved Block Area - RBA).

Алгоритм замены плохих блоков в этом методе таков: при выявлении плохого блока из области UBA блок переносится в область Block Reservoir, при этом в таблице RBA делается соответствующая запись замены блока.

Формат таблицы RBA:

2 байта В области RBA находятся две таблицы в двух блоках. Таблица во втором блоке используется как резервная на случай, если информация в первой окажется недостоверной.

3. Контроль и коррекция ошибок .

Для увеличения достоверности данных могут использоваться алгоритмы контроля и коррекции ошибок (Error Checking and Correction - ECC). Эта дополнительная информация может помещаться в свободное пространство Spare Area.

*) Примечание: NAND ~ Not AND - в булевой математике обозначает отрицание «И»

Простой способ ускорить работу вашего компьютера - установка на него SSD накопителя. Про мы уже говорили в одной из предыдущих статей. Эти накопители бывают нескольких типов и я бы хотел сегодняшнюю статью посвятить именно этому. Первый - SATA твердотельный диск, обычно он бывает в форм-факторе 2,5" и является универсальным решением с очень хорошей скоростью и достаточно приемлемой ценой.

Он подходит для любого компьютера, практически для любого ноутбука (бывают исключения, как например модели SONY, где используется диск форм-фактора 1,8"). Далее по списку у нас идет PCI, особенно обратите внимание на SSD PCI 3.0 - они обладают просто сумасшедшей скоростью и вы можете быть удивлены той производительностью, которую получаете с такими накопителями.

Но, у них, как и у всего хорошего, есть одни минус - достаточно высокая цена, которая зачастую в 2, а то и в 3 раза выше, чем у обычных SSD SATA 2,5 дисков. Еще существуют mSATA (на картинке ниже), что является сокращением от «mini SATA», они чаще всего используются в ноутбуках, однако, по скорости такие накопители ничем не отличаются от обычных SATA 2, то есть это тоже самое, но в более маленьком форм-факторе.

Посмотрите - насколько меньше mSATA SSD диск (зеленая печатная плата сверху) по сравнению с обычным 2,5" жестким диском

Примечательно, что существуют SSD исключительно для Apple (они и тут остались обособленными «личностями»), и они стоят еще дороже, хотя по производительности ничем не отличаются от тех же самых PCI SSD. Скорость записи тут может составлять 700 Мб/с - что является шикарным показателем.

Если вы хотите купить SSD себе, то вам в любом случае придется выбирать между SATA и PCI версиями, и тут уже вопрос цены. Если вы проводите за своим компьютером очень много времени, то обязательно попробуйте PCI версию накопителя. Потому что он сам по себе идет в RAID-массиве (это когда 2 жестких диска соединяются в один, грубо говоря), в этом случае информация считывается сразу с двух устройств, что ускоряет работу системы ровно в 2 раза.

PCI SSD - устанавливается внутрь системного блока компьютера

То есть, к примеру, та же Windows устанавливается сразу на 2 флеш-накопителя (2 разных чипа) и считывается с них одновременно, что является поистине великолепным решением для увеличения производительности компьютера, однозначно рекомендую к покупке.

Если же вы просто хотите хоть как то ускорить свой старый компьютер, который, возможно, в скором времени планируете поменять на что-нибудь более производительное, или просто первый раз хотите попробовать твердотельный накопитель в работе - однозначно рекомендую взять всем привычный и проверенный временем SATA 2,5 SSD.

Исходя из устройства твердотельного жесткого диска (в нем нет вращающихся магнитных дсков, как в HDD, например), видно, что его скорость работы и вообще, сам факт его работы - напрямую зависят от двух параметров: модели контроллера и разновидности чипов NAND памяти . Причем, даже два разных накопителя могут содержать в себе один и тот же контроллер, но, при этом, скорость работы их будет отличаться (все зависит от прошивки). Контроллер условно делит всю память на ячейки, в которые потом будет записываться информация.

И вот тут-то как раз и заключаются фундаментальные отличия различных типов памяти SSD. То есть, не важно - какая модель памяти используется в самом накопителе, контроллер в любом случае должен сначала поделить ее на так называемые ячейки. А вот сколько бит информации помещается в одну ячейку - определяет как раз тип NAND памяти. В настоящее время применяется всего три разновидности: SLC, MLC, TLC (как разновидность MLC).

SLC

SLC (Single Level Cell) - позволяет сохранять в одну ячейку только 1 бит информации - ноль или единица. Это самый дорогой вид NAND-микросхем. Дороговизна определяется сложностью в производстве таких накопителей. Кроме цены, к недостаткам еще можно отнести низкую емкость - порядка 60 Гб, например.

Однако, такой накопитель будет быстрее и надежнее всех других, за счет того, что ячейка будет перезаписываться намного реже, что, как известно, существенно продлевает ресурс самого устройства. До 100 000 раз можно перезаписывать одну ячейку, по уверениям производителей. Кроме того, технология SLC обеспечивает наибольшую скорость чтения/записи информации, и такие накопители самые быстрые.

На данный момент рынок SLC-решений сформирован крайне слабо. До недавнего времени одним из известных таких накопителей был Intel X25-E, который имел емкость всего лишь 64 Гб. Стоил он порядка 20000 рублей - что крайне дорого, ведь за эти же самые деньги можно с легкостью купить SSD диск емкостью около 1 терабайта (1000 Гб), правда - с MLC памятью.

MLC

MLC (Multi-Level Cell) - многоуровневая ячейка, позволяет записывать сразу два бита информации, что теоретически снижает ее ресурс ровно вдвое. Однако, по факту ресурс MLC SSD диска еще ниже. Изначально накопители предлагали до 10000 циклов перезаписи, затем этот показатель упал до 5000, а затем стал таким, как указано в таблице.

Тем не менее, на сегодняшний день является самым распространенным типом памяти на рыке твердотельных накопителей . Моделей такого типа просто огромное количество, их емкость уже существенно выше, чем у SLC моделей, и может достигать до 1 Тб и даже выше. Кроме того, цена MLC-накопителей той же емкости будет существенно ниже, чем в случае с SLC. Как видно из таблицы, быстродействие MLC тоже несколько хуже.

Существует еще подвид MLC - eMLC (enterprise MLC), из достоинств: увеличенный срок службы чипов, за счет большего количества возможных циклов записи/перезаписи. Мало кто знает, но у компании Samsung, например, имеется уникальная технология под названием «3D V-NAND», которая позволяет разместить ячейки вертикально, значительно расширяя объем памяти без удорожания производства.

TLC

TLC (Triple Level Cell) - угадайте, сколько бит информации может хранить такая TLC-ячейка? Все правильно, целых три. То есть, как вы уже поняли, все эти сокращения говорят нам о плотности хранения информации в NAND-чипах. Получается, самая «экономная» память будет именно TLC. Похожие (TLC) чипы применяются во флешках, где срок службы (количество циклов перезаписи) не является столь важным параметром. Кроме того, технология TLC очень дешева в производстве.

Я бы порекомендовал использовать TLC - как жесткий диск (не путать с HDD диском) для установки на него игр, например. А что, скорость чтения с него будет в разы выше, чем даже у самого быстрого HDD, а стоимость TLC твердотельных накопителей самая низкая из всех, на сегодняшний день (но все равно дороже, чем HDD). А для установки ОС лучше использовать накопитель с MLC, так как она более надежная и долговечная, нежели TLC.

ONFi и Toggle Mode

Накопители (твердотельные диски) с MLC делятся на два вида в соответствии с используемым интерфейсом. Обе эти аббревиатуры обозначают не просто разные интерфейсы, но и объединения (альянсы) разных производителей флеш-памяти, выпускающейся по определенному стандарту. Например, Intel, Micron, Spectec, Hynix относятся к «ONFI». А Samsung, Toshiba, SanDisk - соответственно к «Toggle Mode».

Оба интерфейса бывают разных версий, версии определяют пропускную способность для каждого канала NAND. Кроме того, ONFI делится на асинхронный и синхронный, последний - обеспечивает быстродействие, но при этом нехило повышает цену девайса. Ну а асинхронный, соответственно - дешевле, но медленней. При прочих равных память Toggle Mode «на бумаге» выглядит несколько быстрее ONFi в операциях «последовательная запись» и «случайное чтение».

Как определить тип памяти SSD?

Попробовать узнать его программным путем можно, например, с помощью программы «SSD-Z». Ну а еще эту информацию можно поискать в обзорах накопителей, либо на специальных сайтах (чаще всего англоязычных) - сборниках характеристик моделей SSD.

NAND и NOR: что они такое, и с чем их едят

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

Итак, сокращения NOR и NAND обозначают тип логических элементов, используемых в данной единице флэш-памяти. NOR обозначает логический элемент ИЛИ-НЕ (NOT OR), а NAND - И-НЕ (NOT AND). Но, поскольку мне сейчас не хочется читать вам курс булевой алгебры и основ цифровой логики, которая вам, к тому же, и не нужна, остановимся лишь на результатах использования этих технологий.
Основная функция накопителей на флэш - хранить информацию. И отсюда вытекает первое различие: достигнутые сегодня плотности записи для технологии NAND превосходят достигнутые в NOR, причем разница измеряется в порядках. И требования хранения больших объемов и компактности однозначно определяют технологию используемой флэш-памяти. Впрочем, это не единственный критерий. Не менее важной является возможность выполнять в памяти записанный программный код, т.е. так называемая XIP Capability (XIP - eXecute In Place). Такая возможность существует у NOR-технологии и отсутствует у NAND. Так получается, что основным назначением памяти, произведенной по технологии NAND, является хранение данных, а по технологии NOR - хранение исполнимого программного кода и, в меньшей степени, данных (что обусловлено не только доступным малым объемом - чуть позже мы вернемся к этому).

Флэш-устройства делятся на части, которые называются блоками. Это необходимо делать для преодоления некоторых физических ограничений и из ценовых соображений. Запись в любом устройстве флэш определенного блока может быть произведена только если этот блок пуст или очищен. В большинстве случаев получается так, что операции записи должна предшествовать операция стирания. И если в NAND-устройствах операция стирания блока может быть произведена сразу, то в NOR-устройствах необходимо предварительно установить все байты блока в ноль. Нужно также сказать что типичное значение размера блока в NOR-устройствах составляет 64 или 128 Кб (8-32 Кб у NAND), что в сочетании с и так невысокими скоростями работы флэш приводит к тому, что операции записи со стиранием могут занимать до нескольких секунд. Это и является сдерживающим фактором применения NOR-флэша в качестве носителя данных. А применение его для хранения исполнимого кода возможно в том случае, если он устраивает в плане производительности - требования не должны быть высокими. Время стирания памяти NAND измеряется в миллисекундах и имеет первый порядок. А малый размер блока в случае неблагоприятных внешних условий гарантирует потерю минимального объема данных. Итак, подводя итог по этому абзацу: операции чтения NOR несколько быстрее NAND; операции же записи, наоборот, быстрее у NAND, причем значительно; благодаря малому размеру блока NAND в единицу времени нуждается в меньшем числе стираний (что, как мы увидим ниже, еще и способно продлить срок ее функционирования в устройстве), которые она проводит приблизительно на три порядка быстрее, чем NOR.

NOR-флэш является устройством памяти с произвольным доступом. Микросхемы NOR имеют интерфейс, позволяющий произвести адресацию и получить легкий доступ к каждому отдельному байту. Интерфейс ввода-вывода устройства памяти NAND значительно сложнее и меняется от устройства к устройству и от разработчика к разработчику. Одни и те же выводы (зачастую их 8) используются для передачи управляющих сигналов, адреса и данных. Кроме того, в NAND-флэше доступ осуществляют блоками обычно в 512 байт, т.е. за одно обращение считывается или записывается 512 байт. Доступ к каждому блоку произвольный, но, так как нет возможности обратиться к отдельному байту, память типа NAND не является в известном смысле памятью произвольного доступа. Выдача каждого байта из 512-байтного блока осуществляется на шину памяти последовательно, поэтому уместно говорить о последовательном доступе. Что и делают. Или о памяти со страничной организацией. Теперь становится понятней, почему NOR больше подходит для хранения и выполнения программ, а NAND - для хранения данных.
Схемотехнически ячейка памяти NAND организуется проще: она имеет меньший размер по сравнению с NOR, и это соответственно приводит к повышению плотности записи, уменьшению энергопотребления и стоимости производства.

Но у любой технологии не могут быть только положительные стороны. В этом смысле NAND тоже не исключение. Как и при эксплуатации любых накопителей, возможны случайные ошибки чтения и порча накопителя в целом. Для устройств памяти флэш-типа актуально говорить о безошибочном чтении, обработке плохих блоков и числе циклов чтения/записи. Явление ошибочного вычитывания битов (называется bit-flipping) больше характерно для NAND-памяти, чем для NOR. Вред от одного ошибочного бита определяется типом данных, к которым он принадлежит. Так, для мультимедийных данных это окажется несущественным, но подобная ошибка в программном коде или критически важных данных может привести к весьма трагическим результатам. Как я уже сказал, для NOR-памяти это явление менее характерно, а память на технологиях NAND нуждается в использовании какого-то дополнительного механизма обнаружения и коррекции ошибок.

Технологии производства NAND-памяти пока несовершенны, и изначально память содержит какое-то число неработающих элементов. Так как в NAND группа запоминающих ячеек объединяется в блок, то испорченная ячейка в блоке приводит к неработоспособности блока в целом, т.е. получается плохой блок. Поэтому появляется необходимость отслеживать состояние блоков и использовать только рабочие, что осуществить намного проще, чем произвести память, абсолютно не содержащую плохих страниц: такое производство оказывается очень дорогим (похожая ситуация была в свое время с LCD-панелями). По очевидным причинам этот вид дефектов не характерен для NOR.

Рабочий ресурс микросхем флэш выражается в минимально и максимально возможном числе циклов стирания каждого отдельного блока (а мы уже знаем, что каждая запись блока обязательно сопровождается его предварительным стиранием). Для памяти на технологиях NOR оно составляет 10.000 и 100.000 циклов соответственно, для NAND - 100.000 и 1.000.000 циклов. Все предельно просто, и комментировать нечего.
Использование NOR-памяти отличается сравнительной простотой. Она не нуждается в каких-либо дополнительных драйверах, а может быть просто установлена и использована. C NAND сложнее, так как разные производители используют разные интерфейсы, и для нее скорее всего понадобится драйвер. Впрочем, несмотря на то, что у NAND-памяти много преимуществ, вы не должны думать, что NOR - это вчерашний день. NOR-память сегодня находит применение в многочисленных устройствах, не нуждающихся в больших объемах и некритичных к производительности. NAND находит применение в тех областях, где бОльшая сложность по применению оправдывается большИми доступными объемами и производительностью.

По материалам компаний - производителей флэш
M-Systems, Samsung и др.



 

Пожалуйста, поделитесь этим материалом в социальных сетях, если он оказался полезен!