Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
МвСУ_16.11.2011.doc
Скачиваний:
0
Добавлен:
01.04.2025
Размер:
6.76 Mб
Скачать

2.3. Модуль памяти

2.3.1. Супервизор напряжения

Для организации питания ОЗУ от встроенного аккумулятора при выключении основного питания используется супервизор напряжения (рис. 14).

Рис. 14. Структурная схема подключения супервизора напряжения

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

Семейство супервизоров для МПС ИС семейства ADM69X, которые обеспечивают богатый выбор возможностей, в том числе мониторинг напряжения и генерация импульсов сброса, обнаружения пропадания напряжения питания, сторожевой таймер и автоматический переключатель на батарейное питание.

На рисунке 15 представлена функциональная схема включения ADM690/692/694.

Рис. 15 Функциональная схема включения ADM690/692/694

ИС ADM698 – наиболее простой представитель семейства, в нее входит монитор напряжения питания и генератор импульса сброса. ИС обеспечивает генерацию импульса сброса низкого логического уровня длительностью 200 мс в момент подачи напряжения питания, а также если напряжение питания падает ниже уровня в 4,65 В.

ИС ADM699 дополнительно содержит сторожевой таймер. Он должен сбрасываться сигналом от МК с интервалом не более 1 с, в противном случае генерируется импульс сброса длительностью 200 мс. Остальные представители семейства обеспечивают различные дополнительные функции в соответствии с нижеприведенными действиями:

- автоматическое переключение на батарейное питание при пропадании основного питающего напряжения;

- выходной сигнал сброса высокого или низкого логического уровня;

- защиту памяти RAM или EEPROM от попыток записи в нее при пониженном напряжении питания. При этом подается сигнал запрета на вход выбора ИС памяти (CE), если напряжение питания недостаточно для обеспечения гарантированной записи;

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

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

- отдельный выход, индицирующий режим работы от батареи.

2.3.2. Память микропроцессорного устройства

В МПУ можно выделить три основных типа памяти: память программ; память данных, стек и регистры процессора.

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

Для хранения программ обычно служит один из видов постоянной памяти:

- PROM (Programmable Read-Only Memory) – однократно-программируемое ПЗУ);

- EPROM (Erasable Programmable Read Only Memory) – электрически программируемое ПЗУ с ультрафиолетовым стиранием;

- EEPROM (Electrically Erasable Programmable Read-Only Memory) – ПЗУ с электрической записью и стиранием, к этому виду относятся также современные микросхемы Flash-памяти;

- ROM (масочно-программируемое ПЗУ).

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

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

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

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

Электрически программируемая память EPROM состоит из ячеек, которые программируются электрическими сигналами и стираются с помощью ультрафиолетового света. Память PROM может быть запрограммирована только один раз. Эта память обычно содержит плавкие перемычки, которые пережигаются во время программирования. В настоящее время такая память используется очень редко.

Ячейка памяти EPROM представляет собой МОП (металл-оксид-полупроводник) транзистор с плавающим затвором, который окружен диоксидом кремния (SiO2). Сток транзистора соединен с «землей», а исток подключен к напряжению питания с помощью резистора. В стертом состоянии (до записи) плавающий затвор не содержит заряда, и МОП транзистор закрыт. В этом случае на истоке поддерживается высокий потенциал, и при обращении к ячейке считывается логическая единица. Программирование памяти сводится к записи в соответствующие ячейки логических нулей.

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

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

Рис. 16. Ячейка памяти EPROM.

Обычно, микросхемы EPROM производятся в керамическом корпусе с кварцевым окошком для доступа ультрафиолетового света. Такой корпус довольно дорог, что значительно увеличивает стоимость микросхемы. Для уменьшения цены микросхемы EPROM заключают в корпус без окошка (версия EPROM с однократным программированием). Сокращение стоимости при использовании таких корпусов может быть настолько значительным, что эти версии EPROM в настоящее время часто используются вместо масочно-программируемых ROM.

Память EEPROM можно считать новым поколением EPROM памяти. В такой памяти ячейка стирается не ультрафиолетовым светом, а путем электрического соединения плавающего затвора с «землей». Использование EEPROM позволяет стирать и программировать МПУ, не снимая его с платы. Таким способом можно периодически обновлять его ПО.

Память EEPROM более дорогая, чем EPROM (в два раза дороже EPROM с однократным программированием). EEPROM работает немного медленнее, чем EPROM.

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

Функционально Flash-память мало отличается от EEPROM. Основное различие состоит в способе стирания записанной информации. В памяти EEPROM стирание производится отдельно для каждой ячейки, а во Flash-памяти стирание осуществляется целыми блоками. Если Вы хотите изменить содержимое одной ячейки Flash-памяти, то Вам потребуется перепрограммировать целый блок (или всю микросхему). В МПУ с памятью EEPROM можно изменять отдельные участки программы без необходимости перепрограммировать все устройство.

Часто указывается, что МПУ имеет Flash-память, хотя на самом деле он содержит EEPROM. В настоящее время между этими типами памяти имеется мало различий, поэтому некоторые производители используют эти термины как эквивалентные.

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

Регистры МП предназначены для работы с переменными и управления периферийным устройствами.

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

Стек – это электронная структура данных, которая функционирует аналогично своей физической копии – стопки бумаг. Когда что-либо помещается в стек, то оно остается там до тех пор, пока не будет вынуто обратно. Представьте разноцветные листы бумаги, которые укладываются в стопку один на другой. Когда листы удаляются, то происходит их перемещение в обратном порядке. По этой причине, стек часто называют очередью типа LIFO (Last In First Out) – «последний пришел, первый ушел».

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

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

В Гарвардской архитектуре стековые операции могут производиться в памяти, специально выделенной для этой цели и МПУ может выполнят несколько действий одновременно.

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

На практике когда процессор обращается к памяти, проходит несколько машинных циклов, прежде чем он получит запрошенное слово. Чем медленнее работает память, тем дольше процессору приходится ждать, тем больше циклов проходит.

Самый простой способ – начать считывать информацию из памяти и при этом продолжать выполнение команд, но если какая-либо команда попытается использовать слово до того, как оно считано из памяти, процессор должен приостановить работу. Чем медленнее работает память, тем чаще будет возникать такая ситуация и тем больше окажется время простоя процессора.

2.3.3. Кэш-память

Другое решение проблемы это использовать память небольшого объема с высокой скоростью работы, которая называется кэш-памятью.

Основная идея кэш-памяти проста:

- в ней находятся слова, которые чаще всего используются;

- если процессору нужно какое-нибудь слово, сначала он обращается к кэш-памяти. Только в том случае, если слова там нет, он обращается к основной памяти;

- если значительная часть слов находится в кэш-памяти, среднее время доступа значительно сокращается.

Ситуация, когда при последовательных обращениях к памяти в течение некоторого промежутка времени используется только небольшая ее область, называется принципом локальности. Этот принцип составляет основу всех систем кэш-памяти. Идея состоит в том, что когда определенное слово вызывается из памяти, оно вместе с соседними словами переносится в кэш-память, что позволяет при очередном запросе быстро обращаться к следующим словам. Общее устройство процессора, кэш-памяти и основной памяти иллюстрирует рис. 17. Если слово считывается или записывается k раз, компьютеру требуется сделать 1 обращение к медленной основной памяти и k - 1 обращений к быстрой кэш-памяти. Чем больше k, тем выше общая производительность.

Рис. 17. Организация кэш-памяти.

Основная память и кэш-память делятся на блоки фиксированного размера с учетом принципа локальности. Блоки внутри кэш-памяти обычно называют строками кэш-памяти. При кэш-промахе из основной памяти в кэш-память загружается вся строка, а не только необходимое слово. Например, если строка состоит из 64 байт, обращение к адресу 260 влечет за собой загрузку в кэш-память всей строки (байты с 256 по 319) на случай, если через некоторое время понадобятся другие слова из этой строки. Такой путь обращения к памяти более эффективен, чем вызов каждого слова по отдельности, потому что одно кратный вызов k слов происходит гораздо быстрее, чем вызов одного слова k раз.

Кэш-память очень важна для высокопроизводительных процессоров. Однако здесь возникает ряд вопросов. Первый вопрос – объем кэш-памяти. Чем больше объем, тем лучше работает память, но тем дороже она стоит. Второй вопрос – размер строки кэш-памяти. Кэш-память объемом 16 Кбайт можно разделить на 1024 строки по 16 байт, 2048 строк по 8 байт и т.д. Третий вопрос – механизм организации кэш-памяти, то есть то, как она определяет, какие именно слова находятся в ней в данный момент.

В настоящее время существует тенденция к использованию разделенной кэш-памяти, когда команды хранятся в одной кэш-памяти, а данные – в другой. Данная идея использования отдельной памяти для команд и данных впервые воплотилась в компьютере Маrk III разработанный в гарвардском университете. Современные разработчики пошли по этому пути, поскольку сейчас широко распространены конвейерные архитектуры, а при конвейерной организации должна быть возможность одновременного доступа и к командам, и к данным (операндам). Разделенная кэш-память позволяет осуществлять параллельный доступ, а общая – нет. Во время выполнения программы команды обычно не меняются и содержимое кэш-памяти команд не приходится записывать обратно в основную память.

В настоящее время очень часто кэш-память первого уровня располагается прямо на микросхеме процессора, кэш-память второго уровня – не на самой микросхеме, но в корпусе процессора, а кэш-память третьего уровня – еще дальше от процессора.