Патент на изобретение №2225638
|
||||||||||||||||||||||||||
(54) АРИФМЕТИЧЕСКИЕ ОПЕРАЦИИ В СИСТЕМЕ ОБРАБОТКИ ДАННЫХ
(57) Реферат: Изобретение относится к системам обработки данных, которые осуществляют арифметические операции. Техническим результатом является упрощение тактирования операции умножения за один цикл, уменьшение объема памяти за счет исключения необходимости задания насыщающих версий нескольких команд умножения. Технический результат достигается за счет того, что устройство содержит средство логической обработки, дешифратор команд, который управляет средством логической обработки, которое выполняет операцию обработки данных над первым словом-операндом Р N-разрядных данных и вторым словом-операндом Q N-разрядных данных для формирования результирующего слова R N-разрядных данных. Способ включает в себя следующие операции: формируют сигналы управления обработкой, выполняют операции обработки данных над словами-операндами данных под управлением упомянутых сигналов управления, в соответствии с первым командным словом формируют управляющие сигналы для управления средством логической обработки, чтобы это средство выполняло операцию обработки данных над первым словом-операндом Р N-разрядных данных и вторым словом-операндом Q N-разрядных данных для формирования результирующего слова R N-разрядных данных. 6 с. и 9 з.п.ф-лы, 4 ил. Изобретение относится к системам обработки данных. В частности, настоящее изобретение относится к системам обработки данных, осуществляющим арифметические операции, способным осуществлять арифметические операции с насыщением. Многие алгоритмы цифровой обработки сигналов (ЦОС) предусматривают использование так называемой арифметики над Q15 и арифметики над Q31. Число в формате Q15 является обычным 16-разрядным целым числом двоичной арифметики дополнений, но рассматривается как представление этого целого числа, деленного на 215. Поскольку 16-разрядное целое число двоичной арифметики дополнений может представлять числа от -215 до +215-1, то Q15 может представлять числа от -1 до +(1-2-15). Аналогично, число в формате Q31 является обычным 32-разрядным целым числом двоичной арифметики дополнений, рассматриваемым как частное от деления на 231, и способно представлять числа от -1 до +(1-2-31). Аналогично можно определить (N+1)-разрядные числа в формате QN для любого другого значения N. Важной особенностью арифметик над Q15 и Q31 является то, что они являются “насыщающими”. Если результат соответствующей операции бесконечной арифметики превышает максимальное положительное значение (+1-2-N), то насыщенный результат равен максимальному положительному значению; аналогично, если результат в бесконечной арифметике оказывается меньше -1, то насыщенный результат будет равен -1. Например, в арифметике над Q15, если А=0 ![]() ![]() ![]() ![]() Результат = (А*В)+С. Попытки создания подобных команд умножения с накоплением в арифметике с насыщением (иногда говорят с “ограничением”) сталкиваются со значительными проблемами. Особую важность эти проблемы приобретают в случае арифметики над QN. Чтобы команды различных типов можно было использовать как в варианте с насыщением, так и в варианте без насыщения, требуется достаточно много места под разряды кода операции. Кроме того, когда нужно обеспечить выполнение умножения в течение одного цикла, дополнительно накладываемые требования, связанные с насыщением, и соответствующие корректировки приводят к нежелательному ограничению тактовой частоты за счет команды умножения с насыщением, которая является наихудшим случаем. В опубликованной британской патентной заявке GB-А2317465 раскрыт сопроцессор, который поддерживает команды умножения с удвоением, позволяющие полностью осуществлять операции умножения с накоплением в формате Q15 в пределах одной команды, например, dest=SAT (асc+SAT(2*scr1*scr2)) с возможностью масштабирования и dest = SAT(асc-SAT(2*scr1*scr2)) с возможностью масштабирования. Одним аспектом настоящего изобретения является устройство обработки данных, содержащее дешифратор команд, выполненный с возможностью формирования сигналов управления обработкой в соответствии с командными словами обработки данных, и логику обработки, выполненную с возможностью проведения операций обработки данных над словами-операндами данных под управлением упомянутых сигналов управления обработкой, отличающееся тем, что упомянутый дешифратор команд выполнен с возможностью формирования управляющих сигналов для управления упомянутой логикой обработки в соответствии с первым командным словом, чтобы она выполняла операцию обработки данных над первым словом-операндом Р N-разрядных данных и вторым словом-операндом Q N-разрядных данных, формируя результирующее слово R N-разрядных данных, выражаемое в виде: R=Sat(Fun(P)+Q), где Sat(X) – функция, возвращающая насыщенное значение X; и Fun(X) – функция, воздействующая на, по меньшей мере, те значения X, которые могут быть получены умножением со знаком N/2-разрядного числа на N/2-разрядное число, и возвращающая значение, полученное сдвигом Х на некоторую величину сдвига для формирования сдвинутого слова и насыщением упомянутого сдвинутого слова. Изобретение опирается на тот факт, что создание особой команды, позволяющей удовлетворить требованиям, связанным с применением команды умножения с накоплением с насыщением, обеспечивает значительные преимущества. В частности, требования к тактированию для стандартной операции умножения за один цикл, которую желательно использовать, упрощаются за счет корректировок, производимых в связи с особенностями арифметики с насыщением, которая лучше согласуется с циклами, используемыми последующей командой, которая осуществляет операцию накопления. Новая команда также позволяет избавиться от необходимости задавать насыщающие версии нескольких команд умножения и таким образом уменьшить место, занимаемое разрядами кода операции, и другие издержки, необходимые для обеспечения арифметики с насыщением. Наконец, для реализации новой команды требуется лишь небольшой дополнительный объем аппаратного обеспечения по отношению к уже предусмотренному в системе в соответствии с другими аспектами арифметики с насыщением и без насыщения. Очевидно, что для реализации новой команды можно использовать самые разнообразные аппаратные средства. Различные операции, необходимые для получения в качестве окончательного результата N-разрядного слова данных, можно группировать различными способами и выполнять посредством различных схемных блоков. Все эти разнообразные альтернативы, обеспечивающие получение результирующего N-разрядного слова данных с одним и тем же вышеприведенным окончательным значением с использованием одной команды, представляют собой варианты осуществления настоящего изобретения. Помимо вышеописанной команды, предназначенной для использования в операциях умножения с накоплением с насыщением, можно аналогичным образом создать аналогичные команды, обеспечивающие операции умножения с декрементом с насыщением. В командах, отвечающих изобретению, можно использовать сдвиг той или иной величины. Однако особенно полезно применять такой сдвиг, чтобы сдвинутое слово вдвое превосходило первое слово-операнд Р N-разрядных данных. При осуществлении целочисленного умножения двух чисел в формате Q15 результат, полученный нормальным путем, представляет собой 32-разрядное число в формате “квази-Q30”, которое можно рассматривать как элемент арифметики дополнений, сопоставляемый обычному 32-разрядному значению со знаком, деленному на 230, и таким образом представляющий число от -2 до +(2-2-30). Число в формате квази-Q30 можно также рассматривать как знаковое 32-разрядное число с фиксированной запятой с 30 двоичными разрядами. Однако в таких обстоятельствах для дальнейшей обработки требуется число в формате Q31. Чтобы решить эту проблему, можно после стандартной команды целочисленного умножения выполнить команду, отвечающую изобретению, и выполнить сдвиг на величину, обеспечивающую удвоение результата целочисленного умножения для перевода полученного значения из формата квази-Q30 в формат Q31, а затем перейти к операции насыщения и операции накопления или декремента. Таким образом, одну из проблематичных корректировок, необходимых для поддержки арифметики с насыщением, можно обеспечить путем корректировки результата целочисленного умножения, осуществляемой в рамках последующей команды, вместо того, чтобы ждать окончания цикла умножения. Для осуществления насыщения можно использовать логические схемы самых разных видов. Однако согласно предпочтительным вариантам осуществления изобретения насыщение упомянутого сдвинутого слова предусматривает проверку наличия определенных характеристик упомянутого первого слова-операнда Р N-разрядных данных и в случае наличия таковых – замену упомянутого сдвинутого значения соответствующим граничным значением диапазона разрешенных значений. Эта особенность основана на том, что в некоторых обстоятельствах для обеспечения насыщения можно проверять характеристики первого слова-операнда Р N-разрядных данных, поскольку возможности манипуляции, которой его надлежит подвергнуть, довольно ограничены и потому обстоятельства, при которых может возникнуть переполнение или антипереполнение (потеря значащих разрядов), что обуславливает необходимость в насыщении, можно проверять специально и таким образом снизить требования к аппаратному обеспечению в целом. В частности, когда применение сдвига приводит к удвоению первого слова-операнда Р N-разрядных данных, существует весьма простой способ установления необходимости насыщения, заключающийся в сравнении двух старших разрядов первого слова-операнда Р N-разрядных данных. По сравнению со сравнительно ограниченным диапазоном обстоятельств, возникающих в ходе выполнения команды Fun(X), при которых возможно переполнение или антипереполнение, при выполнении функции Sat(X) переполнение или антипереполнение может возникать в большем количестве случаев и потому предпочтительные варианты осуществления изобретения предусматривают, что Sat(X) в целях формирования упомянутого результирующего слова R N-разрядных данных предусматривает проверку, лежит ли Х вне диапазона разрешенных значений, и в случае обнаружения этого факта – замену Х соответствующим граничным значением упомянутого диапазона разрешенных значений. Хотя новые команды, отвечающие настоящему изобретению, сами по себе обладают преимуществами, они, как было отмечено выше, особенно пригодны для вариантов осуществления, предусматривающих наличие умножителя для выполнения второго командного слова, которое формирует первое слово-операнд N-разрядных данных, перемножая третье слово-операнд A N/2-разрядных данных и четвертое слово-операнд В N/2-разрядных данных. Команды, отвечающие изобретению, можно применять к операндам любого рода. Однако команда особенно полезна применительно к вариантам осуществления, согласно которым упомянутое первое слово-операнд Р N-разрядных данных, упомянутое второе слово-операнд Q N-разрядных данных и упомянутое результирующее слово R N-разрядных данных являются словами знаковых данных с фиксированной запятой, причем запятая находится непосредственно справа от позиции старшего разряда, так что -1 ![]() ![]() ![]() ![]() ![]() Согласно рассмотренному выше для использования таких операндов в формате QN требуются операции корректировки и насыщения, которые могут эффективно обеспечиваться за счет выполнения команд, отвечающих изобретению, не оказывая чрезмерного воздействия на остальную систему обработки данных. Наиболее часто используют те значения первого слова-операнда Р N-разрядных данных, которые можно получить умножением со знаком N/2-разрядного целого на N/2-разрядное целое. Однако предпочтительные варианты осуществления изобретения предусматривают расширение сферы применения Fun(X), допуская ее использование при осуществлении сдвига и насыщения всех возможных N-разрядных значений X. Изобретение можно использовать в системах, в которых N принимает те или иные значения. Однако для осуществления операций ЦОС того типа, для которого изобретение особенно полезно, обычно требуются определенные значения N, например N=32. Хотя очевидно, что изобретение можно реализовать в виде системы, содержащей дискретные компоненты, весьма предпочтительно, чтобы устройство обработки данных было реализовано на основе интегральных схем. Другим аспектом настоящего изобретения является способ обработки данных в устройстве обработки данных, согласно которому в соответствии с командными словами обработки данных формируют сигналы управления обработкой и выполняют операции обработки данных над словами-операндами данных под управлением упомянутых сигналов управления обработкой; отличающийся тем, что в соответствии с первым командным словом формируют управляющие сигналы для управления логикой обработки, чтобы она выполняла операцию обработки данных над первым словом-операндом Р N-разрядных данных и вторым словом-операндом Q N-разрядных данных, чтобы сформировать результирующее слово R N-разрядных данных, выражаемое в виде:R=Sat(Fun(Р)+Q), где Sat(X) – функция, возвращающая насыщенное значение X; и Fun(X) – функция, воздействующая на, по меньшей мере, те значения X, которые могут быть получены умножением со знаком N/2-разрядного числа на N/2-разрядное число, и возвращающая значение, полученное сдвигом Х на некоторую величину сдвига, для формирования сдвинутого слова, и насыщением упомянутого сдвинутого слова. Предусмотрены также дополнительные аспекты способа, согласно которым команда выполняет операцию вычитания, а не сложения. Ниже, исключительно в качестве примера, описан вариант осуществления изобретения со ссылками на прилагаемые чертежи, в которых: фиг. 1 – схема дешифратора команд и логики обработки в интегральной схеме; и фиг. 2, 3 и 4 – блок-схемы, иллюстрирующие порядок выполнения команд, предусмотренных для поддержки арифметики с насыщением. На фиг. 1 показана часть интегральной схемы 2 (аналогичная части микропроцессора ARM9TDMI, производимого ARM Limited, Кембридж, Великобритания), содержащая дешифратор 4 команд и логику 6 обработки. Логика 6 обработки образована большим количеством разнообразных отдельных функциональных элементов. В банке 8 регистров хранятся слова-операнды данных (P, Q), подлежащие манипулированию. Эти слова можно считывать из банка 8 регистров и подавать через мультиплексоры 10, 12, 14 на разные другие блоки обработки, входящие в состав логики 6 обработки. Целочисленный умножитель 16 предусмотрен для осуществления среди других функций целочисленного умножения со знаком. Сумматор 18 предусмотрен для осуществления операций умножения с накоплением без насыщения и для преобразования результата умножения из формата переноса с сохранением в формат дополнения до двойки. Предусмотрены также элемент сдвига 20 и арифметико-логическое устройство 22. Вышеупомянутые основные компоненты логики 6 обработки, в целом, известны. Управляющие сигналы дешифратора 4 команд подают на различные элементы логики 6 обработки для управления и согласования их работы. В частности, когда дешифратор команд дешифрует команды, выдаваемые им управляющие сигналы 24 переключают различные мультиплексоры, входящие в состав логики 6 обработки, для выбора нужного пути данных, а также активируют и настраивают различные блоки обработки, входящие в состав логики 6 обработки, для осуществления операции, заданной дешифрованной командой. Для простоты линии сигнализации, связывающие отдельные компоненты с дешифратором команд, на схеме не изображены. В целях обеспечения дополнительных команд (QDADD, QDSUB и QDRSB) (команда сложения, команда вычитания и команда обращенного вычитания) для арифметики с насыщением предусмотрен блок 26 сдвига и насыщения, расположенный по ходу обработки выше арифметико-логического устройства 22, а также предусмотрен блок 28 полного насыщения, расположенный на пути обратной связи с банком 8 регистров, на следующем каскаде конвейерной обработки после того, на котором действует арифметико-логическое устройство 22. В ходе работы блок 26 сдвига и насыщения сначала проверяет тот факт, что два старших разряда поступившего на него 32-разрядного слова данных не равны друг другу. При выполнении этого условия сдвиг влево на один разряд приведет к переполнению или антипереполнению, если поступившее слово данных представляет слово в формате квази-Q30, которое подлежит преобразованию в слово в формате Q31 путем сдвига влево. Если два старших разряда равны ’01’, то блок 26 сдвига и насыщения выводит значение ![]() ![]() Формула изобретения 1. Устройство обработки данных, содержащее дешифратор (4) команд, выполненный с возможностью формирования сигналов управления обработкой в соответствии с командными словами обработки данных, и средство (6) логической обработки, выполненное с возможностью выполнения операций обработки данных над словами-операндами данных, под управлением упомянутых сигналов управления обработкой, отличающееся тем, что упомянутый дешифратор (4) команд выполнен с возможностью формирования управляющих сигналов для управления упомянутым средством логической обработки в соответствии с первым командным словом (QDADD), чтобы средство логической обработки выполняло операцию обработки данных над первым словом-операндом P N-разрядных данных и вторым словом-операндом Q N-разрядных данных, формируя результирующее слово R N-разрядных данных, выражаемое в виде R=Sat(Fun(P)+Q), где Sat (X) – функция, возвращающая насыщенное значение Х; Fun (Х) – функция, воздействующая на, по меньшей мере, те значения Х, которые могут быть получены умножением со знаком N/2-разрядного числа на N/2-разрядное число, и возвращающая значение, полученное сдвигом Х на некоторую величину сдвига, для формирования сдвинутого слова, и насыщением упомянутого сдвинутого слова. 2. Устройство обработки данных, содержащее дешифратор (4) команд, выполненный с возможностью формирования сигналов управления обработкой в соответствии с командными словами обработки данных, и средство (6) логической обработки, действующее под управлением упомянутых сигналов управления обработкой, выполненное с возможностью проведения операций обработки данных над словами-операндами данных, отличающееся тем, что упомянутый дешифратор (4) команд выполнен с возможностью формирования управляющих сигналов для управления упомянутым средством логической обработки в соответствии с первым командным словом (QDSUB), чтобы упомянутое средство выполняло операцию обработки данных над первым словом-операндом Р N-разрядных данных и вторым словом-операндом Q N-разрядных данных, формируя результирующее слово R N-разрядных данных, выражаемое в виде R=Sat(Fun(P)–Q), где Sat (Х) – функция, возвращающая насыщенное значение Х; Fun (Х) – функция, воздействующая на, по меньшей мере, те значения Х, которые могут быть получены умножением со знаком N/2-разрядного числа на N/2-разрядное число, и возвращающая значение, полученное сдвигом Х на некоторую величину сдвига, для формирования сдвинутого слова, и насыщением упомянутого сдвинутого слова. 3. Устройство обработки данных, содержащее дешифратор (4) команд, выполненный с возможностью формирования сигналов управления обработкой в соответствии с командными словами обработки данных, и средство (6) логической обработки, выполненное с возможностью выполнения операций обработки данных над словами-операндами данных, под управлением упомянутых сигналов управления обработкой, отличающееся тем, что упомянутый дешифратор (4) команд выполнен с возможностью формирования управляющих сигналов для управления упомянутым средством логической обработки в соответствии с первым командным словом (QDRSB), чтобы упомянутое средство выполняло операцию обработки данных над первым словом-операндом Р N-разрядных данных и вторым словом-операндом О N-разрядных данных, формируя результирующее слово R N-разрядных данных, выражаемое в виде R=Sat(Q–Fun(P)), где Sat (Х) – функция, возвращающая насыщенное значение Х; Fun (Х) – функция, воздействующая на, по меньшей мере, те значения Х, которые могут быть получены умножением со знаком N/2-разрядного числа на N/2-разрядное число, и возвращающая значение, полученное сдвигом Х на некоторую величину сдвига, для формирования сдвинутого слова, и насыщением упомянутого сдвинутого слова. 4. Устройство обработки данных по любому одному из пп.1, 2 или 3, отличающееся тем, что упомянутая величина сдвига такова, что упомянутое сдвинутое слово вдвое превосходит первое слово-операнд Р N-разрядных данных. 5. Устройство обработки данных по любому из предшествующих пунктов, отличающееся тем, что насыщение упомянутого сдвинутого слова предусматривает проверку наличия определенных характеристик упомянутого первого слова-операнда Р N-разрядных данных и, в случае наличия таковых, замену упомянутого сдвинутого значения соответствующим граничным значением диапазона разрешенных значений. 6. Устройство обработки данных по одному из пп.4, 5, отличающееся тем, что упомянутое первое слово-операнд N-разрядных данных является значением со знаком и упомянутая определенная характеристика состоит в отсутствии равенства между двумя старшими разрядами упомянутого первого слова-операнда R N-разрядных данных. 7. Устройство обработки данных по любому из предшествующих пунктов, отличающееся тем, что Sat (X) для формирования упомянутого результирующего слова R N-разрядных данных предусматривает проверку, лежит ли Х вне диапазона разрешенных значений, и, в случае обнаружения этого факта, замену Х соответствующим граничным значением упомянутого диапазона разрешенных значений. 8. Устройство обработки данных по любому из предшествующих пунктов, отличающееся тем, что упомянутое средство логической обработки содержит умножитель (УМНОЖ) и упомянутое первое слово-операнд Р N-разрядных данных является результатом умножения, полученным путем умножения со знаком третьего слова-операнда A N/2-разрядных данных и четвертого слова-операнда В N/2-разрядных данных в соответствии со вторым командным словом. 9. Устройство обработки данных по любому из предшествующих пунктов, отличающееся тем, что упомянутое первое слово-операнд Р N-разрядных данных, упомянутое второе слово-операнд Q N-разрядных данных и упомянутое результирующее слово R N-разрядных данных являются словами знаковых данных с фиксированной запятой, причем запятая находится непосредственно справа от позиции старшего разряда, так что –1 ![]() ![]() ![]() ![]() 10. Устройство обработки данных по любому из предшествующих пунктов, отличающееся тем, что функция Fun(X) определена на всех N-разрядных значениях Х и возвращает значение, полученное сдвигом Х на некоторую величину сдвига для формирования сдвинутого слова и насыщением упомянутого сдвинутого слова. 11. Устройство обработки данных по любому из предшествующих пунктов, отличающееся тем, что N=32. 12. Устройство обработки данных по любому из предшествующих пунктов, отличающееся тем, что упомянутое устройство обработки данных выполнено в виде интегральной схемы. 13. Способ обработки данных в устройстве обработки данных, согласно которому в соответствии с командными словами обработки данных формируют сигналы управления обработкой и выполняют операции обработки данных над словами-операндами данных под управлением упомянутых сигналов управления обработкой, отличающийся тем, что в соответствии с первым командным словом (QDADD) формируют управляющие сигналы для управления средством (6) логической обработки, чтобы упомянутое средство выполняло операцию обработки данных над первым словом-операндом Р N-разрядных данных и вторым словом-операндом Q N-разрядных данных, чтобы сформировать результирующее слово R N-разрядных данных, выражаемое в виде R=Sat(Fun(P)+Q), где Sat(Х) – функция, возвращающая насыщенное значение Х; Fun(Х) – функция, воздействующая на, по меньшей мере, те значения Х, которые могут быть получены умножением со знаком N/2-разрядного числа на N/2-разрядное число, и возвращающая значение, полученное сдвигом Х на некоторую величину сдвига, для формирования сдвинутого слова, и насыщением упомянутого сдвинутого слова. 14. Способ обработки данных в устройстве обработки данных, согласно которому в соответствии с командными словами обработки данных формируют сигналы управления обработкой и выполняют операции обработки данных над словами-операндами данных под управлением упомянутых сигналов управления обработкой, отличающийся тем, что в соответствии с первым командным словом (QDSUB) формируют управляющие сигналы для управления средством (6) логической обработки, чтобы упомянутое средство выполняло операцию обработки данных над первым словом-операндом Р N-разрядных данных и вторым словом-операндом Q N-разрядных данных, чтобы сформировать результирующее слово R N – разрядных данных, выражаемое в виде R=Sat(Fun(P)–Q), где Sat (Х) – функция, возвращающая насыщенное значение Х; Fun(X) – функция, воздействующая на, по меньшей мере, те значения Х, которые могут быть получены умножением со знаком N/2-разрядного числа на N/2-разрядное число, и возвращающая значение, полученное сдвигом Х на некоторую величину сдвига, для формирования сдвинутого слова, и насыщением упомянутого сдвинутого слова. 15. Способ обработки данных в устройстве обработки данных, согласно которому в соответствии с командными словами обработки данных формируют сигналы управления обработкой и выполняют операции обработки данных над словами-операндами данных под управлением упомянутых сигналов управления обработкой, отличающийся тем, что в соответствии с первым командным словом (QDRSB) формируют управляющие сигналы для управления средством (6) логической обработки, чтобы упомянутое средство выполняло операцию обработки данных над первым словом-операндом Р N-разрядных данных и вторым словом-операндом Q N-разрядных данных, чтобы сформировать результирующее слово R N-разрядных данных, выражаемое в виде R=Sat(Q–Fun(P)), где Sat(X) – функция, возвращающая насыщенное значение Х; Fun(Х) – функция, воздействующая на, по меньшей мере, те значения Х, которые могут быть получены умножением со знаком N/2-разрядного числа на N/2-разрядное число, и возвращающая значение, полученное сдвигом Х на некоторую величину сдвига, для формирования сдвинутого слова, и насыщением упомянутого сдвинутого слова.РИСУНКИ
MM4A – Досрочное прекращение действия патента СССР или патента Российской Федерации на изобретение из-за неуплаты в установленный срок пошлины за поддержание патента в силе
Дата прекращения действия патента: 27.05.2007
Извещение опубликовано: 27.07.2010 БИ: 21/2010
|
||||||||||||||||||||||||||