- •Встроенные микропроцессорные системы
- •Оглавление
- •2. Программное обеспечение встроенных систем ……….
- •Введение
- •Модуль 1
- •Аппаратные средства встроенных систем
- •1.2. Элементы архитектуры процессоров встроенных систем
- •1.2.1. Множество команд
- •1.2.3.1. Адресное пространство
- •1.2.3.2. Порядок байт
- •1. 2.3.3. Когерентность памяти
- •1. 2.3.4. Защита памяти
- •1. 2. 4. Модель прерываний
- •1.2. 5.Модель управления памятью
- •1.2.5.1. Страничная организация памяти
- •1.2.5.2. Сегментация памяти
- •1.3. Типы процессоров
- •1.4. Формы параллелизма в процессорах
- •1.4.1. Конвейеризация
- •1.4.2. Параллелизм уровня команд
- •1.5.Технологии памяти
- •1.5.1. Оперативная память
- •1.5.1. 1. Статическое озу
- •1.5.2. Постоянное запоминающее устройство (rom)
- •1.6. Иерархия памяти
- •1.6.1. Распределение или карта памяти
- •1.6.2. Блокнотная и кэш память
- •1.6.2.1. Кэш-память прямого отображения
- •1.6.2.2. Ассоциативная по множеству кэш-память
- •1.6.2.3. Обновление кэш-памяти.
- •1.6.2.4. Протокол когерентности кэширования с обратной записью
- •1.7. Магистраль микропроцессорной системы
- •1.8. Базовые устройства ввода-вывода встроенных систем
- •1.8.1. Порты ввода-вывода общего назначения
- •1.7.2. Таймер-счетчик
- •1.8.3. Импульсно-кодовая модуляция.
- •1.8.4. Многоканальный аналого-цифровой преобразователь
- •1.9. Базовые последовательные интерфейсы ввода-вывода
- •1.9.2. Последовательный интерфейс spi
- •1.9.4.1. Введение в usb
- •1.9.4.2. Интерфейс Open Host Controller для usb
- •Вопросы для самоконтроля
- •Модуль 2
- •1.10. Язык проектирования аппаратуры vhdl
- •1.10.2. Введение в vhdl
- •1.10.2.1. Программирование на vhdl для моделирования и синтеза [19]
- •1.10.2.2. Entity и architecture
- •1.10.2.3. Операторы присваивание и process [19]
- •1.10.2.4. Цикл моделирования vhdl
- •1.10.2.5. Многозначная логика и стандарт ieee 1164
- •1.11. Проектирование устройств ввода-вывода и контроллеров
- •1.12. Интегрированная среда разработки аппаратных средств
- •Вопросы для самоконтроля
- •Модуль 3
- •2. Программное обеспечение встроенных систем
- •2.1 Модель вычислений
- •2.2 Автомат с конечным числом состояний
- •2.3. Асинхронный язык проектирования sdl
- •2.4. Синхронный язык проектирования Lustre
- •2.5. Многозадачность.
- •2.5.1. Язык программирования Си
- •2.5.2. Потоки
- •2.5.2.1. Реализация потоков
- •2.5.2.2. Взаимное исключение
- •2.5.2.3. Взаимная блокировка
- •2.5.2.4. Модели непротиворечивости памяти
- •2.5.2.5. Проблемы с потоками
- •2.5.3. Процессы и передача сообщений
- •2.6. Интегрированная среда разработки прикладного программного
- •2.6.2. Комплект программ Telelogic Tau sdl Suite
- •2.6.3. Средства разработки программного обеспечения
- •2.7.1. Моделирование, эмуляция и макетирование
- •2.7.2. Формальная верификация
- •2.7.3. Оценка производительности
- •2.7.3.1. Оценка wcet
- •2.7.3.2. Исчисление реального времени
- •1 2 3 E
- •2.7.4. Модели энергии и мощности
- •2.7.5. Тепловая модель
- •Вопросы для самоконтроля
- •Заключение
- •Задания
- •1. Конвейеризация
- •2. Иерархия памяти
- •3. Базовые устройства ввода-вывода встроенных систем
- •5. Многозадачность
- •6. Валидация и оценка проекта
- •Библиографический список
- •Встроенные микропроцессорные системы
1.6.2. Блокнотная и кэш память
Многие встроенные системы используют в своем составе память различных технологий. Некоторая память может быть доступна перед другой памятью. Говорят, что эта первая память является закрытой процессором. Например, закрытая память (SRAM) обычно используется для сохранения рабочих данных временно, пока процессор оперирует с ними.
Если закрытая память имеет отдельное множество адресов и программа отвечает за перемещение данных в них или из них и удаленную память, то такую память называют сверхоперативной или блокнотной (scratchpad).
Если закрытая память дублирует данные в удаленной памяти, автоматически копируя их туда и обратно, такую память называют кэш памятью.
Для встроенных приложений с ограничениями реального времени кэш памятью представляет значительный препятствие, т.к. ее временное поведение может сильно изменяться и это трудно предсказать. С другой стороны ручное управление данными в блокнотной памяти могут быть трудоемкими для программиста, а автоматические методы управления на уровне компиляторы находятся в начальной стадии развития.
Пусть процессор поддерживает виртуальную память и оборудован MMU для трансляции адресов, имеет карту памяти как на рис. 18. и пусть некоторому процессу может быть разрешено использовать логические адреса из области D (1 GB). MMU может реализовать кэш в области В, достаточного объема. Когда программа выдает адрес памяти, MMU определяет находится ли он в области В и если да, то транслирует адрес и выполняет выборку. Если нет, то фиксируется промах кэш и MMU управляет выборкой данных из вторичной памяти (область D) в кэш (область В). Если ячейки нет и в области D, то MMU фиксирует ошибку страницы, в результате программное обеспечение управляет перемещением данных из диска в память. Так программа создает иллюзию огромной памяти. Расплата за это - трудность в предсказании времени доступа.
Итак, кэш-память – это быстродействующая память буферного типа, заполняемая с умеренной скоростью из ОП. Кэш-память по сравнению с другими видами памяти MPS имеет минимальное время доступа и используется для хранения только тех данных, которые могут понадобиться CPU в ближайшее время.
В МП находится небольшая кэш-память для команд и небольшая кэш-память для данных (разделенная кэш-память первого уровня). Кэш-память второго уровня расположена вне МП и соединена с ним через высокоскоростную магистраль. Эта кэш-память обычно не является разделенной и содержит смесь данных и команд. Ее размер гораздо больше. Кэш-память третьего уровня – это статическое оперативное запоминающее устройство (ОЗУ) в несколько мегабайтов, работающее гораздо быстрее чем динамическое ОЗУ. Обычно все содержимое кэш-памяти первого уровня находится в кэш-памяти второго уровня, а все содержимое кэш-памяти второго уровня находится в кэш-памяти третьего уровня.
Во всех типах кэш-памяти используется следующая модель. MM разделяется на блоки фиксированного размера, которые называются строками кэш-памяти. Строка кэш-памяти состоит из нескольких последовательных байтов (обычно от 4 до 64). В любой момент несколько строк находятся в кэш-памяти. Когда происходит обращение к кэш-памяти, контроллер кэш-памяти проверяет, есть ли нужное слово в данный момент кэш-памяти. Если есть (попадание), то можно сэкономить время, требуемое на доступ к ОП. Если данного слова в кэш-памяти нет (промах), то какая-либо строка из нее удаляется, а вместо нее помещается нужная строка из MM или из кэш-памяти более низкого уровня.