КР2 (1184233)
Текст из файла
Синдеев Михаил, гр. 521
Контрольная работа №2.
-
Многоуровневый кэш
Представляет собой набор кэшей разного размера. У кэша меньшего размера ниже частота попадания (hit rate), но и меньше задержка при обращении (latency).
Параметры:
1) Количество кэшей (обычно 2 или 3)
2) Размер кэшей (например: L1 – 128 кб, L2 – 1024 кб)
3) Включительный/исключительный кэш (inclusive/exclusive). Включительная архитектура построения кэш-памяти (inclusive cache) подразумевает, что если строка содержится в кэше L1, то она также дублируется и в кэше L2, и, естественно, в основной памяти, т.е. каждая память более низкого уровня содержит в себе все содержимое памяти более высокого уровня. Эффективный размер кэша равен размеру большего кэша, т.е. L2.
При использовании исключительной архитектуры L2 не содержит копии кэша L1, а дублирует только write-back строки, модифицированные и ожидающие записи в основную память. Таким образом эффективный размер кэша равен L1+L2.
Учёт при программировании: при необходимости обработать одни и те же данные несколько раз (итерационно), наиболее эффективной будет обработка блоками по размеру кэша (т.е. берём 1-ый блок, применяем к нему все итерации, потом 2-ой блок и т.д.).
-
Влияние страничной организации ОЗУ на скорость вычислений
Страничная организация памяти замедляет вычисления. Она эффективна при частом переключении процессов (в многозадачной операционной системе), но работа каждого вычислительного процесса замедляется, по сравнению с тем, как он работал бы, являясь единственным процессом в памяти. При нехватке памяти происходит подкачка страниц на внешнюю память (жёсткий диск), что значительно замедляет работу.
-
Программирование с учётом расслоения памяти и выравнивания данных
Если известны параметры расслоения памяти на целевой архитектуре, для повышения производительности программы можно соответствующим образом выравнивать данные. Наиболее быстро происходят обращения по последовательным адресам. Например, при активной работе с двумя массивами их элементы можно чередовать.
-
Использование команд управления кэшем
На некоторых архитектурах имеются специальные команды управления кэшем. Например:
80486:
INVD (Invalidate Internal Caches)
WBINVD (Write Back and Invalidate Cache)
SSE:
MASKMOVQ, MOVNTPS, MOVNTQ, PREFETCH0, PREFETCH1, PREFETCH2, PREFETCHNTA, SFENCE
SSE 2:
CLFLUSH, LFENCE, MASKMOVDQU, MFENCE, MOVNTDQ, MOVNTI, MOVNTPD, PAUSE
Команды PREFETCH обеспечивают предварительную загрузку данных в кэш. Это ускоряет линейное чтение.
Механизм Write-Combining ускоряет линейную запись, если записываемые данные в ближайшее время не понадобятся для чтения (Non-Temporal Hint). При этом от процессора ожидается, что при кэш-промахе он не будет кэшировать строку памяти. Для этого используются команды MOVNTPS, MOVNTQ, MOVNTDQ и т.д.
-
Рекомендации по оптимальному управлению памятью при программировании
Операции с памятью:
-
выделение памяти под переменную или массив
-
освобождение ранее выделенной памяти
-
возможность последующего повторного использования освобожденной памяти
В зависимости от языка программирования, данные операции могут автоматически генерироваться компилятором или же требовать их явное использование в программе.
Примеры:
Assembler – программист сам определяет операции работы с кучей (heap), например, разбивая память на блоки по 64 кб и храня связный список занятых блоков
C – библиотечные функции malloc/free
C++ – операторы new/delete и new[]/delete[]. По умолчанию вызывают malloc/free, но могут переопределяться программистом для более эффективной работы с памятью. Например, возможно заранее выделить большой фрагмент памяти, а потом распределять переменные в нём.
Java, C# – используется технология сборки мусора (garbare collection). С помощью счётчиков ссылок ненужные объекты удаляются из памяти автоматически. Возможно явное указание на ненужность объекта программистом и на действия при удалении объекта (методы Dispose() и Finalize() в C#).
Для оптимального управления памятью обычно имеет смысл исследовать программу профилировщиком (profiler) с целью выявления узких мест, связанных с выделением памяти и оптимизировать эти участки программы (например, сразу выделять всю необходимую память перед циклом, а не по частям внутри цикла).
2
Характеристики
Тип файла документ
Документы такого типа открываются такими программами, как Microsoft Office Word на компьютерах Windows, Apple Pages на компьютерах Mac, Open Office - бесплатная альтернатива на различных платформах, в том числе Linux. Наиболее простым и современным решением будут Google документы, так как открываются онлайн без скачивания прямо в браузере на любой платформе. Существуют российские качественные аналоги, например от Яндекса.
Будьте внимательны на мобильных устройствах, так как там используются упрощённый функционал даже в официальном приложении от Microsoft, поэтому для просмотра скачивайте PDF-версию. А если нужно редактировать файл, то используйте оригинальный файл.
Файлы такого типа обычно разбиты на страницы, а текст может быть форматированным (жирный, курсив, выбор шрифта, таблицы и т.п.), а также в него можно добавлять изображения. Формат идеально подходит для рефератов, докладов и РПЗ курсовых проектов, которые необходимо распечатать. Кстати перед печатью также сохраняйте файл в PDF, так как принтер может начудить со шрифтами.