Для восстановления данных пользователя в рамках комплекса первоначально следует получить корректные дампы исходных микросхем (т.е. вычитать микросхемы памяти, оценить достоверность прочитанных данных и при необходимости перечитать их с верификацией).
В комплексе существует несколько автоматизированных режимов для получения конечных данных пользователя:
В методах исследования присутствует комплексный метод позволяющий выполнить все требуемые преобразования в автоматическом режиме.
Методы исследования и методы предварительной подготовки предназначены для одной цели, но при этом, методы исследования проверяют необходимость выполнения выбранного действия.
Кроме этого, использование методов исследования предполагает, что проверить что-либо с их помощью гораздо быстрее, чем найти что-либо в ручном режиме.
Методы предварительной подготовки содержат простейшие преобразования устраняющие то или иное перемешивание данных:
Дополнительные преобразования. Например, имеем две микросхемы и все преобразования до этого этапа велись в рамках каждой микросхемы независимо от другой – необходимо их каким-то образом объединить для использования методов анализа. Метод занимает продолжительное время, если один дамп – можно не проверять.
В рамках исследования если недостаточно данных для анализа – преобразование не будет выполнено и в лог будет выведено сообщение о том, что результат недостоверный.
В случае ручного режима работы рациональный порядок выполнения операций должен совпадать с порядком комплексного метода исследования.
В методах анализа реализован автоматический метод "автоопределение алгоритма" (все методы этой группы предназначены для имитации работы контроллера). Автоопределение алгоритма проходит в два этапа:
Далее более подробно рассмотрим порядок действий при устранении перемешивания данных связанного со схемо-технической организацией накопителя (методы исследования и предварительной подготовки).
В случае, когда восстанавливается флеш-накопитель с одной нестековой микросхемой памяти, пользователю могут потребоваться следующие преобразования:
Замечание. В том случае, если восстанавливаемый флеш-накопитель содержит одну микросхему памяти, "чередование через байт" можно не искать, т.к. такое перемешивание данных характерно только для накопителей с несколькими микросхемами (запись производится одновременно в несколько микросхем, за счет чего повышается скорость).
Преобразование сектора. В рамках комплекса стандартной является страница 528 байт (512 байт – пользовательские данные и 16 байт служебной информации). Существуют страницы размером 2112, 4224, 4304 и др.
Для их преобразования в комплекс включены одноименные методы предварительной подготовки (например, "преобразование 2112 в 528"). В рамках автоматических методов для преобразования страниц используется метод исследования "определение необходимости преобразования структуры сектора".
Например, если мы имеем страницу размером 2112 байт с внутренней структурой 512+16; 512+16; 512+16; 512+16, то преобразование сектора в этом случае не потребуется. Если же внутренняя структура такой страницы 512+512+512+512; 16+16+16+16 – будет произведено преобразование к виду 512+16; 512+16; 512+16; 512+16.
Инверсия. Для снижения износа микросхемы памяти в ряде случаев используется инверсия данных (среднестатистические данные содержат большее количество "0", а т.к. флеш-микросхема пишется нулями, то при инвертировании данных мы получим меньшее количество элементарных процессов изменения состояния ячеек). Причем, инвертироваться могут как данные пользователя – 512 байт, так и служебная информация - 16 байт.
Для определения наличия/отсутствия инверсии в ручном режиме может использоваться режим служебной информации, кнопка "инвертировать". Соответственно, для устранения инверсии, при ее обнаружении, может использоваться метод предварительной подготовки "побитовое инвертирование" (пользователь может задать какие данные должны инвертироваться – пользовательские и/или служебные).
Для определения и устранения (при необходимости) инверсии в автоматическом режиме используется метод исследования "определение наличия инверсии".
Внутренний Interleave.
Некоторые микросхемы памяти организованы в нескольких физических слоях (plane). Причем, четные блоки располагаются в одном слое, а нечетные в другом. Под многоплановыми операциями понимаются операции одновременной записи информации в несколько слоев микросхемы.
Внутренний Interleave – это перемешивание данных связанное с использованием многоплановых операций.
В настоящее время наибольшее распространение получили двух- и реже четырех-плановые операции. Двух-плановый Interleave в рамках одной микросхемы можно представить следующим образом.

Соответственно, процесс записи (или чтения) будет выглядеть следующим образом:

и т.д одновременно по странице в разные слои.
В рамках комплекса чтение микросхемы осуществляется последовательно. В результате, в прочитанном дампе будет присутствовать следующее перемешивание данных:
Чтобы устранить такое перемешивание данных необходимо выполнить разделение дампа через блок и их объединение через страницу микросхемы (не путать со стандартной страницей в рамках комплекса).
Замечание. В том случае, если микросхема поддерживает многоплановые операции, разработчик накопителя (контроллера) может и не использовать их.
Четырех-плановый Interleave в рамках одной микросхемы выглядит следующим образом.

Процесс записи в такую микросхему памяти будет производится по четыре страницы. Соответственно, при последовательном чтении, в прочитанном дампе будет присутствовать следующее перемешивание данных:
Чтобы устранить такое перемешивание данных необходимо выполнить следующие действия (в скобках приводится название в рамках комплекса):
В рамках комплекса устранение такого перемешивания данных с использованием комплексного метода исследования и графа преобразования будет выглядеть следующим образом:

В случае, когда восстанавливается флеш-накопитель с одной стековой микросхемой памяти, пользователю могут потребоваться следующие преобразования:
Первые три преобразования подробно рассмотрены выше.
Внешний Interleave. Существуют стековые микросхемы памяти - в одном корпусе присутствует несколько частей. Запись/чтение может осуществляться в одну часть микросхемы, определяемую адресом.
Внешний Interleave - перемешивание данных между различными частями одной микросхемы и разными микросхемами.
В случае одной стековой микросхемы, в большинстве случаев, заполнение микросхемы данными будет идти последовательно. Т.е. если микросхема содержит две части, то сначала заполнится первая часть, а затем начнется заполнение второй. Часть микросхемы выбирается с помощью старшего бита адреса блока и при последовательном формировании адресов, части будут заполняться последовательно.
Рассмотрим следующий пример: мы имеем одну стековую микросхему состоящую из двух частей, микросхема поддерживает двух-плановые операции, размер страницы 2112 байт в формате 4*512 + 4*16, размер блока 64 страницы. К двум последовательно прочитанным дампам (в рамках комплекса две части стековой микросхемы будут вычитаны в два дампа) для устранения перемешивания данных в этом случае следует выполнить следующие операции:
1) Преобразовать структуру сектора (с помощью метода предварительной подготовки "преобразование 2112 в 528" или метода исследования "определение необходимости преобразования структуры сектора").
2) Проверить и при необходимости устранить инверсию (с помощью метода предварительной подготовки "побитовое инвертирование" или метода исследования "определение наличия инверсии").
3) Устранить внутренний Interleave для каждой части микросхемы, для чего:
Эти же действия будут выполнены если воспользоваться методом исследования "определение наличия характерного Interleave";
4) Объединить последовательно дампы двух частей микросхемы, воспользовавшись методом предварительной подготовки "объединение по дампам" или методом исследования "определение параметров объединения результатов" (в данном случае как такового перемешивания данных между частями микросхемы нет - мы просто объединяем результаты).
Однако, существуют случаи, когда контроллер заполняет микросхему данными, чередуя ее части. В этом случае, последовательно считанный дамп может быть перемешан через страницу. Такая организация флеш-накопителя встречается гораздо реже.
Тем не менее, разработчики комплекса столкнулись с такой организацией, поэтому рассмотрим следующий пример: мы имеем одну стековую микросхему состоящую из двух частей, микросхема поддерживает двух-плановые операции, размер страницы 2112 байт в формате 4*(512+16), размер блока 64 страницы, инверсии нет. К двум последовательно прочитанным дампам для устранения перемешивания данных в этом случае следует выполнить следующие операции:
1) Устранить внутренний Interleave для каждой части микросхемы, для чего:
2) Устранить внешний Interleave для двух частей микросхемы, для чего следует объединить два дампа с устраненным внутренним перемешиванием через две страницы (т.к. был внутренний двух-плановый Interleave).
В рамках комплекса устранение такого перемешивания данных с использованием комплексного метода исследования и графа преобразования будет выглядеть следующим образом:

Для упрощения рассмотрим вариант, когда восстанавливаемый накопитель имеет две микросхемы флеш-памяти, а затем обобщим его на большее число.
В случае, когда восстанавливается флеш-накопитель с двумя нестековыми микросхемами памяти, пользователю могут потребоваться следующие преобразования:
Устранение чередования через байт. Для увеличения скорости в некоторых флеш-накопителях состоящих из нескольких микросхем и имеющие 16-ти разрядную шину данных реализуется разделение входных данных между микросхемами. Т.е. входные 16-ти разрядные данные делятся между 8-ми байтными буферами микросхем (страничными регистрами) и при их заполнении происходит одновременная запись в обе микросхемы. Таким образом, если последовательно считать две микросхемы с таким перемешиванием данных, то для восстановления исходного распределения потребуется объединить дампы через байт.
В рамках автоматических режимов комплекса для обнаружения и устранения такого рода перемешивания используется метод исследования "определение наличия чередования через байт".
Преобразование сектора, устранение инверсии и внутренний Interleave выполняются в рамках каждой микросхемы и описаны выше.
Внешний Interleave. В случае нестековых микросхем, внешний Interleave может представлять собой перемешивание данных между микросхемами через байт, через сектор (редко) и через страницу. Внешний Interleave используется производителями для увеличения скорости.
Т.о. "чередование через байт" является частным случаем внешнего Interleave, однако это перемешивание желательно устранить в первую очередь для того, чтобы выполнить "преобразование сектора". Кроме этого, если было обнаружено "чередование через байт", то другого перемешивания данных связанного с внешним Interleave быть не может. Верно и обратное утверждение, если чередования через байт не найдено, то возможно используется перемешивание между микросхемами через страницу (или несколько страниц если используется и внутренний Interleave). Наличие перемешивания через байт определяется в первую очередь разрядностью шины данных, т.е. если шина данных 16-ти разрядная - вероятнее всего будет реализовано чередование через байт, если шина данных 8-ми разрядная, то чередования через байт быть не может, но возможно перемешивание через страницу между микросхемами.
Пример. Мы имеем задачу с двумя нестековыми микросхемами памяти, в каждой микросхеме реализован четырех-плановый внутренний Interleave, инверсия, нестандартная страница и внешний Interleave.
В рамках комплекса решение такой задачи с использованием комплексного метода исследования и графа преобразования будет выглядеть следующим образом:

В данном случае чередование через байт обнаружено не было, поэтому первым преобразованием стало изменение формата страницы. Страница из вида 8*512 + 8*16 была преобразована к виду 8*(512+ 16). Кроме этого, из преобразования видно, что размер страницы равен восьми секторам по 528 байта. Далее была обнаружена и устранена инверсия.
После устранения инверсии, в рамках каждой микросхемы решается задача по устранению внутреннего четырех-планового Interleave (по аналогии с одной микросхемой). После данной операции мы опять имеем два дампа которые нам каким-то образом необходимо объединить.
В том случае, если бы производитель, не стал реализовывать внешний Interleave для увеличения скорости, то эти два результата можно было бы объединить последовательно. В нашем случае, внешний Interleave реализован, и т.к. это не чередование через байт, то остается проверить чередование через страницу. Т.к. внутри каждой микросхемы был реализован внутренний четырех-плановый Interleave, то для реализации внешнего потребовалось уже восемь страниц (производится одновременная запись восьми страниц - четыре траницы в каждую микросхему). Таким образом, объединение результатов мы производим через четыре страницы.
Замечание. Как упоминалось выше, в комплексе стандартной считается страница 528 байт, поэтому в пояснениях к результатам предварительной подготовки тоже используется этот размер страницы. Например, при устранении внутреннего Interleave, при разделении по блокам указан размер блока 1024. С учетом того, что мы знаем, что для этих микросхем исходная страница равнялась 8*512 + 8*16 и потом была преобразована к виду 8*(512+ 16), то размер блока равен 1024/8 = 128 страниц. Далее следовало объединение через страницу, но т.к. в исходной странице содержится 8 стандартных (528 байтных), то в пояснениях указан размер блока равный восьми. И т.д.
В случае стековых микросхем, порядок действий остается таким же как и в случае нестековых микросхем:
Внутренней Interleave в данном случае должен устраняться в пределах каждой стековой части микросхемы.
Внешний Interleave в случае двух стековых микросхем выглядит как одновременная запись двух страниц в одинаковые стековые части двух микросхем (если присутствует внутренний Interleave, то 4-х или 8-ми страниц, соответственно для двух- и четырех-планового Interleave).

Если не используется внутренний Interleave, то устранение внешнего перемешивания для такого случая будет представлять собой следующие действия: