Что такое инструкции векторного процессора
Обновлено: 21.11.2024
Определение. Векторный процессор — это, по сути, центральный процессор, способный выполнять весь входной вектор в одной инструкции. Точнее, можно сказать, что это полная единица аппаратных ресурсов, которая выполняет последовательный набор одинаковых элементов данных в памяти с помощью одной инструкции.
Мы знаем, что элементы вектора упорядочены правильно, чтобы иметь последовательный формат адресации памяти. Именно по этой причине мы упомянули, что он реализует данные последовательно.
Он содержит один блок управления, но имеет несколько исполнительных блоков, которые выполняют одну и ту же операцию с разными элементами данных вектора.
В отличие от скалярных процессоров, которые работают только с одной парой данных, векторный процессор работает с несколькими парами данных. Однако можно преобразовать скалярный код в векторный код. Этот процесс преобразования известен как векторизация. Таким образом, мы можем сказать, что векторная обработка позволяет работать с несколькими элементами данных с помощью одной инструкции.
Эти инструкции называются инструкциями с одной инструкцией и несколькими данными или векторными инструкциями. ЦП, используемый в последнее время, использует векторную обработку, поскольку она более выгодна, чем скалярная обработка.
Давайте теперь перейдем к пониманию того, как работает векторный процессор.
Архитектура и работа
На рисунке ниже представлена типичная диаграмма, показывающая векторную обработку векторным компьютером:
Функциональные блоки векторного компьютера следующие:
- IPU или блок обработки инструкций
- Векторный регистр
- Скалярный регистр
- Скалярный процессор
- Векторный контроллер инструкций
- Векторный контроллер доступа
- Векторный процессор
Давайте теперь разберемся с общей операцией, выполняемой векторным компьютером.
Поскольку он имеет несколько функциональных каналов, он может выполнять инструкции над операндами. Мы знаем, что и данные, и инструкции присутствуют в памяти в желаемом месте памяти. Итак, блок обработки инструкций, т. е. IPU, извлекает инструкцию из памяти.
После того, как инструкция выбрана, IPU определяет, является ли выбранная инструкция скалярной или векторной по своей природе. Если она носит скалярный характер, то инструкция переносится в скалярный регистр и далее выполняется скалярная обработка.
Тем не менее, когда инструкция является векторной по своей природе, она передается контроллеру векторных инструкций. Этот контроллер векторных инструкций сначала декодирует векторную инструкцию, а затем соответствующим образом определяет адрес векторного операнда, присутствующего в памяти.
Затем он подает сигнал векторному контроллеру доступа о запросе соответствующего операнда. Затем этот векторный контроллер доступа извлекает желаемый операнд из памяти. Как только операнд выбран, он передается в регистр инструкций, чтобы его можно было обработать в векторном процессоре.
В некоторых случаях, когда присутствует несколько векторных инструкций, контроллер векторных инструкций предоставляет несколько векторных инструкций системе задач. И если система задач показывает, что векторная задача очень длинная, то процессор разбивает задачу на подвекторы.
Эти подвекторы передаются векторному процессору, который использует несколько конвейеров для одновременного выполнения инструкции над операндом, извлеченным из памяти.
Различные векторные инструкции планируются контроллером векторных инструкций.
Классификация векторных процессоров
Классификация векторных процессоров основана на способности формирования векторов, а также на наличии векторных инструкций для обработки. Итак, в зависимости от этих критериев, векторную обработку классифицируют следующим образом:
Зарегистрируйтесь, чтобы зарегистрировать архитектуру
Эта архитектура широко используется в векторных компьютерах. Как и в этой архитектуре, выборка операнда или предыдущих результатов осуществляется косвенно через основную память с помощью регистров.
Несколько векторных конвейеров, присутствующих в векторном компьютере, помогают извлекать данные из регистров, а также сохранять результаты в нужном регистре. Эти векторные регистры программируются пользователем.
Это означает, что в соответствии с адресом регистра, представленным в инструкции, данные извлекаются и сохраняются в нужном регистре.Эти векторные регистры имеют фиксированную длину, аналогичную длине регистра в обычном процессоре.
Некоторыми примерами суперкомпьютеров, использующих регистр для регистрации архитектуры, являются Cray-1, Fujitsu и т. д.
Архитектура памяти в память
Здесь, в архитектуре память-память, операнды или результаты напрямую извлекаются из памяти, несмотря на использование регистров. Однако здесь следует отметить, что адрес желаемых данных, к которым осуществляется доступ, должен присутствовать в векторной инструкции.
Эта архитектура позволяет извлекать данные размером 512 бит из памяти в конвейер. Однако из-за большого времени доступа к памяти конвейеры векторного компьютера требуют большего времени запуска, так как требуется больше времени для запуска векторной инструкции.
Некоторыми примерами суперкомпьютеров с архитектурой память-память являются Cyber 205, CDC и т. д.
Преимущества векторного процессора
- Векторный процессор использует векторные инструкции, с помощью которых можно повысить плотность кода инструкций.
- Последовательное расположение данных помогает аппаратному обеспечению лучше обрабатывать данные.
- Это обеспечивает сокращение пропускной способности инструкций.
Итак, из приведенного выше обсуждения мы можем сделать вывод, что архитектура "регистр-регистр" лучше архитектуры "память-память", поскольку она обеспечивает сокращение времени доступа к вектору.
Использование, проблемы и компромиссы при работе с векторными движками.
В отрасли ведутся поиски наилучшего способа ускорения приложений машинного обучения, и оптимизация оборудования для векторных инструкций набирает обороты в качестве ключевого элемента в этих усилиях.
Векторные инструкции — это класс инструкций, позволяющих выполнять параллельную обработку наборов данных. Весь массив целых чисел или чисел с плавающей запятой обрабатывается за одну операцию, что устраняет механизм управления циклом, который обычно используется при обработке массивов. Это, в свою очередь, повышает как производительность, так и энергоэффективность.
Эта концепция особенно хорошо работает с разреженными матричными операциями, используемыми для этих наборов данных, которые могут значительно повысить производительность за счет векторизации, — сказал Шабходип Рой Чоудхури, генеральный директор Valtrix Systems.
Однако это сложнее, чем может показаться. Существуют проблемы проектирования, связанные с перемещением данных в память и процессоры и из них, а также возникают проблемы с проверкой из-за увеличения сложности и общего размера наборов данных. Тем не менее спрос на такие улучшения производительности/энергопотребления резко возрастает по мере увеличения объема данных, и векторные инструкции являются важной частью головоломки.
"Несмотря на то, что Nvidia проделала большую работу по запуску этих приложений на своих графических процессорах, они очень дороги, очень энергоемки и не предназначены для этого", – сказал Саймон Дэвидманн, генеральный директор Imperas. «Сейчас инженерные группы создают специальное оборудование, которое позволит быстро запускать эти ИИ-фреймворки. Разработчики ищут пути быстрого запуска алгоритмов машинного обучения».
Векторные инструкции или расширения не новы. Фактически, они являются важной частью современных архитектур ЦП и используются в рабочих нагрузках от обработки изображений до научного моделирования. Intel, Arm, ARC, MIPS, Tensilica и другие проложили путь новичкам, таким как RISC-V ISA. Что меняется, так это растущая специализация и оптимизация обоих.
По словам Мартина Вайдманна (Martin Weidmann), директора по управлению продуктами в Arm Architecture and Technology Group, Arm впервые получила поддержку векторов стиля SIMD с фиксированной шириной в Armv6, которые быстро превратились в Neon в Armv7-A. Совсем недавно Arm представила Scalable Vector Extensions (SVE) с поддержкой векторов переменной длины и предикатов. SVE уже используется, в том числе в самом быстром суперкомпьютере в мире.
Архитектуры ЦП, такие как архитектура Arm, по сути являются контрактом между аппаратным и программным обеспечением. «Архитектура описывает, какое поведение должно обеспечивать аппаратное обеспечение и на что может полагаться программное обеспечение, — пояснил Вайдманн. «Решающее значение для этого имеет последовательное поведение. Разработчики должны быть уверены, что любое устройство, использующее эту архитектуру, будет вести себя точно так же».
Например, разработчики должны быть уверены, что для любого кода, работающего в проекте на основе Arm, они увидят поведение, описанное в Справочном руководстве по архитектуре Arm. К этому моменту Arm создала ресурсы для тестирования на соответствие требованиям.
Написание комплексных комплектов для обеспечения соответствия требованиям для чего-то столь универсального, как современный ЦП, всегда представляет собой сложную задачу, — отмечает Вайдманн. Векторные расширения только усугубляют эту проблему, особенно в следующих областях:
- Тестирование независимой от длины вектора (VLA) для SVE и SVE2;
- Работа с зависимостями, возникающими при параллельной обработке нескольких элементов, включая обработку исключений и правильность операций с плавающей запятой, и
- Сложности операций загрузки и хранения в разброс.
Грэм Уилсон (Graham Wilson), менеджер по маркетингу процессоров ARC в Synopsys, отметил, что команды инженеров используют комбинацию возможностей обработки, объединяя код, который традиционно выполнялся бы на ядре контроллера, с кодом, который выполнялся бы на DSP. Все это теперь объединяется с вычислениями, выполняемыми на едином процессоре.
"Мы видим более традиционные векторные DSP, которые берут на себя больше роли скаляра или возможности иметь больше управляющего кода, потому что во многом это зависит от устройств, работающих на границе Интернета вещей, и они нужны меньшие вычисления с меньшей мощностью. Существует также более широкий спектр кода — от кода управления, кода DSP до векторного кода — и теперь есть алгоритм вычисления ИИ, который обусловлен небольшим размером и низким энергопотреблением, которые должны выполняться на одном процессоре. Мы видим тенденцию от более традиционных векторных DSP, которые лучше контролируют вычисления и работу, наряду с тенденцией от обычных процессов контроллера, таких как ядра Arm и другие, к вычислению большего количества векторного кода. Расширения векторов — это путь к базовым процессам контроллера, которые позволяют ему работать и выполнять векторные операции вместе с векторным кодом на одном ядре контроллера».
Разработчики систем на кристалле получают эти преимущества бесплатно, поскольку они содержатся внутри ЦП. «Обычно он напрямую не касается его внешней части, поэтому с точки зрения разработчика оборудования, если они включают ЦП с векторными расширениями или нет, для них это практически одно и то же», — отметил Рассел Кляйн, платформа HLS. программный директор Mentor, Siemens Business.
По словам Кляйн, этим должен воспользоваться разработчик программного обеспечения, и ему придется беспокоиться о том, как запрограммировать эти векторные расширения. «Это всегда было проблемой. В традиционном языке программирования C — и C++, который люди используют для написания программ, работающих на этих процессорах — нет прямого отображения какой-либо конкретной конструкции C на использование векторных расширений. Как правило, существует несколько различных способов доступа к этим функциям. Вместо того, чтобы писать код на C, самым простым является написание на языке ассемблера, а затем вы можете напрямую вызывать векторные инструкции. Большинству людей это не нравится, потому что это требует много работы и плохо сочетается с их кодом на C, с которым они работают везде».
Чтобы решить эту проблему, процессорные компании, такие как Arm и Intel, написали библиотеки, чтобы воспользоваться преимуществами этих векторных инструкций и предоставить библиотеку для выполнения быстрого преобразования Фурье или операции умножения матриц. «Они пошли дальше и закодировали все на языке ассемблера, чтобы воспользоваться преимуществами этих операций векторной обработки так, как задумали разработчики ЦП», — пояснил он. «Тогда пользователь, пишущий программу, просто вызывает специализированное БПФ или матричное умножение, и оно его использует. Это простой способ для Intel и Arm распространять это, и я ожидаю, что сообщество RISC-V сделает то же самое. Святым Граалем является то, что ваш компилятор C должен быть достаточно умен, чтобы смотреть на ваши циклы и понимать, что их можно векторизовать».
Это сложная проблема, которая не была решена в прошлом, хотя команда разработчиков LLVM уже ведет работу, которая утверждает, что способна распознавать векторизуемые циклы и вызывать векторные инструкции, – сказал Кляйн.
Вопросы интеграции.
Другое важное соображение заключается в том, как модуль вектора должен быть интегрирован в ядро, независимо от того, является ли он тесно связанным или независимым.
"Если вы посмотрите на команду, которая уже работает над этим, почти все они решили использовать отдельный векторный блок, подключенный к основному конвейеру, например, на этапе выполнения", — сказал Зденек Прикрыл, технический директор Codasip. «И тогда, по сути, вы можете запускать операции в векторном блоке отдельно. Вам не нужно останавливать основной конвейер, если нет зависимости. Это то, на что мы нацелены — иметь независимый движок, который взаимодействует или тесно связан с основным ядром, но не внутри конвейера основного ядра. В начале должна быть какая-то подсказка для таких инструкций, как умножение-накопление, или, может быть, для потоков и целых чисел для загрузки и сохранения и так далее. И в итоге имеем какой-то общий этап, в который потом можно поместить данные, привязанные к регистровым файлам. Также имейте в виду подсистему памяти, потому что если у вас есть векторный движок, вам нужно обработать массу данных. Таким образом, подсистема памяти также является ключевым моментом — может быть, даже более серьезной проблемой, потому что вы должны иметь возможность кормить движок и в то же время получать данные».
Для векторного механизма важна высокая пропускная способность, поэтому оптимальными являются широкие интерфейсы, такие как 512 бит, и тесно связанные памяти (TCM), которые могут быстро предоставлять данные. «Это основные вопросы, которые мы должны задать в начале проектирования», — сказал Прикрыл. «Это необходимо для создания архитектуры таким образом, чтобы она не блокировалась подсистемой памяти и не блокировалась конвейером основной скалярной части, чтобы вектор мог выдавать выходные данные, мог работать с памятью и запрашивать у основного ядра только тогда, когда это необходимо для общения».
Векторный движок RISC-V позволяет выбирать ширину регистра. «Если вы нацелены на меньшую систему, она может быть меньше», — сказал Прикрыл. «Если вы нацелены на большого серверного зверя, то у вас действительно широкие регистры, и вам нужно как-то связать пропускную способность памяти с этими регистрами. Тогда вы ограничены этим, так насколько широко вы ориентируетесь на пропускную способность? Обычно вам приходится жить с существующими стандартами, такими как стандарт Амба. Кроме того, есть некоторые ограничения, например, не более 1024 бит. Но в то же время, если вы ориентируетесь на такой широкий интерфейс, вы обычно страдаете от задержки или частоты, потому что он довольно широкий. Так что есть некий компромисс. Мы хотели бы предоставить быстрые данные от TCM, чтобы иметь возможность достаточно быстро вводить данные. В то же время мы должны думать о модели программирования в случае с подсистемой памяти. Я также хотел бы иметь возможность загружать данные через стандартный кеш, потому что модель программирования проще. Если писать код на Си, то со временем можно хранить векторы не только в векторе в памяти, но и в памяти кеша. А затем, со скалярной частью, вы можете коснуться вектора и изменить что-то здесь и там».
Еще одно соображение заключается в том, что должен быть способ питания двигателя. Движок должен иметь возможность взаимодействовать со скалярной частью стандартной подсистемы кэш-памяти, и он должен быть спроектирован таким образом. «Мы должны сбалансировать модель программирования так, чтобы пользователи могли программировать на машине», — сказал он. «Это должно быть максимально просто, а значит, мы должны дать им инструкции, как делать векторизацию. Мы должны дать им возможность манипулировать стеком и тому подобное. Обычно это делается с помощью комбинации основной памяти и TCM. Это не просто TCM, для которого вы должны как-то предварительно загрузить данные. Эти два мира могут быть объединены, поэтому их легко программировать, а затем я могу передать их через TCM, и я все еще могу предоставить туда данные. Но если мне нужно что-то, что не является критической частью движка, оно может работать на кеше. Не обязательно идти в ТКМ. Таким образом, подсистема памяти может быть сложной».
Кляйн из Mentor отметил, что одной из проблемных областей является подсистема памяти, связанная с регистрами. «Вы должны иметь возможность получать данные в эти регистры для выполнения операций, а затем вам нужно получить результаты обратно», — сказал он. «Например, на ядре Arm у вас может быть регистр шириной до 2048 бит. Если ширина шины, передаваемой в память, составляет 128 бит, очень быстро произойдет то, что блок векторной обработки будет испытывать нехватку данных, потому что вы не сможете достаточно быстро извлечь их из основной памяти. Тогда вы также хотите посмотреть путь от кешей до процессора. Это может быть шире, чем путь к основной памяти, потому что, по сути, не очень сложно построить блок векторной обработки, который будет потреблять больше пропускной способности, чем у вас есть в основной памяти и вне ее. Если это так, то движок был перепроектирован, и вы не можете достаточно быстро передать ему достаточно данных или вывести результаты достаточно быстро, чтобы по-настоящему воспользоваться тем ускорением, которое там доступно».
Кроме того, при переходе от контроллера с единой подсистемой памяти к контроллеру с векторными операциями данные необходимо выровнять и упаковать. Такая векторная работа собирает все эти данные, а затем запускает их в одной операции SIMD (одна инструкция, несколько данных). Таким образом, пространство в памяти должно быть предварительно упаковано и выделено.
«Вы также должны иметь возможность вводить эти данные, – – сказал Уилсон из Synopsys. «Иногда эти данные, если вы переходите к большой длине вектора, также довольно длинные, и обычно они намного длиннее, чем системная память общего назначения, которая у вас может быть. Таким образом, вам нужно будет либо расшириться, либо некоторые из традиционных DSP могут использовать выделенную архитектуру загрузки-хранения памяти для подключения к этой памяти векторных данных. Это позволяет вам эффективно вводить это, вычислять, а затем отправлять обратно».
Проверка векторов
Проверка расширений векторных инструкций и векторных механизмов обычно не слишком отличается от скалярных инструкций.
"Эти процессоры необходимо проверять так же, как и любые другие", – говорит Дарко Томусилович, менеджер по проверке в Vtool.«Вам нужно понимать, что делает каждая инструкция, как смоделировать ее в вашей среде, как предварительно загрузить либо случайный набор инструкций, чтобы стимулировать ее, либо написать правильное программное обеспечение, которое будет скомпилировано в код, который вы запускаете. В остальном это классический процесс, как и любая другая проверка процессора. Моделировать такие инструкции, конечно, сложнее, но с точки зрения рабочего процесса все точно так же».
Рой Чоудхури согласился. «Подход к проверке векторных инструкций не слишком отличается от скалярных инструкций. Процесс должен начинаться с комплексного набора тестов, который может просмотреть настройки конфигурации для всех инструкций и сравнить результаты тестов с золотым эталоном. После того, как пути конфигураций расчищены, основное внимание следует перейти к ограниченному произвольному тестированию и тестированию функциональной совместимости. Также необходимо охватить варианты использования векторизации, чтобы обеспечить бесперебойную работу рабочих нагрузок и приложений».
В то же время есть несколько соображений по проверке векторов, – сказал Рой Чоудхури. «Поскольку векторные инструкции работают с большими объемами данных, общее наблюдаемое состояние процессора для любого теста очень велико. Некоторые векторные реализации, такие как RISC-V, спроектированы так, чтобы быть очень гибкими, позволяя пользователям настраивать размер элемента, начальный элемент, размер группы векторных регистров и т. д. Таким образом, количество конфигураций, по которым должна проверяться каждая инструкция, огромно. . Эти факторы усложняют проверку».
Другими словами, проверка должна смещаться влево. «Программные методы непрерывной интеграции и тестирования перенимаются группами разработчиков аппаратного обеспечения SoC и процессоров», — сказал Дэвидманн из Imperas. «Часто цитируемые оценки, что от 60% до 80% стоимости и времени дизайн-проекта приходится на проверку, являются чрезмерным упрощением. Дизайн — это проверка. Когда команда разработчиков разрабатывает функциональную спецификацию, план тестирования занимает центральное место во всех дискуссиях. Проверка больше не является просто вехой в конце этапа проектирования. Благодаря открытому стандарту ISA RISC-V спецификация допускает множество опций и конфигураций в дополнение к пользовательским расширениям. По мере того, как проектировщики выбирают и определяют необходимые функции, в каждом штате необходимо совместно разработать подробный план тестирования. Совместное проектирование — это аппаратное обеспечение, программное обеспечение и проверка как непрерывный одновременный процесс».
Заключение
Помимо всех проблем проектирования и проверки, одним из ключей к разработке векторных инструкций является понимание целевого конечного приложения.
"В конечном счете вы устанавливаете векторный движок, потому что выполняете какую-то обработку сигналов или изображений или, что чаще встречается сегодня, вывод", – сказал Кляйн. «Причина, по которой мы много слышим об этом, связана с распространением алгоритмов машинного обучения. Там над большими массивами выполняются операции умножения-накопления. Он действительно повторяющийся, данных много, и он хорошо подходит для этой векторной математики. Допустим, вы используете алгоритм логического вывода, чтобы посмотреть на ожидаемый размер ваших карт объектов ваших ядер свертки и на то, как они вписываются в векторную единицу, которую вы планируете построить. Если у вас есть сверточные ядра, состоящие из 9 элементов по 8 бит, установка блока векторной обработки размером 1024 бита не поможет, потому что у вас есть только те 72 бита данных ядра, которыми вы являетесь. Вводим в микс. Таким образом, понимание конечного приложения и учет шаблонов данных и вычислительных шаблонов, которые вам нужно будет поддерживать, — это способ получить правильное сочетание ускорителя и пропускной способности ввода-вывода, а также общий дизайн, который будет эффективно работать. найти приложение, которое вы ищете».
По теме
RISC-V набирает обороты
Часть 1. Расширяемая архитектура набора инструкций привлекает внимание всей отрасли и цепочки поставок.
RISC-V: Будут ли другие ядра с открытым исходным кодом?
Часть 3. Текущее состояние инструментов с открытым исходным кодом и то, как будет выглядеть ландшафт RISC-V к 2025 году.
Рынки RISC-V, безопасность и перспективы роста
Эксперты за столом : Почему RISC-V привлек так много внимания, что еще нужно сделать и где он, вероятно, добьется наибольшего успеха.
Проблемы и возможности RISC-V
Кто зарабатывает деньги с помощью ISA с открытым исходным кодом, текущее состояние экосистемы RISC-V и чем отличается один поставщик от другого.
Расширение присутствия RISC-V
Рыночные возможности и технические проблемы, связанные с работой с ISA с открытым исходным кодом
Оборудование с открытым исходным кодом набирает обороты
RISC-V привлекает новое внимание к этому рынку, но соотношение затрат и выгод отличается для аппаратного обеспечения с открытым исходным кодом, чем для программного обеспечения.
Проверка с открытым исходным кодом
Разобраться, что имеется в виду под проверкой с открытым исходным кодом, непросто, но это оставляет возможность для новых подходов.
Вектор — это набор скалярных элементов данных одинакового типа, сохраненных в памяти. Элементы вектора упорядочены таким образом, чтобы иметь постоянное приращение адресации между последовательными элементами, известное как шаг.
Векторный процессор — это совокупность аппаратных ресурсов, таких как векторные регистры, функциональные конвейеры, элементы обработки и счетчики регистров, для выполнения векторных операций.
Векторная обработка появляется, когда к векторам применяются арифметические или логические операции. Он отличается от скалярной обработки, которая работает с одной или одной парой данных. Преобразование скалярного кода в векторный называется векторизацией.
Типы векторных инструкций
Существуют различные типы векторных инструкций:
Инструкции вектор-вектор — один или два векторных операнда извлекаются из определенных векторных регистров, вводятся через функциональный блок конвейера и заносят результаты в другой векторный регистр. Эти инструкции определяются следующими двумя сопоставлениями —
Пример — $V\:=\sin(v_)$ и v3 = v1 + v2 для отображения f 1и f2 соответственно, где V для i = 1,2 и 3 — векторные регистры.
Векторно-скалярные инструкции — как показано на рисунке, он показывает векторно-скалярную инструкцию, соответствующую следующему отображению —
Примером может служить скалярное произведение sxv1 = v2, в котором каждый элемент V умножается на скаляр s для получения вектора v2< /sub> одинаковой длины.
Инструкции векторной памяти — это соответствует векторной загрузке или векторному хранению поэлементно между векторным регистром (V) и памятью (M), как определено ниже —
f4: M → V векторная нагрузка
f5: V → M Vector Store
Инструкции по уменьшению вектора — они соответствуют следующим сопоставлениям —
Инструкции по сбору и разбросу — в этих инструкциях используются два векторных регистра для случайного сбора или разброса векторных элементов по всей памяти в соответствии со следующими сопоставлениями —
Сбор — это операция, которая извлекает из памяти ненулевые элементы разреженного вектора, используя индексы, которые сами по себе индексируются.
Scatter делает обратное, сохраняя в памяти вектор в разреженном векторе, ненулевые элементы которого индексируются. Векторный регистр содержит данные, а векторный регистр используется в качестве индекса для сбора или распределения данных из случайных ячеек памяти или в них соответственно.
Инструкции по маскированию. В инструкциях по маскированию он использует вектор маски для переноса или расширения вектора до более короткого или более длинного индексного вектора, соответственно, что эквивалентно следующим сопоставлениям —
Векторная обработка — это центральный процессор, который может выполнять полный векторный ввод в отдельной инструкции. Это полная единица аппаратных ресурсов, реализующая последовательный набор одинаковых элементов данных в памяти с помощью отдельной инструкции.
Научные и исследовательские вычисления включают в себя множество вычислений, для которых требуются мощные и мощные компьютеры. Эти вычисления при выполнении на обычном компьютере могут занять дни или недели. Научные и инженерные задачи могут быть заданы методами векторов и матриц с использованием векторной обработки.
Возможности векторной обработки
Существуют различные функции векторной обработки, а именно:
Вектор – это структурированный набор элементов. Элементы вектора являются скалярными величинами. Векторный операнд включает в себя упорядоченный набор из n элементов, где n — длина вектора.
Каждый тактовый период обрабатывает две последовательные пары элементов. В течение одного такта двойные векторные конвейеры и двойные наборы векторных функциональных блоков позволяют обрабатывать две пары элементов.
По мере завершения каждой пары операций результаты доставляются в соответствующие элементы регистра результатов. Операция продолжается непосредственно перед тем, как различные обработанные элементы будут аналогичны счету, определяемому регистром длины вектора.
При параллельной векторной обработке за такт генерируется более двух результатов. Параллельные векторные операции автоматически запускаются при следующих двух обстоятельствах —
- Когда последовательные векторные инструкции используются для различных функциональных блоков и нескольких векторных регистров.
- Когда последовательные векторные инструкции используют результирующий поток из одного векторного регистра в качестве операнда другой операции, использующей другой функциональный блок. Этот этап называется цепочкой.
Векторный процессор лучше работает с более высокими векторами из-за базовой задержки в конвейере.
Векторная обработка снижает накладные расходы, связанные с обслуживанием переменных управления циклом, что делает ее более эффективной, чем скалярная обработка.
Читайте также: