ПРОЦЕССОР НЕЙРОННОЙ СЕТИ, ИСПОЛЬЗУЮЩИЙ СЖАТИЕ И РАСПАКОВКУ ДАННЫХ АКТИВАЦИИ ДЛЯ СНИЖЕНИЯ ИСПОЛЬЗОВАНИЯ ПРОПУСКНОЙ СПОСОБНОСТИ ПАМЯТИ

1. Процессор нейронной сети, содержащий:
один или несколько нейронов и
блок сжатия, сконфигурированный, чтобы
принимать несжатую порцию данных, сгенерированных по меньшей мере одним из нейронов в процессоре нейронной сети, причем несжатая порция данных содержит фиксированное число байтов;
генерировать часть маски сжатой выходной порции, причем часть маски содержит число битов, эквивалентное фиксированному числу байтов в несжатой порции данных, каждый бит в части маски соответствует байту в несжатой порции данных, и причем каждый бит в части маски устанавливается в логический нуль, где соответствующий байт в несжатой порции данных является нулевым, и устанавливается в логическую единицу, где соответствующий байт в несжатой порции данных является ненулевым;
генерировать часть данных сжатой выходной порции путем
определения числа ненулевых байтов в несжатой порции данных,
определения, на основе числа ненулевых байтов в несжатой порции данных, числа битов в части данных сжатой выходной порции, доступных для сохранения усеченных ненулевых байтов в несжатой порции данных,
усечения ненулевых байтов в несжатой порции данных до определенного числа битов, и
сохранения усеченных ненулевых байтов в части данных сжатой выходной порции; и
выводить сжатую выходную порцию, причем сжатая выходная порция содержит часть маски и часть данных.
2. Процессор нейронной сети по п. 1, причем процессор нейронной сети дополнительно содержит блок распаковки, сконфигурированный, чтобы:
принимать сжатую выходную порцию;
определять число ненулевых байтов в части данных несжатой порции данных на основе части маски сжатой выходной порции;
определять местоположения ненулевых байтов в несжатой порции данных на основе части маски сжатой выходной порции;
определять число битов, используемых блоком сжатия, чтобы сохранять усеченные ненулевые байты в части данных сжатой выходной порции;
для каждой позиции в части маски сжатой выходной порции, которая представляет собой логический нуль, вставлять нулевой байт в соответствующую позицию распакованной выходной порции; и
для каждой позиции в части маски, которая представляет собой логическую единицу, вставлять усеченный ненулевой байт из соответствующей позиции сжатой входной порции в соответствующую позицию распакованной выходной порции и число нулевых битов, эквивалентное числу битов, усеченных во время сжатия сжатой выходной порции.
3. Процессор нейронной сети по п. 1, причем блок сжатия дополнительно сконфигурирован, чтобы:
определять число дополнительных битов в части данных сжатой выходной порции, доступных для сохранения усеченных ненулевых байтов несжатой порции данных; и
выделять дополнительные биты одному или нескольким ненулевым байтам в несжатой порции данных перед усечением одного или нескольких ненулевых байтов.
4. Процессор нейронной сети по п. 3, причем блок распаковки дополнительно сконфигурирован, чтобы определять число дополнительных битов, выделенных одному или нескольким ненулевым байтам, сохраненным в части данных сжатой выходной порции.
5. Процессор нейронной сети по п. 2, причем блок распаковки дополнительно сконфигурирован, чтобы добавлять смещение к одному или нескольким усеченным ненулевым байтам, сохраненным в распакованной выходной порции.
6. Процессор нейронной сети по п. 1, причем один или несколько младших битов (LSB) ненулевых байтов усекаются.
7. Процессор нейронной сети, содержащий:
один или несколько нейронов и
блок сжатия, сконфигурированный, чтобы
принимать сжатую порцию данных, содержащую часть маски и часть данных;
определять число ненулевых байтов в распакованной порции данных на основе битов в части маски;
определять, основываясь, по меньшей мере частично, на числе ненулевых байтов, число битов, используемых для сохранения усеченных ненулевых байтов в части данных сжатой выходной порции данных;
для каждой битовой позиции в части маски сжатой порции данных, которая представляет собой логический нуль, вставлять нулевой байт в соответствующую позицию распакованной порции данных; и
для каждой позиции в части маски сжатой порции данных, которая представляет собой логическую единицу, вставлять усеченный ненулевой байт из соответствующей позиции в части данных сжатой порции данных в соответствующую позицию в распакованной порции данных и число нулевых битов, эквивалентное числу битов, усеченных во время сжатия сжатой порции данных.
8. Процессор нейронной сети по п. 7, дополнительно содержащий блок сжатия, сконфигурированный, чтобы:
принимать несжатую порцию данных, сгенерированных по меньшей мере одним из нейронов в процессоре нейронной сети, причем несжатая порция данных содержит фиксированное число байтов;
генерировать часть маски сжатой порции данных, причем часть маски содержит число битов, эквивалентное фиксированному числу байтов в несжатой порции данных, каждый бит в части маски соответствует байту в несжатой порции данных, и причем каждый бит в части маски содержит логический нуль, где соответствующий байт в несжатой порции данных является нулевым, и содержит логическую единицу, где соответствующий байт в несжатой порции данных является ненулевым;
генерировать часть данных сжатой порции данных посредством
определения числа ненулевых байтов в несжатой порции данных,
определения, на основе числа ненулевых байтов в несжатой порции данных, числа битов в части данных сжатой порции данных, доступных для сохранения усеченных ненулевых байтов несжатой порции данных,
усечения ненулевых байтов в несжатой порции данных до определенного числа битов, и
сохранения усеченных ненулевых байтов в части данных сжатой порции данных; и
выводить сжатую порцию данных, причем сжатая порция данных содержит часть маски и часть данных.
9. Процессор нейронной сети по п. 8, причем блок сжатия дополнительно сконфигурирован, чтобы сохранять ненулевые байты в несжатой порции данных в части данных сжатой порции данных без усечения, если число ненулевых байтов в несжатой порции данных меньше или равно числу байтов в части данных сжатой порции данных.
10. Процессор нейронной сети по п. 8, причем блок сжатия дополнительно сконфигурирован, чтобы:
определять число дополнительных битов в части данных сжатой выходной порции, доступных для сохранения усеченных ненулевых байтов несжатой порции данных; и
выделять дополнительные биты одному или нескольким ненулевым байтам в несжатой порции данных перед усечением одного или нескольких ненулевых байтов.
11. Процессор нейронной сети по п. 8, причем блок распаковки дополнительно сконфигурирован, чтобы определять число дополнительных битов, выделенных одному или нескольким ненулевым байтам, сохраненным в части данных сжатой выходной порции.
12. Реализуемый компьютером способ, содержащий:
прием, в блоке сжатия процессора нейронной сети, несжатой порции данных, сгенерированных по меньшей мере одним нейроном в процессоре нейронной сети, причем несжатая порция данных содержит фиксированное число байтов;
генерацию части маски сжатой выходной порции, причем часть маски содержит
число битов, эквивалентное фиксированному числу байтов в несжатой порции данных,
каждый бит в части маски соответствует байту в несжатой порции данных, и
причем каждый бит в части маски содержит логический нуль, где соответствующий байт в несжатой порции данных является нулевым, и содержит логическую единицу, где соответствующий байт в несжатой порции данных является ненулевым;
генерацию части данных сжатой выходной порции путем
определения числа ненулевых байтов в несжатой порции данных,
определения, на основе числа ненулевых байтов в несжатой порции данных, числа битов в части данных сжатой выходной порции, доступных для сохранения усеченных ненулевых байтов несжатой порции данных,
усечения ненулевых байтов в несжатой порции данных до определенного количества битов, и
сохранения усеченных ненулевых байтов в части данных сжатой выходной порции; и
сохранение сжатой выходной порции в памяти процессора нейронной сети, причем сжатая выходная порция содержит часть маски и часть данных.
13. Реализуемый компьютером способ по п. 12, дополнительно содержащий:
определение числа дополнительных битов в части данных сжатой выходной порции, доступных для сохранения усеченных ненулевых байтов несжатой порции данных; и
выделение дополнительных битов одному или нескольким ненулевым байтам в несжатой порции данных перед усечением одного или нескольких ненулевых байтов.
14. Реализуемый компьютером способ по п. 12, дополнительно содержащий сохранение ненулевых байтов в несжатой порции данных в части данных сжатой порции данных без усечения, если число ненулевых байтов в несжатой порции данных меньше или равно числу байтов в части данных сжатой порции данных.
15. Реализуемый компьютером способ по п. 12, дополнительно содержащий:
прием, в блоке распаковки процессора нейронной сети, сжатой выходной порции;
определение числа ненулевых байтов в части данных несжатой порции данных на основе части маски сжатой выходной порции;
определение местоположений ненулевых байтов в несжатой порции данных на основе части маски сжатой выходной порции;
определение числа битов, используемых блоком сжатия, чтобы сохранять усеченные ненулевые байты в части данных сжатой выходной порции;
для каждой битовой позиции в части маски сжатой выходной порции, которая представляет собой логический нуль, вставку нулевых байтов в соответствующую позицию распакованной выходной порции; и
для каждой позиции в части маски сжатой выходной порции, которая представляет собой логическую единицу, вставку усеченного ненулевого байта из соответствующей позиции сжатой выходной порции в соответствующую позицию распакованной выходной порции и числа нулевых битов, эквивалентного числу битов, усеченных во время сжатия сжатой выходной порции.