Основната памет



Дата25.07.2016
Размер95.88 Kb.
#6610
5. Логическа организация на изчислителните системи. Памет – битове, метабитове, адреси на паметта. Устройства и процесори за вход/изход. Представяне на данните. Кодови таблици.
Паметта е хранилище на командите и данните. Минималната порция информация, която се съхранява с бит, който има две стойности – 0 или 1. Паметта е организирана в йерархия от гледна точка на нейния обем и скорост на достъп до информация от нея. Тя се разбива на два големи класа: основната памет (SRAM, DRAM) и външната памет (която се организира върху магнитни ленти, магнитни барабани, магнитни дискове, CD, DVD и същевременен печат).

SRAM паметта се нарича още Cache памет и тя включва cache на L1 и на L2 ниво.

Cache на L1 ниво днес представлява неразделна част от централния процесор. Това не са регистрите на процесора. L2 на cache паметта е извън ЦП и регистрите му, но достъпът между L1 и L2 е милиони пъти по-бърз, отколкото този между L2 и DRAM паметта. Тоест L1 е малка по обем памет, много бърза и много скъпа. L2 е по-голяма по обем. Тя е по-бавна от L1 и сравнително евтина. Днес L2 паметта се прикрепя дори към управлението на самите устройства, като видеопамет, В/И система и т.н.



DRAM се реализира чрез една транзисторна схема, докато SRAM – с шест. DRAM с времето носи затихване на електрическия заряд и се налага през определен квант от време да се извиква т. нар. „опресняване на паметта”. То е действие, което се предизвиква от кварцов итератор на квантови импулси и води до възобновяване на силата на електрическите сигнали. При SRAM такова опресняване не се налага.

Паметта, независимо на кое ниво, е организирана в клетки, които са наредени последователно една след друга. Номерът на клетката се нарича още „адрес на клетка”. Клетките са структурирани и организирани в стр. единици за достъп – byte, полудума, двойна дума. Всяко едно от тези понятия регламентира обема клетки, които с едно обръщане към паметта се обменят. Обменът може да бъде както между памет на различни нива (+ регистрите на ЦП), така и с външната памет.

Масово използваната днес порция за обем е думата – такъв обем битове, в които стандартно се записва едно число или една команда. Броят битове е равен на дължината на думата (16 bits, 32, 64, 128, 37, 60 – размери на думата). През 80-те години се появява понятието „минимашини”, които и днес се използват. Те носят името си от мини дължината на думата – 16b, тъй като по онова време използваната дължина на думата е 32b.

С навлизането на персоналните компютри (83г.) се появява 8-битова дума и имаме „микрокомпютри”. Достъпът до паметта може да бъде на ниво структурна единица; оказва се явно или в кода на командата, или се оказва в полето за местоположението на данните. За първи път това е въведено от фирмата DEC – достъпът е извън кода на командата. Полето за местоположение на данните се разделя на две части по 4 бита. Лявата част чрез специален код указва размера на структурната единица памет за достъп. Този размер не е произвоен – чрез този код се определя коя от структурните групи (бит, байт, дума) да се използва.

В Pentium процесорите командата съдържа 1 бит.

В някои системи всяка клетка с информация се предшества от поле със служебни битове – метабитове – показващи дали клетката съдържа команда или данни. Те се използват само в някои модели суперкомпютри. Днес тази концепция не се развива. При проектиране на КС винаги стои въпросът за начина на позициониране на дадена клетка от паметта (начин на адресиране). Колкото начинът на адресиране по-точно и по-явно указва местоположението пряко в самата команда, толкова тази команда е по-бърза в реализацията си. Въпреки това днес явното адресиране почти не се използва, а се използват различни техники за кодиране на местоположението на клетката – методи за адресация. Паметта е хранилище и на команди, и на данни.



Предствавяне на данните:

  • Представяне на символи

Данните се представят по различен начин, в смисъл как машинната команда гледа на тези данни. Тези данни винаги са последователност от 0 и 1, тоест двоичен набор. Но един и същи двоичен набор се третира по различен начин и следователно има различна стойност за командата, го използва. Във всяка КС има вградена една таблица, която показва на кой двоичен набор кой графичен символ съответства. . Тази таблица се нарича кодова таблица. През 1978г. започва стандартизация на кодовите таблици и днес имаме два стандарта – ANSI и ASCII. ASCII стандартът масово се използва в MS DOS и UNIX ОС. ANSI се използва в Windows и в UNIX. Във всяка КС има т. нар. компонент „знаков итератор”. Той съдържа памет, която представлява правоъгълни матрици с еднакъв размер, като всяка матрица по битове описва чрез кодиране с 0 и 1 графичното изображение на някой символ.

Първият правоъгълник съответства на двоичен набор 00, вторият – на 01, третият – на 02 и така нататък. Така че, когато трябва да се визуализира графичен символ, то програмата издава команда, която се свежда до двоичен код, който визуализира .

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

Съществено е, че всеки компютър в себе си има заредена с ОС явно или неявно кодовата таблица. Когато пишем програма, source на програмата се трансформира в двоични битове на базата на съществуващата в момента кодова таблица. Когато вземем една такава програма от използвания код и я сложим на друг компютър, тя може да не работи адекватно, ако на другия компютър има друга кодова таблица. Примерно, нашата програма води диалог с оператора и се изисква операторът да потвърди с да или не чрез клавиша, който е обозначен с D. Програмата ще направи проверка дали има двоичен набор и ще стане объркване, защото на другата кодова таблица съответства на друг двоичен набор. И така нашата програма няма да работи правилно.

Клавиатурата вътре има буфер за 16 символа, таблица на позиционни кодове – 7 бита – матрица. За всеки бутон има позиция, при натискане на бутона се взима позицията от матрицата, следователно кодира вътре позиционния код, който се записва на върха на буфера. Ако държим натиснат клавиш, започва да писка, защото буферът се препълва. В тялото на мон. има конгр., която хваща и вкарва в регистър, драйв на ОС го прехвърля във ВИ буфер на паметта. Следователно го нареждаме в опашка и прилагаме кодовата таблица.


  • Двоично число с десетична запетая

Всяко десетично число се предствя чрез двоични числа на различни степени

-

Мястото на десетичната точка в набора го следи програмиста. Тоест ако имаме друго число





програмистът трябва да се погрижи десетичната точка да се премести наляво или надясно.







  • Отрицателно число се представя по два начина – като положителните числа в обратен код или в допълнителен код.

Обратен код се получава като всяка двуична цифра се заменя с обратната.

Допълнителен код


Една КС работи или само с допълнителен код, или само с обратен код.



  • Десетично представяне – все още се използва. При него всяка десетична цифра се представя в един полубайт – 4 бита.

Това представяне е удобно при системи, при които няма аритметични операции, тъй като те са бавни с десетичното представяне.

Ако работим с информационна система (без операции, сметки) можем да останем в десетично предствавяне. При много сметки е удобно да се използва двоично или с плаваща запетая.



  • Числата с плаваща запетая се представят по следния начин:



Днес в КС се изисква това представяне да бъде нормализирано, тоест



винаги , , като единицата не е нужно да се записва в мантисата.

Порядъкът ±p: + знак на p съответства на 1

- знак на p съответства на 0.

Днес е възприето като стандарт да няма поле за знака на порядъка, а порядъкът да е допълнен до 128.

Порядък=128+p

2-60порядък=128-60=68

Максималните числа, с които можем да боравим са от 2-128 до 2128.

В КС има специални устройства за тази аритметика. При Intel – аритметичен копроцесор, при Mainframe – самият процесор.

Възприет е стандартът едно число да се кодира в 32 бита, като полето за порядъка е 8 бита, а останалите 24 бита са за мантисата и знака.

Освен това представяне, за по-голяма точност се използват и двойни думи (по дължина) double precision от 64 бита.

64-битови – заради обменът по мериже

8-битови – за числа с плаваща точка


  • Представяне на логически стойности

Логическата стойност приема две значения – true и false. За кодиране на тяхната стойност е необходим 1 бит, пр. 0-true, 1-false.

Съществен е въпросът за местоположението на този бит. КС го вземат и го поставят на точно определено място – едно от трите места. Следователно решението къде да го сложи, кой бит да се използва от клетките за маркиране на тази логическа стойност, зависи от бързината на командите. Следователно проверката се реализира от някои от другите машинни команди. Ако машинната команда за четност е най-бърза, се слага отдясно. По средата на клетката се слага, ако най-бърза е командата за 0 и ненула.



  • Имаме над 20 стандарта (кодови таблици) – БДС, ДКОЙ и други. Има комитет по стандартизация.

Все още има компютри с 6 и 7 битов код (ANSI).

EBCDIC – IBM – масово използван стандарт при кодиране на обем на финансови преводи, кредитни карти. Софтуерът определя хардуера!



  • Представяне на низове от символи

Има три модела на представяне на стринговете.

Всеки символ се представя в една отделна клетка:



Това е първият начин за представяне, тоест при първия метод има едно поле пред низа, съдържащо дължината на целия стринг.

При втория метод




низът от символи не съдържа дължината, но завършва с маркер за край. При IBM Mainframe се използва един байт, пълен с единици, стандартно е запълнен с 0.

Трети модел – чрез верига от указатели:

При него всеки символ се представя в част от думата, а остатъкът съдържа указател към следващата дума, съдържаща следващия символ. В последната дума полето за указател съдържа двоични единици, което е маркер за край на стринга.

Кой от тези методи ще се използва, зависи от КС, езика за програмиране (какви възможности той допуска) и целта на поставената задача, която се решава чрез използването на тези стрингови операции. Ако нашата програма ще използва стрингово представяне основно за целите на някакво търсене (пр. на последователност от символи), то е за предпочитане един от първите два метода с цел бързодействие; като, ако търсенето е от фиксирана позиция на стринга, е за предпочитане първият метод, а, ако е търсене от вида търсене на последователност от символи, за предпочитане е третият метод. Ако класът на задачата е такъв, че имаме динамична работа със структура от много редактиращи операции, за предпочитане е третият метод.

На базата на тази организация на стринговете се организират специализирани БД за обработка на текстова информация, тъй наречените retrieval системи, които позволяват при задаване на някакви стойности на ключови думи бързо търсене на ония стрингове, в които се намират тези думи.

Internet системите са организирани в retrieval системите.


  • Представяне на масиви:

Масивът е съвкупност от еднотипни по структура елементи, които могат да бъдат числа, символи и т.н., но в единно представяне (еднотипни по семантика). Масивите се представят като едномерни, двумерни и т.н., но те винаги се изобразяват върху паметта в линеен вид, тъй като паметта е линейна. Има два метода на представяне на масивите – 1) дескрипторен метод; 2) метод на маргиналното индексиране.

Нека имаме един двумерен масив с елементи.



При първия метод се представят по следния начин: Някъде в паметта на свободно място в клетки от паметта запазваме представянето на елементите от първия ред. Нека d е размерът на клетката, в която са представени елементите. Веднага след първия ред се представя вторият ред (или всички елементи или нищо).

Ако имаме тримерен масив:

Хваща се първата страница от масива и се представя; след това втората страница и т.н. Така се представят всички страници в паметта линейно.

Ако масивът е четиримерен – куб – и имаме след него, то това досега е първи куб, после представяме втория куб и т.н. Това е концепцията за представяне на масиви без значение от размерността.

Съществено в представянето на масива е достъпът до елементите на масива. Нека M0 е начална точка, откъдето започва представянето на масива. Търсим адреса на aij



Транслаторът на всеки ЕП, който представя адреса в този модел, създава един дескриптор преди самия масив. Този дескриптор съдържа размерностите, както и съдържа адреса на началото (М0) и изчислени стойностите p1=k.d.





- този оператор се преобразува в аритметичен израз от този вид. Така за всяко обръщение към елемент от масива има около 10 машинни обръщения. Тези представяния са елегантни и четими, но на машинно ниво са по-тежки и реално са по-неефективни. Затова слизане на ниско (машинно) ниво понякога е по-ефективно (например еднотипна работа с масив – нулиране или сортиране на двумерен масив).

Забележка: посоката на обхождане на масива (номерацията) зависи от самата КС и от нейния модел.
Вторият метод (маргиналното индексиране). Ще разгледаме един тримерен масив.

Имаме набор от указатели към адреси, които са групирани. Първо имаме адреса към описанието, което записваме с 1, втори пойнтер – към всичко, записано с 2, трети – с 3.

Заделя се памет на участъци за тези указатели (в случая 3+12). Някъде в паметта се слага първият елемент на масива, слага се пойнтер към първия ред, пойнтер към втория ред и тъй нататък. Данните не е необходимо да бъдат последователно разположени. Единственото ограничение е данните от един ред или една колонка да бъдат разположени последователно. За първи път този метод се въвежда от VAX-11 машина на DEC и днес това е най-бързият метод за обработка на масиви. Във VAX 11 е въведена концепцията на косвена адресация, която се реализира апаратно. Косвена адресация означава следното: Адресът на данната не се тълкува като такъв, а като адрес на адреса на адреса на данните.

Във VAX-11 се стига до три нива на косвеност. При този вид адресация на M[i][j][l] се присвоява някаква константа, този оператор се транслира в една единствена машинна команда от тип косвено адресиране от трето ниво, обединена с т. нар. индексна адресация i, j, l : // M[i][j]:=const.



В рамките на самата стъпка към адреса на А(М0) се прибавя първият индекс + вторият индекс + първият индекс. Това става на всяка една стъпка апаратно. Следва намиране на клетката с този адрес в паметта.

Използва се в суперкомпютрите за свръх бързи пресмятания, много бързо хардуерно става позиционирането.
Каталог: ~alerad


Сподели с приятели:




©obuch.info 2024
отнасят до администрацията

    Начална страница