Тема 14

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


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


theme14_DRAM.PNG
theme14_transistor.PNG

RAM

RAM = Random Access Memory – основната памет, която се адресира. Основната памет е голяма и по размер се доближава до виртуалното адресно пространство. Cache паметта трябва да е много бърза, затова се прави от статична рам памет и за всеки бит са нужни по 6 биполярни транзистора. Това отнема много място и отделя голямо количество топлина. За основната памет се използва 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 чиповете се основават на квадратна матрица. Адресът е разделен на 2 части. Първа влиза младшата част.

CS

CS – Chip Select – посочва кой от чиповете съхранява даден адрес. Има от 4 до 8 чипа в една конструкция. Подава се част от адреса и само 1 чип я взима. в 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 ). Към 2000 година: 64MB на матрица, 50 ns – Access Time, 100 ns per cycle. DDR е два пъти по-бърза, защото работи по-нагъсто, но е по-чувствителна към излизане от синхронизация. Обикновено от паметта се четат 4 последователни байта ( от row buffer-ът излизат 4 байта, които започват от адрес кратен на 4 ). За първият цикъл ( това са цикли на паметта – не на процесора!!! ), който е 50ns се подава първата част на адреса, за вторият цикъл – втората, през третия цикъл данните излизат навън и в 4-тия цикъл се възстановява извлеченият ред. Всичко това е 200ns. 4 последователни думи ще се прочетат за 16 такта ( думите са през 200 ns ).
Simple Interleaving:

Cycle Address Memory
1 12 A
2 A
3 T
4 B
5 13 A
6 A
7 T
8 B
9 14 A
10 A
11 T
12 B
13 15 A
14 A
15 T
16 B

Interleaving

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

Simple Interleaving

Нареждаме банките на една обща шина на адресите. Като се подаде адрес А – на първата банка влиза А, на втората А+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 байта.

theme14_memory_sth.PNG

Simple Interleaving:

b0 b1 b2 b3
1 12 A A А А
2 13 A A А А
3 14 T В В В
4 15 B T В В
5 T В
6 T

Complex Interleaving

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

theme14_memory_sth2.PNG
Complex Interleaving:
b0 b1 b2 b3
1 12 A
2 18 A A
3 24 T A A
4 32 B T A A
5 B T A
6 B T
7 B

В тази таблица адресите 12, 18, 24 и 32 са абсолютно случайни и не зависят един от друг. В таблицата на простия 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