Скачиваний:
53
Добавлен:
03.06.2014
Размер:
328.27 Кб
Скачать

V_load va, adrA

V_load vb, adrB

V_multiply vc, va, vb

Первые две векторные команды V_load загружают векторы из памяти в векторные регистры VA и VB. Векторная команда умножения вычисляет произведение для всех пар одноименных элементов векторов и записывает  полученный  вектор  в  векторный  регистр  VC.

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

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

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

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

Нулевое значение бита свидетельствует, что соответствующий  элемент  исходного  вектора  равен  нулю.

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