Download as docx, pdf, or txt
Download as docx, pdf, or txt
You are on page 1of 10

ПАМЕТИ

I. ЙЕРАРХИЯ НА ПАМЕТТА
В КОМПЮТЪРНИТЕ СИСТЕМИ

Йерархията на паметта в компютърната система съдържа три нива,


които се различават по тип, бързодействие и капацитет. На най-
високото ниво са регистрите на процесора, следвани от кеш (cache) на
няколко нива (първо L1, второ L2 и трето L3). Следва главната памет
на компютъра, която представлява динамична полупроводникова
памет с произволен достъп DRAM. Изброените нива обхващат
вътрешната (първичната) памет на компютърната система. Следват
нивата на външната (вторичната) памет, които включват твърдия диск
и едно или повече нива с премест
ваеми памети, като FDD, CD и др. Процесорът има директен достъп до
вътрешната памет, докато достъпът до външната памет се
осъществява с входно/изходни модули. Външната памет осигурява
разширение на глав ната памет, известно като виртуална памет.
Времето за достъп, както и капацитетът на най-високите нива в
йерархията на паметта са най-малки, като по посока на ниските нива
стойностите на тези характеристики се повишават, а цената на един
бит спада. Оптималният случай е да се използват само най-бързите
памети в компютъра, но поради високата им цена се налага да се
използват и нивата с по-бавните памети, като съотношението цена/бит
става приемливо.
Основната характеристика на компютърната памет е нейният
капацитет. Той отразява максималното количество на съхраняваната
информация. Капацитетът на вътрешната памет се измерва в байтове
или думи, докато за външната памет се измерва обикновено в байтове.
Според метода си за достъп паметите се разделят на памети с
последователен (магнитна лента), директен (HDD), произволен (RAM) и
асоциативен (селекцията на информационната единица се
осъществява по съдържанието (признак), а не по адреса).
Основна характеристика е бързодействието на паметта. То се
определя от три основни параметъра: време за достъп, цикъл на
паметта, скорост на трансфер.
Времето за достъп при RAM се дефинира като интервала от време
от подаването на адреса към паметта до момента, в който данните са
прочетени от или записани в паметта.
Цикълът на паметта се дефинира за RAM и включва времето за
достъп плюс допълнителното време, което трябва да измине, преди да
се стартира друг достъп. Това време е необходимо за затихване на
преходните процеси и евентуално регенериране на данните.
Скоростта на трансфер (пропускателната способност) се
дефинира като скоростта, с която информацията се подава или приема
в паметта. За RAM тя е един цикъл.
II. ГЛАВНА ПАМЕТ НА КОМПЮТЪРНИТЕ СИСТЕМИ

Съществуват два основни подхода при разглеждане на главната


(оперативната) памет. При единия вниманието се фокусира върху логи
ческата организация на паметта. Това е начинът, по който компютърът
я разглежда. Другият подход е да се разглеждат физическите
характерис тики на паметта като:
– физически пакет, в който се произвежда;
– технология на памет (тип);
– тактова честота, която определя скоростта на работа;
– възможност за корекция на грешки.
Read Only Memory (ROM) e тип постоянна памет. Нейното
съдържание може да се чете, но не може да се изменя без специални
програматори. Когато захранването към нея се изключи, нейното съдър
жание не се губи. Чипът ROM и инсталираният в него софтуер са
известни още и като firmware. Той се използва за съхраняване на
управляващи процедури в BIOS (Basic I/O System), периферни
контролери и друго електронно оборудване.
Random Access Memory (RAM) е тип памет, в която може да се
пише и да се чете. Освен това всяка нейна клетка с произволен адрес е
равнодостъпна. По-голямата част от RAM паметите са енергозависими,
което означава, че те се нуждаят от постоянно електрическо
захранване, за да съхраняват съдържанието си. Ако то бъде
изключено, съдържанието се губи.
Технологията RAM може да бъде статична или динамична. При
статичните памети (SRAM) битовете информация се съхраняват в
тригери, т.е. имат регистрова структура. Статичните RAM са по-бързи
от динамич ните, но са по-скъпи и имат по-ниска плътност на
компонентите. Дина мичните памети (DRAM) допускат висока плътност
на компонентите, т.е. те осигуряват по-голям капацитет на паметта в
рамките на един чип. Имат и по-ниска цена, затова са предпочитани за
изграждане на главната (опе ративната) памет на компютрите.
DRAM са изградени от капацитивни запомнящи елементи.
Наличието на капацитивен заряд или отсъствието на такъв се интер-
претира като съдържание на бита – съответно двоична 1 или 0. Поради
утечка капацитивните заряди постепенно се разреждат така, че се
налага периодично опресняване на информацията в паметта. Това
опресняване (refresh) се изразява в четене и последващ запис на всяка
от позициите в паметта.
В компютърните системи RAM-чиповете се използват като главна
или оперативна памет (DRAM), cache (SRAM) и видеопамет (DRAM).
Dynamic Random Access Memory (DRAM) се произвежда в множество
размери и разнообразни физически пакети.
Паметта от типа SIMM (Single In-line Memory Module – еднореден
модул памет) се състои от няколко чипа в една платка, която се
свързва към дънната посредством ребрен конектор. Най-старите
памети от типа SIMM имаха 30 точки за свързване и се наричаха 30-
пинови. С увеличаване на обема се появиха и 72-пинови SIMM.
Намаляването на физическите размери на паметта се реализираше с
въвеждането на памет от типа DIMM (Dual In-line Memory Module –
двуреден модул памет). Един модул от тип DIMM обикновено е равен
на две памети от тип SIMM и първоначално използваше 168-пинов
конектор.
SO-DIMM (Small Outline DIMM) е памет, предназначена за преносими
компютри, която в началото бе 72-пинова, но конекторът й бе различен
от този на SIMM. Изобщо, физическите различия между конек торите не
позволяват да се постави един тип памет в конектор за друг.
Съвременните чипове за памет имат 184-, 200- или 240-пинови
конектори в зависимост от типа и размера (виж таблица No 3.1). И така,
принципно DRAM представлява кондензатор, който с времето се
разрежда. Ето защо тя трябва да бъде обновявана прибли зително на
всеки 15 ms, а типичните времена за достъп до нея са 10-50 ns. DRAM
чиповете са правоъгълни масиви от клетки на паметта със съответната
поддържаща логика за четене, писане и обновяване. Всяка клетка
съхранява по един бит (1 или 0). И така информацията се съхранява в
матрици от редове и колони. Адресните изводи на чипа памет са
мултиплексирани, като по тях първо се подава адресът на реда, а
после – на колоната. Подаването на адреса на реда се индицира с
активен сигнал RAS (Row Address Select), докато предаването на
адреса на колоната се индицира с активен сигнал CAS (Column Address
Select). Мултиплекси раното адресиране дава възможност да се
редуцира броят на адресните изводи на чипа памет. Първо се подава
адресът на реда и се зарежда в адресния буфер на реда, след това се
подава адресът на колоната, който се зарежда в адресния буфер на
колоната. Управляващ сигнал WE (Write Enable) разрешава операция
запис на указания адрес. Управляващ сигнал OE (Output Enable)
разрешава подаването на данните при операция четене. Управляващ
сигнал CE (Chip Enable) показва дали подаваният адрес по линията за
данни е валиден за този чип, т.е. дали чипът е избран или не.
Първите DRAM изискваха и двата адреса - и на реда, и на
колоната да се подават всеки път при опит да се достигне дадена
клетка. При бавни процесори като IBM PC XT 8088, работещи на 4.77
MHz, това не беше ограничение. При повишаване на скоростта на
процесорите обаче времето за достъп до DRAM стана тясно място,
защото процесорът изисква данни с много по-висока скорост от тази, с
която може да ги осигури DRAM.
Родословието на DRAM включва различни видове памет
съобразно нейното развитие:
– Fast Page Mode
– Extended Data Out
– Synchronous DRAM
– Double Data Rate (DDR) SDRAM
– Rambus DRAM
Fast Page Mode (FPM) DRAM беше много разпространена в
миналото. Тя достигаше скорост от 28.5 MHz. Напредъкът при нея бе,
че достъпът до един и същи ред (или страница) е бърз. Това е така,
защото ако следващата клетка, която се търси, е на реда (страницата)
на настоя
щата, е необходим само адресът на колоната, в която се намира тя.
Често на процесора са му необходими последователни битове от
данни, като всички те се намират на един ред (страница) на чипа
памет. Ако обаче всеки път се търсят различни страници, то тогава
няма подобрение във времето за достъп.
Extended Data Out (EDO) DRAM е резултат от малко подобрение
във FPM DRAM. То е постигнато, като търсенето на нов адрес се
извършва паралелно с изпращането на данни от стария адрес, т.е.
нормалната последователна операция при FPM е преобразувана в дву
стъпален конвейер. Адресът на страницата се подава към DRAM и дан
ните от нея се подават към изходния буфер. На всеки следващ такт
едно временно се чете адрес и се подават данни. Това води до
намаляване на времето за достъп от 35 ns (28.5 MHz) при FPM DRAM
до 25 ns (40 MHz) при EDO DRAM.
Synchronous DRAM (SDRAM) е технология, която използва
допълнителна интегрална схема за синхронизиране на входа и изхода
на паметта с честотата на системната шина, т.е. SDRAM е
синхронизирана със системния часовник. Това означава, че след като
е намерено първото местонахождение на данните в чипа на паметта,
следващите битове данни могат да се прочитат с всеки такт на
системния часовник. Така значително се повишава скоростта на
паметта - 10-15 ns време за достъп.
Поради своята връзка със скоростта на системната шина SDRAM
обикновено се комбинира с такъв тип системна шина, какъвто може да
поддържа. Например PC100 SDRAM е за системи със 100-мегахерцови
шини, а PC133 SDRAM е за системи със 133-мегахерцови шини. (За
дефи
ниране на скоростите се използват следните кодове: PC 2100 – 266 MHz DDR,
PC 2700 – 333 MHZ DDR, PC 3200 – 400 MHZ DDR2, PC 4300 – 533 MHz
DDR2, PC 5300 – 667 MHz DDR2, PC 6400 – 800 MHz DDR2).

Фиг. 3.1 SDRAM DIMM

Double Data Rate (DDR) SDRAM е специализирана памет, която


може да прехвърля по 2 байта данни за време, за което SDRAM може
да прехвърли 1 байт. DDR2 SDRAM може да прехвърля по 4 байта за
същото време, DDR3 SDRAM може да прехвърля по 6 байта за същото
време. Поддръжката на модули от типа DDR, DDR2 и DDR3 трябва да
бъде на
лична в компютърния схемен набор (chipset), за да може да се
използват. RAMBus DRAM (RDRAM) бе памет, която използваше
високо скоростна специализирана шина. Тя бе широка само 16 бита и
предлагаше скорост на прехвърляне 800 MB/s при 100 MHz системна
шина. Новите типове памети достигат много по-висока
производителност, затова произ водството на RDRAM бе спряно.
Макар и много рядко, но е възможно, съдържанието на дадена
клетка в паметта да се промени самоволно, например под влияние на
външни смущения. Ето защо са разработени механизми за корекция на
грешки в паметта [5], особено при сървърни системи.
Parity Memory (контрол по четност) е термин, който се отнася до
логика за откриване на грешки в паметта. Това става, като към всеки 8
бита данни се добавя един допълнителен бит, наречен parity бит.
Неговата стойност се изчислява от логическа верига в зависимост от
броя на 1-те във всеки Byte от данни. За нечетна проверка битът се
приравнява на 1, ако байтът съдържа четен брой единици. За проверка
за четност допълнителният бит се приравнява на 1, ако байтът
съдържа нечетен брой единици. Стойността му се въвежда при запис
на данните в паметта (write) и се проверява при четене (read).

Пример 1:
Четна проверка, при която няма грешка:
101001010
байт с данни бит за проверка по четност
Пример 2:
Четна проверка, при която е открита грешка:
101011010
байт с данни бит за проверка по четност
Пример 3:
Четна проверка, при която са променени два бита и не е открита
грешка: 1 0 1 1 1 1 0 1 0
байт с данни бит за проверка по четност

Памет с проверка по четност може да се използва в компютри,


при които не се прави такава проверка. Памет без проверка по четност
обаче не може да се използва в компютри, при които тя се прави.
Error Checking and Correcting (ECC) памет
с код за коригиране на грешки
ECC е по-съвършена и по-сложна схема за корекция на грешки
от контрола по четност. Тя може да разпознава повече типове грешки в
паметта – не само един бит, но и 2, 3 и 4. В допълнение ECC може да
коригира еднобитови грешки, така че софтуерните приложения да про
дължат да функционират нормално. ECC обработва едновременно 8B
(64b), като поставя резултата в 8-битова ЕСС дума. При четене 8B (64b)
се обработват отново и резултатът се сравнява с този в ЕСС думата.
Използ ва се основно при сървъри.

Фиг. 3.2. Сървърна памет с обем 4 GB


III. КЕШ (CACHE) ПАМЕТ

Процесорът чете инструкции и операнди от паметта и записва


резултатите от изпълнението на инструкциите в нея. Бързодействието
му обаче е с един порядък повече от това на паметта. Ето защо за
повишаване на производителността на компютъра се добавя междинно
ниво между процесора и основната памет – cache с малък размер и
бързодействие, съизмеримо с това на процесора (виж част
„Процесори”). Думата “cache” означава "скрита" памет.
Функционирането на cache е прозрачно за потребителя. Инструкциите
и данните се прехвърлят от основната памет в cache, като
впоследствие се ползват от процесора. Съдържанието на позициите в
cache са копия на съдържанието на определени клетки от главната
памет. Следователно достъпът до информацията в cache трябва да се
осъществява чрез същите адреси, на които данните са разположени в
главната памет. Когато процесорът извършва запис, данните се
записват в cache и едновременно с това в главната памет.
Алтернатива е да се запишат данните в cache, а в главната памет по-
късно.
Успехът от използването на cache зависи от характеристиките на
програмата и по-точно от нейната степен на локалност. Принципът на
локалността се отнася както до обръщението към инструкциите, така и
до обръщението към данните и може да се рзглежда в два аспекта:
– Локалност във времето. При нея има голяма вероятност
обръщенията към определени позиции в паметта да се
повторят в близките бъдещи моменти.
– Локалност в пространството. Следващата позиция в паметта,
към която ще се извърши обръщението, е най-вероятно да
бъде близо до позицията, към която е осъществено
последното обръ щение.
Локалността във времето е актуална при наличие на цикли,
които съдържат малко на брой инструкции. Ето защо, след като веднъж
са били заредени в cache, те ще бъдат четени многократно, докато се
наложи извличането на нови инструкции от паметта (след излизането
от цикъла).
За да се използва локалността в пространството,
информационният трансфер между cache и главната памет включва не
дума, а последо вателност от клетки, наричана линия или блок. За
оптимална произво дителност линията се предава между главната
памет и cache по широка шина за данни. Например 8 модула памет
заедно могат да формират 8-байтова линия на cache.
Когато процесорът чете от паметта, първо се извършва
обръщение към cache. Ако търсената информация се съдържа там, тя
се изпраща директно към процесора (попадение – hit). Когато
търсената информация не се съдържа в cache (липса - miss), се налага
обръщение към главната памет. Ситуациите при операциите за запис в
cache са по-сложни.
49
Скоростта на попадение се дефинира като отношение на
попаденията в cache към общия брой обръщения към него. Скоростта
на попаденията определя вероятността дадена дума да бъде
намерена в cache.
Скоростта на възникване на липси в cache се дефинира като
единица минус скоростта на попаденията.
Процесорът се обръща към cache посредством адреса, чрез
който се обръща и към главната памет. Ето защо организацията на
cache трябва да използва този адрес, за да открие данните при
попадение или да сигнализира на процесора, че е възникнала липса.
По своята организация cache биват няколко типа.
Cache с пълна асоциативна организация. Такъв cache се състои
от асоциативна памет, съдържаща адреса в паметта и данните,
съхранявани на този адрес. Той осигурява най-голяма гъвкавост и
минимален брой конфликти за фиксиран размер на cache, но има
висока цена поради използваната асоциативна памет. В произволен
момент от времето е възможно все още да не е заредена цялата линия
с данни. Затова всяка дума в cache разполага със свой бит за
валидност, който е установен в 1, ако информацията в думата е
актуална.
Cache с директна организация. Той съдържа памет с произволен
достъп, като всяка позиция съдържа данни, адресът на които
представлява най-младшата част от адреса в главната памет. По този
адрес се избира съответната линия. Старшата част от адреса се
съхранява заедно с данните, за да се извърши тяхната
идентификация. Адресът, подаван от процесора, се разделя на две
полета: таг и индекс. В тага се включват най
старшите битове на адреса, които се съхраняват заедно с данните.
Индексът включва младшите битове на адреса. При обръщение към
главната памет индексът се използва за достъп до съответната дума в
cache. След това тагът, съхраняван заедно с думата, се сравнява с тага
на подавания адрес. При съвпадение думата се чете от cache. При
липса се извършва достъп до главната памет за четене на търсената
дума и зареждането й в cache.
Cache с директна организация има проста апаратна реализация
и високо бързодействие. Недостатък е, че производителността пада
значително при серия обръщания на процесора към клетки с едни и
същи индекси.
Cache с асоциативна организация с множества. Той съдържа
ограничен брой линии с еднакви индекси и различни тагове.
Представлява компромисно решение между cache с напълно
асоциативна организация и cache с директна организация. Cache е
разделен на множества от линии. Cache, който съдържа 4 линии във
всяко множество, се нарича четири
пътно асоциативен cache. Всяка линия във всяко множество съдържа
таг, който заедно с индекса (номера на множеството) идентифицира
линията. И така първо индексът от адреса, подаван от процесора, се
използва за
50
достъп до множеството. След това всички тагове на избраното
множество се сравняват посредством компаратори с подавания таг.
При съвпадение се осъществява достъп до избраната линия, в
противен случай се извърш ва достъп до главната памет.
Записи в cache. При операциите на четене съдържанието на
cache не се променя, така че не съществува опасност от разлики в
съдържанието му и това на главната памет. При операции за запис в
cache обаче съществува възможност съдържанието на клетки в
паметта да се разли
чават от техните копия в cache, т.е. възниква проблемът за
кохерентност на cache.
При механизма със запис през cache (write-through) всяка
операция на запис в cache едновременно се повтаря и за главната
памет, т.е. новите данни се записват едновременно в cache и в
главната памет. Ето защо времето за запис се определя от това за
главната памет, което е значително по-голямо от времето за cache. За
решаване на този проблем се използват междинни буфери.
При механизма със запис при връщане на линията от cache в
основната памет (write-back) в главната памет се записват линиите,
които подлежат на заместване с нови и в които е извършван запис, т.е.
тяхното съдържание е било променено. Линии, чието съдържание не е
било актуа
лизирано, не се записват обратно в главната памет.
Нива на cache паметта. Cache може да е организиран по два
начина. Първият е подобно на главната памет да съхранява и
инструкции, и данни. Това е т.нар. унифициран cache.
Вторият начин на организация предполага разделянето му на
cache за инструкции и cache за данни. Това осигурява следните
предимства: – стратегията за запис се прилага само в cache за данни
(като се приема, че кодът не се самомодифицира, т.е. инструкциите не
се променят);
– свързването на двата cache с процесора става с отделни шини,
което дава възможност за едновременен трансфер на
инструкции и данни (важно при конвейерна обработка);
– двата cache могат да имат различен капацитет, различна орга
низация и различна дължина на линията.
По този начин се изграждат cache от първо ниво - L1, които се
вграждат в чипа на процесора. Това ограничава капацитета на cache,
но пък във всички случаи неговото увеличаване намалява
бързодействието. Популярен подход е, да се осигури втори cache - L2
между главната памет и L1. Той е със значително по-голям капацитет
(до 4-12МВ) от cache на първо ниво. Механизмът на достъп до
информация е следният. Първо
начално процесорът се обръща към L1. При липса търси информация в
L2. В случай, че отново възникне липса, се извършва достъп до
главната памет. Всяка кеширана клетка на главната памет има две
копия – едно в
51
L2 и едно в L1, т.нар. "принцип на включването". Най-често използваната
стратегия за заместване на линии в cache и на двете нива е заместване на
линията, която най дълго не е била използвана (LRU – Least Recently Used). За
запис на информацията се използва запис през cache (write- trough), така че
копията и на двете нива са еднакви. Интерфейсът между процесора и cache L2
трябва да бъде много бърз. За целта за него се осигурява отделна шина,
наричана задна - Backside
Bus, за разлика от Front Side Bus, свързваща процесора с главната памет.
Архитектурата на Intel поддържа до три нива на вградената в чипа кеш памет. В
процесорите Pentium и Core 2 Duo или Core 2 Quad е имплементиран cache на
две нива. L1 е най-близо до изпълнителното ядро и съдържа отделни cache за
инструкции (trace cache) и данни. Този за инструкции се намира след декодера,
т.е. съхранява микроинструкции (mops). L2 е унифициран – за данни и
инструкции. Cache за данни от първо ниво има капацитет 8 КВ и е 4-пътно
асоциативен, като размерът на линията е 64 байта. Trace cache може да
съдържа 12 операции и е 8-пътно асоциативен. Cache от второ ниво (L2) има
капацитет от 512 КВ до 12 МВ (при Xeon) и е 8-пътно асоциативен с размер на
линията 64 байта. При процесорите Xeon може да има и cache от трето ниво
(L3).
52

You might also like