Архитектура ЭВМ Лекция 9: Иерархия хранения данных. Организация кэш памяти.
Содержание
Введение
- Начало обсуждения высокоуровневых материй и принципов работы компьютера.
- План изучения, начиная с базовых принципов до более сложных конструкций.
Изучение памяти в компьютере
Роль памяти в компьютере
- Обсуждение системы команд и примитивной работы.
- Переход к высокоуровневым конструкциям, начиная с разговора о памяти в компьютере.
Работа с памятью и ее устройство
Организация памяти
- Размышления о доступе к памяти и ее устройстве.
- Упоминание ассоциативного кэша и его использования.
Архитектура NUMA
NUMA архитектура
- Объяснение uniform memory access (UMA) и NUMA архитектур.
- Различия между ними и влияние на работу процессора с памятью.
Пространственное распределение ядер и памяти
Конфигурация ядер и распределение памяти
- Иллюстрация пространственной конфигурации ядер и распределения памяти.
- Необходимость разработки методов для эффективного использования ближней к процессору памяти.
Локальность данных в программировании
Локальность данных
- Объяснение временной локальности при обращении к объектам в программировании.
Иерархия хранения данных и процессоры
Обзор раздела: В данном разделе рассматривается иерархия хранения данных в компьютерных системах, а также основные типы памяти, включая кэш-память и оперативную память.
Иерархия памяти
- Регистры - самая быстрая, но дорогая память.
- Кэш-память - существуют различные уровни кэша для оптимизации доступа к данным.
- Оперативная память (RAM) - более медленная и дешевая по сравнению с кэшем.
- Проблемы оперативной памяти: различные частоты работы, ограниченная пропускная способность шины.
Жесткие диски и Flash-память
- Жесткие диски представляют собой вымирающий тип памяти, в отличие от Flash-памяти, которая является persistent storage.
Основные концепции
- Иерархия хранения данных включает регистры, кэш, оперативную память, жесткие диски и удаленное хранилище.
Оптимизация доступа к данным
Обзор раздела: Здесь обсуждается оптимизация доступа к данным через локальность и уменьшение количества промахов при работе с памятью.
Оптимизация доступа
- Понятие временной и пространственной локальности для минимизации промахов в кэше.
Пример работы с данными
- Рассмотрение случая работы с файлами: необходимость загрузки данных в кэш для ускорения доступа.
Факторы оптимизации
Система кэширования и оперативная память
Обзор раздела: В данном разделе обсуждается структура системы кэширования и ее взаимосвязь с оперативной памятью.
Уровни кэш-памяти
- Существует три уровня кэш-памяти: первого, второго и третьего.
- Кэш первого уровня имеет большие промахи, второй уровень ходит между ними, а кэш третьего уровня представляет собой numa архитектуру.
Промахи в оперативной памяти
- Промахи бывают в оперативной памяти, особенно при изменении интерфейсов доступа к данным.
- Виртуальная память является расширением оперативной памяти через swap раздел.
Организация кэш-памяти процессора
- Обсуждение организации кэш-памяти процессора и необходимости смежных ячеек для эффективного доступа.
Отображение данных в кэше
- Рассмотрение типов отображения данных в кэше, таких как прямое отображение и наборное отображение.
Структура адресного пространства и работы с данными
Обзор раздела: Данный раздел посвящен структуре адресного пространства и методике работы с данными.
Адресное пространство
- Объяснение структуры адресного пространства и его связи с размерностью адресов процессоров.
Организация данных
- Подходы к организации данных в адресном пространстве для эффективного доступа через определенные поля.
Концепция кэш лайнов
Обсуждение локальности и работы с памятью
Обзор раздела: В этом разделе обсуждается сложность работы с памятью, предлагается идея порезать память на куски для более эффективного доступа.
Понимание сложности работы с памятью
- Упоминается сложность в работе с адресами и необходимость упрощения процесса.
- Обсуждается непонятность локальности и возможность моделирования для ясного понимания.
- Рассматривается концепция разбиения слотов памяти для повышения эффективности доступа.
Интерпретация адресов в кэше
Обзор раздела: Здесь рассматривается интерпретация адресов в кэше, а также принципы работы с данными в кэширующей системе.
Интерпретация адресов
- Обсуждается логика интерпретации адресов и использование двух бит для нумерации байтов внутри кэша.
- Разъясняется процесс интерпретации адресов как хитрых или простых, зависящих от структуры данных.
- Рассматривается передача адресов на шину и работа с данными в кэше через физическую схему.
Работа со структурами данных
Обзор раздела: В данном разделе обсуждаются особенности работы со структурами данных и компиляторами при использовании кешей.
Работа со структурами данных
- Уточняется работа с данными по байтам и необходимость компиляторов для корректной обработки структур данных.
- Обсуждается протокол доступа к данным через границы слов при работе со структурами данных.
Обсуждение оптимизации кэша
Обзор раздела: В этом разделе обсуждается ключевой момент доработки алгоритма для улучшения хитрейта в кэше.
Доработка алгоритма
- Анализ ключевого момента доработки алгоритма для увеличения хитрейта в кэше.
- Подход к выбору данных из разных наборов в зависимости от метки make.
- Размышления о возможности работы с произвольными данными и их разделении.
- Объяснение того, как данные могут находиться в кэше из одного сета.
- Характеристики тегов и возможность переиначения данных.
Оптимизация использования памяти
Обзор раздела: Здесь рассматривается эффективное использование памяти при работе с кэшем.
Эффективное использование памяти
- Использование двух наборов данных для оптимизации работы с памятью.
- Размышления о возможностях загрузки слов в кэш из одного набора данных.
- Преимущества создания непрерывной области слов в кэше для оптимальной работы.
Локальность данных и ее значение
Обзор раздела: Обсуждение пространственной и временной локальности данных при работе с памятью.
Локальность данных
- Понятие пространственной локальности и ее значимость при доступе к данным.
- Рассмотрение временной локальности при повторном обращении к одним данным.
- Ограничения при загрузке слов из одного набора данных в кэш.
Максимальное использование памяти
Обзор раздела: Методы оптимального использования доступной памяти для повышения эффективности работы с данными.
Оптимальное использование памяти
- Идеи по увеличению содержания слов в сети для максимального выигрыша от доступной памяти.
- Принципы экстраполяции картинки для объединения элементов в группы слов.
Произвольная организация данных
Обзор раздела: Рассмотрение возможностей произвольной организации данных для более эффективного доступа и управления ими.
Организация данных
Обзор темы: Кэширование данных
Возможности улучшения хранения данных
- Можность заполнить запрос относительно текущего контекста.
- Пример использования кэширования при хранении книг в библиотеке для оптимизации доступа к данным.
- Понятие пространственной локальности и ее влияние на эффективность работы с данными.
Принципы работы с кэшем
Оптимизация доступа к данным
- Поддержка пространственной локальности для улучшения производительности.
- Различные стратегии кэширования и их влияние на работу программы.
Оптимальное использование кэша
Эффективное управление данными
- Разные стратегии кэширования для повышения производительности.
- Использование частей данных с высокой локальностью для оптимизации работы с интерфейсами.
Оптимизация размеров кеша
Важность размеров блоков данных
Гипотетическая система и стратегии записи данных
Обзор раздела: В данном разделе обсуждается гипотетическая система записи данных и две стратегии, связанные с этим процессом.
Гипотетическая система записи данных
- Писатель в системе представляет собой устройство, которое записывает данные в память.
- При записи данных писатель может использовать две стратегии: запись напрямую в память или сначала в кэш, а затем в память.
- Стратегия записи данных в кэш перед передачей их в память позволяет более эффективно управлять данными.
Эффективность алгоритмов записи данных
Обзор раздела: Данная часть фокусируется на эффективности алгоритмов записи данных и их скорости выполнения.
Эффективность алгоритмов
- Рассматривается вопрос о том, какой из двух алгоритмов (напрямую в память или через кэш) эффективнее по скорости выполнения.
- Упоминается надежность и консистентность при работе с данными, особенно при соединении медленных устройств.
Синхронные и асинхронные вызовы функций
Обзор раздела: Здесь рассматривается разница между синхронными и асинхронными вызовами функций.
Синхронные vs. Асинхронные вызовы
- Синхронный вызов - отправка запроса и блокирование до получения ответа; асинхронный - продолжение работы без ожидания ответа.