Курс лекций по вычислительной технике

       

Из операций сравнения вытекает


Виды переходов: по условию, безусловные, безусловные с запоминанием  возврата, собственно возврата,

        

4. Дополнительные операции: десятичная арифметика,  плавающая запятая, обработка символов и т.д.

Некоторые статистические данные.

      а) Использование регистров - до  90%  команд  в  программах  использует всего 10 регистров

      б) Частота использования команд. Если общее число команд = 400.

 

     - 29 команд используются в 75% случаях

     - 133 команды - в 99%

      в) Частота использования операций:

     - 40%  - пересылки между регистрами и ОЗУ

     - 30%  - переходы

     - 12%  - сложение и вычитание

     - 5%  - умножение

            - 0,3% - деление

     - 7%   - операции над разрядами

     3,5% - с плавающей запятой

     2%   - управления (кроме переходов)

     0,5% - обработка строк

     0,03%- десятичная арифметика

 

Эффективность ЭВМ существенно возрастает, если увеличить аппаратную поддержку наиболее часто встречающихся операций, так обращение к памяти отнимает до 50% времени, переходы - 20%, логические операции - 15%.

 

 

 

                                                                                                                                                                                                                                           

 

           4.12. Состав операций   IA16/32 (система команд).

Типы операций.

Передачи данных.

–      Арифметические и логические операции: целочисленные, с плавающий запятой, строковые (или  с цепочками данных), над десятичными  числами, групповые операции (ОКМД или SIMD).

–      Операции сдвига.

–      Операции преобразования формата данных: размера операндов, из десятичной системы счисления  в двоичную и обратно.

–      Операции ввода-вывода данных.

–      Операции управления:  порядком следования команд,  состоянием процессора и компьютера в целом, взаимодействия процессора с ОС.


  

      Все операции IA16/32 можно классифицировать следующим образом.

 

1) Операции целочисленного процессора -164.

2) Операции сопроцессора -125.

3) Операции ММХ – расширения -32.

4) Инструкции 3DNow! (AMD)     - 21

5) Операции ХММ - расширения

6) Операции SSE - расширения

7) Операции SSE2 – расширения

 

8.6.2. Алгоритмы целочисленных операций.

 

 

Состав целочисленных операций.

 

1.       Пересылки данных     

2.       Типа сложения

3.       Типа счётчик

4.       Умножения и деления    

5.       Логические операции

6.       Сдвига                

7.       Передачи управления

8.       Операции над флагами

9.       Обработки строк

10. Обработки бит и байт

11. Десятичной арифметики

12. Управления защитой       

13. Прочие.

 

 

Операции пересылки.

 

Основная операция пересылки MUV выполняется между регистрами, между памятью и регистрами. Операции пересылки не изменяют флагов.

 

Перестановка XCHG меняет местами значения своих операндов.

 

   

 

 Команды ввода-вывода.

               

Как и 16 так и 32-разрядные процессоры позволяют  адресовать  до  64К байт­ных внешних регистров  или 32К словных, а также предусмотрен потоковый ввод-вывод. В ЗР инструкции в/в – привилегированные.

Архитектура предполагает, что вне ПЭВМ может существовать до 216 адре­суемых 8 разрядных регистров  или  28  16-разрядных   регистров.

Пересылка осуществляется между регистром АL или АХ и  внешним  регист­ром. Размер субъекта обмена определяется ВУ. Адрес внешнего  регистра задается непосредственно или определяется содержимым регистра DX.

 

 Существуют и строковые команды ввода-вывода.

 

      Команды преобразования типа.

 



Они служат для приведения в соответствие  размеров  чисел  перед выполне­нием арифметических  операций  и  заключаются в распространении знака числа из одного фиксированного регистра во все разряды другого регистра.

    

Операции со стеком.

 

 К операциям пересылок можно отнести и операции с использованием стека.

Стек это такая память,  из которой чтение производится в порядке, обратном записям.  В РС для этой цели выделяется  специальная  область  памяти.

   

 Использование стека обеспечивают три регистра:

   

     SS      - регистр сегмента стека

     SP(ESP) - регистр указателя стека

     BP(ЕBP) - регистр указателя базы стека

 

     Поскольку при  формировании  адреса  сегмент сдвигается в сторону стар­ших разрядов на 4 разряда,  то начальный адрес стека  должен  быть кратен 24=16,  а размер его не должен превышать 216=64кб (в защищённом режиме -4Гб).                           

      В каждый момент доступен только  один  стек, адрес сегмента которого находится в SS.    Содержимое SP является смещением относительно значения  в  SS.  По этой причине  дно стека SP=FFFF.  Заполняется стек снизу вверх и только словами FFFF-2=FFFD....

 Вталкивание  в стек и выталкивание из стека PUSH и   POP.

 

    Операции пересылки адресов в регистры

 

     LEA r16/32,m16/32 ; аналогична МОV, но пересылается не содержимое ячейки памяти, а ее адрес (относительно начала сегмента).

                               

      Команды посылки  указателей, т.  е.  полного адреса в регистровую пару.

 

       Операции типа сложения

 

 Сложение и вычитание чисел со знаком и чисел без знака происходит одина­ково так, как будто это числа со знаком в дополнительном коде.

Однако фиксируется как переполнение, так и перенос (заём) в (из)  старший разряд и программист сам должен следить за этим.

Если числа без знака, то надо следить, был ли перенос,  а, если со знаком, то было ли переполнение мантиссы.

Кроме того, флаг ZF = 1 если результат нулевой.


Значение SF  совпадает  со старшим разрядом результата.


Операции сложения (вычитания) с  использованием переноса (заёма), позво­ляют производить операции над числами любой длины.

 

Изменение знака.

 

Операция алгебраического сравнения.     Производится как вычитание без со­хранения результата, но с  установкой флагов.

 

Операции типа счётчик: инкремент и декремент.

Операции умножения и деления:  Целых без знака и целых со знаком (резуль­тат всегда в регистре).

         

К логическим операциям относятся отрицание, конъюнкция (логическое ум­ножение),  дизъюнкция  (логическое сложение), исключающее "ИЛИ" (сложение по модулю "2"). Операция TEST выполняется как AND, но результат никуда не запи­сывается. Флаги меняются, как после арифметических операций, флаги переполне­ния и переноса - нулевые.

 

                     Операции сдвига классифицируются следующим образом:

 

-       по направлению: вправо и влево.

-       по размеру результата: одинарной и двойной точности.

-       по принципу действия подразделяются на линейные логические, линейные арифметические и  циклические сдвиги.

 Алгоритм линейных сдвигов: а) освобождаемый разряд заполняется нулем; б) очередной выдвигаемый разряд заносится во флаг переноса CF; в) значение ранее выдвинутых разрядов теряется.

При арифметическом сдвиге вправо знаковый разряд своего  значения не меняет.

    Циклические сдвиги подразделяются на сплошные   и  через флаг переноса.

   

   

    Одинарные  логические сдвиги.

 

         Вправо (SHR)                      Влево (SHL).

 

 

 

 

 

        Одинарные арифметические сдвиги.

     Вправо (SAR).                                             Влево (SAL)

.

                                                            

 

 

 

    Как мы видим, арифметические  и логические сдвиги влево совпадают.


Хотя строго говоря арифметический сдвиг должен вызывать переполнение (или знак не должен меняться).


 

Одинарные циклические сдвиги сплошные.

                 ROR                                      ROL

 

 

 

 

 

 

Одинарные циклические сдвиги через флаг переноса.

                  

                             RCR                                                RCL

 

 

 

 

 

 

Команды двойного сдвига являются логическими

     Алгоритм двойных сдвигов:

а) состояние регистра источника не меняется;

         б) очередной выдвигаемый из приёмника разряд заносится во флаг переноса ;

 в) значение ранее выдвинутых из приемника разрядов теряется.

 

 

 

 

 

 

                                       Сдвиг двойной вправо.

                                                  SHRD       

 

 

 

 

 

                             Сдвиг двойной влево.

                                         SHLD       

 

 

 

 

 

Воздействие команд на флаги состояния.

 

Операция

OF

CF

SF

ZF

Типа сложения

+

+

+

+

Типа счётчик

+

Н

+

+

 Умножения

+

+

?

?

Деления

?

?

?

?

Логические операции

0

0

+

+

Сдвиги (1)

+

+

+

+

Сдвиги (>1)

?

+

+

+

SHR

0

+

+

+

Сдвиги циклические (1)

+

+

-

-

Сдвиги циклические (>1)

?

+

-

-

 

«+» - Изменяется в соответствии с результатом.

«-» - Не изменяется.

«0» - Сбрасывается в ноль.

«?» - Значение не определено.

 

         

                Операции обработки строк.

     Под строкой  понимается блок памяти, состоящий из  последовательности байт, слов или двойных слов,  располагающихся  в  соседних ячейках.



     Первая особенность этой группы команд - оба операнда (источник  и  приемник) располагаются в памяти.

     Вторая особенность - местонахождение операндов  предопределено:

      Третья особенность - возможность  выполнения  операции  поочередно над каж­дым элементом  строки.  Эта  возможность  обеспечивается  путем предварения ка­ждой команде префикса повторения "REP", который  заставляет команду повто­ряться, пока ECX/CX не станет  равным  нулю.  Другие префиксы повторения кроме этого условия проверяют флаг "ZF":

     Четвертая особенность - возможность обработки строки как  начиная с первого элемента строки, так и с ее конца.  Направление  модификации определяется значе­нием флага "DF": 0 - инкрементирование регистров, 1-декрементирование.

     В набор строковых команд входят:

-        пересылка строки из одной области памяти в другую

-        сравнение строк из двух областей памяти

-        поиск элемента заданного вида в строке

-        загрузка элемента строки в аккумулятор

-        пересылка элемента из аккумулятора в строку

-        ввод строки из порта в/в

-        вывод строки из порта в/в.

Команды работы с битами:

-        значение бита источника с заданным номером переписать в "cf"

-         установить в ноль бит источника с заданным номером, а его прежнее значение переписать в "cf"

-        установить в "1" бит источника с заданным номером, а его прежнее значение пе­реписать в "cf"

-        инвертировать бит источника с заданным номером, а его прежнее значение пе­реписать в "cf"



-        поиск единичного бита в источнике от 0-го  бита  к 15/31-му

-        поиск единичного бита в источнике от 15/31-го бита к 0-му.

 

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

     Цифры десятичных чисел изображаются 4-разрядным двоичными кодами.

     Такой вид кодирования называется двоично-десятичным.

     Применяются два формата двоично-десятичных чисел:

     - неупакованный формат: каждый байт содержит одну десятичную цифру.

     - упакованный формат: каждый байт содержит две десятичные цифры.

     Т.о. в одном байте могут размещаться числа от 00 до 99.

     Отметим еще одно обстоятельство, стимулирующее использование  десятичных чисел. Дело в том, что исходная информация зачастую представляется в кодах АSСII, где символы десятичных цифр кодируются числами  (0000...1001), что значительно  упрощает  преобразование  символов десятич­ных цифр в двоично-десятичное  представление.

        Операции передачи управления  используется в тех случаях, когда надо  изменить есте­ственный ход программы - перейти к другому участку программы.

Это действие может требоваться как безусловно, так и при выполнении неко­торого условия.

Местонахождение команды, которая выполняется, определяется содержимым двух регистров: CS - регистр сегмента команд и  IP  -  регистра адреса команды от­носительно начала сегмента.

Т.о. передача управления сводится в общем случае к изменению  содержимого этой пары.

 

Условные передачи управления:

- в результате анализа одного флага

- в результате анализа группы флагов

- в результате анализа содержимого регистра СХ

 

Управления циклом:

-        с выходом по счетчику в СХ



-        с выходом по счетчику в СХ или по условию

 

Безусловные передачи управления:

- безусловный переход

- вызов процедуры и возврат из нее

- вход в прерывание и выход из него

 

Подпрограммы - процедуры.

Группа команд, выполняющая некоторую подзадачу, реализованная таким образом, что ее можно использовать любое число раз и в любом  месте, называется подпрограммой. В ЯВУ  аналогом  п/п  служат  процедуры.

Однако, там всю работу по их реализации берет на себя транслятор. В  ЯА ор­ганизация п/п возложена на программиста.

 Проблема вызова процедуры, вообще говоря, может быть решена   посред­ством обычной команды безусловного перехода, у которой метка  перехода - это на­звание процедуры. Необходимо только предварительно  запомнить в регистре или в памяти адрес команды, следующий  за  командой вызова (к которой надо вернуться после выполнения всех команд подпрограммы).

Подпрограмма после завершения извлекает этот адрес и совершает по нему переход в основную программу.  В РС передача адреса возврата осуществляется только через стек. Для этой цели служат специальные команды: CALL и RET.

 

Команда CALL записывает адрес следующей  за  ней команды в стек и затем осуществляет переход на первую команду процедуры.

 

Команда RET считывает из вершины стека адрес и осуществляет  переход по нему.

Существуют следующие способы передачи  аргументов  процедуре  (да и воз­врата результатов):

 

     - через регистры

     - через общую область памяти

    -  через стек

    

 

         Операции вызова  прерываний.

 

Вообще  прерывание означает временное прекращение основного  процесса вычислений для выполнения действий  предусмотренных  операционной системой. Т. о. прерывания - это средство передачи управления операционной системе.

 

В зависимости от источника прерывания подразделяются на следующие типы

- внешние прерывания (маскируемые): вызов ОС внешним асинхронным ис­точником; маскирование осуществляется сбросом в "0" флага IF.



- внутренние (немаскируемые): вызов ОС для анализа возможных  нарушений выполнения отдельных команд (исключительных ситуаций  или  исключений).

- программные прерывания, вызываемые по специальной команде  процессора для организации взаимодействия рабочей программы с ОС.

Обработка любых прерываний производится в три этапа:

     - прекращение выполнения текущей программы

 - переход к выполнению программы обработки прерываний

 - возврат управления прерванной программе.

 

     Действия, выполняемые на первом этапе:

-        сохранение в стеке регистра  флагов

-        сохранение в стеке CS

-        сохранение в стеке IP

-        сброс флага  разрешения прерываний

Последнее, чтобы исключить возможность возникновения вложенного преры­вания на пока обработчик прерывания не разрешит их командой  STI  (установка флага разрешения прерываний).

 

 Задача второго этапа - определение источника прерывания  и  вызов соответ­ствующей программы обработки прерываний. В реальном режиме  допускается до 256 источников прерываний. Каждому  источнику  прерываний соответствует отдельная программа обработки прерываний. Адрес местона­хождения этой программы определяется 4-х байтной адресной парой СS:IP.

 Располагаются эти адреса в начале памяти, начиная с  0-го  адреса, занимая т.о. 1024 байта (таблица векторов  прерываний).  Каждый  вызов пре­рывания сопровождается передачи в процессор и номера (вектора) прерывания.

 

Действия, выполняемые на втором этапе

-        определение местоположения начального адреса обработчика прерывания путем умножения вектора прерывания на 4

-        пересылка первых двух байтов в IP

-        пересылка следующих двух байтов в CS, т.о. осуществляется переход к адресу СS:IP



Далее выполняется сама программа обработки прерываний. В процессе ее вы­полнения блокировка и разрешение  вложенных  прерываний реализуются посред­ством сброса CLI и установки STI флага IF.

 

Действия, выполняемые на третьем этапе,  реализуются  посредством после­довательности следующих команд: «STI» ; разрешение прерываний (IF:=1)после выполнения следующей ко­манды, которая обычно «IRET» ; из стека последовательно извлекаются:  IP, CS, FLAGS.

Любые аппаратные прерывания могут быть  сымитированы  посредством команды:

 

     INT i; где i - номер вектора прерывания

 

Свободные вектора могут использоваться для связи рабочей программы с ОС, например, для сообщения ОС факта завершения программы.

Посредством подмены векторов прерываний можно заменять обработчики прерываний.

256 векторов - это на самом деле не так уж  много.  Их количество можно уве­личить путём анализа в обработчике прерывания содержимого дополнительного ре­гистра, например, AH.

         В защищённом режиме все прерывания классифицируются следующим образом.

1.                                 Ввода-вывода

2.                                 Внешние прерывания

3.                                 Программные

4.                                 Отладочные (пошаговые, по контрольным точкам)

5.                                 Программные ошибки.



6.                                 Аппаратные: сбои и отказы

7.                                 По включению и его имитации.

Причины прерываний называются иногда  исключениями.

Виды исключений.

         Собственно немаскируемые прерывания (по включению и его имитации).

Ошибка (fault)– исключение, возникшее до выполнения команды, то есть к ней можно вернуться после обработки прерывания.

Ловушка (trap) - исключение, возникшее после выполнения команды, то есть возврат должен происходить к следующей команде. Программные и аппаратные прерывания относятся к ловушкам.

Отказ (abort) – исключение не позволяет продолжить программу.

Век-

тор

Причина

Тип

Тип

0

Переполнение при делении

#DE

Ошибка

1

Пошаговый режим

#DB

Ловушка

2

Немаскируемое прерывание

NMI

C-A-D, Reset

3

Контрольная точка

#BP

Ловушка

4

Переполнение (INTO)

#OF

Ловушка

5

Превышение границы массива

#BR

Ошибка

6

Недопустимый код операции

#UD

Ошибка

7

Сопроцессор недоступен

#NM

Ошибка

8

Двойная ошибка

#DF

Отказ

9

-

 

 

10

Недоп. сегмент сост. задачи

#TS

Ошибка

11

Отсутствие сегмента

#NP

Ошибка

12

Выход за пределы стека

#SS

Ошибка

13

Нарушение защиты

#GP

Ошибка

14

Отсутствие страницы

#PF

Ошибка

15

-

 

 

16

Ошибка сопроцессора

#MF

Ошибка

17

Контроль выравнивания

#AC

Ошибка

18

Аппаратный контроль

#MC

Отказ

19-31

-

 

 

32-255

Ввода-вывода и программные

 

Ловушка

<


 

 

  

                            Операции сопроцессора.

Можно выделить пять групп команд.

- передачи  данных (вещественных,  целых,  десятичных, констант,  обмена)

- сравнения данных

- арифметические (сложение, вычитание, умножение и деление вещественных и целых, извлечение  квадратного корня,  вычисление модуля).

- трансцендентные (вычисление тригонометрических функций, логарифмов и степеней)

- управления (установки регистров в исходное состояние, загрузки и сохранения вспомогательных регистров, переключение из реального режима в защищённый  и обратно  и т. д.).

         Большинство операций выполняется  между памятью и вершиной стека или между ячейкой стека и его вершиной.

         Стековая организация регистров сопроцессора предполагает использование обратной польской записи при программировании.

         Выражение

                   a+b×c–d/(e+f)

должно быть  преобразовано к виду              

abc×+def+/–

а к какому виду должно быть преобразовано выражение?

a+b×c–(e+f)/d        

очевидно к abc×+ef+d/–

          То есть первым операндом является  тот, который находится глубже.

 

Операции мультимедийных  расширений.

Команды ММХ.

Сложение и вычитание .

ор1:= ор1*ор2; ор1 – регистр ММХ ; ор2 – регистр ММХ или ячейка памяти.

Делятся на две группы в зависимости от выбранного способа представления результатов,  значение которых выходит за разрядную сетку. Первая группа это обычные операции над целыми ( отдельная операция для каждого формата данных).

Выполнение  операций  второй группы имеет некоторую  особенность. Оно заключается в том, что здесь используется так называемая арифметика с насыщением: в случае выхода результата операции за пределы разрядной сетки непредставимое число заменяется максимальным (или минимальным).

Сложение с насыщением при сложении чисел без знаков.

14+4=18

1110   

+

0100    = 1 0010   заменяется на 1111 - 15



Сложение с насыщением при сложении чисел со знаками.

-8+(-4)= - 12

1000

+

1100=       1 0100 заменяется на 1000

         Умножение.

ор1:= ор1*ор2; ор1 – регистр ММХ ; ор2 – регистр ММХ или ячейка памяти

Предусмотрены две операции: одна  - для получения старших 16 битов; другая  - для  16 младших.

ор1,ор2 – 4-е  16 битных слова в регистре ММХ.

Выполняется  одновременно четыре умножения.

Умножение со сложением. Полученные  32х битовые произведения  дополнительно складываются: пр1+пр2; пр3+пр4  и помещаются в регистр.

         Сравнения.

Двух типов:  равно /неравно; больше/меньше. Результат операции либо  единицы,  либо нули.

         Логические:        «И», «И-НЕ», «ИЛИ», «исключающее ИЛИ»

Арифметические и логические сдвиги.

         Команды упаковки и распаковки предназначены для изменения размера операндов.

         Упаковка: два двойных слова  в четыре одинарных,  четыре и четыре слова   в 8 байт. При этом сжатие производится  с использованием насыщения.

         Распаковка: из  четыре  и  четыре старших байта  в 8 байт; два и два старших слова в одно; два старших двойных слова в одно. И такие же для распаковки младших половин.  

         Однако, введение команд ММХ не оправдало возлагаемых надежд.

         И в Р3 Были введены,  во-первых, 12 дополнительных целочисленных  команд и, во-вторых, специальный потоковый процессор  SSE (Streaming SIMD Extension) – ХММ-расширение (70 команд).

         Среди новых целочисленных команд появились такие, как  вычисление среднего из двух значений,  извлечение одного слова из четырёх по маске, извлечение минимального (или максимального) значения из двух, извлечение одновременно всех знаков и т.д.

Начиная с Р-4 введена группа команд SSE-2, которая использует 8 новых 128-разряных регистров ( по 4 числа с плавающей запятой в каждом  регистре). 

                 5. Организация памяти.

 

 5.1. Принцип действия.

Память есть массив двоичных запоминающих элементов.



Основу построения памяти составляет регулярность, что  позволяет

её достаточно просто наращивать в процессе модернизации.

           5.2. Основные параметры, характеризующие память

Характеристики ЗУ.

Характеристика

  Параметры

Тип (размещение)

Внутренняя память (та, адрес которой указывается в ко­манде), внешняя обращение к которой осуществ­ляется операциями ввода-вывода), сменный носитель1

Адресуемая единица

(ширина выборки)

 Бит, байт, слово, блок

Ёмкость       

 количество  адресуемых единиц2

Потребляемая мощ­ность

мкв/бит

Метод доступа

произвольный, прямой, последовательный,   ассо­циа­тивный3

Способ обращения

с обращением по адресу, стековая память,

ассоциативная (адресация по признакам)

Быстродействие 

  время доступа, время цикла, скорость обмена

Запоминающая среда

 полупроводниковые, магнитные, оптические, сме­шан­ные

Время хранения

 энергозависимые, энергонезависимые, стираемые, по­стоянные

Пояснения.

1.                 Внутренняя память: сверхоперативная (регистры, стек) кэш, опера­тив­ная, постоянная; внешняя: винчестеры, флеш, съёмная – дисковая.     В основном такая классификация почти совпадает с двумя другими. Так, внутренняя память это - полупроводниковая, а внешняя  -  любая другая (магнитная или оптическая).     Внутренняя память, в основном,  с  произ­вольной  выборкой  (адресная), а внешняя с последовательной.

2.                   Между разрядностью адреса «А» и количеством адресуемых еди­ниц «N» соблюдается соотношение 2А  = N.

3.                   Прямой доступ: произвольный к зоне, последовательный внутри зоны, ассоциативный – доступ по признакам



4.                   Время доступа: от подачи адреса до получения данных, время цикла:  период между подачей адресов, скорость обмена: для ЗУ с произ­вольным доступом – величина, обратная времени цикла; для ЗУ с последова­тельным или прямым доступом  Т=Тср + N/R, где N – количество слов, R – скорость передачи.

5.3. Внутренняя память.

  

-          сверхоперативная – регистровая

-          стековая

-          оперативная

-          промежуточная (кэш-память, видео память и т.д.)

-          постоянная (или с однократным программированием) и полупостоян­ная (или с многократным программированием)

        5.3.1.   СОП

     Сверхоперативная память предназначена для  непосредственного  исполь­зования без ожидания выборки. Её можно условно подразделить на регист­ровую и стековую. Обычно регистровая память используется при  пря-

мой адресации. Число регистров доходит до 128 (и более)

     Стековая память  имеет аналогию с магазином винтовки.  Стек может

двух типов

-           последним вошёл - первым вышел LIFO (опорожнение с вер­шины стека )

     - первым вошёл - первым вышел FIFO (опорожнение со дна стека)

     Существует два способа выполнения стека:

     - двунаправленных регистрах сдвига

     -  на ОЗУ с указателем стека на реверсивном счётчике

     В первом случае регистры мысленно размещаются не  горизонтально,  а

вертикально. Причем число их равно разрядности данных, а  их  длина  -

глубине стека.

     Во втором случае информация в стеке не перемещается,  а с каждым об­ращением к  нему  изменяется  содержимое некоторого регистра – указателя стека.

     Интересным применением стека является его использование для хранения информации при польской (Лукасиевича) инверсной форме записи арифме­тических выражений.


Например, выражение


          (a+b)*(c+d)*f

     X:= -------------     в польской записи будет выглядеть так

             k

     аb+cd+*f*k:

     Если занести эту запись в стек справа налево, то получится  кусок

программы, для выполнения которого достаточно знать только адрес верши-

ны стека.

Правда данные и команды должны  иметь  специальные  признаки

для их различения.

       5.3.2.   Оперативная память (ОЗУ).

     Предназначаются для хранения текущих массивов данных  и команд

и представляет собой матрицу запоминающих  ячеек,  каждая  из  которых

имеет свой  адрес.  В  общем случае ОЗУ состоит из дешифратора адреса,

матрицы ячеек, цепей записи, цепей считывания и цепей управления выбора и выходов.

     Если оперативную память  рассматривать  как  полупроводниковую, то

прежде всего следует остановиться на двух крайних способах организации:

       Словарный            

 

АДРЕС

 

Матричный.

                                                                 

                                                        Адрес столбца B

 

Адрес строки

 

A

                                                              DI            DO

                                                                                                                                   

Рассмотренные структуры являются двумя  полюсами,  между  которыми

располагается все разнообразие структур.

   Комплексирование м/с памяти  осуществляется  путем  как  увеличения

разрядности (горизонтальное наращивание), так и путем  увеличения  ем-

кости (вертикальное наращивание)

     По качеству хранения ОЗУ подразделяются на

     - статические (SRAM)

     - динамические (DRAM)

     Ячейки статической памяти реализуются на триггерах.

Самая экономная память на КМОП (CMOS) имеет время доступа > 100нс  и

может использоваться при батарейном питании.


У быстродействующих  SRAM время доступа составляет < 10нс, ёмкость - 1 Мбит. Типовой интер­фейс:   А0-AN, D0-D7, CS, R/W, OE.


Основное использование  ПЭВМ  -  в качестве кэш-памяти.

     Ячейки динамической памяти однотранзисторные с запоминающим

конденсатором.

         Разрядная

         шина

 

                                      Адрес

     Транзистор открывается по шине А. При подаче  на  разрядную  шину

высокого уровня конденсатор заряжается ("1"), при подаче низкого  уровня разряжается ("0"). При считывании "1" в разрядной цепи будет течь ток, а "0" - нет.

     Для обеспечения  сохранности  информации   необходима  подзарядка

конденсатора - регенерация. Она осуществляется посредством периодиче­ского считывания с последующей перезаписью.

Обычный период  регенерации 8-64мс. Регенерация происходит одно­временно   по всей  строке.     Применяют распределенную регенерацию (с периодом 15,6мкс) и пакетную, когда обращение к памяти блокируется на время регенерации. В современных памятях запросы на регенерацию обра­зуют очередь, которая  рассасывается  в свободное от полезных обращений время.

     В системах, где время жизни информации меньше периода регенерации

регенерация не требуется.

     VRAM - разновидность памятей с совмещением операций записи и чте­ния.

     Типовой интерфейс DRАM: (матричная структура)  мультиплексирован­ный адрес  MA,  строба  адреса  строки  и  столбца  RAS,  CAS,  W/R

D(1,0-3,7,8,15,17,31,35,36). Время доступа - > 45-250нс.

     Начиная с 486 процессора введен режим  пакетного  обмена  данными

между процессором и памятью. пакетный  режим  предполагает  соблюдение

одних и тех же правил формирования последовательности адресов как про­цессором, так и памятью. Пакет состоит из 4-х передач  байта,  слова,

или двойного слова). В пакетном режиме старшие разряды адреса  остаются неизменными в течение передачи пакета.


Начало нового пакета  сопровожда­ ется загрузкой полного адреса, поэтому  первая  передача  занимает время в 2-5 раз большее. Заметим, что длина пакета  выбирается  равной строке кэша.


     Асинхронные памяти - цикл обращения состоит этапов, различных  по

длительности (в настоящее время не применяются.

   

 Синхронные памяти - цикл обращения состоит этапов, одинаковых  по

длительности, что позволяет привязать его к тактовой частоте процессора.

 

   SDRAM - динамическая  память  (10нс,  100Мбит  доступ  по   схеме

5-1-1-1 или 7-1-1-1) повышенным быстродействием за счет

     * синхронности работы (по тактам) с процессором

     * наличием чередования банков

      * наличием конвейера

Interleave - чередование - способ ускорения работы памяти  основанный на том, что обращение происходит  к  последовательным  адресам,

при этом эти адреса находятся в  разных  банках. 

     Банк - группа модулей памяти одинаковой емкости, доступ  к  которой возможен независимо от другой группы.

      Обращение  к  банкам сдвинуто по времени (на такт). Реализуется аппа­ратно контроллером памяти.

     Буфферизировнные памяти предполагают наличие в своем составе  ре-

гистров для хранения данных перед записью, с целью  освобождения  кон-

троллера от дополнительной  нагрузки  (требуется  меньшая  нагрузочная

способность и контроллер меньше занят, но конвейер памяти удлиняется

     Все это позволяет повысить быстродействие по сравнению с частотой

шины (100Мгц) в 4 раза.

     Память SDRAM работала последовательно на частотах  66  (для  Р),

100 (Р-2)для , 133мггц (для Р-3 - 1Ггц)

     Память SDRAM не может удовлетворить требованиям  мощных  про-

цессоров АМД (Атлон) и Интел Р-4 с частотами свыше 1Ггц (скорость  Р-4

при передаче данных по шине достигает 3,2Гбайта/сек, что в 3раза выше,

чем скорость шины с частотой 133Мгц.

     DDR (Double Data Rate) SDRAM  позволяет  повысить  быстродействие

еще в 2 раза за счет способности передавать данные  по  обеим  фронтам



синхросигнала.

       Модуль DDR SDRAM похож на модуль SDRAM, но имеет 184 или 200 кон тактов. Выпускаются две модификации   РС1600  -  200мггц (1,6Гб/с)  и

РС2100 - 266Мггц (2,1Гб/с) имеет  более низкую потребляемую  мощность,

питается напряжением 2,5в и выпускается в модулях от  64МБ  до  1Гб  с

буферизацией и без.

        

Соотношение быстродействия (частоты)  системной шины и быстродейст­вия памяти



Частота сис­темной шины про­цессора FSB 



66



100



133



200



266



400



800*



!066*



Частота мо­дуля DDR SDRAM



33



50



66



100



133



200



400



533**



Пропускная способность МБ/с



264



400



528



800



1064



3200



6400



8528

Двухканальная DDR SDRAM предполагает одновременное обращение процессора к двум модулям за счёт введения промежуточных синхросигналов той же частоты.

Двухканальный режим  означает параллельное обращение двум стандартным модулям памяти с использованием 128 –разрядной шины по 64 бита

 ( каждый стандартный модуль  памяти имеет 64 –разрядную шину).

Типы модулей памяти

    SIPР - модули памяти со штыревыми выводами

     SIMM - модули памяти с односторонним расположением контактов  (30

контактов для 8-разрядной шины и 72 - для 32-разрядной).

    DIMM - модули памяти с двухсторонним расположением контактов от 168 до 200.

  

     Rambus DRAM (RDRAM)

     Тактовая частота 400Мгц, с учетом передачи  на  обеих  фронтах  -

800Мгц, Что дает пиковую пропускную способность 1,6  Гб/с.  Внутреннее

ядро имеет 128 разрядную шину, функционирующую на 100Мггц. кристалл  в 64Мбита содержит 8 независимых (16 сдвоенных) банков.  Для  уменьше­ния энергопотребления питание уменьшено до 2,5В (у SDRAM  -   3,3В).  Крометого предусмотрено четыре режима энергопотребления:  Active,  Standby, NAP и Power Down. От 1-го к 4-му потребление уменьшается, а время перехода в активный режим увеличивается.  Есть  сведения,  что  пере­ход  к энергосбережению происходит при пике интенсивности.



     Фирма Ifineon приступила  к  разработке  памяти  RLDRAM  (reduced

latency). Кристаллы емкостью 256Мбит будут работать на частоте  300Мгц

с использованием эффекта DDR. Секрет высокой производительности  -  во

внутренней структуре, предусматривающей организацию 8-банков,  обраще­ние к которым осуществляется поочередно.

           Модули динамической памяти.

          Тип   Кол.конт.    Емк.     Тип                    Быстрод.

          SIPP   30          4Мбх9(8) FRM                    120нс

          SIMM   30          4Мбх9(8) EDO                   60нс

          SIMM   72          16Мбх36(32) EDO                60нс

          DIMM   168 128МБ -  256МБ 64б    SDRAM         100-133MГц

          DIMM   184-200      128-256 DDR   SDRAM         200-266МГц

          RIMM   184         64-256МБ   RDRAM               400МГц

       SO DIMM    72      х36(32) = 2 - 32М (можно по байтно)

       SO DIMM   144      х64(72) = 8 - 64М (можно по байтно)

     Для автоматической идентификации наличия  и  типа  установленного

модуля используются методы  считывания  информации  с  модуля

(заземлённые контакты).

     SPD (Serial Presence Detect) - информация о типе, емкости, быстро-

действии памяти, записанная в специальном ПЗУ. Считывается через

 последовательный порт. (Тип памяти , количество строк, столбцов,  банков,

быстродействие, информация изготовителя).

     Для контроля достоверности хранения и передачи данных  в  модулях

применяется контроль по четности или схемное исправление  ошибок.  Для

контроля по четности к байту добавляют специальный  разряд.  однако  в

модулях ЕСС контролируется слово целиком и они не допускают  побайтно-

го обращения. С целью экономии выпускались модули с генерацией  всегда

верного разряда четности.

      

 

5.3.3. Кэширование обращений к памяти.

 

Память, реализованная на ДОЗУ, не поспевает за быстродействием процессора, реализация же ОЗУ на "статике" технически не оправдано.  Ока­залось, что наиболее оптимально копировать в него из "динамики" ту   часть информации (команд и данных), которая будет использоваться в ближайшее время, т.  е.


создавать «заначку» (cash-наличные деньги или клад).


     Таким образом,  кэш представляет собой быстрый буфер между процессо­ром и медленной памятью.  При обращении за данными в основную память они направляются как в процессор, так и в кэш. При повторных обращениях к этим же данным они выбираются из кэш, и время ожидания процессора со­кращается.

     Если при обращении кэш не содержит требуемой информации  осуществ­ляется её подкачка из основной.

     Кэш может использоваться как для хранения данных,  так и для  команд.

     Производительность кэш зависит как от её быстродействия, так и  от ве­роятности удачных обращений.

 

Пусть, например, время доступа к кэш 12нс, время доступа к основной  памяти  60нс,  вероятность удачных обращений 80%,  неудачных 20%.

 

Тогда среднее время доступа составит

- для удачных обращений 0,8*12=9.6,

-         для неудачных обращений 0,2*(60+12)=14.4,

-          итого в среднем 24мкс.

-          

     Адресация кэш осуществляется по тем же адресам, что  и  основной па­мяти.  Поэтому кэш должен хранить не только блоки данных и/или команд, но и список их текущего соответствия областям основной памяти.

 

Кэш разбивается на строки. Размер строки равен размеру  кэшируемого блока памяти.

В свою очередь каждая строка состоит из фиксированного числа байт (слов) – адресуемых единиц. Обычно размер строки –  от 4 до 256 байт.

Информация о том, какой блок занимает строку  (старшая часть адреса) называется тегом и располагается в  па­мяти тегов. В    ячейке памяти, где расположен тег, хранится также признак соответствия  содержимого строки и соответствующего банка данных.

Как правило, строки кэш  заполняются при чтении из основной памяти.

     Поэтому строка кэш содержит как данные, так и номер области в основ­ной памяти (тег). При обращении по заданному адресу происходит сравнение счи­танного номера области (тега) с номером области в адресе и решается вопрос о пригодности выбранных данных.



 

     При выборке новых данных из основной памяти старое содержимое строки зати­рается. При записи зачастую данные заносятся в обе памяти.

Наиболее часто применяются три способа органи­зации кэш: с прямым отображением, ассоциативная   и частично  ассоциа­тивная.

При прямом отображении адрес данных представляется как совокуп­ность трёх компонент: тэг, номер строки и номер байта (смещение). При этом сам кэш состоит из совокупности строк (в соответствии с разрядностью но­мера строки в адресе), каждая из которых содержит тег и все ячейки памяти, которые адресуются смещением. То есть в одной и той же строке кэш могут размещаться  данные, относящиеся к разным тегам.

Тег

Номер строки

Номер байта

 Основная память.                   Кэш.

Строки

Тег









00

0

F

….











FF

0

                                                   

  0

  F

             

          

Наличие в кэш элемента данных по заданному адресу  определяется значением тега. Если в строке кэш значение тега не совпадает со значением его в адресе, то требуется подкачка её из основной памяти.

Недостаток такой организации проявляется, когда требуется обрабаты­вать: массив с одинаковыми строками, но разными тегами.

Ассоциативный кэш предполагает, что адрес состоит из двух компо­нент тега и смещения. При этом  количество строк в кэш произвольное (но не бо­лее чем количество возможных значений тегов).  Однако, чем больше строк,  чем дольше поиск.


Поэтому применяется не просто перебор, а ассоциа­тивный поиск (сравнение по всем строкам одновременно). При отсутствии необхо­димой строки  происходит её замена на требуемую  из основной па­мяти.  Возможные алгоритмы замены: циклический, редко используемой строки и т. д.

Частично ассоциативный кэш состоит из блоков ассоциативных кэш. При этом адрес – трёхкомпонентный: вторая компонента  определяет номер блока.

При применении кэш возникает проблема поддержания соответствия содержимого основной памяти и кэш.

Для записи данных из кэш в ОП применяется алгоритм сквозной за­писи или алгоритм обратной записи.

Метод сквозной записи предполагает, что изменение содержимого кэш памяти в процессе выполнения операции сопровождается записью в основ­ную память. В этом случае любая запись в кэш сопровождается записью в ОП.

Это может приводить простою процессора. Чтобы  избежать этого применяется буферизация записей в основную память.

 

Метод обрат­ной записи предполагает, что запись в основную память производится только при замене строки  в кэш.

     Запись блока,  отсутствующего  в кэш про­изводится прямо в основную память.

     В современных РС кэш строится по двухуровневой схеме (первичный и вторичный кэш) и зачастую по гарвардской архитектуре.

 Согласование данных в кэш памятях обеих уровней с данными в ос­новной памяти обеспечивает кэш-контроллер.

 

     В Р-4 имеется 3 типа кэш

 2-й кэш                256 Кбайт (до 1024; в Celeron – 128 Kбайт)

 1-й кэш                 8 Кбайт (данные)

 Выравнивающий кэш        12тыс. микрокоманд

.

 

        

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Организация кэш во встроенном процессоре  ПЛИС АЛЬТЕРА.

Здесь применена простейшая организация прямого отображения.

Это означает, что младшие разряды адреса  являются номером строки в кэш. При этом сама строка содержит - старшие разряды адреса, собственно значение данных (или команды) и признак присутствия.



При такой организации слова, у которых адреса различаются на размер кэш, будут находиться в кэш в одной и той же строке.

При выполнении операций чтения из памяти по полному адресу произ­водится чтение из той строки кэш, чей номер совпадает с младшими разря­дами адреса.

 

 

 

Адрес памяти
 
 

Старшие разряды

Младшие разряды



Адрес (тег)

Признак

Данные





При операциях записи в память используется метод сквозной записи, при ко­тором запись производится всегда как в кэш, так и в основную память. Заме­тим, что при подключении кэш признак наличия данных команд во всех строках нулевой.

 

5.3.4. Постоянные или энергонезависимые памяти

     ПЗУ (постоянные запоминающие устройства) предназначены для хране­ния неизменяемой или редко изменяемой информации, которую  можно  счи­тать так же просто, как из ОЗУ, но нельзя также просто записать.

    Запоминающей средой в ПЗУ является матрица "или -  и"  на  диодах

или транзисторах, при этом информация заносится  в  матрицу  "ИЛИ",  а

матрица "И" представляет собой дешифратор на 2N выходов от "N" входов

 

И
 
                                                                           ИЛИ



">



ЯN-1

">>

 

                           

                                      .  .  .  .        



">

    

 

                                                       0     1       2                            I

 По способу занесения информации ПЗУ делятся  на  программируемые

изготовителем или масочные (ROM) и программируемые пользователем (ППЗУ или PROM).

 Масочные ПЗУ имеют явные преимущества  перед  остальными: высокое быстродействие (ок. 30нс), высокую плотность ячеек на  кристалле, низ-

кую стоимость (в 4-8раз, чем ОЗУ). Они используются для хранения



таблиц (1/Х, \/X, тригонометрических функций, знакогенераторов CGA)

     ППЗУ ( PROM программируются на специальных  программаторах и

  используются в СЦВМ для хранения программ. Информация в  них  зано­сится, например, путём прожига плавких перемычек.

         Полупостоянные или перепрограммируемые ЗУ (РПЗУ или  EPROM)  мно­гократного программирования основаны на  накоплении  заряда  при  записи ,сохранении его при считывании и при  выключении  питающего  напряже­ния (энергонезависимые) подразделяются на

     - РПЗУ с УФ стиранием (СРПЗУ или EPROM)

     - РПЗУ с электрическим стиранием (ЭСРПЗУ или EEPROM),иногда с те­невым ОЗУ.

     - флэш-память обладает сочетанием высокой плотности упаковки (выше, чем у "динамики"), энергонезависимого хранения, электрического стирания и записи, низкого потребления, высокой  надёжности  и  невысокой

стоимости при времени доступа 35-200нс. Время стирания  1-2сек,  время

программирования байта -  10мкс, причём имеется возможность  программи­рования без извлечения. В настоящее время флэш-память используется  для BIOS. C этой целью часть флэш-памяти аппаратно защищается от  переза­писи и используется в качестве загрузчика остальной части. Главное отличие флэш памяти от РПЗУ с ЭС – запись (стирание) блока, а чтение слова.

 Особенности использования  флэш-памяти  в  качестве   электронного

диска.

     

Универсальная память будущего.



Технология



Приме-

нение



Преимущества



Недо-

статки



Освоение



РСМ –эффект фазо­вого перехода от аморфного  к кри­сталлическому состоя­нию



Flash,

DRAM



Быстродействие,

 



Стоимость



-



Молекулярная память

(молек. конденсатор)



DRAM



Увеличение

ёмкости в 4 раза, без увеличения стоимости и потребляемой

мощности



Сложность

технологии



2007-2008



РМС - программируемые металлизированные ячейки



Flash,

DRAM



Снижение потребляемой мощности



-



2007-

опытные

образцы



Память на улеродных нанотрубках



Все виды, включая

ЖМД



Снижение потребляемой мощности в 10 раз (DRAM)



Сложность

технологии



2007-2010



MRAM – магнитная оперативная (принцип магнитной поляризации)



Flash,

SRAM



Быстродействие,

 



Малая плотность.

Высокая стоимость.



Опытные партии.



FRAM – ферро-электричкская память



Flash,

DRAM



Высокая надёжность и эксплуатационные качества



Высокая стоимость.

Низкая плотность



Выпускается

серийно

 

 

 


Содержание раздела