Флеш-пам'ять та її використання Носачов

Матеріал з Вікі ЦДУ
Перейти до: навігація, пошук
1304.jpg

Флеш-пам'ять в сучасних кишенькових комп'ютерах використовується для вирішення двох основних завдань. По-перше, для збереження програмних модулів ОС, по-друге, вона використовується в якості зовнішнього накопичувача даних. У ранніх моделях КПК, як правило, застосовувалися звичайні модулі ПЗУ, в яких розміщувалася операційна система і часто прикладне ПЗ. Такий підхід забезпечував значне здешевлення і підвищення надійності, у випадку яких-небудь програмних збоїв користувачеві досить провести процедуру повного очищення пам'яті, щоб отримати чисту і гарантовано працездатну систему. Розширенню використання флеш-пам'яті в ролі системного носія ми зобов'язані передусім Microsoft, точніше, горезвісному якості її програмних продуктів.

Як приклад, можна навести апарати класу Psion Series 5mx, де ОС була записана в ПЗУ. Ці КПК функціонували під управлінням операційної системи EPOC, виключно стабільної і швидкої системи, далекий нащадок якої, ОС Symbian, сьогодні працюємо в смартфонах і комунікаторах. У зв'язку з необхідністю зберігати системні програмні компоненти в пам'яті, яку свідомо складно оновити (фактично єдиний вихід - фізична заміна мікросхем пам'яті), ця система була доведена розробниками практично до досконалості (історію її створення можна знайти, наприклад, на Web-сайті history.handy . ru). Аналогічна картина довгий час спостерігалася і в КПК на базі Palm OS.

У випадку ж з Windows РЄ, яка на перших порах була далека від досконалості, ця проблема особливо загострилася. Деякий час в якості її вирішення застосовувалися різного роду програмні «заплатки», але ця практика не прижилася у зв'язку з тим, що постійно «висять» програмні модулі займали самий дорогоцінний ресурс КПК - пам'ять (не кажучи про те, що у разі жорсткого скидання доводилося наново встановлювати всі оновлення). У підсумку всі сучасні КПК перейшли на перезаписувану пам'ять навіть для зберігання такого, порівняно рідко мінливого виду ПЗ, як системне. Примітно, що роль першопрохідця в цьому напрямку належить все тій же HP iPAQ (у той час ще носила марку Compaq).

Друге застосування флеш-пам'яті - використання в ролі зовнішніх накопичувачів. Навряд чи хтось з читачів потребує коментарів з цього питання. Зазначимо тільки, що в сучасних моделях КПК досить часто є ще один вид пам'яті для зберігання даних (іноді така можливість отримує гучне маркетингова назва, скажімо iPAQ Filestore). З технічної точки зору реалізація тривіальна: програмними засобами в невикористаної області ППЗУ виділяється область для збереження інформації, яка для користувача виглядає як звичайний, хоча і не змінний, флеш-накопичувач. Програмні модулі ОС зазвичай не повністю займають ППЗУ, так що все, що тут потрібно, - акуратне програмування відповідних драйверів (бували й помилки, наприклад, сумно відома проблема HP iPAQ h1930/h1940, коли при переповненні користувацької області затиралися системні модулі). Ємність такого «диска» відрізняється від моделі до моделі і складає від 1-1,5 до 80-128 Мбайт.

Флеш-пам'ять як така - різновид твердотільної напівпровідникової енергонезалежної перезаписувати пам'яті. В даний час випускається два основних типи флеш-пам'яті: NOR (логіка осередків NOT OR) і NAND (логіка осередків NOT AND). Також існує пам'ять типу AND (І), але вона не набула поширення серед виробників КПК. Специфічних різновидів зі звучними торговими назвами, безумовно, більше, але всі вони в підсумку зводяться до цих двох типів. Як елементарних осередків зберігання інформації використовуються польові двухзатвор-ні транзистори з плаваючим затвором.

Не заглиблюючись в історію розвитку технологій твердотільної пам'яті, розглянемо основні типи флеш-пам'яті. На відміну від інших типів твердотільних накопичувачів в модулях флеш-пам'яті для зберігання даних використовується один або два транзистори (в інших типах це зазвичай конструкція з декількох транзисторів і конденсатора). Ідея зберігання даних заснована на тому, що такий транзистор здатний зберігати заряд, відповідно дозволяючи визначити його наявність. При записі заряд розміщується на плаваючий затвор (або за допомогою перенесення електронів або з використанням квантово-механічних ефектів тунелювання - це залежить від типу пам'яті).

При наявності заряду на плаваючому затворі характеристики транзистора змінюються таким чином, що при звичайному для операції читання напрузі струмопровідного каналу не виникає. Відповідно зі зміни вольтамперних характеристик транзистора можна зробити висновок про наявність чи відсутність заряду. Іншими словами, використовувати його для кодування бітів інформації.

Слово «флеш» у назві пам'яті виникло завдяки тому, що операція запису вимагає подачі на стік і керуючий затвор високої напруги (звідси flash, «блискавка»). Електрони з енергією, достатньою для подолання потенційного бар'єру, створюваного плівкою діелектрика, переносяться на плаваючий затвор, тим самим змінюючи вольт-амперні характеристики транзистора. Диалогично, при стиранні висока напруга подається на джерело.

Різна організація логічних схем роботи пам'яті дала назви основним її типами, крім того, якщо NOR вимагає контакту на кожному транзисторі, то в NAND є контактна матриця.

Завдяки тому що ця схема дозволяє визначити не тільки наявність або відсутність заряду в комірці, а також допускає вимір його величини, з'являється можливість зберігання двох біт інформації в одному транзисторі (багаторівневі комірки, multilevel cell, MLC), саме на цьому принципі побудована, наприклад, пам'ять Intel StrataFlash. Теоретично можливо зберігання і трьох і більше бітів (відомо, що в лабораторних умовах реалізовані зразки, що зберігають до 8 біт), але на практиці виготовлення таких мікросхем пов'язане з рядом технологічних складнощів. Крім того, хоча такий підхід дає можливість знизити питому вартість зберігання даних, він вимагає ускладнення контролерів і пам'яті.

Нескладно здогадатися, що процедури запису-стирання викликають знос осередки флеш-пам'яті, саме тому у таких мікросхем обмежений ресурс циклів перезапису. Він досить значний (близько мільйонів циклів), до того ж завдяки деякому «інтелекту» контролерів флеш-пам'яті вдається мінімізувати його шкідливу дію. Але тим не менше цілком очевидно, що розміщувати на флеш-накопичувачі мобільного пристрою область інтенсивно перезаписуваних даних (наприклад, swap-розділ мобільного Linux), зрозуміло, буде невдалою ідеєю.

Пам'ять типу NOR забезпечує можливість довільного читання-запису даних (аж до окремих байтів) і швидке зчитування, але при цьому відносно повільні схеми запису і стирання. Крім того, така пам'ять має досить великі осередки (до кожної необхідно підвести контакт), що викликає закономірні складність виготовлення та підвищення ємності. Цей тип пам'яті забезпечує можливість «виконання-по-місцю» (Execute-ln-Place, XIP). Цей тип пам'яті в основному застосовується для зберігання програмного коду.

Пам'ять типу NAND забезпечує блоковий доступ, швидкі процедури стирання і запису, дешевизну і простоту нарощування ємності модулів. Дані на флеш-пам'яті NAND зчитуються поблочно. Розмір одиничного блоку варіюється від 256 байт до 256 Кбайт, практично всі сучасні мікросхеми дозволяють працювати з блоками різного розміру. Ця схема накладає як обмеження, так і надає деякі переваги. Ця схема значно знижує швидкість запису невеликих обсягів даних у довільні області пам'яті, але в той же час і збільшує швидкодію при послідовній запису великих масивів даних. Завдяки блокової організації флеш-пам'яті NAND вона дешевша зіставною за ємності пам'яті інших типів.

Необхідно відзначити також, що існують гібридні рішення, в одному корпусі об'єднують ряд різних типів пам'яті. Таким чином, наприклад, вдається забезпечити старт програмних модулів, що запускаються з блоку пам'яті NOR і потім завантажують основну ОС з мікросхем NAND.