
- •Память с адресной организацией (с произвольным доступом).
- •Непосредственная адресация
- •Когда может произойти стековый доступ к памяти
- •Как происходит стековый доступ к памяти
- •Регистровый файл
- •Счетчик команд
- •Идея базовой адресации – достижение позиционной независимости. (к 50-51)
- •Непосредственная адресация
- •3. Проверки и передача управления.
- •3.4. Команда организации цикла
- •Переполнение при действиях над целыми числами.
- •Целые со знаком: дополнительный код
- •Сложение и вычитание
- •Поддержка действий с повышенной разрядностью
- •Как перейти от представления с однарной точностью к представлению с двойной ?
- •Особые случаи при действиях над числами пт
- •Неточный результат - округление и его виды
- •Численное антипереполнение, денормализованные и ненормализованные числа, псевдонуль.
- •Действия с бесконечностями
- •Регистр состояния программы (Program status register)
- •Счетчик команд
- •Способы синхронизации: программный опрос состояния versus прерывания
- •Таймерная подсистема
- •Основной счетчик
- •Техника измерения времени (чтение счетчика)
- •Ассоциативная память
Таймерная подсистема
В состав управляющей вычислительной системы УВС обязательно входит подсистема, позволяющая выполнять измерения интервалов времени, а также другие действия со временем. Обычно в состав подсистемы входит несколько узлов, которые принято называть термином «канал таймера» или, более коротко «таймер».
Набор действий, которые можно выполнять, используя «канал таймера», может несколько отличаться для разных УВС, но и в способах реализации (как сделан таймер) и в способах использования (как и в каких ситуациях это применяют) – много общего.
Почему в УВС делают несколько таймерных каналов: а) они могут различаться свойствами и позволять выполнять различные операции со временем б) одного таймерного канала может быть недостаточно для того, чтобы выполнять все необходимые действия.
Основной счетчик
Основа таймера – многоразрядный цифровой счетчик. Он имеет специальный (счетный) вход, на который подается периодически изменяющийся логический сигнал от внутреннего генератора, частота переключений которого FВХ стабильна и известна разработчику (программисту). Каждый период входного сигнала вызывает изменение содержимого счетчика на 1. Некоторые реализации таймеров считают «на сложение», некоторые другие – «на вычитание», наконец есть реализации, в которых программист может программно выбрать направление счета.
Для проведения измерений времени и других действий, счетчик обязательно должен быть программно доступен для чтения. В дальнейшем этот счетчик будем кратко называть «таймер». Таймер последовательно проходит (при счете «на сложение») все значения от 0 до 2n‑1, где n – число разрядов в счетчике таймера, а затем возвращается в состояние 0 (пересчет по модулю 2n). Переход из максимального в нулевое состояние называют переполнением (OV). Время пересчета (между переполнениями) составляет Tп=2n , где =1/FВХ ‑ период входной частоты таймера.
Как увидим далее, бывают случаи, когда желательно (необходимо) иметь доступ к таймеру также и по записи.
Какова типовая техника измерения времени при помощи таймерного канала.
Техника измерения времени (чтение счетчика)
Любые измерения времени являются «разностными», поскольку для шкалы времени отсутствует естественный ноль. В технических устройствах, говоря об измерении времени, имеют в виду измерение длительности интервала времени между двумя событиями. Одним из таких событий (начальным) может быть момент включения питания микрокомпьютера (либо момент старта программы).
Говоря далее о событиях, будем иметь в виду любое изменение в УВС.
Два примера: а) внутреннее событие: управляющая программа достигла определенной команды; б) внешнее событие: сработал датчик, подключенный ко входу параллельного порта.
Для измерения интервала времени необходимо прочитать в переменную содержимое таймера в момент первого события, затем еще раз (в другую переменную) в момент второго события, вычислить разность двух этих значений и умножить ее на длину периода входной частоты таймера. Эта техника работоспособна, если интервал времени между событиями не превышает времени пересчета таймера Tп=2n .
(Можно легко показать, что если между моментами захвата двух значений происходит переполнение таймера, то вычитание все равно дает верное значение разности.)
Отметим, что если таймер программно доступен по чтению, то схемотехника чтения таймера обеспечивает (в большинстве реализаций, но не во всех!) несовпадение моментов чтения и модификации значения счетчика, т.е. опасность прочитать нестабильное значение исключена.
При этом способе измерения момент захвата времени несколько запаздывает по отношению к (внешнему) событию, и возникает систематическая ошибка, включающая следующие составляющие: 1) время выявления внешнего события, 2) время чтения таймера. При вычислении разности двух захваченных значений эти ошибки могут частично или полностью скомпенсировать друг друга.
Таким же образом можно измерить время выполнения фрагмента кода, однако в этом случае компенсации ошибок не происходит, поскольку первый отсчет времени делается ДО начала выполнения фрагмента, а второй отчет – ПОСЛЕ завершения фрагмента, в то время как при захвате времен возникновения внешних событий оба отсчета времени делаются ПОСЛЕ наступления событий.
Отметим два момента.
Пока ничего не говорилось, каким образом можно связать наступление события и выполнение команд, которые должны прочитать содержимое таймера.
Задержка между моментом наступления события и моментом, когда программно считывается содержимое таймера, должна быть минимальной и стабильной.
Всегда ли получается выигрыш в производительности при использовании КЭШ-памяти
Выигрыш в скорости получается только в том случае, если перенесенные один раз в кэш фрагменты затем используются многократно. Это может быть в следующих случаях: а) многократное выполнение одного и того же фрагмента кода в цикле или при многих вызовах одной и той же подпрограммы – выигрыш получается только тогда, когда весь этот фрагмент целиком помещается в кэш; б) выполнение подряд нескольких действий с одними и теми же данными – выигрыш получается, если во время выполнения цепочки действий с данными, они непрерывно (без выгрузки) находятся в кэше
В чем заключается принцип ассоциативной выборки, используемый в КЭШ памяти.