Оперативна памет
от Уикипедия, свободната енциклопедия
Оперативна памет е компонент в изчислителната техника за средносрочно съхраняване на резултати от операциите и част от общата йерархия на паметта. В съвременните ЕИМ това най-често е памет със случаен достъп (RAM), но в зората на изчислителната техника се е използвала също феритна памет и памет на магнитни барабани.
Тази статия се нуждае от подобрение.
Едно от деленията на RAM паметта е на D (Dynamic) RAM и S (Static) RAM. DRAM е по-евтината и разпространена и се използва като основна компютърна памет. SRAM e по-скъпа и се използва главно за кеш памети. Основната разлика между тях е, че информацията в DRAM трябва да бъде опреснявана периодично (няколко хиляди пъти в секунда) - поради елементите, от които е изградена, тя има свойството да “забравя” информацията, съдържаща се в нея. Също така, прочитането на нещо от паметта води до неговото “забравяне” , което налага допълнително презареждане. Тази операция (презареждане) нормално се извършва от един чип, наречен контролер на паметта. Има обаче и специални памети, които не се нуждаят от външно въздействие на процесора или гореспоменатия контролер, за да се опресняват; те често се използват в преносимите компютри, защото консумацията на енергия при тях е по-ниска. При SRAM няма опресняване на информацията, поради различните елементи от които е изградена. Освен това, докато за DRAM нормални времена на достъп са от порядъка на 50-60ns (ns - наносекунди, една наносекунда е една милиардна част от секундата) за SRAM тези времена са около 10ns - значи пет пъти по добри. Нормално е в този момент човек да си помисли - ами този динозавър, DRAM, използва ли се още? Да, и то много. Причината - SRAM са много по-скъпи за производство. И DRAM, и SRAM присъстват във вашия компютър - първата в лицето на така наречената “оперативна памет”, втората - в ролята на “кеш памет”.
На процесора често му се налага да контактува с паметта (изградена от DRAM). Осъществяването на тази връзка влиза в задачите на контролера на паметта. Въпреки високата скорост с която се извършва преносът на данни, процесорът е принуден да чака, защото работи няколко пъти по-бързо. За преодоляване на това забавяне в работата се използва кеш паметта, изградена на базата на SRAM. Кеш паметта е разположена много близо до процесора и е с неголям размер - обикновено по-малко от мегабайт. Идеята е най-често използваните команди и данни да не бъдат извличани от системната (оперативна) памет, а от по-бързата и по-близо разположена кеш памет. Затова процесорът първо проверява дали в кеша се намира това което му трябва и едва след това (ако го няма) търси в RAM. В аналогична ситуация попадате когато ви се допие бира - първо проверявате дали има в хладилника и чак когато с неудоволствие се убедите, че няма, отскачате до магазина за да купите.
Ефективността на идеята се подкрепя от едно емпирично (получено с експерименти, а не по формула) правило: от всичките данни, програми и информация на вашия компютър, около 20% се използва през 80% от времето. Кеш паметта се опитва да прихване и задържи тези 20% по следния начин: контролера на паметта записва в кеша всичко, което процесорът взима от паметта под формата на списък; всеки път, когато CPU намери нужната му информация в кеша се получава “попадение” и тази информация се премества на върха на списъка. Когато кеш паметта е пълна и се налага да се запише още нещо, последния запис (този който е на дъното и следователно е най-рядко използван) се изтрива и на негово място се поставя новата информация.
В съвременните компютърни системи има повече от един вид кеш. Има такъв, който се намира в корпуса на самия процесор и се нарича L1 cache (L1 - level 1, първо ниво), следва L2, може да има и L3. Всичките тези видове са памет. Само че, има и друга ситуация, в която може да се употреби термина кеш и кеширане. Първата е, когато говорим за swap файла (тук употребата е неправилна), който както споменах представлява разширение на паметта върху твърдия диск и втората - когато част от паметта се заделя, за да се подобри работата на вашия харддиск. Тук вече употребата е съвсем на място, защото се заделя част от оперативната памет, която да служи за кеш на много по-бавния от нея твърд диск. Програмата с която може да указвате каква част от паметта да се използва за кеширане на диска под DOS се нарича Smartdrv. Windows се грижи сам за тези настройки затова не е необходимо да настройвате нищо. Ако обаче ви се иска да пипнете и да видите ефекта при различни стойности (ефект има, защото тази част която заделите за дисков кеш не се използва от програмите). Във файла system.ini, раздел [vcache], добавяте един ред "MinFileCache=хххх" за минималния размер (вместо хххх слагате число примерно 4096, което е 4MB RAM) и един "MaxFileCache=хххх" за максималния. Ако зададете двете числа еднакви, ще имате постоянен размер.
Освен кеша, съществуват други похвати за подобряване ефективността на оперативната памет:
Interleaving - става дума за начина, по който CPU се обръща към паметта. Нормално след като процесора адресира дадена банка памет, тя има нужда от един цикъл за да се възстанови, следователно процесорът трябва да изчака. Но през това време той може да се обърне към друга банка памет и така да ги сменя, за да не губи време. А какви са тези “банки”? Слотовете, в които се поставят чиповете с памет се разделят на банки. Всички слотове могат да принадлежат към една банка, или да са разделени на повече - в книжката на дъното ви може да е дадена схема на банките памет. Interleaving се прилага и вътре в самия чип памет - клетките на паметта се разделят на две независими банки от клетки и така се осигурява непрекъснатост на потока на данните
Bursting - обикновено на процесора не му трябва само една клетка от паметта, а няколко съседни. При bursting се взимат няколко клетки като цял блок и се пращат на CPU. Това значително ускорява работата, макар да се случва и ненужна информация да се подаде заедно с необходимата. Тази технология може да се прилага при различни видове памети, а така също и при четене, и при запис
Pipelining - това е процес, при който някаква по-сложна задача се разбива на поредица от елементарни инструкции, които “потичат” като по “тръба” към процесора и той ги изпълнява една след друга в бърза последователност - без да отправя искане за нови данни и да чака да му се доставят. Така ако имаме няколко задачи, разделяме ги на малки части и ги пускаме на процесора да ги обработва, в резултат на което имаме решение за по-малко време отколкото ако подавахме една по една големите задачи (процесорът ще трябва да ги извиква една по една и да чака идването им).
След това запознаване с паметта като цяло, нека да погледнем конкретно чиповете с памет (RAM). Едно от възможните деления е според вида на модула памет (модул памет звучи малко изкуствено, но искам до направя разделение между чип памет и платката на която има няколко чипа, които са свързани заедно и образуват това, което получаваме като отидем да си купим памет и което наричам модул):
SIMM - съкращение от Single In Line Memory Module, имат две разновидности - 30 пинови и 72 пинови. Думата “пин” идва от директното произнасяне на английската pin и означава изводите на модула с памет, които контактуват с дънната платка - блестящите лентички на долния край. 72 пиновите памети са с около 2 см по-дълги, но по важното е, че те прехвърлят информацията на части от по 32 бита, докато при 30 пиновите размера е 8 бита (което ги прави по-бавни). И двата вида не се използват вече, и може да ги намерите само в по-стари системи
DIMM - името им (Dual In Line Memory Module) подсказва, че са наследници на SIMM-овете. Може да си представите, че това са два SIMM чипа в един корпус; те са с около 2,5 см по-дълги от 72 пиновите чипове, имат 168 извода и прехвърлят по 64 бита. Това е паметта, която се използва в момента. За notebook компютрите има модифицирани DIMM памети, наречени SO (Small Outline) DIMM, които са по къси, със 72 или 144 пина, прехвърлящи съответно 32 и 64 бита
RIMM - това е небезизвестната Rambus памет, която Intel се опита неуспешно да наложи като масова. Характерна черта при нея е наличието на алуминиева пластина, която покрива чиповете памет. Нейната роля е да разсейва топлината, защото тези памети са доста по-горещи от останалите.
Освен разделянето по вида на модула, класификация може да се направи и според технологията и организацията, използвани при чипа памет - въпреки, че всички чипове са DRAM, те са доста различни. Така върху един модул DIMM може да има EDO, SDRAM или друг вид чипове (съвременните памети са само SDRAM, така че не е нужно да се тревожите за това). Единствения сигурен начин да познаете каква е паметта, е да прочетете маркировката на чиповете, обаче всеки производител използва собствена система за означение. Но, да се върнем на класификацията:
FPM (Fast Page Mode) DRAM - първия широко разпространен вид памет, придобил и широка известност само като DRAM. Предимството на този вид памети, наложило ги над други по-стари технологии е възможността за по-бърз достъп до данни, разположени на един и същи ред (вътре в чипа памет отделните клетки са подредени като таблица с редове и колони)
EDO (Extended Data Out) - много близка до FPM DRAM, но с модификация, позволяваща последователния достъп до паметта да става по-бързо, като по този начин контролера на паметта спестява време, изпускайки някои операции, които са задължителни при FPM. Печалбата в производителност е 15-20%
S (Synchronous) DRAM - достигаме и до най-разпространената в момента памет. За разлика от всички изброени технологии, SDRAM е проектирана да се синхронизира с базовата честота на процесора, така наречения FSB (Front Side Bus). Какво е FSB? Това е скоростта, с която дънната платка “разговаря” с процесора или паметта. Скоростта на процесора се получава като се умножи тази базова скорост (FSB) с някакво число (множител) - 4*66=266Mhz или 4,5*100=450Mhz. Това синхронизиране (уеднаквяване) на скоростта на паметта с FSB позволява избягване на времената, в които процесорът чака, защото може да се предвиди кога точно данните ще са на разположение. Когато тази възможност за предвиждане се съчетае с гореописаните техники interleaving, bursting, pipelining, получава се много по-голяма бързина. Засега скоростите, с които работят SDRAM паметите са 66, 100, 133Mhz
DDR (Double Data Rate) SDRAM - придобиваща все по голяма популярност разновидност на SDRAM, тази технология се базира на пренасянето на двойно повече информация за единица време (един такт) при същата скорост на FSB. По такъв начин, ако имаме FSB от 133Mhz, скоростта, с която би работила DDR e 266Mhz. Вече виждаме видеокарти с такава памет и е въпрос на време да навлизането й масово и като RAM.
И накрая, да кажем няколко думи за това как се означава скоростта на паметите. В по-старите чипове (FPM, EDO) скоростта на паметта се измерваше с времето за достъп “access time” на паметта - времето, необходимо на модула памет да достави исканите данни. Времената варираха около 80 до 60ns, като границата беше скоростта с която работи чипа DRAM (50ns). Много често индикациите на чипа показваха неговата скорост: -7 за 70ns, -6 за 60ns.
С идването на SDRAM паметите и различните начини за увеличаване ефективността на работа на паметта, този начин за измерване отпадна и започна да се цитира скоростта в Mhz (трептения или цикли в секунда; 1 Hz=1 цикъл в секунда, 1Mhz е 1 000 000 цикъла в секунда). Обаче, маркировката върху чиповете продължи да бъде в наносекунди, но не измерващи времето за достъп а времето между два цикъла. От Mhz лесно се преминава в наносекунди, като разделим 1000 на тактовата честота: ако имаме 100Mhz, това се трансформира като 1000/100=10 наносекунди; аналогично ако разделим 1000/10ns=100Mhz. При паметите SDRAM 133Mhz чиповете могат да бъдат означени като -8, -7,5, -7 - и трите съответстват на 133Mhz, като този с -7 е най-добър (при условие, че и трите са на една фирма).
Последния начин за определяне на скоростта е колко байта в секунда се прехвърлят Получава се по следния начин - ако имаме 100Mhz памет, и тя прехвърля по 64 бита (или 8 байта) на цикъл, умножаваме 100 000 000х8, преобразуваме го в мегабайти и получаваме 800MB за секунда. За сравнение, RAMBUS паметта работи на 400Mhz, но по подобие на DDR пренася два пъти повече информация за цикъл, което прави реална скорост от 800Mhz. Тя пренася по 2 байта, значи 800х2=1600MB/s. При 100Mhz DDR памет (ефективно 200) сметката е 200х8=1600, точно колкото и RAMBUS, но на много по ниска цена.
За написването на тази статия съм използвал материал от THE ULTIMATE MEMORY GUIDE на KINGSTON TECHNOLOGY.