Оперативна памет

от Уикипедия, свободната енциклопедия
Направо към: навигация, търсене

Оперативна памет е елемент от архитектурата на фон Нойман, която съдържа инструкции за централния процесор и различни данни използвани при неговата работа. Това е бързодействаща памет, с която процесорът обменя данни без посредничеството на други устройства. В оперативна памет се съхраняват кодът на изпълняваната програма и данните, върху които се извършват операциите. В съвременните системи се използва и свръхоперативна памет, (кеш памет) която обикновено е разположена в схемата на процесора и осигурява време за достъп, съизмеримо с вътрешните за процесора операцийки.

При съвременната изчислителна техника функцията на оперативна памет най-често се изпълнява от памет с произволен достъп (RAM). По тази причина съкращението RAM често се използва като синоним на оперативна памет, въпреки че памет с произволен достъп се използва за много други цели, включително в самите компютри. В зората на изчислителната техника като оперативна памет се е използвала също и памет с последователен достъп, като например барабанната памет.

На процесора често му се налага да контактува с паметта (обикновено 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 - това е процес, при който някаква по-сложна задача се разбива на поредица от елементарни инструкции, които “потичат” като по “тръба” към процесора и той ги изпълнява една след друга в бърза последователност - без да отправя искане за нови данни и да чака да му се доставят. Така ако имаме няколко задачи, разделяме ги на малки части и ги пускаме на процесора да ги обработва, в резултат на което имаме решение за по-малко време отколкото ако подавахме една по една големите задачи (процесорът ще трябва да ги извиква една по една и да чака идването им).