Что такое теневой регистр?

Я заметил этот термин Shadow Register, просматривая техническое описание ЦСП TMS320F28335 . Что это на самом деле означает? Имеет ли он физическое расположение в ЦП, как регистры общего назначения?

Какой микроконтроллер?
@LeonHellersизвините за ошибку.. это dsp... TMS320F28335

Ответы (3)

Я предполагаю, что вы столкнулись с этим с точки зрения программирования PIC. Первоначально в PIC порты ввода-вывода обрабатывались очень прямым образом — вы могли читать, какие значения они имели извне, или записывать, какие значения вы выводили, оба по одному и тому же адресу. Недостатком этого было то, что значение, которое вы пытались вывести, могло не соответствовать состоянию на выводе — что-то еще могло влиять на него сильнее, или оно могло просто еще не завершить изменение. Это означало, что для отслеживания того состояния, которое вы намеревались, а не получили, требовалась отдельная переменная, если вы хотели обновить только части порта. Насколько я помню, эта отдельная переменная обычно называется теневым регистром, поскольку вы всегда использовали ее для хранения копии (невидимого) выходного регистра. Более поздние PIC избегают этого, добавляя адреса «защелки», где можно прочитать выходной регистр. Это характерно и для других микроконтроллеров, например, адреса портов и контактов на AVR.

В архитектуре ПК есть аналогичный термин для теневой памяти; в этом случае это обычно означает раздел ОЗУ, используемый для хранения копии более медленного ПЗУ и сопоставленный с тем же адресом. Опять же, он хранит копию какого-то другого хранилища, которое скрыто, потому что копия заменяет его в адресном пространстве.

Изменить: видя, что это TMS320, теневой регистр обеспечивает двойной буфер; этот метод используется для обеспечения своевременного обновления. Сравните использование свопов кадрового буфера в графике. Руководство по данным показывает теневые и активные версии нескольких регистров. Рассмотрим, например, регистр, указывающий конец импульса; если бы вы изменили его на более короткий импульс, сделав это, когда импульс еще не закончился, один импульс вообще никогда не закончится (поскольку он никогда не был равен конечному значению в этом цикле). Но если вы записываете в теневой регистр, аппаратное обеспечение может скопировать его в активный регистр в заведомо безопасной точке — например, именно тогда, когда таймер завершает цикл. Это не описано в Руководстве по данным, которое охватывает конкретные параметры для данного чипа; зная TI, скорее всегоотдельное руководство с описанием функций каждого блока; в этом есть упоминание о теневом режиме в разделе 2.2.

Другое использование термина «теневой», применяемое, в частности, к регистрам, - это сопоставление имен архитектурных регистров с различными физическими регистрами, чтобы обеспечить быстрое полное или частичное переключение контекста. («Банковый регистр» иногда используется как синоним.) Обычно это предназначено для ускорения прерываний.

Проще говоря, теневой регистр — это регистр, разработанный в микроконтроллере для хранения определенных данных, которые будут использоваться позже. Название «Тень» подразумевает дублирование некоторого значения и его повторное использование, чтобы оно не потерялось.

теневые и зеркальные регистры относятся к регистрам, к которым можно получить доступ с нескольких адресов. Например, в аппаратном обеспечении данный регистр имеет один экземпляр, расположенный по адресу F00h. Однако, если он имеет псевдоним 1F00h, чтение или запись в F00h аналогичны чтению или записи в 1F00h и наоборот.

Было бы неплохо объяснить, для чего нужны эти теневые регистры.