RU2003137661A - Целочисленное умножение высокого порядка с округлением и сдвигом в архитектуре с одним потоком команд и множеством потоков данных - Google Patents

Целочисленное умножение высокого порядка с округлением и сдвигом в архитектуре с одним потоком команд и множеством потоков данных Download PDF

Info

Publication number
RU2003137661A
RU2003137661A RU2003137661/09A RU2003137661A RU2003137661A RU 2003137661 A RU2003137661 A RU 2003137661A RU 2003137661/09 A RU2003137661/09 A RU 2003137661/09A RU 2003137661 A RU2003137661 A RU 2003137661A RU 2003137661 A RU2003137661 A RU 2003137661A
Authority
RU
Russia
Prior art keywords
rounding
packed
paragraph
bits
shift
Prior art date
Application number
RU2003137661/09A
Other languages
English (en)
Other versions
RU2263947C2 (ru
Inventor
Джеймс К. ЭЙБЕЛ (US)
Джеймс К. ЭЙБЕЛ
Дерин К. УОЛТЕРЗ (US)
Дерин К. УОЛТЕРЗ
Джонатан Дж. ТАЙЛЕР (US)
Джонатан Дж. ТАЙЛЕР
Original Assignee
Интел Корпорейшн (Us)
Интел Корпорейшн
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Интел Корпорейшн (Us), Интел Корпорейшн filed Critical Интел Корпорейшн (Us)
Publication of RU2003137661A publication Critical patent/RU2003137661A/ru
Application granted granted Critical
Publication of RU2263947C2 publication Critical patent/RU2263947C2/ru

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/52Multiplying; Dividing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/3001Arithmetic instructions
    • G06F9/30014Arithmetic instructions with variable precision
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/52Multiplying; Dividing
    • G06F7/523Multiplying only
    • G06F7/533Reduction of the number of iteration steps or stages, e.g. using the Booth algorithm, log-sum, odd-even
    • G06F7/5334Reduction of the number of iteration steps or stages, e.g. using the Booth algorithm, log-sum, odd-even by using multiple bit scanning, i.e. by decoding groups of successive multiplier bits in order to select an appropriate precalculated multiple of the multiplicand as a partial product
    • G06F7/5336Reduction of the number of iteration steps or stages, e.g. using the Booth algorithm, log-sum, odd-even by using multiple bit scanning, i.e. by decoding groups of successive multiplier bits in order to select an appropriate precalculated multiple of the multiplicand as a partial product overlapped, i.e. with successive bitgroups sharing one or more bits being recoded into signed digit representation, e.g. using the Modified Booth Algorithm
    • G06F7/5338Reduction of the number of iteration steps or stages, e.g. using the Booth algorithm, log-sum, odd-even by using multiple bit scanning, i.e. by decoding groups of successive multiplier bits in order to select an appropriate precalculated multiple of the multiplicand as a partial product overlapped, i.e. with successive bitgroups sharing one or more bits being recoded into signed digit representation, e.g. using the Modified Booth Algorithm each bitgroup having two new bits, e.g. 2nd order MBA
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2207/00Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F2207/38Indexing scheme relating to groups G06F7/38 - G06F7/575
    • G06F2207/3804Details
    • G06F2207/3808Details concerning the type of numbers or the way they are handled
    • G06F2207/3812Devices capable of handling different types of numbers
    • G06F2207/382Reconfigurable for different fixed word lengths
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2207/00Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F2207/38Indexing scheme relating to groups G06F7/38 - G06F7/575
    • G06F2207/3804Details
    • G06F2207/3808Details concerning the type of numbers or the way they are handled
    • G06F2207/3828Multigauge devices, i.e. capable of handling packed numbers without unpacking them
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F5/00Methods or arrangements for data conversion without changing the order or content of the data handled
    • G06F5/01Methods or arrangements for data conversion without changing the order or content of the data handled for shifting, e.g. justifying, scaling, normalising
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/499Denomination or exception handling, e.g. rounding or overflow
    • G06F7/49942Significance control
    • G06F7/49947Rounding

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Computational Mathematics (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • Executing Machine-Instructions (AREA)
  • Complex Calculations (AREA)

Claims (68)

1. Способ, при котором принимают первый операнд, имеющий первый набор из L элементов данных, принимают второй операнд, имеющий второй набор из L элементов данных, перемножают L пар элементов данных для формирования набора из L произведений, при этом каждая из L пар включает в себя первый элемент данных из первого набора из L элементов данных и второй элемент данных из соответствующей позиции элемента данных второго набора из L элементов данных, округляют каждое из L произведений для формирования L округленных значений, масштабируют каждое из L округленных значений для формирования L масштабированных значений и осуществляют усечение каждого из L масштабированных значений для сохранения в адресате, причем каждое усеченное значение должно сохраняться в позиции элемента данных, соответствующей его паре элементов данных.
2. Способ по пункту 1, отличающийся тем, что округление включает в себя добавление ‘1’ к указанной битовой позиции для каждого из L произведений.
3. Способ по пункту 2, отличающийся тем, что указанная битовая позиция представляет собой бит 14 для каждого из L произведений.
4. Способ по пункту 3, отличающийся тем, что масштабирование дополнительно включает в себя сдвиг каждого из L округленных значений влево на один бит.
5. Способ по пункту 4, отличающийся тем, что усечение дополнительно включает в себя выделение 16 наиболее значимых битов из каждого из L масштабированных значений для получения L усеченных значений.
6. Способ по пункту 5, отличающийся тем, что обработку по каждой позиции элементов данных первого и второго операндов осуществляют параллельно.
7. Способ по пункту 6, отличающийся тем, что упомянутая обработка включает в себя упомянутые умножение, округление, масштабирование и усечение.
8. Способ по пункту 2, отличающийся тем, что упомянутое округление дополнительно включает в себя сдвиг каждого из L произведений вправо на 14 битов для формирования набора из L сдвинутых значений размером 18 битов и добавление ‘1’ к позиции наименее значимого бита каждого из упомянутых сдвинутых значений.
9. Способ по пункту 8, отличающийся тем, что масштабирование дополнительно включает в себя сдвиг каждого из L округленных значений вправо на один бит для формирования набора из L масштабированных значений.
10. Способ по пункту 9, отличающийся тем, что упомянутое усечение дополнительно включает в себя выбор шестнадцати наименее значимых битов из каждого из L масштабированных значений для получения L усеченных значений.
11. Способ по пункту 1, отличающийся тем, что каждый из упомянутых первого операнда и второго операнда является упакованным операндом данных, содержащим множество элементов данных.
12. Способ по пункту 11, отличающийся тем, что каждый из элементов данных хранит целочисленное значение со знаком.
13. Способ по пункту 1, отличающийся тем, что упомянутый адресат является упакованным блоком данных.
14. Способ по пункту 13, отличающийся тем, что каждый элемент данных имеет длину слова.
15. Способ по пункту 14, отличающийся тем, что каждый из упомянутых первого операнда, второго операнда и адресата имеет длину 64 бита.
16. Способ по пункту 14, отличающийся тем, что каждый из упомянутых первого операнда, второго операнда и адресата имеет длину 128 битов.
17. Способ по пункту 14, отличающийся тем, что первый операнд и второй операнд находятся в регистрах архитектуры одного потока команд и множества потоков данных (SIMD-регистрах).
18. Способ, при котором принимают команду для выполнения операции упакованного умножения высокого порядка с округлением и сдвигом с использованием двух операндов, причем операция упакованного умножения высокого порядка с округлением и сдвигом включает в себя умножение каждого элемента данных в первом наборе упакованных элементов данных на соответствующий элемент данных во втором наборе упакованных элементов данных для формирования набора произведений, округление и сдвиг каждого из наборов произведений для формирования набора результатов, и выбор множества битов из каждого из результатов для формирования набора усеченных результатов, причем упомянутая команда имеет формат, содержащий первое поле для определения кода операции для обеспечения информации об операции упакованного умножения с округлением и сдвигом, второе поле для определения первого адреса источника для первого операнда, имеющего первый набор упакованных элементов данных, и третье поле для определения второго адреса источника для второго операнда, имеющего второй набор упакованных элементов данных, и исполнение упомянутой команды для формирования упомянутого набора усеченных результатов для сохранения в виде упакованных элементов данных в регистре адресата.
19. Способ по пункту 18, отличающийся тем, что упомянутый код операции предназначен для указания того, состоит ли упомянутый набор усеченных результатов для операции упакованного умножения высокого порядка с округлением и сдвигом из битов высокого порядка или битов низкого порядка упомянутого набора результатов.
20. Способ по пункту 19, отличающийся тем, что первый адрес источника представляет собой первый адрес первого регистра для сохранения первого набора упакованных элементов данных.
21. Способ по пункту 20, отличающийся тем, что первый регистр является также адресатом для упомянутого набора усеченных результатов для операции упакованного умножения с округлением и сдвигом.
22. Способ по пункту 21, отличающийся тем, что второй адрес источника является вторым адресом второго регистра для сохранения второго набора упакованных элементов данных.
23. Способ по пункту 18, отличающийся тем, что первое поле включает в себя бит для указания того, является ли операция упакованного умножения с округлением и сдвигом операцией со знаком или операцией без знака.
24. Способ по пункту 23, отличающийся тем, что первое поле дополнительно включает в себя, по меньшей мере, два бита для указания того, состоит ли каждое множество битов, выбранных из упомянутого набора результатов, из битов высокого порядка конкретного результата или из битов низкого порядка упомянутого результата.
25. Способ по пункту 18, отличающийся тем, что упомянутый формат дополнительно включает в себя поле знака для указания того, является ли операция упакованного умножения с округлением и сдвигом операцией со знаком или операцией без знака.
26. Способ по пункту 25, отличающийся тем, что упомянутый формат дополнительно включает в себя поле размера для указания длины каждого из упомянутых упакованных элементов данных.
27. Способ по пункту 26, отличающийся тем, что упомянутый формат дополнительно включает в себя четвертое поле для определения адреса места назначения для получения упомянутого набора результатов для операции упакованного умножения с округлением и сдвигом.
28. Способ по пункту 18, отличающийся тем, что упомянутая информация для кода операции указывает на упакованное умножение с округлением и сдвигом целых чисел со знаком и на выбор битов высокого порядка каждого из упомянутых результатов для получения усеченного результата.
29. Способ по пункту 18, отличающийся тем, что упомянутое округление включает в себя добавление ‘1’ к биту 14 каждого из упомянутых произведений для получения набора округленных значений, а упомянутый сдвиг включает в себя сдвиг каждого из округленных значений влево на одну битовую позицию.
30. Способ по пункту 29, отличающийся тем, что каждое множество битов из каждого из упомянутых результатов представляет собой шестнадцать битов высокого порядка данного конкретного результата.
31. Устройство, содержащее исполнительный блок для исполнения одной или нескольких команд из набора команд, причем набор команд включает в себя, по меньшей мере, одну команду для выполнения операции упакованного умножения с округлением и сдвигом, причем исполнительный блок в ответ на упомянутую, по меньшей мере, одну команду для выполнения операции упакованного умножения с округлением и сдвигом умножает каждый элемент данных в первом наборе упакованных элементов данных на соответствующий элемент данных во втором наборе упакованных элементов данных для формирования набора произведений, округляет и сдвигает каждый из наборов произведений для формирования набора результатов и выбирает множество битов из каждого из результатов для формирования набора усеченных результатов, причем упомянутая, по меньшей мере, одна команда имеет формат, содержащий первое поле для определения кода операции для обеспечения информации об операции упакованного умножения с округлением и сдвигом, второе поле для определения первого адреса источника для первого операнда, имеющего первый набор упакованных элементов данных, и третье поле для определения второго адреса источника для второго операнда, имеющего второй набор упакованных элементов данных.
32. Устройство по пункту 31, отличающееся тем, что усеченные результаты, содержащие выбранные части каждого из упомянутых результатов сохраняются в виде упакованных элементов данных в регистре адресата.
33. Устройство по пункту 32, отличающееся тем, что упомянутый код операции предназначен для указания того, состоит ли упомянутый набор усеченных результатов для операции упакованного умножения высокого порядка с округлением и сдвигом из битов высокого порядка или битов низкого порядка упомянутого набора результатов.
34. Устройство по пункту 31, отличающееся тем, что первый адрес источника представляет собой первый адрес первого регистра для сохранения первого набора упакованных элементов данных, а второй адрес источника является вторым адресом второго регистра для сохранения второго набора упакованных элементов данных.
35. Устройство по пункту 34, отличающееся тем, что первый регистр является также адресатом для упомянутого набора усеченных результатов для операции упакованного умножения с округлением и сдвигом.
36. Устройство по пункту 31, отличающееся тем, что первое поле включает в себя бит для указания того, является ли операция упакованного умножения с округлением и сдвигом операцией со знаком или операцией без знака.
37. Устройство по пункту 36, отличающееся тем, что первое поле дополнительно включает в себя, по меньшей мере, два бита для указания того, состоит ли каждое множество битов, выбранных из упомянутого набора результатов, из битов высокого порядка конкретного результата или из битов низкого порядка упомянутого результата.
38. Устройство по пункту 31, отличающееся тем, что упомянутый формат дополнительно включает в себя поле знака для указания того, является ли операция упакованного умножения с округлением и сдвигом операцией со знаком или операцией без знака.
39. Устройство по пункту 38, отличающееся тем, что упомянутый формат дополнительно включает в себя поле размера для указания длины каждого из упомянутых упакованных элементов данных.
40. Устройство по пункту 39, отличающееся тем, что упомянутый формат дополнительно включает в себя четвертое поле для определения адреса адресата для получения упомянутого набора результатов для операции упакованного умножения с округлением и сдвигом.
41. Устройство по пункту 31, отличающееся тем, что упомянутая информация для кода операции указывает на упакованное умножение с округлением и сдвигом целых чисел со знаком и на выбор битов высокого порядка каждого из упомянутых результатов для получения усеченного результата.
42. Устройство по пункту 31, отличающееся тем, что упомянутое округление включает в себя добавление ‘1’ к биту 14 каждого из упомянутых произведений для получения набора округленных значений, а упомянутый сдвиг включает в себя сдвиг каждого из округленных значений влево на одну битовую позицию.
43. Устройство по пункту 42, отличающееся тем, что каждое множество битов из каждого из упомянутых результатов представляет собой шестнадцать битов высокого порядка данного конкретного результата.
44. Система, содержащая память для хранения данных и команд, процессор, связанный с памятью по шине, причем процессор приводится в действие для выполнения операции умножения с округлением и сдвигом в ответ на команду умножения с округлением и сдвигом, при этом процессор содержит блок шины для приема команды умножения с округлением и сдвигом из памяти и исполнительный блок, связанный с блоком шины, причем исполнительный блок предназначен для исполнения команды умножения с округлением и сдвигом, при этом команда умножения с округлением и сдвигом приводит к тому, что исполнительный блок умножает каждый элемент данных в первом наборе упакованных элементов данных на соответствующий элемент данных во втором наборе упакованных элементов данных для формирования набора произведений, округляет и сдвигает каждый из наборов произведений для формирования набора результатов и выбирает множество битов из каждого из результатов для формирования набора усеченных результатов.
45. Система по пункту 44, отличающаяся тем, что команда умножения с округлением и сдвигом имеет формат, содержащий первое поле для определения кода операции для обеспечения информации об операции упакованного умножения с округлением и сдвигом, второе поле для определения первого адреса источника для первого операнда, имеющего первый набор упакованных элементов данных, и третье поле для определения второго адреса источника для второго операнда, имеющего второй набор упакованных элементов данных.
46. Система по пункту 45, отличающаяся тем, что упомянутая информация кода операции указывает на упакованное умножение с округлением и сдвигом целых чисел со знаком и на выбор битов высокого порядка из каждого из результатов для получения усеченного результата.
47. Система по пункту 46, отличающаяся тем, что упомянутое округление включает в себя добавление ‘1’ к биту 14 каждого из упомянутых произведений для получения набора округленных значений, а упомянутый сдвиг включает в себя сдвиг каждого из округленных значений влево на одну битовую позицию.
48. Система по пункту 47, отличающаяся тем, что каждое множество битов из каждого из упомянутых результатов представляет собой шестнадцать битов высокого порядка данного конкретного результата.
49. Система по пункту 45, отличающаяся тем, что упомянутый код операции предназначен для указания того, состоит ли упомянутый набор усеченных результатов для операции умножения с округлением и сдвигом из битов высокого порядка или из битов низкого порядка из упомянутого набора результатов.
50. Система по пункту 48, отличающаяся тем, что упомянутое первое поле включает в себя бит для указания того, является ли операция упакованного умножения с округлением и сдвигом операцией со знаком или операцией без знака.
51. Система по пункту 50, отличающаяся тем, что упомянутое первое поле дополнительно включает в себя, по меньшей мере, два бита для указания того, состоит ли каждое множество битов, выбранных из упомянутого набора результатов, из битов высокого порядка конкретного результата или из битов низкого порядка упомянутого результата.
52. Система по пункту 45, отличающаяся тем, что упомянутый формат дополнительно включает в себя поле знака для указания того, является ли операция упакованного умножения с округлением и сдвигом операцией со знаком или операцией без знака, и поле размера для указания длины каждого из упакованных элементов данных.
53. Система по пункту 45, отличающаяся тем, что упомянутый формат дополнительно включает в себя четвертое поле для определения адреса адресата для получения упомянутого набора результатов для операции упакованного умножения с округлением и сдвигом.
54. Система по пункту 44, отличающаяся тем, что упомянутые усеченные результаты включают в себя выбранные части каждого из упомянутых результатов и сохраняются как упакованные элементы данных в регистре адресата.
55. Система по пункту 45, отличающаяся тем, что первый адрес источника представляет собой первый адрес первого регистра для сохранения первого набора упакованных элементов данных, а второй адрес источника является вторым адресом второго регистра для сохранения второго набора упакованных элементов данных.
56. Система по пункту 46, отличающаяся тем, что первый регистр является также адресатом для упомянутого набора усеченных результатов для операции упакованного умножения с округлением и сдвигом.
57. Система по пункту 44, отличающаяся тем, что дополнительно содержит устройство беспроводной связи, предназначенное для передачи и приема цифровых данных по беспроводной сети, причем упомянутое устройство беспроводной связи связано с упомянутой памятью для хранения цифровых данных и программного обеспечения, при этом программное обеспечение включает в себя упомянутую команду умножения с округлением и сдвигом, и систему ввода/вывода, реагирующую на упомянутое программное обеспечение для взаимодействия с устройством беспроводной связи, причем система ввода/вывода предназначена для приема данных для обработки или для передачи данных, обработанных, по меньшей мере частично, посредством упомянутой команды умножения с округлением и сдвигом.
58. Машиночитаемый носитель, содержащий воплощенную в нем программу, причем программа исполняется машиной для осуществления способа, при котором принимают первый операнд, имеющий первый набор из L элементов данных, принимают второй операнд, имеющий второй набор из L элементов данных, перемножают L пар элементов данных для формирования набора из L произведений, при этом каждая из упомянутых L пар включает в себя первый элемент данных из упомянутого первого набора из L элементов данных и второй элемент данных из соответствующей позиции элемента данных второго набора из L элементов данных, округляют каждое из L произведений для формирования L округленных значений, масштабируют каждое из L округленных значений для формирования L масштабированных значений и осуществляют усечение каждого из L масштабированных значений для сохранения в адресате, причем каждое усеченное значение должно сохраняться в позиции элемента данных, соответствующей его паре элементов данных.
59. Машиночитаемый носитель по пункту 58, отличающийся тем, что округление включает в себя добавление ‘1’ к указанной битовой позиции для каждого из упомянутых L произведений.
60. Машиночитаемый носитель по пункту 59, отличающийся тем, что указанная битовая позиция представляет собой бит 14 для каждого из L произведений.
61. Машиночитаемый носитель по пункту 60, отличающийся тем, что масштабирование дополнительно включает в себя сдвиг каждого из L округленных значений влево на один бит.
62. Машиночитаемый носитель по пункту 61, отличающийся тем, что усечение дополнительно включает в себя выделение 16 наиболее значимых битов из каждого из L масштабированных значений для получения L усеченных значений.
63. Машиночитаемый носитель по пункту 62, отличающийся тем, что обработку по каждой позиции элементов данных упомянутых первого и второго операндов осуществляют параллельно, и упомянутая обработка включает в себя упомянутые умножение, округление, масштабирование и усечение.
64. Машиночитаемый носитель по пункту 58, отличающийся тем, что упомянутое округление дополнительно включает в себя сдвиг каждого из L произведений вправо на 14 битов для формирования набора из L сдвинутых значений размером 18 битов и добавление ‘1’ к позиции наименее значимого бита каждого из упомянутых сдвинутых значений, упомянутое масштабирование дополнительно включает в себя сдвиг каждого из L округленных значений вправо на один бит для формирования набора из L масштабированных значений, и упомянутое усечение дополнительно включает в себя выбор шестнадцати наименее значимых битов из каждого из L масштабированных значений для получения L усеченных значений.
65. Машиночитаемый носитель по пункту 58, отличающийся тем, что каждый из упомянутых первого операнда и второго операнда является упакованным операндом данных, содержащим множество элементов данных.
66. Машиночитаемый носитель по пункту 65, отличающийся тем, что каждый из упомянутых элементов данных хранит целочисленное значение со знаком, имеющее длину слова.
67. Машиночитаемый носитель по пункту 66, отличающийся тем, что каждый из упомянутых первого операнда, второго операнда и адресата имеет длину 64 бита.
68. Машиночитаемый носитель по пункту 66, отличающийся тем, что каждый из упомянутых первого операнда, второго операнда и адресата имеет длину 128 битов.
RU2003137661/09A 2003-06-30 2003-12-25 Целочисленное умножение высокого порядка с округлением и сдвигом в архитектуре с одним потоком команд и множеством потоков данных RU2263947C2 (ru)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/610,833 2003-06-30
US10/610,833 US7689641B2 (en) 2003-06-30 2003-06-30 SIMD integer multiply high with round and shift

Publications (2)

Publication Number Publication Date
RU2003137661A true RU2003137661A (ru) 2005-06-10
RU2263947C2 RU2263947C2 (ru) 2005-11-10

Family

ID=33541207

Family Applications (1)

Application Number Title Priority Date Filing Date
RU2003137661/09A RU2263947C2 (ru) 2003-06-30 2003-12-25 Целочисленное умножение высокого порядка с округлением и сдвигом в архитектуре с одним потоком команд и множеством потоков данных

Country Status (7)

Country Link
US (1) US7689641B2 (ru)
JP (1) JP4480997B2 (ru)
KR (1) KR100597930B1 (ru)
CN (1) CN100541422C (ru)
NL (1) NL1025106C2 (ru)
RU (1) RU2263947C2 (ru)
TW (1) TWI245219B (ru)

Families Citing this family (116)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6986023B2 (en) * 2002-08-09 2006-01-10 Intel Corporation Conditional execution of coprocessor instruction based on main processor arithmetic flags
JP4288461B2 (ja) * 2002-12-17 2009-07-01 日本電気株式会社 対称型画像フィルタ処理装置、プログラム、及びその方法
US7467176B2 (en) * 2004-02-20 2008-12-16 Altera Corporation Saturation and rounding in multiply-accumulate blocks
US7987222B1 (en) * 2004-04-22 2011-07-26 Altera Corporation Method and apparatus for implementing a multiplier utilizing digital signal processor block memory extension
US20060155955A1 (en) * 2005-01-10 2006-07-13 Gschwind Michael K SIMD-RISC processor module
US8229991B2 (en) * 2005-05-05 2012-07-24 Mips Technologies, Inc. Processor core and multiplier that support a multiply and difference operation by inverting sign bits in booth recoding
US8234326B2 (en) * 2005-05-05 2012-07-31 Mips Technologies, Inc. Processor core and multiplier that support both vector and single value multiplication
US8620980B1 (en) 2005-09-27 2013-12-31 Altera Corporation Programmable device with specialized multiplier blocks
US7725516B2 (en) * 2005-10-05 2010-05-25 Qualcomm Incorporated Fast DCT algorithm for DSP with VLIW architecture
US8082287B2 (en) 2006-01-20 2011-12-20 Qualcomm Incorporated Pre-saturating fixed-point multiplier
US8954943B2 (en) * 2006-01-26 2015-02-10 International Business Machines Corporation Analyze and reduce number of data reordering operations in SIMD code
US8301681B1 (en) 2006-02-09 2012-10-30 Altera Corporation Specialized processing block for programmable logic device
US8266198B2 (en) 2006-02-09 2012-09-11 Altera Corporation Specialized processing block for programmable logic device
US8266199B2 (en) 2006-02-09 2012-09-11 Altera Corporation Specialized processing block for programmable logic device
US8041759B1 (en) 2006-02-09 2011-10-18 Altera Corporation Specialized processing block for programmable logic device
US8127117B2 (en) * 2006-05-10 2012-02-28 Qualcomm Incorporated Method and system to combine corresponding half word units from multiple register units within a microprocessor
US7949701B2 (en) * 2006-08-02 2011-05-24 Qualcomm Incorporated Method and system to perform shifting and rounding operations within a microprocessor
US20080071851A1 (en) * 2006-09-20 2008-03-20 Ronen Zohar Instruction and logic for performing a dot-product operation
US8386550B1 (en) 2006-09-20 2013-02-26 Altera Corporation Method for configuring a finite impulse response filter in a programmable logic device
US9069547B2 (en) 2006-09-22 2015-06-30 Intel Corporation Instruction and logic for processing text strings
US20080100628A1 (en) * 2006-10-31 2008-05-01 International Business Machines Corporation Single Precision Vector Permute Immediate with "Word" Vector Write Mask
US8332452B2 (en) * 2006-10-31 2012-12-11 International Business Machines Corporation Single precision vector dot product with “word” vector write mask
US9495724B2 (en) * 2006-10-31 2016-11-15 International Business Machines Corporation Single precision vector permute immediate with “word” vector write mask
US7930336B2 (en) 2006-12-05 2011-04-19 Altera Corporation Large multiplier for programmable logic device
US8386553B1 (en) 2006-12-05 2013-02-26 Altera Corporation Large multiplier for programmable logic device
US8650231B1 (en) 2007-01-22 2014-02-11 Altera Corporation Configuring floating point operations in a programmable device
US8645450B1 (en) 2007-03-02 2014-02-04 Altera Corporation Multiplier-accumulator circuitry and methods
US8819095B2 (en) * 2007-08-28 2014-08-26 Qualcomm Incorporated Fast computation of products by dyadic fractions with sign-symmetric rounding errors
KR101098758B1 (ko) * 2007-09-20 2011-12-26 서울대학교산학협력단 Fp-ra를 구성하는 pe 구조 및 그 fp-ra제어하는 fp-ra 제어 회로
US20090172348A1 (en) * 2007-12-26 2009-07-02 Robert Cavin Methods, apparatus, and instructions for processing vector data
US8667250B2 (en) * 2007-12-26 2014-03-04 Intel Corporation Methods, apparatus, and instructions for converting vector data
US8959137B1 (en) 2008-02-20 2015-02-17 Altera Corporation Implementing large multipliers in a programmable integrated circuit device
US8437433B2 (en) * 2008-03-28 2013-05-07 Qualcomm Incorporated Zeroing-out LLRs using demod-bitmap to improve performance of modem decoder
US8103858B2 (en) * 2008-06-30 2012-01-24 Intel Corporation Efficient parallel floating point exception handling in a processor
US8755515B1 (en) 2008-09-29 2014-06-17 Wai Wu Parallel signal processing system and method
US8307023B1 (en) 2008-10-10 2012-11-06 Altera Corporation DSP block for implementing large multiplier on a programmable integrated circuit device
US8645449B1 (en) 2009-03-03 2014-02-04 Altera Corporation Combined floating point adder and subtractor
US8468192B1 (en) 2009-03-03 2013-06-18 Altera Corporation Implementing multipliers in a programmable integrated circuit device
US8706790B1 (en) 2009-03-03 2014-04-22 Altera Corporation Implementing mixed-precision floating-point operations in a programmable integrated circuit device
US8386755B2 (en) * 2009-07-28 2013-02-26 Via Technologies, Inc. Non-atomic scheduling of micro-operations to perform round instruction
US8650236B1 (en) 2009-08-04 2014-02-11 Altera Corporation High-rate interpolation or decimation filter in integrated circuit device
US8396914B1 (en) 2009-09-11 2013-03-12 Altera Corporation Matrix decomposition in an integrated circuit device
US8412756B1 (en) 2009-09-11 2013-04-02 Altera Corporation Multi-operand floating point operations in a programmable integrated circuit device
WO2011053181A1 (en) * 2009-10-30 2011-05-05 Intel Corporation Graphics rendering using a hierarchical acceleration structure
KR101395260B1 (ko) * 2009-11-30 2014-05-15 라코르스 게엠바하 마이크로프로세서 및 마이크로프로세서 상에서의 향상된 정밀 곱들의 합 계산 방법
US8539016B1 (en) 2010-02-09 2013-09-17 Altera Corporation QR decomposition in an integrated circuit device
US8601044B2 (en) 2010-03-02 2013-12-03 Altera Corporation Discrete Fourier Transform in an integrated circuit device
US8484265B1 (en) 2010-03-04 2013-07-09 Altera Corporation Angular range reduction in an integrated circuit device
US8510354B1 (en) 2010-03-12 2013-08-13 Altera Corporation Calculation of trigonometric functions in an integrated circuit device
US8539014B2 (en) 2010-03-25 2013-09-17 Altera Corporation Solving linear matrices in an integrated circuit device
US8589463B2 (en) 2010-06-25 2013-11-19 Altera Corporation Calculation of trigonometric functions in an integrated circuit device
US8862650B2 (en) 2010-06-25 2014-10-14 Altera Corporation Calculation of trigonometric functions in an integrated circuit device
US8577951B1 (en) 2010-08-19 2013-11-05 Altera Corporation Matrix operations in an integrated circuit device
US8645451B2 (en) 2011-03-10 2014-02-04 Altera Corporation Double-clocked specialized processing block in an integrated circuit device
JP5691752B2 (ja) * 2011-04-01 2015-04-01 セイコーエプソン株式会社 データの書き換え方法、データ書き換え装置及び書き換えプログラム
US9600278B1 (en) 2011-05-09 2017-03-21 Altera Corporation Programmable device using fixed and configurable logic to implement recursive trees
US8812576B1 (en) 2011-09-12 2014-08-19 Altera Corporation QR decomposition in an integrated circuit device
US9053045B1 (en) 2011-09-16 2015-06-09 Altera Corporation Computing floating-point polynomials in an integrated circuit device
US8949298B1 (en) 2011-09-16 2015-02-03 Altera Corporation Computing floating-point polynomials in an integrated circuit device
US8762443B1 (en) 2011-11-15 2014-06-24 Altera Corporation Matrix operations in an integrated circuit device
US20130159680A1 (en) * 2011-12-19 2013-06-20 Wei-Yu Chen Systems, methods, and computer program products for parallelizing large number arithmetic
WO2013095592A1 (en) * 2011-12-22 2013-06-27 Intel Corporation Apparatus and method for vector compute and accumulate
CN104011668B (zh) * 2011-12-22 2017-03-22 英特尔公司 用于将源操作数映射到不同范围的系统、装置和方法
CN104011648B (zh) * 2011-12-23 2018-09-11 英特尔公司 用于执行向量打包压缩和重复的系统、装置以及方法
CN106775592B (zh) * 2011-12-23 2019-03-12 英特尔公司 处理器、用于计算系统的方法、机器可读介质和计算机系统
US8543634B1 (en) 2012-03-30 2013-09-24 Altera Corporation Specialized processing block for programmable integrated circuit device
US9098332B1 (en) 2012-06-01 2015-08-04 Altera Corporation Specialized processing block with fixed- and floating-point structures
US8996600B1 (en) 2012-08-03 2015-03-31 Altera Corporation Specialized processing block for implementing floating-point multiplier with subnormal operation support
US9128698B2 (en) * 2012-09-28 2015-09-08 Intel Corporation Systems, apparatuses, and methods for performing rotate and XOR in response to a single instruction
US9207909B1 (en) 2012-11-26 2015-12-08 Altera Corporation Polynomial calculations optimized for programmable integrated circuit device structures
US9189200B1 (en) 2013-03-14 2015-11-17 Altera Corporation Multiple-precision processing block in a programmable integrated circuit device
US9207941B2 (en) * 2013-03-15 2015-12-08 Intel Corporation Systems, apparatuses, and methods for reducing the number of short integer multiplications
US9348795B1 (en) 2013-07-03 2016-05-24 Altera Corporation Programmable device using fixed and configurable logic to implement floating-point rounding
US9798519B2 (en) 2014-07-02 2017-10-24 Via Alliance Semiconductor Co., Ltd. Standard format intermediate result
US9910670B2 (en) 2014-07-09 2018-03-06 Intel Corporation Instruction set for eliminating misaligned memory accesses during processing of an array having misaligned data rows
US9684488B2 (en) 2015-03-26 2017-06-20 Altera Corporation Combined adder and pre-adder for high-radix multiplier circuit
US11061672B2 (en) 2015-10-02 2021-07-13 Via Alliance Semiconductor Co., Ltd. Chained split execution of fused compound arithmetic operations
US11216720B2 (en) 2015-10-08 2022-01-04 Shanghai Zhaoxin Semiconductor Co., Ltd. Neural network unit that manages power consumption based on memory accesses per period
CN106598545B (zh) * 2015-10-08 2020-04-14 上海兆芯集成电路有限公司 沟通共享资源的处理器与方法及非瞬时计算机可使用媒体
US10776690B2 (en) 2015-10-08 2020-09-15 Via Alliance Semiconductor Co., Ltd. Neural network unit with plurality of selectable output functions
US10725934B2 (en) 2015-10-08 2020-07-28 Shanghai Zhaoxin Semiconductor Co., Ltd. Processor with selective data storage (of accelerator) operable as either victim cache data storage or accelerator memory and having victim cache tags in lower level cache wherein evicted cache line is stored in said data storage when said data storage is in a first mode and said cache line is stored in system memory rather then said data store when said data storage is in a second mode
US11226840B2 (en) 2015-10-08 2022-01-18 Shanghai Zhaoxin Semiconductor Co., Ltd. Neural network unit that interrupts processing core upon condition
US10228911B2 (en) 2015-10-08 2019-03-12 Via Alliance Semiconductor Co., Ltd. Apparatus employing user-specified binary point fixed point arithmetic
US10474627B2 (en) 2015-10-08 2019-11-12 Via Alliance Semiconductor Co., Ltd. Neural network unit with neural memory and array of neural processing units that collectively shift row of data received from neural memory
US10664751B2 (en) 2016-12-01 2020-05-26 Via Alliance Semiconductor Co., Ltd. Processor with memory array operable as either cache memory or neural network unit memory
US11221872B2 (en) 2015-10-08 2022-01-11 Shanghai Zhaoxin Semiconductor Co., Ltd. Neural network unit that interrupts processing core upon condition
US10380481B2 (en) 2015-10-08 2019-08-13 Via Alliance Semiconductor Co., Ltd. Neural network unit that performs concurrent LSTM cell calculations
US11029949B2 (en) 2015-10-08 2021-06-08 Shanghai Zhaoxin Semiconductor Co., Ltd. Neural network unit
GB2543303B (en) * 2015-10-14 2017-12-27 Advanced Risc Mach Ltd Vector data transfer instruction
US10489152B2 (en) 2016-01-28 2019-11-26 International Business Machines Corporation Stochastic rounding floating-point add instruction using entropy from a register
US10671347B2 (en) * 2016-01-28 2020-06-02 International Business Machines Corporation Stochastic rounding floating-point multiply instruction using entropy from a register
GB2548908B (en) * 2016-04-01 2019-01-30 Advanced Risc Mach Ltd Complex multiply instruction
US10241757B2 (en) 2016-09-30 2019-03-26 International Business Machines Corporation Decimal shift and divide instruction
US10127015B2 (en) 2016-09-30 2018-11-13 International Business Machines Corporation Decimal multiply and shift instruction
US10078512B2 (en) 2016-10-03 2018-09-18 Via Alliance Semiconductor Co., Ltd. Processing denormal numbers in FMA hardware
US10438115B2 (en) 2016-12-01 2019-10-08 Via Alliance Semiconductor Co., Ltd. Neural network unit with memory layout to perform efficient 3-dimensional convolutions
US10423876B2 (en) 2016-12-01 2019-09-24 Via Alliance Semiconductor Co., Ltd. Processor with memory array operable as either victim cache or neural network unit memory
US10430706B2 (en) 2016-12-01 2019-10-01 Via Alliance Semiconductor Co., Ltd. Processor with memory array operable as either last level cache slice or neural network unit memory
US10515302B2 (en) 2016-12-08 2019-12-24 Via Alliance Semiconductor Co., Ltd. Neural network unit with mixed data and weight size computation capability
US10586148B2 (en) 2016-12-31 2020-03-10 Via Alliance Semiconductor Co., Ltd. Neural network unit with re-shapeable memory
US10565492B2 (en) 2016-12-31 2020-02-18 Via Alliance Semiconductor Co., Ltd. Neural network unit with segmentable array width rotator
US10565494B2 (en) 2016-12-31 2020-02-18 Via Alliance Semiconductor Co., Ltd. Neural network unit with segmentable array width rotator
US10140574B2 (en) 2016-12-31 2018-11-27 Via Alliance Semiconductor Co., Ltd Neural network unit with segmentable array width rotator and re-shapeable weight memory to match segment width to provide common weights to multiple rotator segments
US10162633B2 (en) * 2017-04-24 2018-12-25 Arm Limited Shift instruction
US10942706B2 (en) 2017-05-05 2021-03-09 Intel Corporation Implementation of floating-point trigonometric functions in an integrated circuit device
US20200073635A1 (en) * 2017-06-29 2020-03-05 Intel Corporation Systems, apparatuses, and methods for vector-packed fractional multiplication of signed words with rounding, saturation, and high-result selection
US11347964B2 (en) * 2017-08-07 2022-05-31 Renesas Electronics Corporation Hardware circuit
US11803377B2 (en) 2017-09-08 2023-10-31 Oracle International Corporation Efficient direct convolution using SIMD instructions
US10719296B2 (en) * 2018-01-17 2020-07-21 Macronix International Co., Ltd. Sum-of-products accelerator array
US11048661B2 (en) * 2018-04-16 2021-06-29 Simple Machines Inc. Systems and methods for stream-dataflow acceleration wherein a delay is implemented so as to equalize arrival times of data packets at a destination functional unit
US10846056B2 (en) * 2018-08-20 2020-11-24 Arm Limited Configurable SIMD multiplication circuit
RU185346U1 (ru) * 2018-08-21 2018-11-30 Акционерное общество Научно-производственный центр "Электронные вычислительно-информационные системы" (АО НПЦ "ЭЛВИС") Векторный мультиформатный умножитель
RU2689819C1 (ru) * 2018-08-21 2019-05-29 Акционерное общество Научно-производственный центр "Электронные вычислительно-информационные системы" (АО НПЦ "ЭЛВИС") Векторный мультиформатный умножитель
CN111596888A (zh) * 2020-03-02 2020-08-28 成都优博创通信技术股份有限公司 一种在低位宽mcu上实现32位无符号数整型乘法运算的方法
US11789701B2 (en) 2020-08-05 2023-10-17 Arm Limited Controlling carry-save adders in multiplication
CN117130722B (zh) * 2023-08-04 2024-06-11 北京中电华大电子设计有限责任公司 WebAssembly指令集的优化方法及装置

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3910664A (en) * 1973-01-04 1975-10-07 Amp Inc Multi-contact electrical connector for a ceramic substrate or the like
US4841468A (en) * 1987-03-20 1989-06-20 Bipolar Integrated Technology, Inc. High-speed digital multiplier architecture
US4982352A (en) * 1988-06-17 1991-01-01 Bipolar Integrated Technology, Inc. Methods and apparatus for determining the absolute value of the difference between binary operands
WO1996017293A1 (en) 1994-12-01 1996-06-06 Intel Corporation A microprocessor having a multiply operation
GB2317465B (en) * 1996-09-23 2000-11-15 Advanced Risc Mach Ltd Data processing apparatus registers.
US6014684A (en) * 1997-03-24 2000-01-11 Intel Corporation Method and apparatus for performing N bit by 2*N-1 bit signed multiplication
EP0869432B1 (en) * 1997-04-01 2002-10-02 Matsushita Electric Industrial Co., Ltd. Multiplication method and multiplication circuit
US6839728B2 (en) * 1998-10-09 2005-01-04 Pts Corporation Efficient complex multiplication and fast fourier transform (FFT) implementation on the manarray architecture
US6457036B1 (en) * 1999-08-24 2002-09-24 Avaya Technology Corp. System for accurately performing an integer multiply-divide operation

Also Published As

Publication number Publication date
KR100597930B1 (ko) 2006-07-13
RU2263947C2 (ru) 2005-11-10
JP4480997B2 (ja) 2010-06-16
KR20050005730A (ko) 2005-01-14
CN100541422C (zh) 2009-09-16
NL1025106C2 (nl) 2007-10-19
US20040267857A1 (en) 2004-12-30
TWI245219B (en) 2005-12-11
CN1577257A (zh) 2005-02-09
TW200500940A (en) 2005-01-01
US7689641B2 (en) 2010-03-30
JP2005025718A (ja) 2005-01-27
NL1025106A1 (nl) 2005-01-03

Similar Documents

Publication Publication Date Title
RU2003137661A (ru) Целочисленное умножение высокого порядка с округлением и сдвигом в архитектуре с одним потоком команд и множеством потоков данных
US8271571B2 (en) Microprocessor
JP5647859B2 (ja) 乗累算演算を実行するための装置および方法
JP2005025718A5 (ru)
CN110300957A (zh) 数据处理装置中的加宽算数
US6438676B1 (en) Distance controlled concatenation of selected portions of elements of packed data
KR20210086447A (ko) 행렬 연산 가속기의 명령어들을 위한 장치들, 방법들, 및 시스템들
KR102425668B1 (ko) 데이터 처리장치에서의 곱셈-누적
CN103221916A (zh) 执行乘乘累加指令
RU2003137709A (ru) Способ, устройство и команда для выполнения знаковой операции умножения
CN104461449A (zh) 基于向量指令的大整数乘法实现方法及装置
CN110312993B (zh) 数据处理装置中的向量逐元素操作
EP2584460A1 (en) Vector processing system comprising a replicating subsystem and method
TW201701151A (zh) 緊縮有限脈衝響應(fir)濾波器處理器,方法,系統及指令
TW201346736A (zh) 用於大整數算術之向量指令的設備與方法
CN109992299A (zh) 用于计算两个区块操作数中的半字节的数量积的系统和方法
US8909687B2 (en) Efficient FIR filters
US11210090B2 (en) Register-based complex number processing
US20100115232A1 (en) Large integer support in vector operations
CN110050259A (zh) 矢量处理器及其控制方法
US6209012B1 (en) System and method using mode bits to support multiple coding standards
US7260711B2 (en) Single instruction multiple data processing allowing the combination of portions of two data words with a single pack instruction
EP1936492A1 (en) SIMD processor with reduction unit
CN103677735B (zh) 一种数据处理装置及数字信号处理器
US20080147760A1 (en) System and method for performing accelerated finite impulse response filtering operations in a microprocessor

Legal Events

Date Code Title Description
MM4A The patent is invalid due to non-payment of fees

Effective date: 20181226