Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АрхитектураБиологияГеографияДругоеИностранные языки
ИнформатикаИсторияКультураЛитератураМатематика
МедицинаМеханикаОбразованиеОхрана трудаПедагогика
ПолитикаПравоПрограммированиеПсихологияРелигия
СоциологияСпортСтроительствоФизикаФилософия
ФинансыХимияЭкологияЭкономикаЭлектроника

Перспективы векторных операций

Команды пересылки данных | Команды ветвления | Количество адресов в команде |


Читайте также:
  1. Автоматизация учета кассовых операций на предприятии
  2. Анализ состояния и использования кассовых операций на предприятии
  3. Аудит кассовых операций и его этапы
  4. Виды активных операций КБ
  5. Глава 6. Рыночные перспективы
  6. Документирование хозяйственных операций и формирование внутримашинной базы учёта БИС (бухгалтерских информационных систем).
  7. Журнал учета хозяйственных операций ОАО «СГК» по движению денежных средств на расчетном счете за 11 – 30 января 20XX года

Векторные команды характеризуются большим числом операций, выполняемых вместе, например, 8 операций с типом float или 4 с типом double, 32 с целочисленными байтами, 8 – целочисленными словами и т.п. Это дает нечто большее, чем просто улучшение декодирования команд и т.п.

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

Далее, полезнее становятся команды "сквозного" чтения или записи, т.е. команды, которые не трогают кэш-память. Если векторные регистры будут достаточного размера для хранения одной и более строк кэш-памяти, операции сквозного чтения/записи станут очень полезными. На практике растет необходимость работать с наборами данных, не помещающимися в кэш-память.

Наличие больших векторных регистров не обязательно означает увеличение задержек, ведь векторным командам не нужно ждать, пока прочитаются/запишутся все данные. Векторные процессорные блоки могут начать работу с теми данными, которые уже успели загрузиться, если получится распознать программную последовательность. Это значит, например, что если нужно загрузить векторный регистр и затем все элементы умножить на некое число, то ядро процессора может начать операцию перемножения как только первая часть вектора будет загружена, не дожидаясь загрузки остальных. Всё это лишь вопрос сложности векторного блока. Рассмотренные факты показывают, что теоретически векторные регистры могут использоваться очень широко и программы можно разрабатывать, учитывая данную возможность. Однако в многоядерных и многопоточных операционных системах накладываются ограничения на размер векторных регистров. А именно, в тех случаях, когда важно время контекстного переключения, куда входит сохранение/загрузка значений регистров.

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

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

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

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

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

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

Некоторые специалисты призывают к возрождению векторных операций. Они выделяют множество преимуществ и пытаются развеять некоторые мифы. Но, по правде говоря, они рисуют слишком упрощенную картину. Выше упомянуто, что большие наборы регистров означают увеличение времени контекстных переключений, чего следует избегать в операционных системах общего назначения. Значительное время выполнения векторных операций также становится проблемой, если задействуются прерывания. При возникновении прерывания, ядро процессора должно остановить текущую работу и обработать его. После этого можно возобновлять прерванную работу. А в целом, прервать выполнение команды где-то в середине достаточно сложно; не то чтобы совсем невозможно, но сложно. Если время выполнения команды велико, то в ней должна быть реализована возможность приостановки, либо перезапуска. Иначе время реагирования на прерывание станет слишком большим. Последнее - недопустимо.

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

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

 

 


Дата добавления: 2015-10-02; просмотров: 55 | Нарушение авторских прав


<== предыдущая страница | следующая страница ==>
SIMD-команды| Команды управления ходом выполнения программы

mybiblioteka.su - 2015-2024 год. (0.008 сек.)