RU157948U1 - DEVICE FOR MATRIX MULTIPLICATION - Google Patents
DEVICE FOR MATRIX MULTIPLICATION Download PDFInfo
- Publication number
- RU157948U1 RU157948U1 RU2015127533/08U RU2015127533U RU157948U1 RU 157948 U1 RU157948 U1 RU 157948U1 RU 2015127533/08 U RU2015127533/08 U RU 2015127533/08U RU 2015127533 U RU2015127533 U RU 2015127533U RU 157948 U1 RU157948 U1 RU 157948U1
- Authority
- RU
- Russia
- Prior art keywords
- input
- output
- group
- block
- matrix
- Prior art date
Links
- 239000011159 matrix material Substances 0.000 title claims abstract description 154
- 230000015572 biosynthetic process Effects 0.000 description 4
- 238000010586 diagram Methods 0.000 description 4
- 230000005540 biological transmission Effects 0.000 description 1
- 244000309464 bull Species 0.000 description 1
Images
Landscapes
- Complex Calculations (AREA)
Abstract
Устройство для умножения матриц, содержащее матрицу из n×n операционных блоков (где n - размер перемножаемых квадратных матриц), каждый из которых содержит первый, второй и третий регистры, умножитель и сумматор, причем выход и выход второго регистра подключены соответственно к первым входу и выходу операционного блока соответственно, вход и выход первого регистра подключены соответственно ко вторым входу и выходу операционного блока соответственно, третий выход операционного блока соединен с выходом третьего регистра, второй вход сумматора соединен с выходом умножителя, первый и второй входы которого соединены соответственно с первым и вторым выходами операционного блока, синхровход которого подключен к синхровходам всех регистров, умножителя и сумматора, первый вход (i,j)-го операционного блока (где) подключен к первому выходу (i,j-1)-го операционного блока, второй вход (l,k)-го операционного блока (где) подключен ко второму выходу (l-1,k)-го операционного блока, k-й выход группы выходов устройства подключен к третьему выходу (n,k)-го операционного блока, синхровходы всех операционных блоков подключены к синхровходу матрицы операционных блоков устройства, отличающееся тем, что в него дополнительно введены мультиплексор в составе каждого операционного блока, первый и второй блоки коэффициентов матриц, сдвиговый регистр, группа из n двухступенчатых регистров, каждый из блоков коэффициентов матриц содержит n×n блоков хранения и группу из n выходных элементов ИЛИ, каждый из блоков хранения содержит регистр, элемент И, группу из n элементов И, группу из n элементов ИЛИ, причем выход сумматора соединен с первым входом мультA device for matrix multiplication containing a matrix of n × n operating blocks (where n is the size of the multiplied square matrices), each of which contains the first, second and third registers, a multiplier and an adder, the output and output of the second register being connected respectively to the first input and the output of the operating unit, respectively, the input and output of the first register are connected respectively to the second input and output of the operating unit, respectively, the third output of the operating unit is connected to the output of the third register, the second input is the sum Ora is connected to the output of the multiplier, the first and second inputs of which are connected respectively to the first and second outputs of the operating unit, the sync input of which is connected to the sync inputs of all registers, the multiplier and the adder, the first input of the (i, j) -th operating unit (where) is connected to the first the output of the (i, j-1) -th operating unit, the second input of the (l, k) -th operating unit (where) is connected to the second output of the (l-1, k) -th operating unit, k-th output of the group of device outputs connected to the third output of the (n, k) -th operating unit, sync inputs of all operating ith blocks are connected to the sync input of the matrix of the operating blocks of the device, characterized in that it additionally includes a multiplexer as part of each operational block, the first and second blocks of matrix coefficients, a shift register, a group of n two-stage registers, each of the matrix coefficient blocks contains n × n storage units and a group of n output OR elements, each of the storage units contains a register, an AND element, a group of n AND elements, a group of n OR elements, and the adder output is connected to the first input of the mult
Description
Полезная модель относится к вычислительной технике и может быть использована для умножения произвольных Квадратных матриц размером n×n элементов.The utility model relates to computer technology and can be used to multiply arbitrary Square matrices of size n × n elements.
Известно устройство для матричных операций (авторское свидетельство СССР №1429127, кл. G06F 15/347, заявл. 04.03.87, опубл. 07.10.88, бюл. №37), содержащее ленточную матрицу из n2-(n-p)(n-p+1)/2-(n-q)(n-q+1)/2 операционных блоков, где n - размерность квадратных матриц, p и q - количество элементов соответственно первого столбца и первой строки ленточной матрицы.A device for matrix operations is known (USSR author's certificate No. 1429127, class G06F 15/347, application form 04.03.87, publ. 07.10.88, bulletin No. 37) containing a tape matrix of n 2 - (np) (n- p + 1) / 2- (nq) (n-q + 1) / 2 operating units, where n is the dimension of square matrices, p and q are the number of elements of the first column and the first row of the tape matrix, respectively.
Недостатком данного устройства является отсутствие возможности умножения плотных матриц.The disadvantage of this device is the lack of the ability to multiply dense matrices.
Наиболее близким по технической сущности к заявляемой полезной модели является устройство для умножения ленточной матрицы на полную матрицу (авторское свидетельство СССР №1534471, кл. G06F 15/347, заявл. 15.01.88, опубл. 07.01.90, бюл. №1), содержащее матрицу m×n (где m - ширина ленты матрицы - множимого, n - число столбцов матрицы - множителя) операционных блоков, каждый из которых содержит три регистра, умножитель, сумматор, матрицу (m-1)×n элементов задержки.The closest in technical essence to the claimed utility model is a device for multiplying the tape matrix by a full matrix (USSR author's certificate No. 1534471, class G06F 15/347, application. 15.01.88, publ. 07.01.90, bull. No. 1), containing an m × n matrix (where m is the width of the matrix-multiplier ribbon, n is the number of columns of the matrix-multiplier) operating units, each of which contains three registers, a multiplier, an adder, a matrix of (m-1) × n delay elements.
Недостатком данного устройства является отсутствие возможности умножения плотных матриц.The disadvantage of this device is the lack of the ability to multiply dense matrices.
Технической задачей предложенной полезной модели является расширение функциональных возможностей за счет реализации возможности умножения произвольных квадратных матриц C=A×B размером n×n, элементов.The technical task of the proposed utility model is to expand the functionality by realizing the possibility of multiplying arbitrary square matrices C = A × B of size n × n, elements.
Техническая задача решается тем, что в устройство, содержащее матрицу из n×n операционных блоков (где n - размер перемножаемых квадратных матриц), каждый из которых содержит первый, второй и третий регистры, умножитель и сумматор, причем выход и выход второго регистра подключены соответственно к первым входу и выходу операционного блока соответственно, вход и выход первого регистра подключены соответственно к ко вторым входу и выходу операционного блока соответственно, третий выход операционного блока соединен с выходом третьего регистра, второй вход сумматора соединен с выходом умножителя, первый и второй входы которого соединены соответственно с первым и вторым выходами операционного блока, синхровход которого подключен к синхровходам всех регистров, умножителя и сумматора, первый вход (i,j)-го операционного блока (где , ) подключен к первому выходу (i,j)-го операционного блока, второй вход (l,k)-го операционного блока (где , ) подключен ко второму выходу (l-1,k)-го операционного блока, k-й выход группы выходов устройства подключен к третьему выходу (n,k)-го операционного блока, синхровходы всех операционных блоков подключены к синхровходу матрицы операционных блоков устройства, дополнительно введены мультиплексор в составе каждого операционного блока, первый и второй блоки коэффициентов матриц, сдвиговый регистр, группа из n двухступенчатых регистров, каждый из блоков коэффициентов матриц содержит n×n блоков хранения и группу из n выходных элементов ИЛИ, каждый из блоков хранения содержит регистр, элемент И, группу из n элементов И, группу из n элементов ИЛИ, причем выход сумматора соединен с первым входом мультиплексора, второй вход которого соединен с третьим входом операционного блока, а выход - со входом третьего регистра, выход которого соединен с первым входом сумматора, управляющий вход операционного блока соединен с управляющим входом мультиплексора, а вход сброса операционного блока - со входами сброса первого, второго и третьего регистров, третий вход (l,k)-го операционного блока (где , ) подключен ко третьему выходу (l-1,k)-го операционного блока, первый вход (i,1)-го операционного блока (где ) подключен к i-му выходу в составе группы выходов первого блока коэффициентов матрицы, второй вход (1,k)-го операционного блока (где ) подключен к k-му выходу в составе группы выходов второго блока коэффициентов матрицы, управляющие входы операционных блоков подключены к управляющему входу устройства, а входы сброса операционных блоков - ко входу сброса устройства, который также подключен ко входам сброса каждого из n двухступенчатых регистров, информационный вход m-го двухступенчатого регистра (где ) подключен к выходу (m-1)-го двухступенчатого регистра, информационный вход первого двухступенчатого регистра подключен к выходу сдвигового регистра, синхровход которого подключен к синхровходу устройства, который также подключен к синхровходам каждого из n двухступенчатых регистров, выход k-го (где ) двухступенчатого регистра подключен к k-му входу в составе группы адресов строк чтения второго блока коэффициентов матрицы и к k-му входу в составе группы адресов столбцов чтения первого блока коэффициентов матрицы, синхровходы первого и второго блоков коэффициентов матриц подключены к синхровходу записи устройства, в составе каждого из блоков коэффициентов матриц синхровход блока коэффициентов матрицы подключен к синхровходам каждого из n×n блоков хранения, k-й вход (где ) в составе группы адресов строк чтения блока коэффициентов матрицы подключен ко входу адресов строк чтения (i,k)-го блока хранения (где ), k-й вход (где ) в составе группы адресов столбцов чтения блока коэффициентов матрицы подключен ко входу адресов столбцов чтения (k,i)-го блока хранения (где ), k-и вход (где ) в составе группы входов данных от предыдущей строки (m,p)-го блока хранения (где , ) подключен к k-му выходу данных для следующей строки (m-1,p)-го блока хранения, k-й вход (где ) в составе группы адресов строк записи блока коэффициентов матрицы подключен ко входу адресов строк записи (i,k)-го блока хранения (где ), k-й вход (где ) в составе группы адресов столбцов записи блока коэффициентов матрицы подключен ко входу адресов столбцов записи (k,i)-го блока хранения (где ), вход данных записи блока коэффициентов матрицы подключен ко входу данных записи каждого из n×n блоков хранения, k-й выход (где ) в составе группы выходов данных для следующей строки (n,p)-го блока хранения (где ) подключен к p-му входу k-го элемента группы элементов ИЛИ блока коэффициентов матрицы, выход k-го (где ) элемента группы элементов ИЛИ блока коэффициентов матрицы подключен к k-му выходу в составе группы выходов блока коэффициентов матрицы, в составе каждого из блоков хранения информационный вход регистра подключен ко входу данных записи блока хранения, а синхровход регистра - к выходу элемента И, первый вход которого подключен ко входу адреса столбца записи блока хранения, второй вход - ко входу адреса строки записи блока хранения, а третий вход - ко входу синхронизации блока хранения, выход регистра подключен к первым входам каждого из n элементов группы элементов И, выход k-го элемента (где ) группы элементов И подключен к первому входу k-го элемента группы элементов ИЛИ, второй вход k-го элемента группы элементов ИЛИ подключен к k-му входу данных от предыдущей строки блока хранения, а выход k-го элемента группы элементов ИЛИ подключен к k-му выходу данных для следующей строки блока хранения, второй вход k-го элемента группы элементов И подключен к k-му разряду в составе входа адреса строки чтения блока хранения, а третий вход k-го элемента группы элементов И подключен к k-му разряду в составе входа адреса столбца чтения блока хранения.The technical problem is solved in that in a device containing a matrix of n × n operating blocks (where n is the size of the multiplied square matrices), each of which contains the first, second and third registers, a multiplier and an adder, with the output and output of the second register connected respectively to the first input and output of the operation unit, respectively, the input and output of the first register are connected respectively to the second input and output of the operation unit, respectively, the third output of the operation unit is connected to the output of the third register , the second input of the adder is connected to the output of the multiplier, the first and second inputs of which are connected respectively to the first and second outputs of the operating unit, the sync input of which is connected to the sync inputs of all registers, the multiplier and the adder, the first input of the (i, j) -th operating unit (where , ) is connected to the first output of the (i, j) -th operating unit, the second input of the (l, k) -th operating unit (where , ) is connected to the second output of the (l-1, k) -th operating unit, the k-th output of the group of device outputs is connected to the third output of the (n, k) -th operating unit, the clock inputs of all operating blocks are connected to the sync input of the matrix of operating units of the device, additionally introduced a multiplexer as part of each operational unit, the first and second blocks of matrix coefficients, a shift register, a group of n two-stage registers, each of the matrix coefficient blocks contains n × n storage blocks and a group of n output OR elements, each storage blocks contains a register, an AND element, a group of n AND elements, a group of n OR elements, the adder output being connected to the first input of the multiplexer, the second input of which is connected to the third input of the operation unit, and the output is to the input of the third register, the output of which is connected with the first input of the adder, the control input of the operating unit is connected to the control input of the multiplexer, and the reset input of the operating unit is connected to the reset inputs of the first, second and third registers, the third input of the (l, k) -th operating unit (where , ) is connected to the third output of the (l-1, k) -th operating unit, the first input of the (i, 1) -th operating unit (where ) is connected to the i-th output as part of the group of outputs of the first block of matrix coefficients, the second input of the (1, k) -th operational block (where ) is connected to the k-th output as part of the group of outputs of the second block of matrix coefficients, the control inputs of the operating blocks are connected to the control input of the device, and the reset inputs of the operating blocks are connected to the reset input of the device, which is also connected to the reset inputs of each of n two-stage registers, information input of the m-th two-stage register (where ) is connected to the output of the (m-1) -th two-stage register, the information input of the first two-stage register is connected to the output of the shift register, the clock input of which is connected to the clock input of the device, which is also connected to the clock inputs of each of n two-stage registers, the output of the k-th ) a two-stage register is connected to the k-th input as a group of addresses of reading rows of the second block of matrix coefficients and to the k-th input of a group of addresses of reading columns of the first block of matrix coefficients, the clock inputs of the first and second blocks of matrix coefficients are connected to the sync input of the device recording, the composition of each of the blocks of matrix coefficients, the sync input of the block of matrix coefficients is connected to the sync inputs of each of the n × n storage blocks, the kth input (where ) as part of the group of addresses of the reading lines of the block of matrix coefficients is connected to the input of the addresses of the reading lines of the (i, k) th storage block (where ), k-th input (where ) as part of the group of addresses of the reading columns of the block of matrix coefficients is connected to the input of the addresses of the reading columns of the (k, i) -th storage block (where ), kth input (where ) as part of the group of data inputs from the previous row of the (m, p) -th storage block (where , ) is connected to the k-th data output for the next row of the (m-1, p) -th storage block, the k-th input (where ) as part of the group of address of the recording row of the block of matrix coefficients is connected to the input of the address of the row of the recording of the (i, k) th storage block (where ), k-th input (where ) as part of the group of addresses of the columns of the record of the block of matrix coefficients is connected to the input of the addresses of the columns of the record of the (k, i) -th storage unit (where ), the input of the recording data of the block of matrix coefficients is connected to the input of the recording data of each of the n × n storage blocks, the kth output (where ) as part of the group of data outputs for the next row of the (n, p) -th storage block (where ) is connected to the pth input of the kth element of the group of elements OR the matrix coefficient block, the output of the kth (where ) an element of a group of elements OR of a block of matrix coefficients is connected to the k-th output as part of a group of outputs of a block of matrix coefficients, as part of each of the storage blocks, the register information input is connected to the data input of the storage block, and the register clock is connected to the output of the And element, the first input which is connected to the input of the address of the recording column of the storage unit, the second input to the input of the address of the recording line of the storage unit, and the third input to the synchronization input of the storage unit, the output of the register is connected to the first inputs of each of n e cops group element and the output element of the k-th (where ) the group of AND elements is connected to the first input of the kth element of the group of OR elements, the second input of the kth element of the group of OR elements is connected to the kth data input from the previous row of the storage unit, and the output of the kth element of the group of OR elements is connected to k the data output for the next row of the storage unit, the second input of the kth element of the group of AND elements is connected to the kth digit as part of the input address of the reading line of the storage unit, and the third input of the kth element of the group of AND elements is connected to the kth discharge as part of the input address of the read column of the storage unit I am.
На фиг. 1 изображена функциональная схема устройства; на фиг. 2 - схема операционного блока; на фиг. 3 - схема блока коэффициентов матрицы; на фиг. 4 - схема блока хранения; на фиг. 5 - пример поступления данных в матрицу операционных блоков; на фиг. 6 - пример обработки данных матрицей операционных блоков; на фиг. 7 - пример выгрузки результата умножения из матрицы операционных блоков; на фиг. 8 - пример работы блоков коэффициентов матрицы.In FIG. 1 shows a functional diagram of a device; in FIG. 2 is a diagram of an operation unit; in FIG. 3 is a diagram of a block of matrix coefficients; in FIG. 4 is a diagram of a storage unit; in FIG. 5 - an example of the receipt of data in the matrix of operating units; in FIG. 6 is an example of data processing by a matrix of operating units; in FIG. 7 is an example of unloading the result of a multiplication from a matrix of operating blocks; in FIG. 8 is an example of the operation of matrix coefficient blocks.
Устройство для умножения матриц (фиг. 1) содержит матрицу n×n операционных блоков 1, первый блок 2 коэффициентов матрицы, второй блок 3 коэффициентов матрицы, сдвиговый регистр 4, группу из n двухступенчатых регистров 5, каждый операционный блок 1 содержит (фиг. 2) первый 6, второй 7 и третий 8 регистры, умножитель 9, сумматор 10 и мультиплексор 11, первый 2 и второй 3 блоки коэффициентов матриц имеют однотипную структуру (фиг. 3), каждый из них включает в своем составе n×n блоков хранения 12, каждый из которых (фиг. 4) содержит регистр 13, элемент И 14, блок элементов И 15, блок элементов ИЛИ 16, вход 17 синхронизации, вход 18 адреса строки записи, вход 19 адреса столбца записи, вход 20 данных записи, группу входов 21 адресов строк чтения, группу входов 22 адресов столбцов чтения, группу входов 23 данных от предыдущей строки, группу выходов 24 данных для следующей строки, в состав каждого из блоков 2 и 3 коэффициентов матриц также входят группа входов 25 адресов строк чтения, группа входов 26 адресов столбцов чтения, вход 27 адреса строки записи, вход 28 адреса столбца записи, вход 29 данных записи, вход 30 синхронизации, блок элементов ИЛИ 31, группа выходов 32, причем выход и выход второго регистра 7 подключены соответственно к первым входу и выходу операционного блока 1 соответственно, вход и выход первого регистра 6 подключены соответственно к ко вторым входу и выходу операционного блока 1 соответственно, третий выход операционного блока 1 соединен с выходом третьего регистра 8, второй вход сумматора 10 соединен с выходом умножителя 9, первый и второй входы которого соединены соответственно с первым и вторым выходами операционного блока 1, синхровход которого подключен к синхровходам первого 6, второго 7 и третьего 8 регистров, умножителя 9 и сумматора 10, выход сумматора 10 соединен с первым входом мультиплексора 11, второй вход которого соединен с третьим входом операционного блока 1, а выход - со входом третьего регистра 8, выход которого соединен с первым входом сумматора 10, управляющий вход операционного блока 1 соединен с управляющим входом мультиплексора 11, а вход сброса операционного блока 1 - со входами сброса первого 6, второго 7 и третьего 8 регистров, первый вход (i,j)-го операционного блока 1 (где , ) подключен к первому выходу (i,j-1)-го операционного блока 1, второй вход (l,k)-го операционного блока 1 (где , ) подключен ко второму выходу (l-1,k)-го операционного блока 1, k-й выход группы выходов устройства подключен к третьему выходу (n,k)-го операционного блока 1, синхровходы всех операционных блоков 1 подключены к синхровходу матрицы операционных блоков устройства, третий вход (l,k)-го операционного блока 1 (где , ) подключен ко третьему выходу (l-1,k)-го операционного блока 1, первый вход (i,l)-го операционного блока 1 (где ) подключен к i-му выходу в составе группы выходов первого блока 2 коэффициентов матрицы, второй вход (1,k)-го операционного блока 1 (где ) подключен к k-му выходу в составе группы выходов второго блока 3 коэффициентов матрицы, управляющие входы операционных блоков 1 подключены к управляющему входу устройства, а входы сброса операционных блоков 1 - ко входу сброса устройства, который также подключен ко входам сброса каждого из n двухступенчатых регистров 5, информационный вход m-го двухступенчатого регистра 5 (где ) подключен к выходу (m-1)-го двухступенчатого регистра 5, информационный вход первого двухступенчатого регистра 5 подключен к выходу сдвигового регистра 4, синхровход которого подключен к синхровходу устройства, который также подключен к синхровходам каждого из n двухступенчатых регистров 5, выход k-го (где ) двухступенчатого регистра 5 подключен к k-му входу в составе группы адресов строк чтения 25 второго блока 3 коэффициентов матрицы и к k-му входу в составе группы адресов столбцов чтения 26 первого блока 2 коэффициентов матрицы, синхровходы 30 первого 2 и второго 3 блоков коэффициентов матриц подключены к синхровходу записи устройства, в составе каждого из блоков коэффициентов матриц синхровход блока коэффициентов матрицы 30 подключен к синхровходу 17 каждого из n×n блоков хранения 12, k-й вход (где ) в составе группы адресов строк чтения 25 блока коэффициентов матрицы подключен ко входу 21 адресов строк чтения (i,k)-го блока хранения 12 (где ), k-й вход (где ) в составе группы адресов столбцов чтения 26 блока коэффициентов матрицы подключен ко входу 22 адресов столбцов чтения (k,i)-го блока хранения 12 (где ), k-й вход (где ) в составе группы входов 23 данных от предыдущей строки (m,p)-го блока хранения 12 (где , ) подключен к k-му выходу 24 данных для следующей строки (m-1,p)-го блока хранения 12, k-й вход (где ) в составе группы адресов строк записи 27 блока коэффициентов матрицы подключен ко входу 18 адресов строк записи (i,k)-го блока хранения 12 (где ), k-й вход (где ) в составе группы адресов столбцов записи 28 блока коэффициентов матрицы подключен ко входу 19 адресов столбцов записи (k,i)-го блока хранения 12 (где ), вход 29 данных записи блока коэффициентов матрицы подключен ко входу 20 данных записи каждого из n×n блоков хранения 12, k-й выход (где ) в составе группы выходов 24 данных для следующей строки (n,p)-го блока хранения 12 (где ) подключен к p-му входу k-го элемента группы элементов ИЛИ 31 блока коэффициентов матрицы, выход k-го (где ) элемента группы элементов ИЛИ 31 блока коэффициентов матрицы подключен к k-му выходу 32 в составе группы выходов блока коэффициентов матрицы, в составе каждого из блоков хранения информационный вход регистра 13 подключен ко входу 20 данных записи блока хранения, а синхровход регистра 13 - к выходу элемента И 14, первый вход которого подключен ко входу 19 адреса столбца записи блока хранения 12, второй вход - ко входу 18 адреса строки записи блока хранения 12, а третий вход - ко входу синхронизации 17 блока хранения 12, выход регистра 13 подключен к первым входам каждого из n элементов группы элементов И 15, выход k-го элемента (где ) группы элементов И 15 подключен к первому входу k-го элемента группы элементов ИЛИ 16, второй вход k-го элемента группы элементов ИЛИ 16 подключен к k-му входу 23 данных от предыдущей строки блока хранения 12, а выход k-го элемента группы элементов ИЛИ 16 подключен к k-му выходу 24 данных для следующей строки блока хранения 12, второй вход k-го элемента группы элементов И 15 подключен к k-му разряду в составе входа 21 адреса строки чтения блока хранения 12, а третий вход k-го элемента группы элементов И 15 подключен к k-му разряду в составе входа 22 адреса столбца чтения блока хранения 12.The device for matrix multiplication (Fig. 1) contains an n × n matrix of
Операционные блоки 1, объединенные в систолическую матричную структуру, используются для выполнения умножения элементов матриц в параллельно-конвейерном виде и хранения его результата. Первый 2 и второй 3 блоки коэффициентов матриц используются для хранения значений коэффициентов a ij и bij, первой и второй матриц и выборки требуемых групп из n коэффициентов за такт в каждом из блоков в соответствии с логикой работы матрицы операционных блоков 1 (см. фиг. 5). Сдвиговый регистр 4 обеспечивает формирование последовательности значений 00…012, 00…0102, …, 100…02, 00…02, …, 00...02, используемых при работе группы регистров 5. Группа двухступенчатых регистров 5 предназначена для хранения адресов группы из n строк первого блока 2 коэффициентов матрицы и группы из n столбцов второго блока 3 коэффициентов матрицы; данные адреса необходимы для чтения групп коэффициентов перемножаемых матриц в соответствии с логикой работы матрицы операционных блоков 1. Регистры 6 и 7 предназначены для хранения коэффициентов перемножаемых матриц при работе операционных блоков 1. Регистр 8 используется для хранения промежуточных значений сумм произведений коэффициентов перемножаемых матриц в процессе работы устройства, после 3n-2 шагов работы устройства данные регистры содержат значения коэффициентов результирующей матрицы C. Умножитель 9 используется для перемножения пары коэффициентов a ik и bkj матриц. Сумматор 10 предназначен для вычисления суммы произведений коэффициентов перемножаемых матриц. Мультиплексор 11 обеспечивает поступление значения суммы произведений коэффициентов перемножаемых матриц на вход регистра 8 на этапе работы и продвижение результата умножения (коэффициентов результирующей матрицы C) между регистрами 8 операционных блоков 1 в параллельно-конвейерном режиме на этапе вывода результата. Блоки хранения 12, объединенные в матрицу их и (фиг. 3), образуют собой первый 2 и второй 3 блоки коэффициентов перемножаемых матриц A и B. Регистры 13 служат для хранения исходных значений коэффициентов перемножаемых матриц. Элементы И 14 управляют прохождением синхросигнала 17 на синхровходы регистров 13 в соответствии с выбранными значениями строки i и столбца j в составе блоков коэффициентов матриц. Блоки элементов И 151-15n управляют прохождением на входы соответствующих блоков элементов ИЛИ 161-16n группы из n значений с выходов регистров 13, причем выбранные значения определяются координатами искомых строк и столбцов на входах 211-21n и 221-22n в соответствии с логикой работы матрицы операционных блоков 1. Элементы ИЛИ 161-16n в составе блоков хранения 12 в совокупности с элементами ИЛИ 311- 31n обеспечивают получение на выходах 321-32n блока коэффициентов матрицы очередной группы коэффициентов матрицы в соответствии с логикой работы матрицы операционных блоков 1, причем n пар адресов строк и столбцов искомых коэффициентов определяются значениями на входах 211-21n и 221-22п блоков хранения 12. Вход 17 синхронизации используется при записи начальных значений коэффициентов матриц в регистры 13. Входы 18 и 19 адреса строки i и столбца j записи обеспечивают выбор ij-го блока хранения 12 в составе блока коэффициентов матрицы путем управления прохождением синхросигнала 17 через элемент И 14 при записи требуемого коэффициента со входа 20 в регистр 13 выбранного ij-го блока хранения 12. Вход 20 данных записи используется для приема блоком хранения 12 коэффициентов перемножаемых матриц с целью их записи в регистры 13. Группа входов 211-21n адресов строк чтения в совокупности с группой входов 221-22n адресов столбцов чтения используются для управления прохождением значений группы из n коэффициентов матрицы из регистров 13 блоков хранения 12 на выходы 321-32n блока элементов матрицы. Группа входов 231-23n данных от предыдущей строки в совокупности с группой входов 241-24n данных для следующей строки используется для формирования искомых значений дизъюнкции группы выбранных значений коэффициентов матриц по столбцам блоков хранения 12, получаемой на выходах 241-24n блоков хранения 12 n-й строки блока коэффициентов матрицы. Вход 25 адресов строк чтения в совокупности со входом 26 адресов столбцов чтения используются для получения блоком коэффициентов матрицы адресов строк и столбцов требуемых элементов с целью их выборки из триггеров 13 и выдачи на выходы 321-32n. Вход 27 адреса строки записи в совокупности со входом 28 адреса столбца записи используются для получения блоком коэффициентов матрицы значений i-й строки и j-го столбца с целью последующей записи в выбранный ij-й операционный блок значения коэффициента, поданного на вход 29 данных записи. Вход 30 синхронизации используется для приема стробирующего сигнала записи данных со входа 29 блока коэффициентов матрицы в выбранный ij-й блок хранения 12. Блок элементов ИЛИ 311-31n используется для формирования на выходах 321-32n блока коэффициентов матрицы дизъюнкций значений с выходов 241-24n блоков хранения 12 блока коэффициентов матрицы с целью формирования группы из n искомых коэффициентов матрицы в соответствии с их адресами на входах 25 и 26 и логикой работы матрицы операционных блоков 1. На выходах 321-32п блока коэффициентов матрицы производится формирование группы из n коэффициентов матрицы с целью их последующей передачи на матрицу операционных блоков 1.
Устройство работает следующим образом. На этапе загрузки исходных данных значения a ij, элементов первой матрицы поочередно подаются на вход 29 первого блока 2 коэффициентов матрицы внешним устройством, на входы 27 и 28 первого блока 2 коэффициентов матрицы подаются соответственно адреса строки i и столбца j в унитарном коде, запись очередного элемента a ij производится путем подачи синхроимпульса на синхровход 30 записи первого блока 2 коэффициентов матрицы.The device operates as follows. At the stage of loading the initial data, the values a ij , the elements of the first matrix are alternately fed to the
Аналогично рассмотренному выше производится загрузка исходных значений bij, элементов второй матрицы путем подачи внешним устройством их значений на вход 29 второго блока 3 коэффициентов матрицы, подачи адресов i и j в унитарном коде соответственно на входы 27 и 28 второго блока 3 коэффициентов матрицы и синхроимпульса на синхровход 30 записи второго блока 3 коэффициентов матрицы. Загрузка элементов первой и второй матриц может быть совмещена во времени.Similarly to the above, the initial values b ij are loaded, the elements of the second matrix by applying an external device their values to the
Значение коэффициента с входа 29 блока коэффициентов матрицы поступает на входы 20 блоков хранения 12 и затем на информационный вход регистра 13 в каждом из блоков хранения. Значения адресов строки и столбца со входов 27 и 28 поступают соответственно на входы 18 и 19 блоков хранения 12, причем i-й разряд со входа 27 подается на входы 18 блоков хранения 12 i-й строки блока коэффициентов матрицы, а j-й разряд со входа 28 подается на входы 19 блоков хранения 12 j-го столбца блока коэффициентов матрицы, . Синхроимпульс со входа 30 блока коэффициентов матрицы поступает на входы 17 операционных блоков и далее на вход элемента И 14. Единичные значения со входов 18 и 19, соответствующие выбранному операционному блоку 12ij, поступают на вход элемента И 14 операционных блоков и открывают его для прохождения синхросигнала на синхровход регистра 13, обеспечивая запись очередного коэффициента. Во всех остальных операционных блоках 12 как минимум на одном из входов 18 или 19 присутствует нулевое значение, элементы И 14 закрыты для прохождения синхросигнала и запись значения в регистр 13 не происходит.The coefficient value from the
На этапе инициализации производится подача сигнала сброса на входы сброса блока регистров 5 и регистров 6, 7 и 8, что обеспечивает их установку в ноль. В сдвиговый регистр 4 производится запись значения 00…012. На входы 251-25n адресов строк чтения первого блока 2 коэффициентов матрицы соответственно подаются значения 00…012, 00…0102, …, 100…02, что впоследствии обеспечивает выдачу элементов a i1, a i2, …, a in на соответствующем выходе 32i первого блока 2 коэффициентов матрицы, . На входы 261-26n адресов столбцов чтения второго блока 3 коэффициентов матрицы соответственно подаются значения 00…012, 00…0102, …, 100…02, что впоследствии обеспечивает выдачу элементов b1j, b2j, …, bjn на соответствующем выходе 32j второго блока 3 коэффициентов матрицы, . На адресные входы мультиплексоров 11 подается нулевое значение.At the initialization stage, a reset signal is supplied to the reset inputs of the block of
На этапе работы на синхровходы блока двухступенчатых регистров 5 подается сигнал записи в первую ступень, что обеспечивает запись значений по следующей схеме: Рг5i:=Рг5i-1, , Рг51:=Рг4. После этого в следующем такте подается сигнал записи во вторую ступень регистров 5, что обеспечивает запись информации из первой ступени во вторую, на синхровход сдвигового регистра 4 подается сигнал, обеспечивающий сдвиг содержимого регистра в сторону старших разрядов. На первом шаге на этапе работы регистр 4 получает значение 00…0102, а регистры 5 - соответственно значения 00…012, 00…02, …, 00…02.At the stage of operation, the sync inputs of the block of two-
Значения с выходов группы регистров 51-5n поступают соответственно на входы 261-26n адресов столбцов чтения первого блока 2 коэффициентов матрицы, а затем на соответствующие входы 22 блоков хранения 12 элементов первого блока 2 коэффициентов матрицы, причем значение k-го бита регистра 5j поступает на входы 22j операционных блоков k-го столбца первого блока 2 коэффициентов матрицы. Также значения с выходов группы регистров 51-5п поступают соответственно на входы 251-25n адресов столбцов чтения второго блока 3 коэффициентов матрицы, а затем на соответствующие входы 21 блоков хранения 12 элементов второго блока 3 коэффициентов матрицы, причем значение k-го бита регистра 5i поступает на входы 22i операционных блоков k-й строки второго блока 3 коэффициентов матрицы.The values from the outputs of the group of registers 5 1 -5 n go respectively to the inputs 26 1 -26 n of the address of the reading columns of the first block of 2 matrix coefficients, and then to the corresponding inputs of 22 storage blocks of 12 elements of the first block of 2 matrix coefficients, and the value of the
Со входов 21 и 22 блоков хранения 12 двоичные значения поступают на входы соответствующих элементов И 15, открывая их для прохождения значения из регистра 13 на вход соответствующего элемента ИЛИ 16, при этом элемент И 15k открыт только в том случае, если оба сигнала на входах 21k и 22k имеют единичное значение, . Этим обеспечивается чтение значения регистра 13 выбранного операционного блока 12ij с использованием k-й группы входов 21k и 22k и элемента И 15k, в остальных операционных блоках на выходе элемента И 15k будет сформировано нулевое значение ввиду наличия нулевого сигнала как минимум на одном из входов 21k и 22k.From the
Прочитанные значения последовательно проходят через элементы ИЛИ 16 «сверху вниз» (в порядке элементы ИЛИ 161-16n операционного блока 121j, затем элементы ИЛИ 161-16n операционного блока 122j и т.д. до элементов ИЛИ 161-16n операционного блока 12nj, ) и с выходов 241-24n блоков хранения 12 n-й строки блока коэффициентов матрицы поступают на входы соответствующих элементов ИЛИ 311-31n. На выходе каждого из элементов ИЛИ 311-31n формируется дизъюнкция значений с выходов 241-24n, соответствующая требуемому ij-му элементу хранимой матрицы, причем каждая из k пар значений i и j определяются соответствующими значениями на входах 251-25n и 261-26n блоков хранения 12, . Этим достигается возможность независимого параллельного во времени выбора k значений среди хранящихся в блоке коэффициентов матрицы.The read values pass sequentially through the elements of the
Так на первом шаге на этапе работы на входах 251-25n первого блока 2 коэффициентов матрицы присутствуют значения 00…012, 00…0102, …, 100…02 (1, 2, …, n в десятичной форме с учетом используемого унитарного кодирования), на входах 261-26n первого блока 2 коэффициентов матрицы - значения 00…012, 00…02, …, 00…02 (1, 0, …, 0 в десятичной форме), что обеспечивает формирование на выходах 321-32n первого блока 2 коэффициентов матрицы значений a 11, 0, 0, …, 0 соответственно (несуществующим элементам матрицы a i0 соответствуют нули). Аналогично рассмотренному выше, на входах 251-25n второго блока 3 коэффициентов матрицы присутствуют значения 00…012, 00…02, …, 00…02 (1, 0, …, 0 в десятичной форме), на входах 261-26n первого блока 2 коэффициентов матрицы - значения 00…012, 00…0102, 100…02 (1, 2, …, n в десятичной форме), что обеспечивает формирование на выходах 321-32n второго блока 3 коэффициентов матрицы значений b11, 0, 0, …, 0 соответственно.So at the first step at the work stage, at the inputs 25 1 -25 n of the first block of 2 matrix coefficients there are
Сформированные значения с выходов 32 первого блока 2 коэффициентов матрицы поступают на входы соответствующих регистров 7 первого столбца матрицы операционных блоков 1, а с выходов 32 второго блока 3 коэффициентов матрицы - на входы соответствующих регистров 6 первой строки матрицы операционных блоков 1, где фиксируются по пришествии соответствующего синхросигнала; значения из первой ступени регистров 8 операционных блоков 1 при этом записываются во вторую ступень.The generated values from the
Каждый операционный блок 1 реализует функции , , , где t - номер шага работы устройства. Вычисление значений коэффициентов результирующей матрицы С производится с использованием следующих рекуррентных формул:Each
С выходов регистров 6 и 7 значения a ik и bkj подаются на вход блока умножения 9, на выходе которого формируется их произведение aikbkj, поступающее на первый вход сумматора 10. На второй вход сумматора 10 подается значение из регистра 8, с выхода которого сформированное значение поступает на первый информационный вход мультиплексора 11. На этапе работы значение с первого входа мультиплексора 11 проходит на вход первой ступени регистра 8 благодаря нулевому значению сигнала на его адресном входе, где фиксируется по пришествии соответствующего синхросигнала, что обеспечивает формирование в регистрах 8 операционных блоков 1 искомых значений.From the outputs of
Далее на синхровходы блока двухступенчатых регистров 5 подается сигнал записи в первую ступень, и работа устройства повторяется, как описано выше. Так на втором шаге на этапе работы регистр 4 получает значение 00…1002, а регистры 5 - соответственно значения 00…102, 00…012, 00…02, …, 00…02. На выходах 32 первого блока 2 коэффициентов матрицы формируются значения a l2, a 21, 0, …, 0, которые поступают на первый столбец операционных элементов 1 и фиксируются в соответствующих регистрах 7; на выходах 32 второго блока 3 коэффициентов матрицы формируются значения b2l, bl2, 0, …, 0, которые поступают на первую строку операционных элементов 1 и фиксируются в соответствующих регистрах 8. Порядок поступления элементов перемножаемых матриц в матрицу операционных блоков 1 показан на фиг. 5.Next, the write signal to the first stage is applied to the sync inputs of the block of two-
По прошествии n-1 шагов работы в сдвиговом регистре 4 формируется значение 100…02. В начале n-го шага работы производится сдвиг данного значения в сторону старших разрядов, что приводит к выходу старшей единицы за пределы разрядов регистра и формированию значения 00…02, которое не изменяется в последующих шагах работы устройства (см. фиг. 8).After n-1 work steps in the
По прошествии 3n-2 шагов работы в регистрах 8 операционных элементов 1 формируются искомые элементы cij результирующей матрицы C, что показано на фиг. 6 для случая n=3.After 3n-2 work steps, the required elements c ij of the resulting matrix C are formed in the
На этапе получения результата умножения на адресные входы мультиплексоров 11 подается единичное значение, что обеспечивает подключение вторых входов мультиплексоров 11 к их выходам. После этого производится выдача синхроимпульсов, поочередно обеспечивающих запись сперва в первую, а затем во вторую ступени регистров 8, что за n шагов обеспечивает построчный вывод результирующих элементов матрицы C из нижней строки матрицы операционных элементов 1 в параллельно-конвейерном режиме, что схематично показано на фиг. 7 для случая n=3.At the stage of obtaining the result of multiplication, a single value is supplied to the address inputs of the
Для умножения ленточной матрицы на полную матрицу либо матриц с числом элементов, меньшим n, и в общем случае не являющихся квадратными, в соответствующие блоки хранения 12 первого 2 и второго 3 блоков коэффициентов матриц необходимо загрузить нулевые значения.To multiply the tape matrix by a full matrix or matrices with the number of elements less than n, and in general not being square, zero values must be loaded into the corresponding storage blocks 12 of the first 2 and second 3 blocks of matrix coefficients.
Claims (1)
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| RU2015127533/08U RU157948U1 (en) | 2015-07-08 | 2015-07-08 | DEVICE FOR MATRIX MULTIPLICATION |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| RU2015127533/08U RU157948U1 (en) | 2015-07-08 | 2015-07-08 | DEVICE FOR MATRIX MULTIPLICATION |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| RU157948U1 true RU157948U1 (en) | 2015-12-20 |
Family
ID=54871608
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| RU2015127533/08U RU157948U1 (en) | 2015-07-08 | 2015-07-08 | DEVICE FOR MATRIX MULTIPLICATION |
Country Status (1)
| Country | Link |
|---|---|
| RU (1) | RU157948U1 (en) |
Cited By (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| RU193927U1 (en) * | 2019-06-26 | 2019-11-21 | Федеральное государственное бюджетное образовательное учреждение высшего образования "Юго-Западный государственный университет" (ЮЗГУ) | Binary Matrix Multiplier |
| RU2848159C1 (en) * | 2025-02-25 | 2025-10-16 | Федеральное государственное бюджетное образовательное учреждение высшего образования "Юго-Западный государственный университет" | Device for multiplying binary matrices |
-
2015
- 2015-07-08 RU RU2015127533/08U patent/RU157948U1/en not_active IP Right Cessation
Cited By (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| RU193927U1 (en) * | 2019-06-26 | 2019-11-21 | Федеральное государственное бюджетное образовательное учреждение высшего образования "Юго-Западный государственный университет" (ЮЗГУ) | Binary Matrix Multiplier |
| RU2848159C1 (en) * | 2025-02-25 | 2025-10-16 | Федеральное государственное бюджетное образовательное учреждение высшего образования "Юго-Западный государственный университет" | Device for multiplying binary matrices |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| US10340011B2 (en) | Three-dimensional addressing for erasable programmable read only memory | |
| JPH02170263A (en) | Neural net signal processing processor | |
| CN114365098A (en) | Performing in-memory processing operations related to pulse delivery events and related methods, systems, and apparatus | |
| RU157948U1 (en) | DEVICE FOR MATRIX MULTIPLICATION | |
| US20250321694A1 (en) | Data sequencing circuit | |
| RU2024058C1 (en) | Device for estimating linear arrangement of elements | |
| US3594565A (en) | Round off apparatus for electronic calculators | |
| RU2430408C1 (en) | Device for parallel search for word inclusions and coincidence | |
| GB1116675A (en) | General purpose digital computer | |
| RU2848159C1 (en) | Device for multiplying binary matrices | |
| RU193927U1 (en) | Binary Matrix Multiplier | |
| RU2634200C1 (en) | Device for accelerated calculating matrix of incomplete parallelism | |
| RU165007U1 (en) | DEVICE FOR ELIMINATING OVERCALCULATIONS | |
| RU2744239C1 (en) | Device for squaring binary matrix | |
| RU1837321C (en) | Device for multiplying matrices | |
| SU545982A1 (en) | Device for classifying binary numbers | |
| RU163442U1 (en) | DEVICE FOR PARALLEL SEARCH FOR COMPOSITE SAMPLE | |
| US10430325B2 (en) | Precision data access using differential data | |
| RU2546072C1 (en) | Conveyor arithmetic multiplier | |
| SU1280639A1 (en) | Device for loading data | |
| SU911506A1 (en) | Device for ordering data | |
| SU1075260A1 (en) | Device for making summation of m n-bit numbers arriving in sequential order | |
| SU1727137A1 (en) | Image processing device of rank-order filtering | |
| SU1133622A1 (en) | Buffer storage | |
| RU2580803C1 (en) | Device for information search |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| MM1K | Utility model has become invalid (non-payment of fees) |
Effective date: 20160223 |