Лабораторна робота №5 Тема: “Модулі оперативної пам’яті. Контроль та корекція помилок.” Мета роботи: “Ознайомитись різновидами побудови мікросхем пам’яті, типами модулів оперативної пам’яті та параметрами, що їх характеризують”. Додатковий теоретичний матеріал: 1. Модулі оперативної пам'яті В найперші персональні комп'ютери оперативну пам'ять припаювали або встановлювали безпосередньо чіпами. Зрозуміло, такий підхід має ряд недоліків. По-перше, встановлення безлічі чіпів пам'яті на материнську плату є неефективним з погляду використовування вільного місця; по-друге, кожний встановлюваний чіп містить багато гнучких контактів, таким чином зменшується надійність роботи комп’ютера, оскільки відсутність контакту хоча б в одного чіпа приводить до непрацездатності всієї системи. Згодом чіпи пам'яті стали розміщувати на модулях пам'яті: маленьких платах з контактними майданчиками, які встановлювалися в материнську плату у спеціальні роз'єми. Модулі допомагають розв'язати обидві описані вище проблеми: вони встановлюються в материнську плату вертикально, що дозволяє розв'язати проблему вільного місця, по-друге, між модулем пам'яті і роз'ємом є надійний електричний контакт. Найпершим модулем, який використовувався в PC, був так званий модуль SIMM 30pin (Single Inline Memory Module, Модуль Пам'яті з Одностороннім Розташуванням контактів, мав 30 контактних майданчиків). Розглянувши такий модуль, можна помітити, що контактні майданчики розташовані у модуля з обох сторін, але із зворотної сторони модуля за рахунок внутрішньої металізації контактних майданчиків відбувається їх дублювання, тобто все ж таки у модуля одностороннє розташування контактів різного призначення. Які характеристики модуля? А як взагалі можна характеризувати модуль, якщо всі його параметри, такі як тип і об'єм пам'яті, швидкодія, залежать в першу чергу від припаяних на модуль чіпів? Але є принаймні один параметр, який характеризує саме модуль. Цей параметр – розрядність модуля, тобто ширина шини по якій передаються біти даних. Тобто, модулі один від одного в першу чергу відрізняються розрядністю. Розрядність модуля SIMM 30 pin складає 8 біт (насправді 9 біт, але останній, дев'ятий біт використовується для передачі так званих даних парності, про це пізніше). Модуль SIMM 30 pin (іноді ще називають: короткий SIMM) використовувався в 286, 386 і 486 системах. Розглянемо застосування модуля SIMM на прикладі 386 системи. Ширина шини даних 386 процесора складає 32 біти. Чи можна в такій системі як оперативну пам'ять використовувати 1 SIMM 30 pin? Уявіть собі: процесор використовує для зв'язку з пам'яттю шину, в якій дані передаються по 32 провідниках. Чи працюватиме система, якщо з цих провідників задіяти тільки 8? Зрозуміло, ні! Природно, що в системі повинна використовуватися 32-бітова пам'ять, а інакше процесор не зможе з нею співпрацювати. Але як реалізувати 32-бітову пам'ять, якщо у Вашому розпорядженні тільки 8-бітові модулі? Для цього потрібно використовувати декілька модулів одночасно! Фактично, мінімальною одиницею оперативної пам'яті системи можна вважати сукупність модулів пам'яті, повністю "закриваючих" шину даних між оперативною пам'яттю та процесором. В 386 системі при використанні SIMM 30 pin (шириною 8 біт кожний модуль) потрібно одночасно використовувати кратну чотирьом кількість модулів для того, щоб забезпечити працездатність системи. Тому на материнських платах тих часів кількість роз'ємів під короткі SIMM була завжди кратною чотирьом: 4 або 8 штук. Сукупність модулів пам’яті, що повністю перекривають ширину шини даних між оперативною пам'яттю та центральним процесором, називається банком пам'яті. Таким чином, оперативна пам'ять завжди встановлюється тільки банками, і хоча б один банк повинен бути встановлений. Незручності використання SIMM 30 pin в системах 386 і 486 є цілком очевидною, адже один банк пам'яті складається з чотирьох модулів. Тому був розроблений новий тип модуля – SIMM 72 pin. Такий модуль, як зрозуміло з назви, так само мав контакти, розташовані з одного боку модуля (Single Inline) і кількість контактних майданчиків, що при цьому збільшилася до 72, дозволила зробити ширину шини даних модуля 32 біти (насправді 36 біт, інші знову для даних парності). Отже, в 486 системах, у яких ширина шини даних між процесором та оперативною пам'яттю складає 32 біти, банком пам'яті є один модуль пам'яті SIMM 72 pin. Таким чином, в 486 системах можна встановлювати або по чотири SIMM 30pin, або по одному 72 pin SIMM. З появою процесора Pentium, в якого ширина шини даних збільшена до 64 біт, знову виникає ситуація, коли банк не рівний одному модулю. В Pentium-системи пам'ять при використанні SIMM 72pin необхідно було встановлювати парами. Для вирішення цієї проблеми, а точніше для застосування нового типу пам’яті SDRAM, був розроблений новий тип модуля DIMM 168 pin (Dual Inline Memory Module). У цього модуля 168 контактних майданчиків, розташованих по обох сторонах модуля, по 84 з кожної сторони. Модуль DIMM 168 pin є 64-бітовим, і використовування єдиного модуля DIMM дозволяє закрити шину пам'ять - процесор для процесора Pentium, як, втім, і для будь-якого сучасного процесора. Таким чином, в сучасну систему можна вставляти модулі DIMM 168 pin поодинці або 72pin SIMM парами. 30 pin SIMM вже давно не використовуються, довгі ж SIMM сьогодні застосовуються украй рідко. Тип модуля, що часто використовується, сьогодні - модуль DIMM. Звертаю Вашу увагу на те, що потрібно дуже чітко розрізняти і не змішувати типи пам'яті (DRAM, FPM, EDO, SDRAM etc) і модулі пам'яті (SIMM30, SIMM72, DIMM168). На даний час в ПК використовують модифіковану пам'ять типу DDR SDRAM або DDR2 SDRAM, що встановлюється на модулі DIMM, які мають 184 та 240 контактів. Модулі такого типу володіють підвищеною ШПД завдяки використанню технології DDR – повоєнній передачі даних за один такт. Тепер ми докладніше зупинимося на особливостях розглянутих нами модулів пам'яті. І в першу чергу слід звернути увагу на так звані ключі. Під ключем на модулі пам'яті розуміють виріз в модулі, який в поєднанні з відповідним виступом в роз'ємі, в який модуль встановлюється, виконує одну з двох (або обидві) функцій: * не дозволяє встановити симетричний модуль пам'яті "навпаки"; * запобігає використовуванню в системі модуля, що не відповідає параметрам системи (скажімо, по робочій напрузі). Розглянемо детальніше типи ключів, що застосовуються в SIMM і DIMM: * SIMM 30 має виріз із сторони 1-го контакту і слугує для правильної орієнтації модуля. * SIMM 72– аналогічний виріз з боку 1-го контакту, а також виріз посередині між 36-м і 37-м контактами. * DIMM 168 – 2 вирізи "всередині гребінки" - між 10 і 11 та між 40 і 41 контактами. Ці вирізи можуть бути злегка зміщений по горизонталі, цей зсув вказує на буферизацію і напругу живлення. Найцікавішим представляється розглянути модуль DIMM, оскільки саме для нього можливі різні положення ключів. Як вже наголошувалося, модуль має 2 ключі. Один з них знаходиться майже посередині модуля, інший – ближче до 1-го контакту. Припустимо, що ви тримаєте DIMM перед собою контактами вниз і 1-й пін знаходиться зліва, тоді лівий ключ (ближче до краю) відповідає за буферизацію, а середній – за напругу. Якщо придивитися до проміжків в контактній лінійці, в яких розташовані ключі, то видно, що їх ширина приблизно втричі більше ширини ключа. Кожний ключ, таким чином, має 3 позиції (реально використовуються 2) – середня, а також права і ліва. * Середній ключ в лівій позиції відповідає 5В модулю, в середній - 3.3В. Що таке буферизуючий модуль? Для чого потрібна буферизація? Як нам вже відомо, в мікросхемах DRAM елементом, в якому зберігається інформація, є конденсатор. Як наслідок, одночасно з інформаційною ємністю модулів пам'яті зростає і ємність електрична. Тим, хто знайомий з теорією електричних ланцюгів, відомо також, що постійна часу (грубо кажучи, час зарядки) конденсатора прямопропорційна ємності. В результаті, у міру зростання ємності модулів пам'яті їм потребується все більше часу, щоб сприйняти сигнал від контролера. Відповідно, якщо нарощувати ємність модулів пам'яті при існуючому контролері, рано чи пізно "запізнювання" модуля досягне такого значення, що нормальна спільна робота двох пристроїв стане неможливою. Проблема була усвідомлена приблизно до моменту появи 168-контактних DIMM, і при розробці контролерів для систем з цими модулями було запропоновано наступне рішення – контролер спілкується з пам’яттю не напряму, а через мікросхему, іменовану буфером, яка сама по собі має низьку ємність, і, відповідно, здатна миттєво приймати сигнал від контролера, звільняючи системну шину. Подальша зарядка елементів DRAM йде вже без участі контролера. Сам по собі буфер є додатковою мікросхемою, розміри якої, у принципі, можуть бути різними, але звичайно меншими ніж чіпи пам'яті. Проте перш, ніж 168-контактні DIMM міцно увійшли до побуту, відбулася ще одна подія - з'явилися і стали доступними мікросхеми з робочою напругою 3.3В, а не 5В. Все та ж теорія свідчить, що час зарядки конденсатора пропорційний також і напрузі, таким чином, зниження напруги дещо зняло гостроту проблеми. 2. Маркування модулів пам'яті Як маркіруються сучасні модулі пам'яті? Тут все дуже просто. Модулі DIMM SDRAM маркіруються таким чином: PCxxx, де ххх - частота, на якій сертифікований працювати модуль (можливо що чіпи, складові модуля, можуть працювати і на більш високих частотах). Відповідно, існує всього 3 специфікації DIMM SDRAM: PC66 - DIMM SDRAM, призначений для роботи на частоті, що не перевищує 66 Мгц; PC100 - DIMM SDRAM, призначений для роботи на частоті, що не перевищує 100 Мгц; PC133 - DIMM SDRAM, призначений для роботи на частоті, що не перевищує 133 Мгц. Природно модулі, призначені для більш високих частот, можуть без проблем застосовуватися і на низьких частотах. Модулі DIMM DDR SDRAM маркіруються таким чином: PCxxxx, де хxхх - пропускна здатність пам'яті, яка може бути забезпечена, при застосуванні даного модуля: PC1600 - DIMM DDR SDRAM, призначений для роботи на частоті, що не перевищує 100 Мгц (саме при такій частоті модуль DDR SDRAM забезпечує пропускну здатність 1600 Мбайт/с); PC2100 - DIMM DDR SDRAM, призначений для роботи на частоті, що не перевищує 133 Мгц (саме при такій частоті модуль DDR SDRAM забезпечує пропускну здатність 2100 Мбайт/с) Модулі RIMM з пам'яттю типу DR DRAM маркіруються робочою частотою: PC600, PC700, PC800 - модулі RIMM DR DRAM, що працюють на частотах відповідно 600, 700 і 800 Мгц, і мають пропускну спроможність відповідно: 1200 Мбайт/с, 1400 Мбайт/с, 1600 Мбайт/с. 3. Контроль та корекція помилок Нам слід розібрати ще декілька питань, пов'язаних з організацією пам'яті, точніше з методами виявлення і навіть усунення помилок в оперативній пам'яті. Як метод виявлення збоїв в оперативній пам'яті застосовувалася так звана пам'ять з контролем парності. Контроль парності - досить старий метод перевірки даних на відсутність помилок. Коротко метод полягає в тому, що при записі даних в пам'ять для деякої кількості (як правило, 8) біт даних обчислюється контрольна сума (тобто двійкова сума значень всіх біт, від якої потім відкидаються старші розряди), яка зберігається разом з даними у вигляді біта парності. При читанні даних контрольна сума обчислюється ще раз і порівнюється з бітом парності. Якщо вони співпадають, то дані вважаються істинними, в противному випадку генерується повідомлення про помилку парності, яке приводить до зупинки комп'ютера. Даний метод мав певний сенс на порівняно ранній стадії розвитку PC, коли підсистема пам'яті була одним з самих ненадійних місць у всій системі, а комп'ютери виконували в основному відповідальні задачі. Власне гідністю методу було те, що якщо пам'ять комп'ютера була ненадійна, то його власник міг визначити це по частих зупинках системи зважаючи на помилку парності і вжити заходів по заміні пам'яті. З часом надійність пам'яті відчутно виросла, операційні системи стали багатозадачними, інтерфейс користувача - графічним; нарешті, операційні системи стали виконувати тести пам'яті при завантаженні. В цій ситуації стали особливо помітні недоліки пам'яті з парністю, а саме: 1. За оцінками фахівців, середній час між збоями доброякісної пам'яті (статистично від збоїв не застрахований ніхто) зіставно з часом життя комп'ютера. В цій ситуації платити за додаткові чіпи парності (вартість яких складає десятки відсотків вартості основної пам'яті) здається марнотратством. 2. Малозначний збій веде за собою повну зупинку системи і можливу втрату цінної інформації (що є особливо важливим в багатозадачному середовищі). 3. Як не сумно, до втрати інформації може привести помилка в біті парності. 4. Метод ніяк не застрахований від подвійних помилок (одночасна зміна значень двох біт не впливає на контрольну суму). Логічні операції над даними можуть, взагалі кажучи, викоритовувати зайві такти очікування. В результаті, приблизно в 1994 році став відбуватися поступовий відхід від використовування "простої схеми" контролю парності. Переважна більшість настільних систем відмовилася від контролю парності взагалі, а в серверах стали застосовувати більш прогресивний, з погляду збереження даних, метод ЕСC. Для оновлення старих систем, що вимагали пам'ять з контролем парності, на ринку з'явилася "логічна парність". В даний час схема звичайного контролю парності практично не застосовується. Якраз для роботи з бітами парності і використовувався 9-ий біт в SIMM 30pin і 33-36 біти в SIMM 72pin. Логічна парність (logic parity, відома також під назвою bridge parity, parity emulation, правильніша назва fake parity - "помилкова парність") - технічне рішення, вперше застосоване в 1994-1995 році. В цей час відбувався масовий перехід індустрії PC на більш дешеву пам'ять без парності. Обділеними при цьому відчували себе власники ще щодо нових на той момент 486-х комп'ютерів, підсистема пам'яті яких не дозволяла використовувати таке рішення, внаслідок чого вони без особливої на те необхідності були вимушені використовувати дорогу парність. Для них і була призначена парність логічна. Ідея, по суті, була досить проста. Як ми вже згадали, в рамках контролю парності для групи біт, записуваних в пам'ять, контролер обчислює контрольну суму і записує її у вигляді спеціального біта парності. При читанні даних контрольна сума обчислюється знову і порівнюється з значенням що зберігається в біті парності, при збігу двох сум дані вважаються вірними. Необхідність зберігання бітів парності і здорожувала всю систему. Модулі з логічною парністю взагалі не мають чіпів парності, зате мають логічний чіп, який при читанні даних сам обчислює "контрольну суму" і пред'являє її контролеру, начебто ця сума зберігалася в модулі. Зрозуміло, що ця сума завжди співпадає з тією, яку обчислить сам контролер, таким чином, фактично контроль парності відсутній. Ціна логічної мікросхеми в порівнянні з чіпами парності значно менша, так що головну задачу - економію - можна вважати виконаною. Таким чином, взагалі кажучи, можна визнати правомірним використовування модулів з логічною парністю там, куди вони спочатку були призначені - в застарілих настільних системах, в яких неможливо відключити контроль парності, проте відсутня реальна необхідність його здійснювати. При умові, звичайно, що ці модулі там зароблять - в багатьох системах така пам'ять непрацездатна. Тому є природне пояснення - ніяка логіка не спрацьовує миттєво, відповідно, логічна парність вносить зміни в тимчасові діаграми модуля пам'яті, і ці зміни схвалить не всякий контролер. Крім того, було безглуздо б заперечувати проти використовування таких модулів в системах без контролю (або з відключеним контролем) парності, при умові, звичайно, що ви не програєте в грошах в порівнянні із звичайною пам'яттю без парності - ніякої шкоди в такій ситуації помилкова парність не принесе. Хотілося б звернути увагу на негативні сторони "логічної парності": 1. Логічна парність, як мінімум, не підвищує сумісність модулів з вашим комп'ютером - не виключено, що працювати вона не буде або викликатиме збої. 2. Суматор в кращому разі не погіршить тимчасові характеристики підсистеми пам'яті, але цілком може це зробити. 3. Установка помилкової парності в сервер не рекомендується ні в якому разі - навіть якщо сервер і буде з нею працювати, врешті-решт, великі гроші за нього платили саме в ім'я надійності, якою ви поступаєтеся. 4. Нарешті - майте на увазі, що поважаючі себе виробники НІКОЛИ не випускали SIMM з логічною парністю - таким чином, ви купуєте продукт низької, чим це можливо, категорії якості. Таким чином, висновок - за винятком двох описаних вище застосування логічної парності рекомендувати не можна ніяк, в цих же двох випадках - можна з певною натяжкою. Крім пам'яті з контролем парності застосовувалася, а головне, і зараз застосовується, так звана ЕСC пам'ять. ЕСC звичайно розшифровується як Error Checking and Correction, існують і інші версії перекладу, але значення полягає в тому, що йдеться про схему виявлення І ВИПРАВЛЕННЯ помилок в пам'яті. За рахунок чого вдається добитися таких приголомшливих результатів? Ідея, що лежить в основі методу, досить проста - хай кожний біт основної пам'яті входить Більш ніж В ОДНУ контрольну суму. Це зажадає збільшення числа контрольних біт (нагадаємо - стандартний метод контролю парності реально не вимагає більше 1 контрольного біта на всю шину), але дасть можливість відновлювати позицію (а, отже, і значення) збійного біта по позиціях контрольних сум, що не зійшлися. Передбачається, що контролер пам'яті самостійно відновлює це значення, не перериваючи роботу всієї системи (хоча розумно при цьому генерувати системне повідомлення про виправлену помилку, щоб власник системи, якщо такі повідомлення повторюються, міг вжити заходів по заміні пам'яті, не чекаючи більш значних збоїв). Зрозуміло, що пам'ять з ЕСC стоїть помітно дорожче за звичайну пам'ять і знаходить застосування в першу чергу в серверах. Завдання: 1. Вивчити теоретичний матеріал, представлений в лекціях. 2. Підготувати відповіді на питання: 1) Означення та призначення оперативної пам’яті. 2) Типи оперативної пам’яті. Характеристика пам’яті. 3) Сторінкова організація пам’яті. Burst режим роботи пам’яті. 4) Характеристика пам’яті FPM та EDO. 5) Характеристика пам’яті SDRAM, DDR, DR. 6) Банк пам’яті. 7) Характеристика модуля пам’яті SIMM 30pin. 8) Характеристика модуля пам’яті SIMM 72pin. 9) Характеристика модуля пам’яті DIMM. 10) Маркування модулів пам’яті. 11) Контроль та корекція помилок. Контроль парності. 12) Контроль та корекція помилок. Логічна парність. 13) Контроль та корекція помилок. ЕСC. Теми реферативних доповідей (3 бали за доповідь не менше 2 сторінок 12 шрифтом): 1) Різновиди будови та методи функціонування Flash-пам'яті. 2) Організація роботи оперативної пам’яті DIMM DDR2 SDRAM.
|