Эффективность контроллера кэш-памяти процессора определяется такими факторами, как

Обновлено: 21.11.2024

Архитектура компьютера связана с проектированием компьютеров, устройств хранения данных и сетевых компонентов, которые хранят и запускают программы, передают данные и управляют взаимодействием между компьютерами, сетями и пользователями. Компьютерные архитекторы используют параллелизм и различные стратегии организации памяти для проектирования вычислительных систем с очень высокой производительностью. Компьютерная архитектура требует тесного взаимодействия между компьютерными учеными и компьютерными инженерами, поскольку они оба в основном сосредоточены на разработке аппаратного обеспечения.

На самом базовом уровне компьютер состоит из блока управления, арифметико-логического блока (ALU), блока памяти и контроллеров ввода-вывода (I/O). АЛУ выполняет простые операции сложения, вычитания, умножения, деления и логические операции, такие как ИЛИ и И. В памяти хранятся инструкции и данные программы. Блок управления извлекает данные и инструкции из памяти и использует операции АЛУ для выполнения этих инструкций с использованием этих данных. (Блок управления и АЛУ вместе называются центральным процессором [ЦП].) Когда встречается инструкция ввода или вывода, блок управления передает данные между памятью и назначенным контроллером ввода-вывода. Скорость работы ЦП в первую очередь определяет скорость работы компьютера в целом. Все эти компоненты — блок управления, АЛУ, память и контроллеры ввода-вывода — реализованы на транзисторных схемах.

Компьютеры размещают веб-сайты, состоящие из HTML, и отправляют текстовые сообщения так же просто, как. РЖУ НЕ МОГУ. Взломайте этот тест, и пусть какая-нибудь технология подсчитает ваш результат и раскроет вам его содержание.

Компьютеры также имеют другой уровень памяти, называемый кешем, небольшой, чрезвычайно быстрый (по сравнению с основной памятью или оперативной памятью [ОЗУ]) блок, который можно использовать для хранения информации, которая срочно или часто требуется. Текущие исследования включают дизайн кэша и алгоритмы, которые могут прогнозировать, какие данные потребуются в следующий раз, и предварительно загружать их в кэш для повышения производительности.

Контроллеры ввода-вывода подключают компьютер к определенным устройствам ввода (таким как клавиатуры и сенсорные дисплеи) для передачи информации в память и к устройствам вывода (таким как принтеры и дисплеи) для передачи информации из памяти пользователям. Дополнительные контроллеры ввода-вывода подключают компьютер к сети через порты, обеспечивающие канал, по которому передаются данные, когда компьютер подключен к Интернету.

К контроллерам ввода-вывода подключены дополнительные устройства хранения, такие как дисковые накопители, которые работают медленнее и имеют большую емкость, чем основная или кэш-память. Дисковые накопители используются для хранения постоянных данных. Они могут быть постоянно или временно подключены к компьютеру в виде компакт-диска (CD), цифрового видеодиска (DVD) или карты памяти (также называемой флэш-накопителем).

Работа компьютера после загрузки программы и некоторых данных в оперативную память происходит следующим образом. Первая инструкция передается из ОЗУ в блок управления и интерпретируется аппаратной схемой. Например, предположим, что инструкция представляет собой строку битов, являющуюся кодом для ЗАГРУЗКИ 10. Эта инструкция загружает содержимое ячейки памяти 10 в АЛУ. Выбирается следующая инструкция, скажем, ADD 15. Затем блок управления загружает содержимое ячейки памяти 15 в АЛУ и добавляет его к уже имеющемуся номеру. Наконец, инструкция STORE 20 сохранит эту сумму в ячейке 20. На этом уровне работа компьютера мало чем отличается от работы карманного калькулятора.

В целом, программы — это не просто длинные последовательности операций ЗАГРУЗКИ, СОХРАНЕНИЯ и арифметических операций. Самое главное, компьютерные языки включают условные инструкции — по сути, правила, которые гласят: «Если ячейка памяти n удовлетворяет условию a, выполните следующую команду с номером x». , иначе выполните инструкцию y». Это позволяет определять ход программы по результатам предыдущих операций — критически важная возможность.

Наконец, программы обычно содержат последовательности инструкций, которые повторяются несколько раз до тех пор, пока заданное условие не станет истинным. Такая последовательность называется циклом.Например, потребуется цикл для вычисления суммы первых n целых чисел, где n — это значение, хранящееся в отдельной ячейке памяти. Компьютерные архитектуры, которые могут выполнять последовательности инструкций, условные инструкции и циклы, называются «полными по Тьюрингу», что означает, что они могут выполнять любой алгоритм, который может быть определен. Полнота по Тьюрингу — фундаментальная и важная характеристика любой компьютерной организации.

Логический дизайн — это область информатики, которая занимается проектированием электронных схем с использованием фундаментальных принципов и свойств логики (см. булева алгебра) для выполнения операций блока управления, ALU, контроллеры ввода-вывода и другое оборудование. Каждая логическая функция (И, ИЛИ и НЕ) реализуется устройством определенного типа, называемым логическим элементом. Например, схема сложения АЛУ имеет входы, соответствующие всем битам двух суммируемых чисел, и выходы, соответствующие битам суммы. Расположение проводов и вентилей, соединяющих входы и выходы, определяется математическим определением сложения. В конструкции блока управления предусмотрены схемы, интерпретирующие инструкции. Из-за потребности в эффективности логическая конструкция также должна оптимизировать схему для работы с максимальной скоростью и иметь минимальное количество логических элементов и цепей.

Важной областью, связанной с архитектурой, является разработка микропроцессоров, которые представляют собой полноценные ЦП — блок управления, АЛУ и память — на одном кристалле интегральной схемы. Дополнительная память и схема управления вводом-выводом связаны с этим чипом, чтобы сформировать законченный компьютер. Эти миниатюрные устройства содержат миллионы транзисторов, реализующих блоки обработки и памяти современных компьютеров.

Проектирование микропроцессора СБИС происходит в несколько этапов, включая создание начальной функциональной или поведенческой спецификации, кодирование этой спецификации на языке описания оборудования, разбивку конструкции на модули и создание размеров и форм для конечных компонентов микросхемы. Это также включает в себя планирование чипа, которое включает в себя создание «плана этажа», чтобы указать, где на чипе каждый компонент должен быть размещен и соединен с другими компонентами. Ученые-компьютерщики также участвуют в создании инструментов автоматизированного проектирования (САПР), которые помогают инженерам на различных этапах проектирования микросхем, а также в разработке необходимых теоретических результатов, таких как эффективное проектирование плана этажа с почти минимальной площадью, удовлетворяющей требованиям. заданные ограничения.

Прогресс в технологии интегральных схем был невероятным. Например, в 1971 году первый микропроцессорный чип (4004 корпорации Intel) имел всего 2300 транзисторов, в 1993 году чип Intel Pentium имел более 3 миллионов транзисторов, а к 2000 году количество транзисторов на таком чипе составило около 50 миллионов. Чип Power7, представленный IBM в 2010 году, содержал примерно 1 миллиард транзисторов. Явление, когда количество транзисторов в интегральной схеме удваивается примерно каждые два года, широко известно как закон Мура.

Закон Мура. Гордон Э. Мур заметил, что количество транзисторов на компьютерном чипе удваивается примерно каждые 18–24 месяца. Как показано на логарифмическом графике количества транзисторов в процессорах Intel на момент их появления, его «закон» соблюдался.

Отказоустойчивость — это способность компьютера продолжать работу при отказе одного или нескольких его компонентов. Для обеспечения отказоустойчивости ключевые компоненты часто реплицируются, чтобы при необходимости их мог взять на себя резервный компонент. Такие приложения, как управление воздушным судном и управление производственным процессом, работают на системах с резервными процессорами, готовыми взять на себя функции в случае отказа основного процессора, а резервные системы часто работают параллельно, поэтому переход происходит плавно. Если системы критичны в том смысле, что их сбой может привести к катастрофическим последствиям (как в случае управления воздушным судном), несовместимые результаты, полученные от реплицированных процессов, запущенных параллельно на разных машинах, разрешаются с помощью механизма голосования. Ученые-компьютерщики занимаются анализом таких реплицированных систем, предоставляя теоретические подходы к оценке надежности, достигаемой при данной конфигурации и параметрах процессора, таких как среднее время наработки на отказ и среднее время, необходимое для ремонта процессора. Отказоустойчивость также является желательной функцией в распределенных системах и сетях. Например, преимуществом распределенной базы данных является то, что данные, реплицированные на разных узлах сети, могут обеспечить естественный механизм резервного копирования в случае сбоя одного узла.

Вычислительные науки

Вычислительная наука применяет компьютерное моделирование, научную визуализацию, математическое моделирование, алгоритмы, структуры данных, сети, проектирование баз данных, символьные вычисления и высокопроизводительные вычисления для достижения целей различных дисциплин. Эти дисциплины включают биологию, химию, гидродинамику, археологию, финансы, социологию и судебную экспертизу. Вычислительная наука быстро развивалась, особенно из-за резкого роста объема данных, передаваемых с научных инструментов. Это явление получило название проблемы «больших данных».

Математические методы, необходимые для вычислительной науки, требуют преобразования уравнений и функций из непрерывных в дискретные. Например, компьютерное интегрирование функции на интервале выполняется не путем применения интегрального исчисления, а путем аппроксимации площади под графиком функции как суммы площадей, полученных при вычислении функции в дискретных точках. Точно так же решение дифференциального уравнения получается как последовательность дискретных точек, определяемых путем аппроксимации кривой истинного решения последовательностью касательных отрезков. При такой дискретизации многие проблемы можно преобразовать в уравнение, включающее матрицу (прямоугольный массив чисел), решаемую с помощью линейной алгебры. Численный анализ - это изучение таких вычислительных методов. При применении численных методов необходимо учитывать несколько факторов: (1) условия, при которых метод дает решение, (2) точность решения, (3) является ли процесс решения устойчивым (т. е. не показывает рост ошибки) , и (4) вычислительная сложность (в смысле, описанном выше) получения решения желаемой точности.

Требования к научным задачам, связанным с большими данными, включая решение все более крупных систем уравнений, включают использование больших и мощных массивов процессоров (называемых мультипроцессорами или суперкомпьютерами), которые позволяют выполнять множество вычислений параллельно, назначая их отдельные элементы обработки. Эти действия вызвали большой интерес к параллельной компьютерной архитектуре и алгоритмам, которые можно эффективно выполнять на таких машинах.

Графика и визуальные вычисления

Графика и визуальные вычисления — это область, связанная с отображением и управлением изображениями на экране компьютера. Эта область охватывает эффективную реализацию четырех взаимосвязанных вычислительных задач: рендеринг, моделирование, анимация и визуализация. Графические методы включают в себя принципы линейной алгебры, численного интегрирования, вычислительной геометрии, специального оборудования, форматов файлов и графических пользовательских интерфейсов (GUI) для выполнения этих сложных задач.

Применения графики включают САПР, изобразительное искусство, медицинскую визуализацию, визуализацию научных данных и видеоигры. CAD-системы позволяют использовать компьютер для проектирования объектов, начиная от деталей автомобилей и заканчивая мостами и компьютерными микросхемами, предоставляя интерактивный инструмент рисования и инженерный интерфейс для инструментов моделирования и анализа. Приложения для изобразительного искусства позволяют художникам использовать экран компьютера в качестве среды для создания изображений, кинематографических спецэффектов, анимационных мультфильмов и телевизионных рекламных роликов. Приложения медицинской визуализации включают визуализацию данных, полученных с помощью таких технологий, как рентген и магнитно-резонансная томография (МРТ), чтобы помочь врачам в диагностике заболеваний. Научная визуализация использует огромные объемы данных для моделирования научных явлений, таких как моделирование океана, для создания изображений, которые обеспечивают более глубокое понимание явлений, чем таблицы чисел. Графика также обеспечивает реалистичную визуализацию для видеоигр, моделирования полета и других представлений реальности или фантазии. Термин виртуальная реальность был придуман для обозначения любого взаимодействия с компьютерным виртуальным миром.

Изображение головного мозга человека, пораженного раком, полученное с помощью магнитно-резонансной томографии (МРТ). Ярко-синяя область указывает на то, что рак распространился на затылочную долю (внизу справа).

Задачей компьютерной графики является разработка эффективных алгоритмов, которые управляют множеством линий, треугольников и многоугольников, составляющих компьютерное изображение. Чтобы на экране отображались реалистичные изображения, каждый объект должен быть представлен как набор плоских единиц. Края должны быть сглажены и текстурированы так, чтобы их основная конструкция из полигонов не была очевидна невооруженным глазом. Во многих приложениях неподвижных изображений недостаточно, и требуется быстрое отображение изображений в реальном времени. Для выполнения анимации в реальном времени необходимы как чрезвычайно эффективные алгоритмы, так и самое современное оборудование. (Дополнительные технические сведения о графических дисплеях см. в см. компьютерную графику.)

Взаимодействие человека с компьютером

Взаимодействие человека с компьютером (HCI) связано с проектированием эффективного взаимодействия между пользователями и компьютерами и созданием интерфейсов, поддерживающих это взаимодействие. HCI происходит на интерфейсе, который включает в себя как программное, так и аппаратное обеспечение. Дизайн пользовательского интерфейса влияет на жизненный цикл программного обеспечения, поэтому он должен выполняться на ранних этапах процесса проектирования. Поскольку пользовательские интерфейсы должны учитывать различные пользовательские стили и возможности, исследования HCI опираются на несколько дисциплин, включая психологию, социологию, антропологию и инженерию. В 1960-х годах пользовательские интерфейсы состояли из компьютерных консолей, которые позволяли оператору напрямую вводить команды, которые можно было выполнить немедленно или в будущем. С появлением более удобных для пользователя персональных компьютеров в 1980-х годах пользовательские интерфейсы стали более сложными, так что пользователь мог «указать и щелкнуть», чтобы отправить команду в операционную систему.

Так возникла область гиперконвергентной инфраструктуры для моделирования, разработки и измерения эффективности различных типов интерфейсов между компьютерным приложением и пользователем, получающим доступ к его службам. Графические интерфейсы позволяют пользователям взаимодействовать с компьютером с помощью таких простых средств, как указание на значок с помощью мыши или прикосновение к нему стилусом или указательным пальцем. Эта технология также поддерживает оконные среды на экране компьютера, что позволяет пользователям одновременно работать с разными приложениями, по одному в каждом окне.

Кэш-память — это специальная память с очень высокой скоростью. Он используется для ускорения и синхронизации с высокоскоростным процессором. Кэш-память дороже, чем основная память или дисковая память, но экономичнее, чем регистры ЦП. Кэш-память — это чрезвычайно быстрый тип памяти, который действует как буфер между оперативной памятью и процессором. Он содержит часто запрашиваемые данные и инструкции, поэтому при необходимости они немедленно доступны ЦП.

Кэш-память используется для сокращения среднего времени доступа к данным из основной памяти. Кэш — это меньшая по размеру и более быстрая память, в которой хранятся копии данных из часто используемых ячеек основной памяти. В процессоре есть различные независимые кэши, в которых хранятся инструкции и данные.

  • Уровень 1 или регистр.
    Это тип памяти, в которой хранятся и принимаются данные, которые немедленно сохраняются в ЦП. Наиболее часто используемые регистры — это аккумулятор, программный счетчик, адресный регистр и т. д.
  • Уровень 2 или кэш-память.
    Это самая быстрая память с более быстрым временем доступа, в которой данные временно сохраняются для более быстрого доступа.
  • Уровень 3 или основная память.
    Это память, в которой компьютер работает в данный момент. Она небольшого размера, и после отключения питания данные больше не остаются в этой памяти.
  • Уровень 4 или вторичная память.
    Это внешняя память, которая не так быстра, как основная память, но данные постоянно остаются в этой памяти.

Производительность кэша.
Когда процессору необходимо прочитать или записать ячейку в основную память, он сначала проверяет наличие соответствующей записи в кэше.

  • Если процессор обнаруживает, что область памяти находится в кеше, происходит попадание в кеш и данные считываются из кеша.
  • Если процессор не находит область памяти в кэше, это означает, что кэш промахнулся. При промахе кэш выделяет новую запись и копирует данные из основной памяти, после чего запрос выполняется из содержимого кэша.

Производительность кэш-памяти часто измеряется показателем, называемым коэффициентом попаданий.

Мы можем улучшить производительность кеша, используя больший размер блока кеша, более высокую ассоциативность, снижение частоты промахов, снижение штрафа за промахи и сокращение времени попадания в кеш.

    Прямое сопоставление.
    Простейший метод, известный как прямое сопоставление, отображает каждый блок основной памяти только в одну возможную строку кэша. или
    В прямом отображении назначьте каждый блок памяти определенной строке в кеше. Если строка ранее была занята блоком памяти, когда необходимо загрузить новый блок, старый блок удаляется. Адресное пространство разделено на две части: поле индекса и поле тега. Кэш используется для хранения поля тега, а остальное хранится в основной памяти. Эффективность прямого сопоставления прямо пропорциональна коэффициенту совпадений.

Для доступа к кешу каждый адрес основной памяти можно рассматривать как состоящий из трех полей. Младшие значащие биты w идентифицируют уникальное слово или байт в блоке основной памяти. В большинстве современных машин адрес находится на уровне байтов. Остальные s битов определяют один из 2 s блоков основной памяти. Логика кэша интерпретирует эти s битов как тег из s-r битов (самая значащая часть) и линейное поле из r битов. Это последнее поле идентифицирует одну из m=2 r строк кэша.

В этом случае кэш состоит из нескольких наборов, каждый из которых состоит из определенного количества строк. Отношения

  1. Обычно кэш-память может хранить разумное количество блоков в любой момент времени, но это число мало по сравнению с общим количеством блоков в основной памяти.
  2. Соответствие между блоками основной памяти и блоками в кеше определяется функцией сопоставления.
  • Первичный кэш.
    Первичный кэш всегда располагается на микросхеме процессора. Этот кеш небольшой, а время доступа к нему сравнимо со временем доступа к регистрам процессора.
  • Вторичный кэш.
    Вторичный кэш размещается между основным кешем и остальной частью памяти. Он называется кэшем второго уровня (L2). Часто кэш-память 2-го уровня также размещается на микросхеме процессора.

Локальность ссылки –
Поскольку размер кэш-памяти меньше по сравнению с основной памятью. Таким образом, проверка того, какая часть основной памяти должна быть приоритетной и загружена в кеш, решается на основе локальности ссылки.

  1. Пространственная локальность ссылки
    Это говорит о том, что существует вероятность того, что элемент будет присутствовать в непосредственной близости от точки отсчета и в следующий раз при повторном поиске будет ближе к точке отсчета.
  2. Временная локальность ссылки
    В этом алгоритме будет использован наименее недавно использовавшийся алгоритм. Всякий раз, когда в слове возникает ошибка страницы, будет загружено не только слово в основную память, но и полная ошибка страницы, потому что пространственная локальность правила ссылки говорит, что если вы ссылаетесь на какое-либо слово, следующее слово будет указано в его регистре, поэтому мы загружаем заполните таблицу страниц, чтобы был загружен весь блок.

Практические вопросы по GATE –

Очередь-1: компьютер имеет 256-килобайтный, 4-канальный набор ассоциативных кэш-памятей данных обратной записи с размером блока 32 байта. Процессор отправляет 32-битные адреса контроллеру кеша. Каждая запись каталога тегов кэша содержит, помимо адресного тега, 2 допустимых бита, 1 измененный бит и 1 бит замены. Количество битов в поле тега адреса равно

Вопрос-2: рассмотрите данные, приведенные в предыдущем вопросе. Размер каталога тегов кеша

Очередь 3. Кэш прямого отображения с обратной записью объемом 8 КБ организован в виде нескольких блоков, каждый из которых имеет размер 32 байта. Процессор генерирует 32-битные адреса. Контроллер кэша поддерживает информацию тега для каждого блока кэша, состоящую из следующего.

Столько битов, сколько минимум необходимо для идентификации блока памяти, отображаемого в кэше. Каков общий объем памяти, необходимый контроллеру кеша для хранения метаданных (тегов) для кеша?

Статья предоставлена ​​Пуджей Танеджей и Вайшали Бхатиа. Пожалуйста, пишите комментарии, если вы обнаружите что-то неверное или хотите поделиться дополнительной информацией по теме, обсуждаемой выше.

Пропускная способность памяти и задержка являются ключевыми параметрами практически для всех приложений, но особенно для приложений с графическим процессором. Пропускная способность относится к объему данных, которые могут быть перемещены в заданное место назначения или из него. В случае с графическим процессором нас в первую очередь волнует глобальная пропускная способность памяти. Под задержкой понимается время, необходимое для завершения операции.

Задержка памяти предназначена для сокрытия на графических процессорах за счет запуска потоков из других варпов. Когда варп обращается к области памяти, которая недоступна, аппаратное обеспечение выдает запрос на чтение или запись в память. Этот запрос будет автоматически объединен или объединен с запросами от других потоков в том же варпе, при условии, что потоки обращаются к соседним ячейкам памяти и начало области памяти правильно выровнено.

Размер транзакций памяти значительно различается между Fermi и более ранними версиями. В вычислительных устройствах 1.x (G80, GT200) размер объединенной транзакции памяти будет начинаться со 128 байт на доступ к памяти. Затем это число будет уменьшено до 64 или 32 байт, если общая область, к которой обращаются объединенные потоки, будет достаточно мала и находится в пределах одного и того же 32-байтового выровненного блока. Эта память не кэшировалась, поэтому, если потоки не обращались к последовательным адресам памяти, это приводило к быстрому падению пропускной способности памяти. Таким образом, если поток 0 читает адреса 0, 1, 2, 3, 4, …, 31, а поток 1 читает адреса 32, 32, 34, …, 63, они не будут объединены. На самом деле аппаратное обеспечение будет выдавать один запрос на чтение не менее 32 байтов для каждого потока. Неиспользуемые байты будут извлечены из памяти и просто отброшены. Таким образом, без тщательного учета того, как используется память, вы можете легко получить лишь небольшую часть фактической пропускной способности, доступной на устройстве.

Однако имейте в виду, что типы векторов ( int2 , int4 и т.) ввести неявное выравнивание по 8 и 16 байт соответственно. Данные должны поддерживать это, поэтому, например, вы не можете преобразовать указатель на int из элемента массива int[5] в int2∗ и ожидать, что он будет работать правильно. В таких случаях вам лучше выполнять последовательное 32-битное чтение или добавлять некоторые дополнения к структуре данных, чтобы обеспечить выровненный доступ. Как мы видели при оптимизации примера сортировки, значение в четыре элемента на поток часто обеспечивает оптимальный баланс между использованием дополнительных регистров, увеличением пропускной способности памяти и возможностью для процессора использовать параллелизм на уровне инструкций.

На пути к реалистичным границам производительности для неявных кодов CFD

2 АНАЛИЗ ПРОИЗВОДСТВА ПРОИЗВОДСТВА РАЗРЕЖЕННОЙ МАТРИЦЫ-ВЕКТОРА

Разреженное произведение матрицы на вектор — важная часть многих итерационных решателей, используемых в научных вычислениях. Хотя подробное моделирование производительности этой операции может быть сложным, особенно когда включены шаблоны ссылок на данные [14–16], упрощенный анализ все же может дать верхнюю границу достижимой производительности этой операции. Чтобы проиллюстрировать влияние производительности системы памяти, мы рассмотрим обобщенное умножение разреженной матрицы на вектор, которое умножает матрицу на N векторов. Этот код вместе со счетчиком операций показан на рис. 2.

Рисунок 2 . Общая форма алгоритма произведения разреженной матрицы-вектора: формат хранения - AIJ или сжатое хранилище строк; матрица состоит из m строк и nz ненулевых элементов и умножается на N векторов; комментарии в конце каждой строки показывают инструкции уровня ассемблера, генерируемые текущим оператором, где AT — преобразование адреса, Br — ветвь, lop — целочисленная операция, Fop — операция с плавающей запятой, Of — вычисление смещения, LD — загрузка и Св. магазин.

2.1 Оценка пропускной способности памяти

Для оценки пропускной способности памяти, необходимой для этого кода, мы делаем некоторые упрощающие предположения. Мы предполагаем, что конфликтных промахов нет, то есть каждый элемент матрицы и вектора загружается в кеш только один раз. Мы также предполагаем, что процессор никогда не ожидает обращения к памяти; то есть любое количество загрузок и сохранений выполняется за один цикл.

Для алгоритма, представленного на рисунке 2, матрица хранится в сжатом формате хранения строк (аналогично формату AIJ PETSc [4]). Для каждой итерации внутреннего цикла на рисунке 2 нам нужно передать одно целое число (массив ja) и N + 1 удвоение (один элемент матрицы и N элементы вектора) и мы делаем N операций умножения-сложения с плавающей запятой (fmadd) или 2N флопов. Наконец, мы сохраняем N элементов выходного вектора. Это приводит к следующей оценке объема данных:

Всего передано байтов = m * sizeof _ int + 2 m * N * sizeof _ double + nz * ( sizeof _ int + sizeof _ double ) = 4 * ( m + nz ) + 8 * ( 2 * m * N + нз ).

Это дает нам оценку пропускной способности, необходимой процессору для выполнения 2 * nz * N флопов на пиковой скорости:

В качестве альтернативы, учитывая производительность памяти, мы можем предсказать максимально достижимую производительность. Это приводит к

где MBW измеряется в Мфлопс/с, а BW – доступная пропускная способность памяти в Мбайт/с, измеренная STREAM. [ 11 ] эталон. (Необработанная пропускная способность, основанная на частоте и ширине шины памяти, не является подходящим выбором, поскольку она не может поддерживаться ни в одном приложении; в то же время для некоторых приложений возможно достижение более высокой пропускной способности, чем измеренная STREAM).

В таблице 1 показана пропускная способность памяти, необходимая для максимальной производительности, и достижимая производительность для матрицы в формате AIJ с 90 708 строками и 5 047 120 ненулевыми элементами на SGI Origin2000 (если не указано иное, эта матрица используется во всех последующих вычислениях). ). Матрица представляет собой типичный якобиан из приложения PETSc-FUN3D (несжимаемая версия) с четырьмя неизвестными на вершину. В той же таблице также показаны требования к пропускной способности памяти для формата блочного хранения (BAIJ) [4] для этой матрицы с размером блока четыре; в этом формате массив ja меньше на коэффициент размера блока. Мы заметили, что блокировка значительно помогает, сокращая требования к пропускной способности памяти. Наличие более одного вектора также требует меньше пропускной способности памяти и повышает производительность: мы можем умножить четыре вектора примерно в 1,5 раза быстрее, чем умножение одного вектора.

Таблица 1 . Влияние пропускной способности памяти на производительность продукта разреженной матрицы-вектора на SGI Origin 2000 (процессор R10000, 250 МГц). Пропускная способность памяти в тесте STREAM [ 11 ] составляет 358 МБ/с; это значение пропускной способности памяти используется для расчета идеального Mflops/s; достигнутые значения пропускной способности памяти и Mflops/s измеряются с помощью аппаратных счетчиков на этой машине. Наши эксперименты показывают, что мы можем умножить четыре вектора на 1.В 5 раз больше времени, необходимого для умножения одного вектора.

Количество Пропускная способность (МБ/с)Mflops/s
ФорматвекторыБайт/fmaddОбязательноВыполненоИдеально Достигнуто
AIJ112,3630902765845
AIJ43,31827221216120
BAIJ19,3123272808455
BAIJ42,54635229305175

2.2 Оценка ограничения проблемы с операцией

Чтобы проанализировать этот предел производительности, мы предполагаем, что все элементы данных находятся в основном кэше (что эквивалентно предположению о бесконечной пропускной способности памяти ). Ссылаясь на алгоритм разреженной матрицы-вектора на рисунке 2, мы получаем следующий состав рабочей нагрузки для каждой итерации внутреннего цикла:

N + 5 целочисленных операций

2 * N операций с плавающей запятой (N инструкций fmadd)

N + 2 загрузки и сохранения

Большинство современных процессоров могут выполнять только одну загрузку или сохранение за один цикл. Поскольку количество инструкций с плавающей запятой меньше количества обращений к памяти, код должен выполнять не меньше циклов, чем количество операций загрузки и сохранения. Это приводит к следующему выражению для этой границы производительности (обозначается как MIS и измеряется в мегафлопах в секунду):

2.3 Сравнение производительности

На рис. 3 мы сравниваем три границы производительности: пиковую производительность, основанную на тактовой частоте и максимальном количестве операций с плавающей запятой за цикл, производительность, прогнозируемую на основе ограничения пропускной способности памяти в уравнении 1, и производительность, основанную на ограничение рабочей проблемы в уравнении 2 . Для умножения разреженной матрицы на вектор ясно, что предел пропускной способности памяти для производительности является хорошим приближением. Наибольшие различия между производительностью, наблюдаемой и прогнозируемой по пропускной способности памяти, наблюдаются в системах с наименьшим объемом кэш-памяти (IBM SP и T3E), где наше предположение об отсутствии конфликтных промахов, скорее всего, окажется неверным.

Измерение эффективности и показатели

Массимилиано Фатика, Грегори Рюч, в CUDA Fortran для ученых и инженеров, 2014 г.

2.3.1 Теоретическая пиковая пропускная способность

Теоретическая пиковая пропускная способность памяти может быть рассчитана по тактовой частоте памяти и ширине шины памяти. Обе эти величины можно запросить через API управления устройствами, как показано в следующем коде, который вычисляет теоретическую пиковую пропускную способность для всех подключенных устройств:

При расчете пиковой пропускной способности памяти коэффициент 2,0 появляется из-за удвоенной скорости передачи данных ОЗУ за такт памяти, деление на восемь преобразует разрядность шины из битов в байты, а коэффициент 1.e- 6 обрабатывает преобразование килогерц в герц и байт в гигабайт. 2

Регистрация в памяти. Аргументы включают регистр и ячейку памяти, данные перемещаются между регистром и ячейкой памяти, время выполнения медленнее, а длина шины больше.

2) Пространство: при проектировании необходимо рассчитать общий объем пространства, поскольку все имеет свою стоимость, и нам нужен лучший дизайн с минимальными затратами, насколько это возможно.

3) Длина: длина инструкции должна быть продумана при проектном решении, нужна ли нам инструкция фиксированной длины или переменной длины, поскольку перед выполнением инструкции ЦП должен сначала декодировать размер инструкции, и снова все имеет свою цену.

2) В архитектуре аккумулятора один операнд неявно находится в аккумуляторе. Это позволяет использовать более короткие инструкции, а также сводит к минимуму внутреннюю сложность машины. Однако существует большой объем трафика памяти, так как аккумулятор является лишь временным хранилищем.

2 - В случае, когда хотя бы один операнд находится в регистре и один в памяти, мы можем идентифицировать архитектуру как регистровую память.

2) Перемещение данных: это наиболее часто используемые инструкции.Данные перемещаются из памяти в регистры, из регистров в регистры и из регистров в память, и многие машины предоставляют разные инструкции в зависимости от источника и назначения. Примерами этого типа являются MOVE, LOAD, STORE, PUSH, POP и т. д.

3) Арифметические операции: к ним относятся инструкции, использующие целые числа и числа с плавающей запятой. Многие наборы инструкций предоставляют различные арифметические инструкции для различных размеров данных. Как и в случае с инструкциями по перемещению данных, иногда существуют разные инструкции для обеспечения различных комбинаций доступа к регистрам и памяти в разных режимах. Этот класс инструкций также влияет на регистры флагов. Примеры: ДОБАВИТЬ, ВЫЧИТАТЬ. его, установка определенных битов и переключение определенных битов.

4) Инструкции ввода/вывода: они сильно различаются в зависимости от архитектуры. Инструкция ввода передает данные из устройства или порта либо в память, либо в регистр. Команда вывода передает данные из регистра или памяти в определенный порт или устройство. Основными схемами обработки ввода-вывода являются программируемый ввод-вывод, ввод-вывод, управляемый прерываниями, и устройства прямого доступа к памяти.

5) Инструкции по передаче управления: Инструкции по управлению используются для изменения нормальной последовательности выполнения программы. К ним относятся переходы, пропуски, вызовы процедур, возвраты и завершение программы. Инструкции пропуска — это, по сути, ветки с подразумеваемыми адресами. Вызовы процедур — это специальные инструкции перехода, которые автоматически сохраняют обратный адрес.

Программирование современных компьютеров редко требует понимания аппаратного и программного обеспечения; следовательно, большинство программистов не знают, как работает подсистема памяти.

Однако такой недостаток знаний может в конечном итоге привести к снижению производительности приложений в 10 и более раз, особенно с появлением новых аппаратных технологий.

В этой статье объясняется, почему оптимальное использование подсистемы памяти может значительно повысить производительность.

Оборудование

Трудно понять, где начинается и заканчивается современный компьютер. Граница размыта такими проблемами, как проводные и беспроводные сети, передача данных по таким сетям с помощью инструкций загрузки и сохранения, а также устройства ввода-вывода, которые сами содержат сложное программное обеспечение и аппаратное обеспечение для их запуска. Нижеследующее является полезным упрощением, а не полной правдой.

Подумайте о компьютере как о материнской плате с:

  • Несколько смонтированных процессоров
  • Шины, соединяющие эти процессоры с:
    • Устройства ввода-вывода (данные передаются огромными блоками)
    • Устройства памяти (данные передаются гораздо меньшими порциями)

    Каждый процессор содержит от одного до сотен ядер. Каждое ядро ​​содержит оборудование для:

    • Получить инструкции.
    • Расшифруйте эти инструкции.
    • Запланируйте выполнение инструкций.
    • Выполните инструкции.
    • Получить данные, необходимые для инструкций.
    • Сохраните данные, полученные инструкциями.

    В оставшейся части этой статьи описывается, как инструкция загрузки, выполняемая в ядре, перемещает данные из модуля памяти — в данном случае модуля памяти с двухрядным расположением выводов (DIMM) — в это ядро.

    Виртуальные адреса, физические адреса и прочее

    Иногда вы не хотите знать, как делаются такие вещи, как сосиски, законы и (как оказывается) доступ к памяти, потому что знание навсегда меняет ваше восприятие этих вещей. Но если вы один из тех людей, которым нужно знать, читайте дальше…

    Инструкции по созданию виртуальных адресов

    При сопоставлении файла с памятью вы указываете используемые виртуальные адреса. (Если вы когда-либо исследовали переменную указателя C или C++ с помощью отладчика, вы исследовали 64-разрядные виртуальные адреса.) Арифметика указателя выполняется с использованием виртуальных адресов.

    Аппаратное преобразование виртуальных адресов в физические

    Виртуальный адрес состоит из двух частей:

    • Номер страницы. Действует как индекс в таблице страниц.
    • Смещение — разница в местоположении между нужным байтовым адресом и началом страницы.

    Аппаратное обеспечение, управляемое ОС, преобразует номер страницы в физический адрес и добавляет обратно смещение, используя таблицы страниц для каждого процесса в ОС и ускоряя работу за счет кэшированных записей в резервных буферах перевода (TLB).

    Например, процессор Intel® Core™ i7-6700 имеет два уровня TLB:

    Приложения, которые быстро обращаются к большему количеству страниц, чем может сопоставить TLB, могут останавливать преобразование виртуальных адресов в физические.

    Промах TLB стоит дорого. Вы можете уменьшить процент промахов TLB следующим образом:

    • Изменение размера страницы во время загрузки
    • Использование больших и огромных страниц
    • Тщательное планирование размещения ваших данных на страницах.

    После определения физического адреса в кэш L1 отправляется запрос на чтение или запись. Кэш L1 либо выполнит доступ, либо распространит его глубже в подсистему памяти.

    Ядра выполняют другие действия, пока доступ не будет удовлетворен

    Современные ядра используют как выполнение вне очереди, так и гиперпоточность, чтобы найти и выполнить что-то полезное, в то время как другие инструкции ожидают получения данных.

    Если ничего полезного сделать нельзя, ядро ​​зависает. К сожалению, ОС почти не знает о зависании: кажется, что приложение работает, и трудно сказать, работает ли оно медленнее, чем должно быть. Вам нужны инструменты для проверки счетчиков производительности оборудования, чтобы увидеть подробную информацию о остановке.

    Каскад физических адресов через кэши

    Обращения, распространяющиеся через подсистему памяти, представляют собой комбинацию определенного запроса и необходимых физических адресов и, возможно, данных.

    Данные перемещаются по большей части подсистемы памяти в виде 64-байтных объемов, называемых строками кэша. Запись кэша, представляющая собой несколько транзисторов, которые могут хранить физический адрес и строку кэша, заполняется, когда в него копируется строка кэша. Страницы равномерно разделены на строки кэша — первые 64 байта страницы размером 4096 байт являются строкой кэша, а 64 байта хранятся вместе в записи кэша; следующие 64 байта — это следующая строка кэша и т. д.

    Каждая строка кэша может:

    • Не кэшироваться
    • Занять запись в одном кэше
    • Дублироваться в нескольких кешах

    Ядра, устройства ввода-вывода и другие устройства отправляют запросы к кэшам на чтение или запись записи кэша для физического адреса. Младшие шесть бит физического адреса не отправляются — они используются ядром для выбора байтов в строке кэша. Ядро отправляет отдельные запросы для каждой необходимой строки кэша.

    • Чтение — если в записи кэша указан запрошенный физический адрес, кэш возвращает данные. Если нет, кеш запрашивает данные из более глубокой части подсистемы памяти и удаляет некоторые записи из кеша, чтобы освободить место. Если вытесненная запись кэша была изменена, она должна быть записана в более глубокую подсистему памяти как часть этого вытеснения. Это означает, что поток операций чтения может замедлиться, поскольку более ранний набор операций записи должен быть помещен глубже в подсистему памяти. Небольшая очередь записанных данных буферизует обмен данными от отправителя к получателю.
    • Запись — если в записи кэша нет строки кэша, кэш считывает ее из глубины подсистемы памяти. Он вытесняет какой-либо другой физический адрес из своей записи кэша, чтобы освободить место для этой строки кэша. Чтение необходимо, чтобы получить все 64 байта, потому что запись, вероятно, изменяет только некоторые из них. Когда запись кэша записывается впервые, записи кэша этого физического адреса во всех других кэшах становятся недействительными. Это действие делает первую запись в кэше более затратной, чем последующие записи.

    Примечание. Сопоставление памяти может привести к сопоставлению двух или более виртуальных адресов с одним и тем же физическим адресом. Это часто происходит с общими библиотеками и нулевыми страницами.

    Кеши можно использовать совместно

    Кэш L1 — обычно 32 КБ данных и 32 КБ инструкций – является частным для соседнего ядра, поэтому он может так быстро поставлять данные. Все гиперпотоки в ядре совместно используют кеш L1.

    Следующий выходной кэш, кэш L2, иногда является частным, а иногда используется двумя ядрами.

    Если они существуют, кэши L3 и L4 совместно используются всеми ядрами и, возможно, более чем одним процессором.

    Если для кэширования модулей DIMM используется многоканальная динамическая память (MCDRAM), этот кэш также является общим.

    Совместное использование кеша не обязательно является проблемой, если ядра обращаются к разным данным. однако, если ядро ​​пытается сохранить больше данных, чем его доля, в общих кешах, оно может вытеснить данные другого ядра, так что ни одно из них не выиграет. В некоторых ситуациях ядро ​​с более быстрым доступом может доминировать и использовать весь кеш для себя, вызывая дисбаланс нагрузки.

    Шины соединяют кэш L2 с кэшем L3 и контроллерами памяти

    Красные шины кольцевой дороги, показанные на схеме ниже, соединяют кэши L2 с частями кэша L3, а также с каналами Intel® QuickPath Interconnect (Intel® QPI), периферийным компонентом. Interconnect Express (PCIe) и домашние агенты для контроллеров памяти. Две кольцевые дороги соединены двумя короткими автобусами, похожими на эскалаторы.

    Движение в автобусах осуществляется только по мере необходимости, и разные транспортные средства могут одновременно находиться в разных секциях автобуса. Очевидно, что чем дальше должен идти трафик, тем выше задержка.Пропускная способность должна быть разделена, когда трафик использует одни и те же участки шины, но обычно это не является ограничивающим фактором.

    Доступ к памяти, который начинается с ядра и пропускает кэши L1 и L2, идет по шинам к домашнему агенту для целевого контроллера памяти для этого физического адреса. Если целевой контроллер памяти находится в другом сокете многопроцессорной системы, трафик проходит по каналу Intel QPI к кольцевой шине целевого процессора, что увеличивает задержки.

    Процессор Intel® Xeon Phi™ имеет другую компоновку. Это поколение процессоров под кодовым названием Knights Landing использует сетку, а не два взаимосвязанных кольца, и вообще не имеет кэша L3; в противном случае трафик следует тем же основным шаблонам. Эти процессоры имеют домашние агенты и контроллеры памяти для двух разных типов динамической памяти с произвольным доступом (DRAM): модулей DIMM с удвоенной скоростью передачи данных (DDR) и MCDRAM.

    Домашние агенты распознают свое подмножество физических адресов

    Рядом с шиной расположено несколько контроллеров памяти, каждый из которых управляет несколькими каналами. Каждый контроллер памяти подключается к шине домашним агентом. Домашний агент контроллера памяти распознает физические адреса своих каналов.

    Чередование – это метод распределения соседних виртуальных адресов на странице по нескольким устройствам памяти, поэтому параллелизм на аппаратном уровне увеличивает доступную полосу пропускания устройств, при условии, что какой-то другой доступ еще не использует полосу пропускания. Виртуальные адреса внутри страницы сопоставляются с соседними физическими адресами, поэтому без чередования последовательные смежные обращения будут отправляться на один и тот же контроллер памяти и забивать его. Физические адреса могут чередоваться между сокетами или только внутри сокета — это выбирается прошивкой.

    До модулей DIMM 3D XPoint™ чередование выполнялось для одной или двух строк кэша (64 байта или 128 байт), но характеристики энергонезависимой памяти DIMM мотивировали изменение на каждые четыре строки кэша (256 байт). Итак, теперь четыре соседние строки кэша идут на один и тот же канал, а затем следующий набор из четырех строк кэша идет на следующий канал.

    Микроархитектура Intel® под кодовым названием Skylake поддерживает 1-, 2-, 3-, 4- и 6-стороннее чередование. Если заполнено пять каналов, домашние агенты, вероятно, используют двухстороннее и трехстороннее чередование. Поддержка 3- и 6-стороннего чередования означает, что аппаратное обеспечение может выполнять вычисления mod 3 для адресов — нетривиальный объем работы.

    Канал памяти обращается к устройству памяти

    Домашний агент преобразует физический адрес в адрес канала и передает его контроллеру памяти. У каждого контроллера памяти есть таблица, по которой можно определить, что делать с каждым диапазоном адресов каналов, которые он обрабатывает.

    Например: в процессорах Intel Xeon Phi под кодовым названием Knights Landing эта таблица позволяет контроллеру памяти узнать, находится ли адрес в диапазоне адресов, где MCDRAM кэширует более удаленный модуль DDR DIMM. Если адрес предназначен для модуля DIMM, контроллер памяти преобразует адрес канала в кортеж (channel, dim, rank, bank, row, column), используемый в обмене данными по шине с модулем DIMM.

    Несмотря на сложность работы, контроллеры памяти реализованы в специализированных логических схемах, а не микропрограммированы!

    Обзор

    В предыдущей статье «Почему эффективное использование подсистемы памяти имеет решающее значение для производительности» обсуждаются алгоритмы и анализ, необходимые для достижения максимальной производительности процессоров Intel Xeon Phi и MCDRAM.

    В этой статье обсуждается, как знание количества устройств, шин и возможностей обмена данными может помочь вам понять:

    • Происхождение задержек при доступе и колебаний пропускной способности.
    • Почему планирование маршрутов, по которым данные проходят через сеть, может сильно повлиять на время выполнения

    В следующей статье "Выявление и предотвращение узких мест" описывается, как распознавать и избегать перегрузок в этой сложной сети, соединяющей ядра с основной памятью.

    Кроме того, существует серия статей, начинающаяся с статьи "Возможности повышения производительности с помощью оборудования NUMA", в которой представлены общие сведения обо всех аспектах современного оборудования NUMA и о том, как его можно использовать в различных областях приложений.

    Об авторе

    Бевин Бретт (Bevin Brett) — главный инженер корпорации Intel. Он работает над инструментами, помогающими программистам и системным пользователям повысить производительность приложений. Эти статьи было бы намного труднее читать без обширной редакционной работы одного из авторов Intel — Нэнси Мостер. Бевин допустил ошибки, Нэнси признала и назвала ему многие из них, но мы уверены, что некоторые просочились наружу…

    Читайте также: