Флешпам'ять

Матеріал з Вікіпедії — вільної енциклопедії.
(Перенаправлено з Флеш-пам'ять)
Перейти до навігації Перейти до пошуку
Типовий приклад флешпам'яті

Флешпа́м'ять — це тип довготривалої комп'ютерної пам'яті, вміст якої можна видалити чи перепрограмувати електричним методом.

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

Приклади її застосування найрізноманітніші: від цифрових аудіоплеєрів, камер до мобільних телефонів і КПК. Флешпам'ять також використовується в USB-флешдисках («пальчикового» або «переносного диска»), які зазвичай використовуються для збереження та пересилання даних між двома комп'ютерами. Деяку популярність вона отримала в геймерському світі, де часто використовували EEPROM або залежну від живлення SDRAM пам'ять для збереження інформації щодо прогресу гри.[джерело?]

Огляд[ред. | ред. код]

Флешпам'ять — це один з типів пам'яті, яка може на довготривалий час зберігати певну інформацію, зовсім не використовуючи живлення. Крім цього, флешпам'ять має високу швидкість доступу до даних (хоча вона не настільки висока як у DRAM), кращий опір до зовнішніх впливів (кінетичний шок, вібрація, температура) та менше енергоспоживання, ніж у жорстких дисків. Ці характеристики пояснюють популярність флешпам'яті для приладів, що залежать від батарейного живлення. Носії пам'яті, виконані з використанням флешпам'яті (наприклад, карти пам'яті), набагато краще переносять зовнішні впливи та мають менший фізичний розмір, ніж інші носії даних (жорсткі диски, CD-ROM, DVD-ROM, магнітні стрічки).

Принцип дії[ред. | ред. код]

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

У флешпам'яті типу NOR кожна комірка схожа на стандартний MOSFET (оксидний напівпровідниковий польовий транзистор), але у ній є не один затвор, а два. Як і будь-який інший польовий транзистор, вони мають контрольний затвор (КЗ), а, окрім нього, ще й інший — плавний (ПЗ), замкнений всередині оксидного шару. ПЗ розташований між КЗ і підкладкою. Оскільки ПЗ відокремлений власним заізольованим шаром оксиду, будь-які електрони, що попадають на нього відразу потрапляють в пастку, що дозволяє зберігати інформацію. Захоплені плавним затвором електрони змінюють (практично компенсують) електричне поле контрольного затвора, що змінює порогову напругу (Vп) затвору. Коли з комірки «зчитують» інформацію, до КЗ прикладають певну напругу, в залежності від якої в каналі транзистора протікатиме або не протікатиме електричний струм. Ця напруга залежить від Vп комірки, яка, своєю чергою, контролюється числом захоплених плавним затвором електронів. Величина порогової напруги зчитується і перекодовується в одиницю або нуль. Якщо плавний затвор може мати кілька зарядових станів, то зчитування відбувається за допомогою вимірювання сили струму в каналі транзистора.

Для запису інформації в «комірку» NOR необхідно зарядити плавний затвор. Цього досягають за допомогою тунельного ефекту, пропускаючи через канал транзистора порівняно високий струм, та подаючи на контрольний затвор підвищену напругу. При цьому виникають гарячі електрони, що мають достатню енергію для подолання оксидного шару та потрапляння на ізольований затвор.

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

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

NAND-пам'ять використовує тунельну інжекцію для запису і тунельний випуск для вилучення. NAND'ова флешпам'ять формує ядро легкого USB-інтерфейсу запам'ятовувальних приладів, які також відомі як USB-флешки.

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

Історія[ред. | ред. код]

Флешпам'ять (обидва типи — NOR та NAND) була винайдена доктором Фуджіо Масуока, коли він працював на компанію Toshiba у 1984 р. Якщо вірити Toshiba, назва «Флеш» прийшла на думку колезі доктора Масуока — містеру Шої Аріїзумі, оскільки процеси видалення вмісту пам'яті нагадували йому спалах фотокамери (англ. flash). Доктор Масуока репрезентував винахід у 1984 році на зустрічі про Міжнародні Електронні Прилади (IEDM), яка відбулася в місті Сан-Хосе, Каліфорнія. Intel побачив високий потенціал цього винаходу і випустив перший комерційний чип NOR флешпам'яті у 1988 році.

Пам'ять, що базується на NOR має довготривалі цикли запису-видалення інформації, проте повноцінний адресний/інформаційний інтерфейс, який дає довільний доступ до будь-якої локації. Це робить його ідеальним для збереження бінарного програмного коду, який не потрібно часто оновлювати. Прикладом є комп'ютерний BIOS або програмне забезпечення різноманітних приладів. Цей інтерфейс витримує від 10 000 до 1 000 000 циклів вилучення інформації. Цей тип пам'яті став базою найперших переносних медіа; CompactFlash з самого початку базувався на ньому, хоча потім перейшов на дешевший варіант — NAND пам'ять.

NAND-флешпам'ять, яку Toshiba представила на ISSCC у 1989 році стала наступною. У ній швидше проходять цикли видалення-запису, вона має більшу внутрішню мережу, меншу ціну, і в 10 раз міцніша за свого попередника. Проте її інтерфейс вводу/виводу надає лише послідовний доступ до інформації. Саме тому її можна використовувати для пристроїв запису масової інформації, таких, як PC карточки, різні карти пам'яті і, в дещо меншій мірі, для комп'ютерної пам'яті. Перша картка, що базувалась на форматі NAND була SmartMedia, а після неї з'явились: Multimedia Card, Secure Digital, Memory Stick та xD-Picture карти пам'яті. Нове покоління цих форматів стає реальністю з RS-MMC, мікро та miniSD варіанти Secure Digital і нова USB-карта-пам'яті Intelligent Stick. Нові формати поставляються в значно зменшених розмірах, зазвичай менше, ніж 4 см2.

Обмеження[ред. | ред. код]

Одним обмеженням флешпам'яті є те, що хоча вона і може читати чи запрограмувати одиницю інформації типу байт чи word за один відрізок часу у вибірковому методі доступу, вона також повинна очистити «блок» за той самий час. Стандартно всі біти при такій операції в блоці замінюються на 1. Діючи вже із чистим блоком будь-яке місце в межах блоку може бути запрограмоване. Проте як тільки біт стане рівним 0, лише видалення всього блоку змусить його повернутись в положення 1. Іншими словами, флешпам'ять (особливо флеш NOR) пропонує вибірковий метод читання і програмування операцій, Але не може дозволити вибірковий метод перезапису чи видалення. Хоча місце в пам'яті може бути переписаним до того часу, поки нові значення нульових бітів є надмножиною перезаписаних значень. Наприклад, число, яке складається з чотирьох бітів може бути очищене до 1111 , тоді записане як 1110. Успішний запис до цього числа може змінити його на 1010, тоді на 0010, і нарешті на 0000. Хоча структура інформації у флешпам'яті не може бути оновлена в кардинально простими шляхами, вона дозволяє «видаляти» її члени, позначаючи їх невірними. Ця техніка повинна бути дещо вдосконалена для багаторівневих приладів, де одна комірка пам'яті тримає більш ніж 1 біт.

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

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

Доступ на низькому рівні[ред. | ред. код]

Низькорівневий доступ до фізичної флешпам'яті драйвером даного приладу відрізняється від доступу до інших типів пам'яті. Де звична RAM-пам'ять просто буде відповідати на запити читання та запису інформації та повертати результат цих операцій в ту ж мить, там флешпам'ять потребує додаткового часу, особливо коли використовується програмна пам'ять на кшталт ROM'а.

Коли зчитування даних може бути здійснене на індивідуальних адресах пам'яті NOR (але не NAND), операції розблокування (яка робить дії запису і видалення доступними), видалення і запису виконуються не однаково на різних видах флешпам'яті. Типовий розмір блоку становить 64, 128 або 256 Кб.

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

Пам'ять типу NOR[ред. | ред. код]

Режим читання NOR-пам'яті схожий до зчитування зі звичайної пам'яті, забезпечені адреси та шина даних вірно прив'язані, тому пам'яті типу NOR виглядають майже так само, як і будь-яка залежна від адреси пам'ять. Флешпам'ять NOR може бути використана як пам'ять типу XIP (execute-in-place), а це означає що вона поводиться як ROM-пам'ять, прив'язуючись до конкретних адрес. Флешпам'ять NOR немає впорядкування внутрішніх поганих блоків, тому коли флеш-блок втрачає свою внутрішню структуру, тоді або програма, яка використовує його повинна вчинити деякі дії, або прилад зупиняє роботу.

Розблоковуючи, видаляючи чи записуючи на NOR пам'ять спеціальні команди записуються на першу сторінку прив'язаної пам'яті. Ці команди визначають Загальний Стандартний інтерфейс (CFI), заснований Intel'ом, і флеш-область представить список всіх доступних команд фізичного драйвера.

Крім використання в ролі оперативної пам'яті, NOR пам'яті можуть, звичайно, також бути розділені файловою системою і тоді використовуватись у будь-якому приладі. Проте файлові системи NOR зазвичай дуже повільні при записі, якщо порівнювати із файловими системами, які побудовані на NAND пам'яті.

Пам'ять типу NAND[ред. | ред. код]

NAND флешпам'яті не можуть забезпечити принцип «миттєвий запис» (XIP) через інші конструкційні принципи. Доступ до цієї пам'яті може бути здійснений методом блокових приладів, таких як вінчестери та карти пам'яті. Розмір блоків зазвичай має 512 або 2048 байт. В кожному блоці зарезервовано деяку кількість байт (зазвичай від 12 до 16), які зберігають різноманітні помилки і контрольну суму блоку.

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

Методи виправлення помилок та визначення контрольної суми зазвичай виявляють помилку, де один біт інформації в блоці невірний. Коли це трапляється, блок позначається як поганий в таблиці логічного розміщення, і його вміст (ще непошкоджений) копіюється у новий блок, а таблиця логічного розміщення знову змінюється. Якщо у пам'яті пошкоджено більш ніж 1 блок, тоді вміст блоку практично втрачений, тобто стає неможливо відновити оригінальний вміст. Деякі прилади можуть навіть постачатись в комплекті з вже запрограмованою таблицею поганих блоків від виробника, оскільки деколи просто неможливо виробити безпомилкові пам'яті типу NAND.

Перший, вільний від помилок фізичний блок (блок № 0) завжди гарантує свою прочитність, і не може бути пошкодженим. З цього випливає, що всі життєво важливі вказівники для розподілення пам'яті та впорядкування поганих блоків приладу повинні бути розміщені всередині цього блоку (зазвичай вказівник на погані таблиці блоків, і т. д.). Якщо прилад використовується, щоб завантажувати ОС, цей блок повинен містити Таблицю завантаження (Master Boot Record).

Коли запускати програмне забезпечення з пам'яті NAND, використовується стратегія віртуальної пам'яті: вміст пам'яті спочатку нумерується, або просто копіюється в розподілену пам'ять RAM, а тоді вже звідти виконується.

З цієї причини деякі системи будуть використовувати комбінації пам'ятей NOR та NAND, де менша NOR пам'ять використовуватиметься як програмний ROM, а більша NAND пам'ять розбивається на розділи файловою системою, щоб зберігати різну інформацію.

Об'єм[ред. | ред. код]

Стандартні частини флешпам'яті (індивідуальні внутрішні компоненти, або «чипи») дуже сильно відрізняються в об'ємі інформації, від кібіта до гікабітів кожна. Чипи часто з'єднують в один, щоб досягнути вищих місткостей для використання в таких приладах як iPod nano або SanDisk Sansa e200. Місткість флеш чипів дотримується закону Мура, оскільки вони розроблені тими самими процесами, що використовуються й для вироблення інших інтегрованих циклів. Проте в даній технології були також стрибки поза законом Мура через різні інновації.

У 2005 році Toshiba та SanDisk розробили флеш чип типу NAND, який міг містити 8 гібібітів інформації, використовуючи технологію MLC (багаторівневі комірки), яка зберігала 2 біти інформації в одній комірці. У вересні 2005 року компанія Samsung Electronics анонсувала, що вона розробила перший у світі 16 гібібітний чип.

У березні 2006 року Samsung анонсує флеш вінчестери з місткістю у 32 гібібіти, по суті з таким самим розміром, як і в найменших вінчестерах ноутбуків. А у вересні 2006 року, Samsung анонсувала результат виготовлення 32 гібібітних чипів, розміром в 40 нм. [1]

Для деяких продуктів флешпам'яті, таких як карти пам'яті та USB пам'ять, на середину 2006 року 256Мб-тові і продукти меншої місткості сильно знецінились. Місткість 1Гб стала звичною для людей, які не використовують флешпам'ять екстенсивно, але все більше і більше клієнтів закуповуються 2-ма та 4-ма Гігабайтними флеш приладами. Hitachi має конкурентоспроможний механізм вінчестера (називається Microdrive), який може поміститись всередині оболонки звичайної карточки CompactFlash. Його місткість — до 8Гб. BiTMicro пропонує 155 Гігабайтний, товщиною у 3,5 дюйми, твердий диск, названий «Edisk»'ом.

На всесвітній виставці CES 2013 компанія Kingston Digital представила флеш-накопичувач під назвою DataTraveler HyperX Predator об'єм якої складає 1Тб, що на той час було абсолютним рекордом. Дана флешка сертифікована на новому стандарті SuperSpeed USB 3.0, що дозволяє передавати дані на швидкості до 10Gbps.

Швидкість[ред. | ред. код]

Флешпам'ять доступна у декількох швидкостях. Деякі визначають швидкість приблизно в 2 Мб/с, 12 Мб/с, і т. д. Проте інші карточки просто мають рейтинг 100×, 130×, 200×, і т. д. Для таких карток за 1× беруть швидкість 150 Кб/с. Це була швидкість, якою могли передавати інформацію перші CD прилади, і її запозичили флешкартки пам'яті. Хоча коли порівнювати 100× карточку до карточки, яка передає зі швидкістю в 12 Мб/с використовують такі перетворення:

  • 150 КБ × 100 = 15 000 Кб/с

Щоб перетворити Кб в Мб, ділимо на 1024:

  • 15 000Кб ÷ 1024 = 14,65 Мб/с

Хоча насправді 100x картки на 2.65 Мб/с швидші, ніж картки, які вимірюються у швидкості в 12 Мб/с.

Пошкодження інформації та її відновлення[ред. | ред. код]

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

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

Виробники флешпам'яті[ред. | ред. код]

Див. також[ред. | ред. код]