Настоящее изобретение относится к области систем обработки данных. Более конкретно, настоящее изобретение относится к системе обработки данных, в которой желательно обеспечить операции того типа, который определяется как использование одного потока команд и множества потоков данных.
Операции, использующие один поток команд и множество потоков данных, характеризуют собой известный метод, при котором слова данных, которыми манипулируют в соответствии с одной командой, фактически представляют множество значений данных, причем конкретные манипуляции независимо выполняются с соответствующими значениями данных. Этот тип команды может повысить эффективность работы системы обработки данных и в особенности полезен для сокращения размера кода и ускорения операций обработки. Данный метод обычно, но не исключительно, применяется при манипулировании значениями данных, представляющих физические сигналы, например, в приложениях цифровой обработки сигналов.
При расширении возможностей по обработке данных системы обработки данных важным фактором являются непроизводительные потери, связанные со степенью увеличения габаритов, сложности, стоимости и потребляемой мощности, которые могут быть введены для поддержки дополнительных средств обработки. При этом весьма предпочтительными являются меры, обеспечивающие добавление возможностей обработки при сокращении связанных с этим дополнительных непроизводительных расходов.
В одном из аспектов настоящее изобретение предусматривает устройство для обработки, содержащее схему сдвига, арифметическую схему и декодер команды, реагирующий на команду управления схемой сдвига и арифметической схемой для выполнения операции над словом Rn данных и словом Rm данных, причем указанная операция дает значение, задаваемое выбором множества несмежных мультибитовых частей упомянутого слова Rm данных для формирования множества мультибитовых частей, каждая из которых имеет битовую длину А; дополнительным сдвигом упомянутого множества мультибитовых частей на общую величину сдвига в сдвинутые битовые позиции; преобразованием каждой из упомянутого множества мультибитовых частей из упомянутой битовой длины А в битовую длину В для формирования множества преобразованных мультибитовых частей, так что упомянутые преобразованные мультибитовые части могут быть присоединены (состыкованы) для формирования преобразованного слова Р данных; и выполнением множества независимых арифметических операций с использованием в качестве входных операндов соответствующих частей битовых позиций битовой длины В как из упомянутого преобразованного слова Р данных, так и упомянутого слова Rn данных, для формирования результирующего слова Rd данных.
Изобретение обеспечивает создание новой команды обработки данных в системе обработки данных, которая может служить для распаковки значений данных, содержащихся в слове данных, а также для выполнения арифметической операции типа "один поток команд, множество потоков данных" над распакованными значениями данных. Изобретение исходит из того, что распаковка несмежных значений данных в составе слова данных может быть реализована с существенно меньшими дополнительными непроизводительными затратами, чем в случае обычных команд распаковки, предназначенных для распаковки смежных значений данных. В частности, можно избежать дополнительных путей прохождения данных, которые могут отклонить битовые позиции значений данных, которые ранее были смежными. Вместо этого, например, могут быть использованы уже существующие схемы маскирования и сдвига слов. Кроме того, упрощение функции распаковки обеспечивает возможность для одиночных команд также обеспечивать арифметическую операцию над операндами без введения проблем ограничения цикла обработки.
Хотя в обобщенной форме изобретение может быть применено к выбору несмежных мультибитовых частей произвольной длины в сравнении с их преобразуемой длиной, к особенно эффективным и удобным вариантам осуществления относятся те, в которых выбранные мультибитовые части имеют длину, равную половине длины преобразованных мультибитовых частей, причем преобразованные мультибитовые части состыковываются в составе преобразованного слова данных таким образом, чтобы иметь длину, равную длине входных слов данных для данной операции.
Следует иметь виду, что преобразование длин выбранных мультибитовых частей может происходить различными путями. Двумя особенно полезными способами, согласно которым это может осуществляться, являются знаковое расширение или расширение с помощью предшествующего нуля.
Кроме того, арифметическая операция, которая объединяется с распаковкой, может принимать множество различных форм. Однако особенно предпочтительными вариантами осуществления являются такие, в которых арифметическая операция является операцией суммирования, выполняемой независимо для соответствующих преобразованных мультибитовых частей. Эта команда особенно полезна во многих реальных ситуациях обработки данных, например при вычислении суммы абсолютных разностей как часть вычислений компенсации движения согласно стандарту MPEG (Алгоритм сжатия подвижного изображения).
Как упомянуто выше, изобретение обеспечивает возможность использования существующих ресурсов обработки в системе обработки данных более эффективным способом. Это, в частности, имеет место в системе, в которой схема сдвига предусмотрена до арифметической схемы в канале обработки данных. Такая конфигурация позволяет выполнять распаковку с любым из дополнительных сдвигов перед выполнением арифметической операции.
В предпочтительных вариантах, чтобы обеспечить требуемые функциональные возможности без наложения дополнительных ограничений по времени цикла обработки, предусмотрена схема преобразования, которая обеспечивает преобразование выбранных мультибитовых частей по длине (например, либо путем расширения за счет знака, либо путем расширения за счет предшествующего нуля), включенная параллельно с частью схемы сдвига, и диапазон общих величин сдвига, который определен, ограничен таким образом, что первая часть схемы сдвига может быть использована в комбинации со схемой преобразования для выполнения требуемых операций без увеличения времени, требуемого для прохождения значения данных, свыше того, которое уже предусмотрено для прохождения через полную схему сдвига в других операциях.
В другом аспекте изобретение предусматривает способ обработки данных, включающий этапы декодирования и выполнения команды, которая дает результат, задаваемый выбором множества несмежных мультибитовых частей упомянутого слова Rm данных для формирования множества мультибитовых частей битовой длины А; путем дополнительного сдвига упомянутого множества мультибитовых частей на общую величину сдвига в сдвинутые битовые позиции; преобразованием каждой из упомянутого множества мультибитовых частей из упомянутой битовой длины А в битовую длину В для формирования множества преобразованных мультибитовых частей, так что упомянутые преобразованные мультибитовые части могут быть состыкованы для формирования преобразованного слова Р данных; и выполнением множества независимых арифметических операций с использованием в качестве входных операндов соответствующих частей битовых позиций битовой длины В как из упомянутого преобразованного слова Р данных, так и упомянутого слова Rn данных, для формирования результирующего слова Rd данных.
Изобретение также предусматривает компьютерный программный продукт для сохранения компьютерной программы, предназначенной для управления универсальным компьютером в соответствии с вышеописанным способом, включающей в себя команды обработки данных в форме операций, описанных выше.
Ниже описаны приведенные только для примера варианты осуществления настоящего изобретения со ссылками на чертежи, на которых показано следующее:
Фиг.1 - схематичное представление действия первой команды обработки данных типа SIMD (один поток команд и множество потоков данных);
Фиг.2 - схематичное представление канала обработки данных в устройстве обработки, которое может быть использовано для выполнения команды обработки данных по фиг.1;
Фиг.3 и 4 - схематичное представление двух вариантов другой команды обработки данных типа SIMD и
Фиг.5 - схематичное представление канала обработки данных в системе обработки, которая может быть использована для выполнения команд обработки данных по фиг.3 и 4.
На фиг.1 представлено действие первой команды обработки данных типа SIMD, определенной как "суммировать 8 и 16". Эта команда поступает как в варианте со знаком, так и в варианте без знака, в соответствии с характером расширения, вводимого перед выбранной частью слова данных входного операнда, когда он расширяется по длине при выполнении части обработки. Первое слово данных входного операнда сохраняется в регистре Rm устройства обработки данных. Слово данных сформировано из четырех 8-битовых частей р0, р1, р2 и р3. В зависимости от того, определена ли или нет операция поворота вправо 8-битовых частей в команде, из входного слова данных в регистре Rm выбираются мультибитовые части р0 и р2 или альтернативно р1 и р3. Дополнительная операция поворота вправо может осуществляться на величину 16 и 24, если желательно. Это эффективно действует для перестановки мест частей высокого и низкого порядков. Пример, показанный на фиг.1, иллюстрирует выбор несмежных частей р0 и р2 в варианте без поворота (смещения), причем другой возможный вариант показан пунктирной линией.
После того как мультибитовые части выбраны, каждая из них преобразуется по длине из 8 битов в 16 битов с использованием нулевого или знакового расширений. Затененные части преобразованного слова Р данных на чертеже показывают эти расширенные части.
Второе входное слово данных сохраняется в регистре Rn и содержит два 16-битовых значения. В показанном примере выполняется операция с использованием одного потока команд и множества потоков данных, причем расширенное значение р0 суммируется с нижней 16-битовой частью а0 значения Rn, в то время как расширенное значение р2 суммируется с верхней 16-битовой частью а2 значения Rn. Этот тип суммирования может рассматриваться как суммирование полной ширины с разрывом цепи переноса между 15-м и 16-м битами результата. Следует иметь в виду, что могут выполняться и другие типы арифметических операций, например вычитание типа SIMD (с использованием одного потока команд и множества потоков данных).
Слово данных выходного результата, генерируемое командой по фиг.1, формирует в нижних 16 битах сумму р0 и а0, в то время как верхние 16 битов содержат сумму р2 и а2. Эта команда особенно полезна в операциях, которые определяют сумму абсолютных разностей между соответствующими значениями данных, причем а0 и р0 представляют суммируемые значения, а значения р2 и а2 представляют индивидуальные абсолютные значения разностных значений сигналов, такие как разностные значения элементов изображения (пикселей). Этот тип операции обычно требуется в обработке оценки движения по стандарту MPEG, и возможность выполнения этой операции с высокой скоростью является в высшей степени предпочтительной.
На фиг.2 показан пример канала 2 данных системы обработки данных, который может быть использован для реализации команды по фиг.1. Банк 4 регистров хранит 32-битовых слова данных, которые должны обрабатываться. Оба слова Rm и Rn данных входных операндов считываются из этого банка регистров, и результирующее слово данных записывается в регистр Rd в банке 4 регистров. Канал 2 данных включает схему 6 сдвига и схему 8 сумматора. Многие другие команды обработки данных, обеспечиваемые системой, используют эту схему 6 сдвига и схему 8 сумматора различными способами. Такой канал 2 данных проектируется особо тщательным образом, чтобы время, требуемое для прохождения значением данных через схему 6 сдвига и схему 8 сумматора, было хорошо согласовано с временем цикла обработки данных. Эффективное использование ресурсов аппаратных средств канала 2 данных обеспечивается в системах, где эти ресурсы активны для большей доли каждого слова данных, проходящего через канал 2 данных. Схема 10 нулевого/знакового расширения и маскирования предусмотрена параллельно нижней части схемы 6 сдвига. Мультиплексор 12 имеет возможность выбора либо выхода полной схемы 6 сдвига, либо выхода схемы 10 знакового/нулевого расширения и маскирования в качестве одного из входов схемы 8 сумматора. На другой вход схемы 8 сумматора подается слово Rn данных входного операнда.
При выполнении команды по фиг.1 слово Rm данных входного операнда подается на схему 6 сдвига, в которой к слову данных прикладывается дополнительный сдвиг вправо 8-битовых позиций, в зависимости от того, был ли этот параметр указан в команде. Дополнительный поворот вправо 16 и 24-битовых позиций также может использоваться. В схеме сдвига, основанной на многоуровневом мультиплексоре, такой сдвиг с ограниченными возможностями может быть обеспечен относительно просто из первой части схемы 6 сдвига (например, в случае 32-битовой системы первый уровень мультиплексора может обеспечивать 16-битовый сдвиг, а второй уровень мультиплексора обеспечивает 8-битовый сдвиг). Соответственно, значение, дополнительно сдвигаемое на определенную величину, может быть снято с части схемы 6 сдвига и подано на схему 10 знакового/нулевого расширения и маскирования. Эта схема 10 обеспечивает маскирование невыбранных мультибитовых частей слова Rm данных входного операнда с возможным сдвигом и замену этих маскированных частей нулями или знаковым расширением соответствующих им выбранных мультибитовых частей. Выходные данные схемы 10 знакового/нулевого расширения и маскирования проходят через мультиплексор 12 на первый вход схемы 8 сумматора. На второй вход схемы 8 сумматора подается слово Rn данных входного операнда. Схема 8 сумматора выполняет операцию суммирования типа SIMD над входными данными (т.е. двумя параллельными 16-битовыми слагаемыми с цепью переноса, эффективно разорванной между битовыми положениями 15 и 16). Выходные данные схемы 8 суммирования записываются вновь в регистр Rd банка 4 регистров.
В качестве альтернативного варианта схема 10 знакового/нулевого расширения и маскирования может принимать на своем входе слово Rm данных (без поворота) и затем самостоятельно выполнять поворот 0, 8, 16 или 24 над четырьмя возможными знаковыми битами и затем создавать маску. Схема 6 сдвига должна работать параллельно для сдвига всех 32 битов слова Rm.
Фиг.3 и 4 иллюстрируют два варианта команды типа SIMD упаковки половины слова. Команда РКНТВ на фиг.3 принимает фиксированную верхнюю половину слова данных одного входного операнда, сохраненного в регистре Rn, и половинную битовую часть с переменным положением слова данных второго входного операнда, сохраненного в регистре Rm, и объединяет их соответственно в верхнюю половину и нижнюю половину выходного слова данных, предназначенного для сохранения в регистре Rd. Команда РКНВТ принимает нижнюю половину слова данных одного входного операнда из Rn и часть с длиной в половину слова с переменным положением от слова данных второго входного операнда из Rm и объединяет их соответственно в нижнюю и верхнюю половины выходного слова данных, предназначенного для сохранения в регистре Rd. Можно видеть, что выбранная часть слова Rn данных входного операнда в любом случае не сдвигается по своему положению в пределах выходного слова Rd данных. Поэтому эту часть можно обеспечить простой схемой маскирования или выбора, представляющей весьма малые дополнительные аппаратурные затраты. Часть в половину слова с переменным положением команды по фиг.3 выбирается из битовых позиций от 15 до 0 слова Rm после того, как это слово сдвигается вправо на k битовых позиций. Аналогичным образом, часть Rm длиной в половину слова с переменным положением команды, выбранная в соответствии с командой на фиг.4, выбирается из битовых позиций от 31 до 16 слова Rm после того, как это слово сдвигается влево на k битовых позиций.
Переменный сдвиг, обеспечиваемый совместно с функцией упаковки команд по фиг.3 и фиг.4, особенно полезен для изменений настройки значения "Q" арифметического значения с фиксированной запятой, что может возникнуть в процессе обработки этих значений.
На фиг.5 представлен канал 14 данных, который особенно хорошо подходит для выполнения команд по фиг.3 и 4. Банк 16 регистров вновь обеспечивает слова данных входных операндов, в данном примере представляющих собой 32-битовые слова данных, и сохраняет выходное слово данных. Канал данных включает в себя схему 18 сдвига, схему 20 сумматора и логическую схему 22 выбора и объединения.
В процессе работы не имеющее сдвига слово Rn данных входного операнда проходит непосредственно из банка 16 регистров в схему 22 выбора и объединения. В случае команды по фиг.3 выбираются 16 старших битов значения Rn, которые образуют соответствующие биты в выходном слове Rd данных. В случае команды по фиг.4 выбираются младшие 16 битов слова Rn данных входного операнда, которые проходят для образования младших битов выходного слова данных Rd. Слово Rm данных входного операнда проходит через полную схему 18 сдвига. В случае команды по фиг.3 применяется арифметический сдвиг вправо на k битовых позиций, и затем 16 младших битов с выхода схемы 18 сдвига выбираются схемой 22 выбора и объединения для формирования 16 младших битов выходного слова Rd данных. В случае команды по фиг.4 схема 18 сдвига обеспечивает логический сдвиг влево на k битовых позиций и подает результат на схему 22 выбора и объединения. Схема 22 выбора и объединения выбирает 16 старших битов с выхода схемы 18 сдвига и использует их для формирования 16 старших битов выходного слова Rd данных.
Можно видеть, что схема 22 выбора и объединения включена параллельно со схемой 20 сумматора. Соответственно, при условии, что канал 14 данных спроектирован тщательным образом для обеспечения того, чтобы операция полного сдвига и суммирования выполнялась за цикл обработки, может быть обеспечена относительно простая операция выбора и объединения в пределах интервала времени, обычно предоставляемого для операции схемы 20 сумматора без наложения каких-либо ограничений на цикл обработки.
Следует иметь в виду, что команды обработки данных, поясненные выше, и в том виде, как представлено в формуле изобретения, определены в терминах получаемого результирующего значения. Следует понимать, что то же самое результирующее значение может быть получено с использованием многих других этапов обработки и последовательностей этапов. Изобретение охватывает все такие варианты, которые позволяют получить то же самое конечное результирующее значение с использованием одной команды.
Изобретение относится к области систем обработки данных, которые обеспечивают выполнение операций типа "один поток команд и множества потоков данных". Изобретение обеспечивает возможность использования существующих ресурсов обработки в системе обработки данных более эффективным способом. Предложена система обработки данных с командой (ADD8TO16), которая распаковывает несмежные части слова данных с использованием знакового или нулевого расширения и объединяет их посредством арифметической операции типа "один поток команд, множество потоков данных", такой как суммирование, выполняемое в ответ на одну и ту же команду. Команда хорошо подходит для использования в системах, имеющих канал данных, содержащий схему сдвига перед арифметической схемой. 3 н. и 12 з.п. ф-лы, 5 ил.
US 6061783 А, 09.05.2000 | |||
Устройство для выполнения арифметических и логических операций над словами | 1978 |
|
SU767757A1 |
УСТРОЙСТВО ВЫСОКОГО ДАВЛЕНИЯ И ТЕМПЕРАТУРЫ | 2006 |
|
RU2343969C2 |
Контактный датчик уровня электропроводных жидкостей | 1974 |
|
SU540150A1 |
US 4785393 А, 15.11.1988 | |||
Устройство для контроля качества линейных сварных швов | 1980 |
|
SU945783A1 |
Авторы
Даты
2006-07-10—Публикация
2001-08-21—Подача