Karh09 12

12. Оперативна памет. DRAM – принципи и особености. Interleaving.


страницата се нуждае от дописване/преглеждане


Йерархия на паметта

untitled40.JPG

Aдресно пространство, като адресите (на данните и инструкциите) се формират от процесора. Паметта е била хомогенна линейна последователност от адреси. С развитието на технологиите се откриват недостатъци - забавяне поради време за достъп ( време за достъп - от задаването на адреса до попадането в клетката, която се задава с този адрес ). Това време се намалява непрекъснато, но намалява и такта на процесора. Следователно отношението на двете времена се запазва и то е в рамките на около 50 (1 наносекунда за такт на процесора и 50 наносекунди за време за достъп)
За премахване на този проблем се преминава към архитектурни подходи - изграждане на йерархия в паметта. Така вече има бърза и нормална памет (cache и оперативна памет).
Memory – основната памет. Тя трябва да съхранява цялото оригинално линейно пространство.
кеш – съхранява само малка част дублирани адреси от адресното пространство.
Добавена е и още една голяма памет в която се съдържа информацията от другите памети (swap).
По-късно се вижда, че този вариант повишава коефициента на производителност и тази идея се развива, като кеш паметта се реализира вече на 3 нива(L1, L2, L3)
L1 – най-малка като обем и най-бърза
L2 - малко по-голяма и по–бавна
L3 – най-голяма и най-бавна
И трите са много по-бързи за достъп от ОП и трите съдържат само дубликати. Ако един адрес е представен в L1, то той е представен по същия начин в L2 и L3 (съответно в ОП), но ако е в L3, например, то не е задължително той да е представен в L1 и L2.
Колкото е по-малка по обем една памет, толкова е по-бърза. Затова кеша се разделя на три нива и L1 се разделя на памет за инструкции (IS – instruction сегмент) и памет за данни (DS – data segment )( при Intel – 8 KB за данни и 8 KB за инструкции). Когато L2 е вътре в процесора (заедно с L1), се повишава скоростта на работа. Идеята е скоростта на работа с данните между регистрите и L1 да е почти същата като тази на процесора ( с % по-малка ).

RAM = Random Access Memory – основната памет, която се адресира. Основната памет е голяма и по размер се доближава до виртуалното адресно пространство. Cache паметта трябва да е много бърза, затова се прави от статична рам памет и за всеки бит са нужни по 6 биполярни транзистора.

untitled41.JPG

Това отнема много място и отделя голямо количество топлина. За основната памет се използва DRAM ( Dynamic RAM ), базирана на друг принцип ( MOS = Metal Oxide Semiconductor ). Силицият е полупроводник, а SO2 е изолаторна пластина и върху нея е поставена метална плочка. Между металната плочка и силиция се получава кондензатор. В зависимост от посоката, в която е зареден n-островчето слиза надолу или се качва нагоре. В зависимост от това дали каналът е отворен може или не може да се стигне от единия gate до другия. Така се пази 1 бит ( 1 или 0 ). Технически проблем е, че състоянието се пази от заряда на кондензатора, който е много малък, поради което се саморазрежда и критичното време за разреждането му е 2ms, т.е. помни само 2 ms. Затова на всеки 2 милисекунди кондензаторът трябва да се презарежда – така нареченият refresh на динамичната памет ( DRAM ) . Преминаването на ток между двата gate-a е деструктивно – разваля съдържанието, затова при четене съдържанието трябва да се възстанови. Въпреки това този вид памет се използва, защото е много икономично минимален ток => няма греене и се постига огромна плътност ( bit/mm2 ), което компенсира недостатъка с refresh-a. Поради наличието на капацитет на кондензатора четенето и писането е по-бавно от това в cache паметта, която е съставена от транзистори, пък били те и 6.
Intel първи разработват тези полупроводникови RAM памети. Заводите са много скъпи – един такъв струва няколко милиарда долара. Самите елементи се произвеждат в бели стаи. Плътността на полупроводниковите елементи е огромна – няколко милиона на cm2.

Организация на DRAM

untitled42.JPG

DRAM паметта се представя като матрица (с равни редове и колони) от множество такива островчета. Адреса на едно такова островче се формира по следния начин: в лявата половина на адреса се намира редът където се намира то, а в дясната - стълба.
Частта от адреса, която отговаря за реда се подава на дешифратор, селектира се една изходна линия ( RAS – Row Address Strobe ). По този Strobe дешифраторът активира матрицата – пуска се четящ ток по всички елементи на реда, прочита се целия ред и се записва в буфера на реда. Пуска се сигнал, че буферът е записан и Управляващото устройство в чипа пуска сигнал CAS = Column Address Strobe, който дешифрира частта от адреса, която отговаря за колоната и се достига конкретен адрес ( пак се минава през дешифратора ). Тъй като четенето е деструктивно, след края на операцията информацията в row buffer-а се записва отново на съответния ред. Refresh-a върви постоянно – на всеки 2 ms прочита даден ред и го записва отново. Тъй като при този вид памет адресът е разделен на 2 части, като първо се чете редът, а после колоната, тя е асинхронна. Чака се да се върне отговор от RAS, за да се изпълни CAS. Може да се изчисли за колко време RAS ще върне отговор и да се направи синхронно – с фиксирано разстояние между RAS и CAS ( SDRAM = Synchronous DRAM , DDR = Double Data Rate SDRAM ).
Сравнение с SRAM
За SRAM е важна скоростта, нарича се статична защото не се изтрива при четене, няма нужда от рефреш, гълта повече ток и загрява повече чипа. Времето за достъп е само един такт.
Ето един прост модел на четене от DRAM памет:

untitled43.JPG

За да се увеличи скоростта на извличане на информация от паметта се създават така наречените банки памет – подреждат се няколко чипа памет ( банки ) и се използва interleaving – припокриване на работата на 4 чипа. Съществуват няколко вида Interleaving:

Simple Interleaving

untitled44.JPG
Нареждаме банките на една обща шина на адресите. Като се подаде адрес А – на първата банка влиза А, на втората А+1, на третата – А + 2 и на 4-тата А + 3. По този начин от един адрес започваме да работим по 4 думи. Нулевият адрес се подава на b0, първият на b1, вторият на b2 и третият на b3. По този начин тактовете buffer и transfer могат да се сменят и по схемата отдолу – на 3-ти такт излиза съдържанието на b0, на 4-ти такт – на b1,на 5-ти - b2 и на 6-ти - b3 и те се пускат по шината за output данните. Така четем за 6 такта а не за 16, което е сериозна оптимизация. Освен това нямаме увеличение на адресните шини линии ( шините ). Ако отгоре имаме L3 Cache simple interleaving-a е много удобен, защото наведнъж обработва 16 байта.
untitled45.JPG

Complex Interleaving

untitled46.JPG
При този вид имаме 1 шина за данни и 4 отделни шини за адрес. На 4-те банки се подават 4 произволни адреса, които постъпват такт след такт и излизат на output-a на 3-ти, 4-ти,5 -ти и 6-ти такт съответно b0,b1,b2,b3. Тук свършва за 7 такта, защото няма пренареждане на тактове – смяна на Т и В.
untitled47.JPG

В тази таблица адресите 12, 13,14 и 15 са абсолютно случайни и не зависят един от друг. В таблицата на простия interleaving адресът 12 е също случайно избран, но адресите след него задължително са следващите 3 адреса. При наличие на L3 cache над паметта е по-удобно да се ползва simple interleaving.
При синхронната памет е възможно следното усложнение – вместо 1 да се сложат от 4 до 16 row buffera. Пуска се адрес – вади се в първия буфер, пуска се втори адрес – вади се във втория буфер и така нататък. Когато се вади втори адрес се пуска четене за колона на първи буфер и т.н. По този начин адресите се подават като опашка към буферите и постепенно се изтеглят към изхода. Паметта с повече буфери е разработена от Intel и се нарича RAMBUS. За всеки адрес в опашката се проверява дали няма да му трябва ред от матрицата, който го няма там ( вече е използван и е в някой друг буфер ). С тази доста скъпа памет се достига 5GB/s скорост на обмен.

Unless otherwise stated, the content of this page is licensed under Creative Commons Attribution-NonCommercial-ShareAlike 3.0 License