Для студентов МГТУ им. Н.Э.Баумана по предмету Основы программирования на C++С++ ИУ8 ЛР2: кэшС++ ИУ8 ЛР2: кэш
2021-05-302021-05-30СтудИзба
ДЗ: С++ ИУ8 ЛР2: кэш
Описание
# Лабораторная работа №2
> Кэш - промежуточный буфер с быстрым доступом, содержащий информацию, которая может быть запрошена с наибольшей вероятностью. Доступ к данным в кэше осуществляется быстрее, чем выборка исходных данных из более медленной памяти или удаленного источника, однако её объём существенно ограничен по сравнению с хранилищем исходных данных.
### Задача
Для каждого из вариантов проходов (*прямой*, *обратный* и *случайный*) целочисленного массива
провести исследование зависимости времени от размера.
Каждое исследование включает в себя серию эксперементов c определенными размерами.
Количество экспериментов в серии определяется следующим образом:
```cpp
1/2 * cache_sizes['1'] < 2^x < 2^(x+1) < ... < 2^(x+n) < 3/2 * cache_sizes['max']
```
### Пример
В примере ниже показано, что для процессора с тремя уровнями кэша (`2mb`, `4mb`, `8mb`)
необходимо провести серию из 5 эксперементов.
```cpp
cache_size['1'] = 2 mb;
cache_size['2'] = 4 mb;
cache_size['3'] = 8 mb;
// 1mb < 2mb < 4mb < 8mb < 12mb
```
### Эксперимент
Каждый эксперемент состоит из 3 шагов:
```cpp
1. Создание буфера
2. Прогревание кэша
// <-- время начала эксперемнта
3. Циклический проход (1000 итераций)
// <-- время окончание эксперемента
```
#### Шаг 1
Инициализация буфера может происходит, как с помощью чтения данных из файла в выделенную область памяти,
так и с помощью случайного заполнения с использованием генератора случайных чисел.
#### Шаг 2
Данный шаг необходимо выполнить для получения репрезентативных данных, т.к. кэш-память еще не заполнена.
#### Шаг 3
Для получения времени обхода от размера массива процедуру прохода необходимо многократно повторить (порядка 1000 раз).
### Результаты
Ниже представлен формат и пример отчета:
```yaml
investigation: | investigaion:
travel_variant: <вариант_прохода> | travel_order: "direction"
experiments: | experiments:
- experiment: | - experiment:
number: | number: 1
input_dаta: | input_dаta:
buffer_size: <размер_буфера> | buffer_size: "1mb"
results: | results:
duration: <продолжительность> | duration: "1ns"
- experiment: | - experiment:
number: <номер_эксперимента> | number: 2
input_dаta: | input_dаta:
buffer_size: <размер_буфера> | buffer_size: "2mb"
results: | results:
duration: <продолжительность> | duration: "2ns"
|
investigation: | investigation:
... | ...
```
⚠️ В отчет также необходимо добавить общий график с результатами всех исследований. ⚠️
Характеристики домашнего задания
Учебное заведение
Семестр
Просмотров
46
Покупок
1
Размер
342,98 Kb
Список файлов
- ._.DS_Store 120 b
- ._hooks 210 b
- ._info 210 b
- ._logs 210 b
- ._objects 210 b
- ._refs 210 b
- ._heads 210 b
- ._remotes 210 b
- ._origin 210 b
- ._00 210 b
- ._01 210 b
- ._08 210 b
- ._09 210 b
- ._0b 210 b
- ._12 210 b
- ._19 210 b
- ._23 210 b
- ._29 210 b
- ._2f 210 b
- ._33 210 b
- ._3b 210 b
- ._42 210 b
- ._48 210 b
- ._4f 210 b
- ._56 210 b
- ._6c 210 b
- ._70 210 b
- ._79 210 b
- ._7b 210 b
- ._86 210 b
- ._87 210 b
- ._89 210 b
- ._8e 210 b
- ._97 210 b
- ._9c 210 b
- ._a1 210 b
- ._a2 210 b
- ._a5 210 b
- ._aa 210 b
- ._ae 210 b
- ._b4 210 b
- ._bb 210 b
- ._c1 210 b
- ._d1 210 b
- ._d2 210 b
- ._d8 210 b
- ._e5 210 b
- ._e7 210 b
- ._ea 210 b
- ._eb 210 b