Из операций сравнения вытекает
Виды переходов: по условию, безусловные, безусловные с запоминанием возврата, собственно возврата,
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 |
Двухканальный режим означает параллельное обращение двум стандартным модулям памяти с использованием 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 байт.
Информация о том, какой блок занимает строку (старшая часть адреса) называется тегом и располагается в памяти тегов. В ячейке памяти, где расположен тег, хранится также признак соответствия содержимого строки и соответствующего банка данных.
Как правило, строки кэш заполняются при чтении из основной памяти.
Поэтому строка кэш содержит как данные, так и номер области в основной памяти (тег). При обращении по заданному адресу происходит сравнение считанного номера области (тега) с номером области в адресе и решается вопрос о пригодности выбранных данных.
При выборке новых данных из основной памяти старое содержимое строки затирается. При записи зачастую данные заносятся в обе памяти.
Наиболее часто применяются три способа организации кэш: с прямым отображением, ассоциативная и частично ассоциативная.
При прямом отображении адрес данных представляется как совокупность трёх компонент: тэг, номер строки и номер байта (смещение). При этом сам кэш состоит из совокупности строк (в соответствии с разрядностью номера строки в адресе), каждая из которых содержит тег и все ячейки памяти, которые адресуются смещением. То есть в одной и той же строке кэш могут размещаться данные, относящиеся к разным тегам.
Тег |
Номер строки |
Номер байта |
|||||||||||||
Строки |
Тег |
3б |
2б |
1б |
0б |
00 |
0 |
||||
F |
|||||
…. |
… |
… |
… |
… |
… |
FF |
0 |
0
F
Наличие в кэш элемента данных по заданному адресу определяется значением тега. Если в строке кэш значение тега не совпадает со значением его в адресе, то требуется подкачка её из основной памяти.
Недостаток такой организации проявляется, когда требуется обрабатывать: массив с одинаковыми строками, но разными тегами.
Ассоциативный кэш предполагает, что адрес состоит из двух компонент тега и смещения. При этом количество строк в кэш произвольное (но не более чем количество возможных значений тегов). Однако, чем больше строк, чем дольше поиск.
Поэтому применяется не просто перебор, а ассоциативный поиск (сравнение по всем строкам одновременно). При отсутствии необходимой строки происходит её замена на требуемую из основной памяти. Возможные алгоритмы замены: циклический, редко используемой строки и т. д.
Частично ассоциативный кэш состоит из блоков ассоциативных кэш. При этом адрес – трёхкомпонентный: вторая компонента определяет номер блока.
При применении кэш возникает проблема поддержания соответствия содержимого основной памяти и кэш.
Для записи данных из кэш в ОП применяется алгоритм сквозной записи или алгоритм обратной записи.
Метод сквозной записи предполагает, что изменение содержимого кэш памяти в процессе выполнения операции сопровождается записью в основную память. В этом случае любая запись в кэш сопровождается записью в ОП.
Это может приводить простою процессора. Чтобы избежать этого применяется буферизация записей в основную память.
Метод обратной записи предполагает, что запись в основную память производится только при замене строки в кэш.
Запись блока, отсутствующего в кэш производится прямо в основную память.
В современных РС кэш строится по двухуровневой схеме (первичный и вторичный кэш) и зачастую по гарвардской архитектуре.
Согласование данных в кэш памятях обеих уровней с данными в основной памяти обеспечивает кэш-контроллер.
В Р-4 имеется 3 типа кэш
2-й кэш 256 Кбайт (до 1024; в Celeron – 128 Kбайт)
1-й кэш 8 Кбайт (данные)
Выравнивающий кэш 12тыс. микрокоманд
.
Организация кэш во встроенном процессоре ПЛИС АЛЬТЕРА.
Здесь применена простейшая организация прямого отображения.
Это означает, что младшие разряды адреса являются номером строки в кэш. При этом сама строка содержит - старшие разряды адреса, собственно значение данных (или команды) и признак присутствия.
При такой организации слова, у которых адреса различаются на размер кэш, будут находиться в кэш в одной и той же строке.
При выполнении операций чтения из памяти по полному адресу производится чтение из той строки кэш, чей номер совпадает с младшими разрядами адреса.
|
Старшие разряды |
Младшие разряды |
Адрес (тег) |
Признак |
Данные |
|
||
При операциях записи в память используется метод сквозной записи, при котором запись производится всегда как в кэш, так и в основную память. Заметим, что при подключении кэш признак наличия данных команд во всех строках нулевой.
5.3.4. Постоянные или энергонезависимые памяти
ПЗУ (постоянные запоминающие устройства) предназначены для хранения неизменяемой или редко изменяемой информации, которую можно считать так же просто, как из ОЗУ, но нельзя также просто записать.
Запоминающей средой в ПЗУ является матрица "или - и" на диодах
или транзисторах, при этом информация заносится в матрицу "ИЛИ", а
матрица "И" представляет собой дешифратор на 2N выходов от "N" входов
|
">>
. . . .
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 |
Высокая надёжность и эксплуатационные качества |
Высокая стоимость. Низкая плотность |
Выпускается серийно |