- •«Пермский национальный исследовательский политехнический университет»
- •«Встроенные микропроцессорные системы»
- •Составитель о.В. Гончаровский
- •Оглавление
- •2. Программное обеспечение встроенных систем ……….
- •Введение
- •Аппаратные средства встроенных систем
- •Организация аппаратных средств встроенных
- •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.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 для моделирования и синтеза [22]
- •1.10.2.3. Операторы присваивание и process [22]
- •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. Исчисление реального времени
- •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 фиксирует ошибку страницы, в результате программное обеспечение управляет перемещением данных из диска в память. Так программа создает иллюзию огромной памяти. Расплата за это - трудность в предсказании времени доступа.
Итак, кэш-память – это быстродействующая память буферного типа, заполняемая с умеренной скоростью из ОП. Кэш-память по сравнению с другими видами памяти МПС имеет минимальное время доступа и используется для хранения только тех данных, которые могут понадобиться ЦПУ в ближайшее время.
В МП находится небольшая кэш-память для команд и небольшая кэш-память для данных (разделенная кэш-память первого уровня). Кэш-память второго уровня расположена вне МП и соединена с ним через высокоскоростную магистраль. Эта кэш-память обычно не является разделенной и содержит смесь данных и команд. Ее размер гораздо больше. Кэш-память третьего уровня – это статическое оперативное запоминающее устройство (ОЗУ) в несколько мегабайтов, работающее гораздо быстрее чем динамическое ОЗУ. Обычно все содержимое кэш-памяти первого уровня находится в кэш-памяти второго уровня, а все содержимое кэш-памяти второго уровня находится в кэш-памяти третьего уровня.
Во всех типах кэш-памяти используется следующая модель. ОП разделяется на блоки фиксированного размера, которые называются строками кэш-памяти. Строка кэш-памяти состоит из нескольких последовательных байтов (обычно от 4 до 64). В любой момент несколько строк находятся в кэш-памяти. Когда происходит обращение к кэш-памяти, контроллер кэш-памяти проверяет, есть ли нужное слово в данный момент кэш-памяти. Если есть (попадание), то можно сэкономить время, требуемое на доступ к ОП. Если данного слова в кэш-памяти нет (промах), то какая-либо строка из нее удаляется, а вместо нее помещается нужная строка из ОП или из кэш-памяти более низкого уровня.
1.6.2.1. Кэш-память прямого отображения
Кэш-память прямого отображения является самым простым типом кэш-памяти. На рис.20 приведен пример одноуровневой кэш памяти, содержащей 1024 блока по 32 байта.
Рис.20. Кэш-память прямого отображения и формат адреса
Каждый элемент кэш-памяти состоит из трех частей:
Поле Tag (бирка) содержит старшие 17 разрядов адреса памяти, из которого поступил блок данных (адрес блока).
Поле Valid (действительно) содержит сведения о достоверности данных.
Поле Block содержит копию блока данных памяти.
В кэш-памяти прямого отображения данный блок может храниться только в одном месте по номеру блока. Когда процессор выдает адрес памяти, контроллер кэш-памяти выделяет из этого адреса 10 бит номера блока и использует их для поиска в кэш-памяти одного из 1024 элементов. Если этот элемент действителен, то производится сравнение поля Tag адреса и поля Tag кэш-памяти. Если поля равны, то попадание, иначе – промах. В случае попадания слово считывается из кэш-памяти. При промахе или недействительности, блок вызывается из памяти и сохраняется в кэш-памяти, заменяя тот блок, который там был.