{"id":286359,"date":"2017-05-15T16:30:04","date_gmt":"2017-05-15T12:30:04","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=286359"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=286359","title":{"rendered":"\u0422\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u044f MIPS SIMD \u0438 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440 \u0411\u0430\u0439\u043a\u0430\u043b-\u04221"},"content":{"rendered":"<p>\u041a\u043e\u043b\u043b\u0435\u0433\u0438 \u0438\u0437 \u0411\u0430\u0439\u043a\u0430\u043b \u042d\u043b\u0435\u043a\u0442\u0440\u043e\u043d\u0438\u043a\u0441 \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0438\u043b\u0438 \u043f\u043e\u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0441 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u043e\u043c \u0411\u0430\u0439\u043a\u0430\u043b-\u04221 [<a href=\"http:\/\/www.baikalelectronics.ru\/products\/T1\/\">L1<\/a>] \u0438 \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u043e \u0441\u0432\u043e\u0438\u0445 \u0432\u043f\u0435\u0447\u0430\u0442\u043b\u0435\u043d\u0438\u044f\u0445. \u0414\u043b\u044f \u043d\u0438\u0445 \u044d\u0442\u043e \u0441\u043f\u043e\u0441\u043e\u0431 \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u0430\u0442\u044c \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430\u043c \u043e \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044f\u0445 \u0438 \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e\u0441\u0442\u044f\u0445 \u0441\u0432\u043e\u0435\u0433\u043e \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0430. \u0414\u043b\u044f \u043c\u0435\u043d\u044f \u2014 \u0448\u0430\u043d\u0441 \u043f\u043e\u0431\u043b\u0438\u0436\u0435 \u043f\u043e\u0437\u043d\u0430\u043a\u043e\u043c\u0438\u0442\u044c\u0441\u044f \u0441 \u0441\u0438\u0441\u0442\u0435\u043c\u043e\u0439 \u043d\u0430 \u0441\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u043c \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u043d\u043e\u043c \u044f\u0434\u0440\u0435 \u0438 \u0432 \u0431\u0443\u0434\u0443\u0449\u0435\u043c \u0438\u0437\u043e\u0431\u0440\u0435\u0442\u0430\u0442\u044c \u043f\u043e\u043c\u0435\u043d\u044c\u0448\u0435 &quot;\u0432\u0435\u043b\u043e\u0441\u0438\u043f\u0435\u0434\u043e\u0432&quot;, \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u044f, \u043a \u043f\u0440\u0438\u043c\u0435\u0440\u0443, \u043d\u043e\u0432\u0443\u044e \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u0432 \u043f\u0440\u043e\u0435\u043a\u0442 MIPSfpga-plus [<a href=\"https:\/\/github.com\/MIPSfpga\/mipsfpga-plus\">L2<\/a>]. \u041d\u0443 \u0438 \u043e\u0431\u044b\u0447\u043d\u043e\u0435 \u0438\u043d\u0436\u0435\u043d\u0435\u0440\u043d\u043e\u0435 \u043b\u044e\u0431\u043e\u043f\u044b\u0442\u0441\u0442\u0432\u043e, \u043e\u043f\u044f\u0442\u044c \u0436\u0435\u2026<br \/>  \u0421\u0435\u0433\u043e\u0434\u043d\u044f \u0440\u0435\u0447\u044c \u043f\u043e\u0439\u0434\u0435\u0442 \u043e \u0432\u0435\u043a\u0442\u043e\u0440\u043d\u043e\u043c \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0438 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u044b MIPS SIMD, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e \u0432 \u044f\u0434\u0440\u0430\u0445 MIPS Warrior P-class P5600 [<a href=\"https:\/\/www.imgtec.com\/mips\/warrior\/p-class-p5600-multiprocessor-core\/\">L3<\/a>], \u0430 \u0437\u043d\u0430\u0447\u0438\u0442 \u043f\u0440\u0438\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u0438 \u0432 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0435 \u0411\u0430\u0439\u043a\u0430\u043b-\u04221. \u0421\u0442\u0430\u0442\u044c\u044f \u043e\u0440\u0438\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0430 \u043d\u0430 \u043d\u0430\u0447\u0438\u043d\u0430\u044e\u0449\u0438\u0445 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432.<\/p>\n<p>  <\/p>\n<p><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/web\/0e8\/94d\/2bc\/0e894d2bc32d46f6afd5fa80ba3bee20.png\"\/><\/p>\n<p><a name=\"habracut\"><\/a>  <\/p>\n<h2 id=\"vvedenie\">\u0412\u0432\u0435\u0434\u0435\u043d\u0438\u0435<\/h2>\n<p>  <\/p>\n<p>\u041f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0432\u0441\u0435\u0433\u0434\u0430 \u0441 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u043e\u0439 \u0442\u043e\u0433\u043e \u0438\u043b\u0438 \u0438\u043d\u043e\u0433\u043e \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430 (\u043f\u0440\u0438\u0431\u043e\u0440\u0430\/\u0430\u043f\u043f\u0430\u0440\u0430\u0442\u0443\u0440\u044b\/\u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u043e-\u0430\u043f\u043f\u0430\u0440\u0430\u0442\u043d\u043e\u0433\u043e \u043a\u043e\u043c\u043f\u043b\u0435\u043a\u0441\u0430 \u0438 \u0442.\u0434.) \u0441\u0432\u044f\u0437\u0430\u043d\u043e \u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u0437\u0430\u0434\u0430\u0447\u0438 \u043f\u043e \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0435 \u0446\u0438\u0444\u0440\u043e\u0432\u044b\u0445 \u0438 \u0430\u043d\u0430\u043b\u043e\u0433\u043e\u0432\u044b\u0445 \u0441\u0438\u0433\u043d\u0430\u043b\u043e\u0432. \u041d\u0430 \u0432\u0445\u043e\u0434\u0435 \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u043f\u043e\u043a\u0430\u0437\u0430\u043d\u0438\u044f \u0434\u0430\u0442\u0447\u0438\u043a\u043e\u0432, \u0441\u0438\u0433\u043d\u0430\u043b\u044b \u0441 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432 \u0432\u0432\u043e\u0434\u0430-\u0432\u044b\u0432\u043e\u0434\u0430, \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f \u0438\u0437 \u0444\u0430\u0439\u043b\u0430 \u043d\u0430 \u0434\u0438\u0441\u043a\u0435 \u0438 \u0442.\u0434. \u041d\u0430 \u0432\u044b\u0445\u043e\u0434\u0435: \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u043d\u0430 \u043c\u043e\u043d\u0438\u0442\u043e\u0440\u0435, \u0437\u0432\u0443\u043a \u0438\u0437 \u043a\u043e\u043b\u043e\u043d\u043e\u043a, \u0441\u0438\u0433\u043d\u0430\u043b\u044b \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u043f\u0440\u0438\u0432\u043e\u0434\u0430\u043c\u0438, \u043f\u043e\u043a\u0430\u0437\u0430\u043d\u0438\u044f \u0438\u043d\u0434\u0438\u043a\u0430\u0442\u043e\u0440\u043e\u0432 \u043d\u0430 \u043f\u0440\u0438\u0431\u043e\u0440\u043d\u043e\u0439 \u043f\u0430\u043d\u0435\u043b\u0438 \u0438 \u043f\u0440. \u0410 &quot;\u043c\u0435\u0436\u0434\u0443&quot; \u0432\u0432\u043e\u0434\u043e\u043c \u0438 \u0432\u044b\u0432\u043e\u0434\u043e\u043c \u2014 \u043d\u0430\u0431\u043e\u0440 \u0442\u0435\u0445 \u0438\u043b\u0438 \u0438\u043d\u044b\u0445 \u043c\u0430\u0442\u0435\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0439.<br \/>  \u0415\u0441\u043b\u0438 \u043a\u0440\u0430\u0442\u043a\u043e \u043f\u0435\u0440\u0435\u0447\u0438\u0441\u043b\u0438\u0442\u044c \u0441\u043f\u043e\u0441\u043e\u0431\u044b \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u0442\u044c \u044d\u0442\u0443 &quot;\u043c\u0430\u0442\u0435\u043c\u0430\u0442\u0438\u043a\u0443 \u0432 \u0436\u0435\u043b\u0435\u0437\u0435&quot;, \u0442\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u043c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u0441\u043f\u0438\u0441\u043e\u043a \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u0445 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0443 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u044b \u043a\u0430\u043a \u0432\u043c\u0435\u0441\u0442\u0435, \u0442\u0430\u043a \u0438 \u043f\u043e \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438:<\/p>\n<p>  <\/p>\n<ul>\n<li>\u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u0432 \u0432\u0438\u0434\u0435 \u0430\u043d\u0430\u043b\u043e\u0433\u043e\u0432\u043e\u0439 \u0441\u0445\u0435\u043c\u044b.<\/li>\n<li>\u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u0430\u044f \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u043d\u0430 \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u0435.<\/li>\n<li>\u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u043d\u0430 \u041f\u041b\u0418\u0421<\/li>\n<li>\u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u043e-\u0430\u043f\u043f\u0430\u0440\u0430\u0442\u043d\u0430\u044f \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u0432 \u0432\u0438\u0434\u0435 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u043d\u0430 \u043a\u0440\u0438\u0441\u0442\u0430\u043b\u043b\u0435<\/li>\n<li>\u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u0446\u0438\u0444\u0440\u043e\u0432\u043e\u0433\u043e \u0441\u0438\u0433\u043d\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0430<\/li>\n<li>\u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u0430\u044f \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u043d\u0430 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0435 \u043e\u0431\u0449\u0435\u0433\u043e \u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f<\/li>\n<li>\u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u0430<\/li>\n<\/ul>\n<p>  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u042d\u0442\u043e\u0442 \u0436\u0435 \u0441\u043f\u0438\u0441\u043e\u043a, \u043d\u043e \u0431\u043e\u043b\u0435\u0435 \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e<\/b><\/p>\n<div class=\"spoiler_text\">\n<ul>\n<li>\n<p><strong>\u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u0432 \u0432\u0438\u0434\u0435 \u0430\u043d\u0430\u043b\u043e\u0433\u043e\u0432\u043e\u0439 \u0441\u0445\u0435\u043c\u044b<\/strong><br \/>  \u041d\u0435\u0441\u043c\u043e\u0442\u0440\u044f \u043d\u0430 \u0437\u0430\u0441\u0438\u043b\u044c\u0435 \u0446\u0438\u0444\u0440\u043e\u0432\u044b\u0445 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432, \u043c\u0438\u0440 \u0438 \u043e\u0440\u0433\u0430\u043d\u044b \u0447\u0443\u0432\u0441\u0442\u0432 \u0447\u0435\u043b\u043e\u0432\u0435\u043a\u0430 \u0432\u0441\u0435 \u0440\u0430\u0432\u043d\u043e \u043e\u0441\u0442\u0430\u044e\u0442\u0441\u044f \u0430\u043d\u0430\u043b\u043e\u0433\u043e\u0432\u044b\u043c. \u0425\u043e\u0442\u0438\u043c \u043c\u044b \u044d\u0442\u043e\u0433\u043e \u0438\u043b\u0438 \u043d\u0435\u0442, \u043d\u043e \u0434\u0430\u0436\u0435 \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u044f \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e &quot;\u0438\u0441\u043a\u043b\u044e\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e&quot; \u0432 \u0446\u0438\u0444\u0440\u0435, \u043f\u0435\u0440\u0435\u0434 \u0432\u0445\u043e\u0434\u043e\u043c \u0410\u0426\u041f \u043d\u0430\u043c \u0432\u0441\u0435 \u0440\u0430\u0432\u043d\u043e \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0444\u0438\u043b\u044c\u0442\u0440. \u0422\u043e\u0447\u043d\u043e \u0442\u0430\u043a\u0436\u0435 \u043d\u0430 \u0430\u043d\u0430\u043b\u043e\u0433\u043e\u0432\u044b\u0445 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u0430\u0445 \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u044b \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0442\u043e\u0440\u044b, \u0434\u0438\u0444\u0444\u0435\u0440\u0435\u043d\u0446\u0438\u0430\u0442\u043e\u0440\u044b, \u0441\u0443\u043c\u043c\u0430\u0442\u043e\u0440\u044b \u0438 \u0442.\u0434. \u0417\u0430 \u0434\u0435\u0441\u044f\u0442\u0438\u043b\u0435\u0442\u0438\u044f \u0433\u043e\u0441\u043f\u043e\u0434\u0441\u0442\u0432\u0430 \u0430\u043d\u0430\u043b\u043e\u0433\u043e\u0432\u043e\u0439 \u044d\u043b\u0435\u043a\u0442\u0440\u043e\u043d\u0438\u043a\u0438 \u0438\u043d\u0436\u0435\u043d\u0435\u0440\u044b \u043d\u0430\u043a\u043e\u043f\u0438\u043b\u0438 \u043e\u0433\u0440\u043e\u043c\u043d\u044b\u0439 \u043e\u043f\u044b\u0442 \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u0442\u0435\u0445 \u0438\u043b\u0438 \u0438\u043d\u044b\u0445 \u0437\u0430\u0434\u0430\u0447 \u0438 \u0445\u043e\u0440\u043e\u0448\u0438\u0439 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a (\u043f\u0443\u0441\u0442\u044c \u0434\u0430\u0436\u0435 \u0446\u0438\u0444\u0440\u043e\u0432\u043e\u0439 \u044d\u043b\u0435\u043a\u0442\u0440\u043e\u043d\u0438\u043a\u0438) \u0443\u0447\u0438\u0442\u044b\u0432\u0430\u0435\u0442 \u044d\u0442\u043e \u043d\u0430\u0441\u043b\u0435\u0434\u0438\u0435 [<a href=\"https:\/\/www.google.ru\/search?q=\u0442\u0438\u0442\u0446\u0435+\u0448\u0435\u043d\u043a+\u043f\u043e\u043b\u0443\u043f\u0440\u043e\u0432\u043e\u0434\u043d\u0438\u043a\u043e\u0432\u0430\u044f+\u0441\u0445\u0435\u043c\u043e\u0442\u0435\u0445\u043d\u0438\u043a\u0430\">D1<\/a>];<\/p>\n<p>  <\/li>\n<li>\n<p><strong>\u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u0430\u044f \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u043d\u0430 \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u0435<\/strong><br \/>  \u041e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u043c\u044b\u0445 \u0441\u0438\u0433\u043d\u0430\u043b\u043e\u0432 \u043d\u0435\u043c\u043d\u043e\u0433\u043e, \u0430 \u043c\u0430\u0442\u0435\u043c\u0430\u0442\u0438\u043a\u0430 \u2014 \u043d\u0435 \u0441\u043b\u043e\u0436\u043d\u0430\u044f \u0438\u043b\u0438 \u043d\u0435 \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u0430\u044f \u043a \u0440\u0435\u0441\u0443\u0440\u0441\u0430\u043c? \u0412 \u044d\u0442\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043d\u0435\u0434\u043e\u0440\u043e\u0433\u043e\u0439 \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440 \u0441 \u0435\u0433\u043e \u0410\u0426\u041f, \u043d\u0435\u0432\u044b\u0441\u043e\u043a\u043e\u0439 \u0447\u0430\u0441\u0442\u043e\u0442\u043e\u0439 \u0440\u0430\u0431\u043e\u0442\u044b, \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044f\u043c\u0438 \u044d\u043d\u0435\u0440\u0433\u043e\u0441\u0431\u0435\u0440\u0435\u0436\u0435\u043d\u0438\u044f \u2014 \u0432\u043f\u043e\u043b\u043d\u0435 \u0441\u0435\u0431\u0435 \u0432\u0430\u0440\u0438\u0430\u043d\u0442. \u041f\u0440\u0438 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u0438 &quot;\u0443\u0437\u043a\u0438\u0435&quot; \u043c\u0435\u0441\u0442\u0430 \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u043d\u0430 \u0430\u0441\u0441\u0435\u043c\u0431\u043b\u0435\u0440\u0435;<\/p>\n<p>  <\/li>\n<li>\n<p><strong>\u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u043d\u0430 \u041f\u041b\u0418\u0421<\/strong><br \/>  \u0415\u0441\u043b\u0438 \u0443 \u043d\u0430\u0441 \u0432\u044b\u0441\u043e\u043a\u0438\u0435 \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u044f \u043a \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u0438, \u043f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u0438\u0437\u043c\u0443, \u043c\u0430\u0441\u0448\u0442\u0430\u0431\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044e \u0440\u0435\u0448\u0435\u043d\u0438\u044f, \u0442\u043e \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u043c \u043c\u0430\u0442\u0435\u043c\u0430\u0442\u0438\u043a\u0443 \u0432 \u0432\u0438\u0434\u0435 \u043c\u043e\u0434\u0443\u043b\u044f \u043d\u0430 Verilog \u0438\u043b\u0438 VHDL, \u0432\u044b\u0431\u0438\u0440\u0430\u0435\u043c \u041f\u041b\u0418\u0421, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043c\u043e\u0436\u0435\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u043d\u0430 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0439 \u0434\u043b\u044f \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0447\u0430\u0441\u0442\u043e\u0442\u0435. \u0415\u0441\u043b\u0438 \u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u043e\u043a\u0430\u0436\u0435\u0442\u0441\u044f \u043e\u0447\u0435\u043d\u044c \u0443\u0434\u0430\u0447\u043d\u044b\u043c \u0438 \u043f\u043e\u044f\u0432\u0438\u0442\u0441\u044f \u0441\u043c\u044b\u0441\u043b \u0432 \u0435\u0433\u043e \u0448\u0438\u0440\u043e\u043a\u043e\u043c \u0442\u0438\u0440\u0430\u0436\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0438 \u2014 \u0434\u043e\u0431\u0440\u043e \u043f\u043e\u0436\u0430\u043b\u043e\u0432\u0430\u0442\u044c \u0432 \u043c\u0438\u0440 ASIC [<a href=\"http:\/\/silicon-russia.com\/public_materials\/2016_11_04_one_day_mipsfpga_connected_mcu_materials_public_for_the_website\/04_present_nanometer_asic_seminar\/\">L3<\/a>];<\/p>\n<p>  <\/li>\n<li>\n<p><strong>\u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u043e-\u0430\u043f\u043f\u0430\u0440\u0430\u0442\u043d\u0430\u044f \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u0432 \u0432\u0438\u0434\u0435 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u043d\u0430 \u043a\u0440\u0438\u0441\u0442\u0430\u043b\u043b\u0435<\/strong><br \/>  \u0421\u0438\u0441\u0442\u0435\u043c\u0430 \u0441\u043b\u0438\u0448\u043a\u043e\u043c \u0441\u043b\u043e\u0436\u043d\u0430\u044f, \u0447\u0442\u043e\u0431\u044b \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0442\u044c \u0435\u0435 \u0446\u0435\u043b\u0438\u043a\u043e\u043c \u043d\u0430 Verilog, \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u0443\u044e \u043b\u043e\u0433\u0438\u043a\u0443 \u0445\u043e\u0447\u0435\u0442\u0441\u044f \u0437\u0430\u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043d\u0430 \u0432\u044b\u0441\u043e\u043a\u043e\u0443\u0440\u043e\u0432\u043d\u0435\u0432\u043e\u043c \u044f\u0437\u044b\u043a\u0435, \u0434\u0430 \u0438 \u0432\u043e\u043e\u0431\u0449\u0435 \u2014 \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c \u0432\u0441\u0435\u043c \u0438\u0437 Linux? \u0412 \u044d\u0442\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u043e\u043c \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u0434\u043b\u044f \u043d\u0430\u0441 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0421\u043d\u041a (System-on-a-Chip, SoC): \u0431\u0435\u0440\u0435\u043c \u0433\u043e\u0442\u043e\u0432\u043e\u0435 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u043d\u043e\u0435 \u044f\u0434\u0440\u043e (Nios II, MIPSfpga \u0438 \u0442.\u0434.) \u0438 \u043e\u0431\u0432\u0435\u0448\u0438\u0432\u0430\u0435\u043c \u0435\u0433\u043e \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u043c\u0438 \u043d\u0430\u043c \u043f\u0435\u0440\u0438\u0444\u0435\u0440\u0438\u0439\u043d\u044b\u043c\u0438 \u043c\u043e\u0434\u0443\u043b\u044f\u043c\u0438, \u0441\u0440\u0435\u0434\u0438 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0431\u0443\u0434\u0435\u0442 \u043d\u0430\u0448 \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u044b\u0439, \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u044e\u0449\u0438\u0439 \u0445\u0438\u0442\u0440\u0443\u044e \u043c\u0430\u0442\u0435\u043c\u0430\u0442\u0438\u043a\u0443. \u041d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438 \u043c\u043e\u0436\u043d\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u043c\u0438 \u0432 \u0432\u0438\u0434\u0435 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u043d\u044b\u0445 \u043a\u043e\u043c\u0430\u043d\u0434 [<a href=\"https:\/\/habrahabr.ru\/post\/276205\/\">L4<\/a>]. \u0418 \u0434\u0430, \u0432 \u043f\u0435\u0440\u0441\u043f\u0435\u043a\u0442\u0438\u0432\u0435 \u044d\u0442\u043e \u0442\u043e\u0436\u0435 \u043c\u043e\u0436\u043d\u043e \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u0442\u044c \u0432 ASIC;<\/p>\n<p>  <\/li>\n<li>\n<p><strong>\u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u0446\u0438\u0444\u0440\u043e\u0432\u043e\u0433\u043e \u0441\u0438\u0433\u043d\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0430 (\u0426\u0421\u041f)<\/strong><br \/>  \u0417\u0434\u0435\u0441\u044c \u043c\u044b, \u0444\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438, \u043f\u043e\u043a\u0443\u043f\u0430\u0435\u043c \u0433\u043e\u0442\u043e\u0432\u0443\u044e \u043c\u0438\u043a\u0440\u043e\u0441\u0445\u0435\u043c\u0443 \u0441 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u043d\u044b\u043c \u044f\u0434\u0440\u043e\u043c, \u0441\u0432\u043e\u0438\u043c \u043d\u0430\u0431\u043e\u0440\u043e\u043c \u043f\u0435\u0440\u0438\u0444\u0435\u0440\u0438\u0438 \u0438 \u043d\u0430\u0431\u043e\u0440\u043e\u043c \u043a\u043e\u043c\u0430\u043d\u0434, \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u043e \u043e\u0440\u0438\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u043c \u043d\u0430 \u0432\u044b\u0441\u043e\u043a\u043e\u0441\u043a\u043e\u0440\u043e\u0441\u0442\u043d\u0443\u044e \u0446\u0438\u0444\u0440\u043e\u0432\u0443\u044e \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0443 \u0441\u0438\u0433\u043d\u0430\u043b\u043e\u0432. \u0412\u043e\u043a\u0440\u0443\u0433 \u043d\u0435\u0435 \u043c\u044b \u0438 \u0432\u044b\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u043c \u0441\u0432\u043e\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u0435 [<a href=\"https:\/\/ru.wikipedia.org\/wiki\/%D0%A6%D0%B8%D1%84%D1%80%D0%BE%D0%B2%D0%BE%D0%B9_%D1%81%D0%B8%D0%B3%D0%BD%D0%B0%D0%BB%D1%8C%D0%BD%D1%8B%D0%B9_%D0%BF%D1%80%D0%BE%D1%86%D0%B5%D1%81%D1%81%D0%BE%D1%80\">L10<\/a>, <a href=\"http:\/\/www.ti.com\/lsds\/ti\/processors\/dsp\/overview.page\">L5<\/a>];<\/p>\n<p>  <\/li>\n<li>\n<p><strong>\u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u0430\u044f \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u043d\u0430 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0435 \u043e\u0431\u0449\u0435\u0433\u043e \u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f<\/strong><br \/>  \u041a\u0430\u0436\u0434\u044b\u0439 \u0438\u0437 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u0435\u0439 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u043e\u0432 \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u0435\u0442 \u0441\u0432\u043e\u0438 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u043d\u044b\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u044f, \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0449\u0438\u0435 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u0442\u0435\u0445 \u0438\u043b\u0438 \u0438\u043d\u044b\u0445 \u043c\u0430\u0442\u0435\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0439. \u0418 \u0437\u0430\u0434\u0430\u0447\u0430 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430 \u041f\u041e \u043f\u0440\u0438 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u0435\u043c\u044b\u0435 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u0435\u043c \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u0434\u043b\u044f \u0443\u0441\u043a\u043e\u0440\u0435\u043d\u0438\u044f \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u0439. \u041a\u0430\u043a \u0440\u0430\u0437 \u043e\u0431 \u044d\u0442\u043e\u043c \u043f\u0440\u0438\u043c\u0435\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043a \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0430\u043c MIPS \u0438 \u043f\u043e\u0439\u0434\u0435\u0442 \u0440\u0435\u0447\u044c \u043d\u0438\u0436\u0435;<\/p>\n<p>  <\/li>\n<li><strong>\u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u0430 \u0434\u043b\u044f \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u0439<\/strong><br \/>  \u0414\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0438\u0439 \u0441\u043f\u0438\u0441\u043e\u043a \u0431\u044b\u043b \u0431\u043e\u043b\u0435\u0435 \u043f\u043e\u043b\u043d\u044b\u043c, \u043d\u0435\u043b\u044c\u0437\u044f \u043d\u0435 \u0443\u043f\u043e\u043c\u044f\u043d\u0443\u0442\u044c \u043e \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u0432\u044b\u043d\u0435\u0441\u0442\u0438 \u043d\u0430\u0438\u0431\u043e\u043b\u0435\u0435 \u0441\u043b\u043e\u0436\u043d\u044b\u0435 \u0438 \u0440\u0435\u0441\u0443\u0440\u0441\u043e\u0435\u043c\u043a\u0438\u0435 \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u044f \u043d\u0430 \u0432\u0438\u0434\u0435\u043e\u043a\u0430\u0440\u0442\u0443 [<a href=\"https:\/\/habrahabr.ru\/post\/172969\/\">L6<\/a>, <a href=\"https:\/\/habrahabr.ru\/post\/72247\/\">L7<\/a>].<\/li>\n<\/ul>\n<\/div>\n<\/div>\n<p>  <\/p>\n<p>\u0418\u0434\u0435\u0430\u043b\u044c\u043d\u044b\u0445 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432 \u043d\u0435 \u0431\u044b\u0432\u0430\u0435\u0442. \u0421\u0430\u043c\u044b\u0439 \u043b\u0443\u0447\u0448\u0438\u0439 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442 \u2014 \u044d\u0442\u043e \u0442\u043e\u0442, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0433\u0430\u0440\u0430\u043d\u0442\u0438\u0440\u0443\u0435\u0442 \u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u0437\u0430\u0434\u0430\u0447\u0438 \u0432 \u043f\u0440\u0438\u0435\u043c\u043b\u0435\u043c\u044b\u0435 \u0441\u0440\u043e\u043a\u0438, \u0434\u043b\u044f \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u0432 \u043f\u0440\u043e\u0435\u043a\u0442\u043d\u043e\u0439 \u043a\u043e\u043c\u0430\u043d\u0434\u0435 \u0435\u0441\u0442\u044c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0435 \u043a\u043e\u043c\u043f\u0435\u0442\u0435\u043d\u0446\u0438\u0438, \u0438 \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043b\u0438\u0431\u043e \u0435\u0441\u0442\u044c \u0432 \u043d\u0430\u043b\u0438\u0447\u0438\u0438, \u043b\u0438\u0431\u043e \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043f\u0440\u0438\u043e\u0431\u0440\u0435\u0442\u0435\u043d \u0441 \u043c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u043c\u0438 \u0437\u0430\u0442\u0440\u0430\u0442\u0430\u043c\u0438. \u041d\u0430 \u043f\u0440\u0438\u043d\u044f\u0442\u0438\u0435 \u043f\u043e\u0434\u043e\u0431\u043d\u044b\u0445 \u0440\u0435\u0448\u0435\u043d\u0438\u0439 \u043d\u0430\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u044e\u0442\u0441\u044f \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u044f \u0431\u044e\u0434\u0436\u0435\u0442\u0430, \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u044f \u0437\u0430\u043a\u0430\u0437\u0447\u0438\u043a\u0430, \u0430 \u0438\u043d\u043e\u0433\u0434\u0430 \u0438 \u043f\u043e\u043b\u0438\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u043f\u0440\u0438\u0447\u0438\u043d\u044b.<br \/>  \u041d\u0430\u0434\u0435\u044e\u0441\u044c, \u0447\u0442\u043e \u0434\u0430\u043d\u043d\u0430\u044f \u0441\u0442\u0430\u0442\u044c\u044f \u0431\u0443\u0434\u0435\u0442 \u043f\u043e\u043b\u0435\u0437\u043d\u0430 \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0432\u0432\u043e\u0434\u043d\u043e\u0439 \u0434\u043b\u044f \u0442\u0435\u0445 \u0447\u0438\u0442\u0430\u0442\u0435\u043b\u0435\u0439, \u043a\u0442\u043e \u0441\u0442\u043e\u043b\u043a\u043d\u0435\u0442\u0441\u044f \u0441 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u044c\u044e \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u0442\u0435\u0445 \u0438\u043b\u0438 \u0438\u043d\u044b\u0445 \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u0439 \u043d\u0430 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0435 \u0411\u0430\u0439\u043a\u0430\u043b-\u04221 \u0438\u043b\u0438 \u0438\u043d\u043e\u043c \u0434\u0440\u0443\u0433\u043e\u043c, \u043f\u043e\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u043e\u043c \u043d\u0430 \u0431\u0430\u0437\u0435 \u044f\u0434\u0440\u0430 (\u044f\u0434\u0435\u0440) MIPS, \u0433\u0434\u0435 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u0430 \u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u044f MIPS SIMD.<\/p>\n<p>  <\/p>\n<h2 id=\"resursoemkost-vychisleniy\">\u0420\u0435\u0441\u0443\u0440\u0441\u043e\u0435\u043c\u043a\u043e\u0441\u0442\u044c \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u0439<\/h2>\n<p>  <\/p>\n<p>\u041f\u0435\u0440\u0435\u0434 \u0442\u0435\u043c, \u043a\u0430\u043a \u0434\u0432\u0438\u0433\u0430\u0442\u044c\u0441\u044f \u0434\u0430\u043b\u044c\u0448\u0435, \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u043e\u0434\u043d\u0443 \u0438\u0437 \u0447\u0430\u0441\u0442\u043e \u0432\u0441\u0442\u0440\u0435\u0447\u0430\u044e\u0449\u0438\u0445\u0441\u044f \u0437\u0430\u0434\u0430\u0447 \u0446\u0438\u0444\u0440\u043e\u0432\u043e\u0439 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0441\u0438\u0433\u043d\u0430\u043b\u043e\u0432 (\u0426\u041e\u0421) \u2014 \u0444\u0438\u043b\u044c\u0442\u0440\u0430\u0446\u0438\u044e. \u0412 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u043f\u0440\u0438\u043c\u0435\u0440\u0430 \u0432\u043e\u0437\u044c\u043c\u0435\u043c \u0444\u0438\u043b\u044c\u0442\u0440 \u0441 \u043a\u043e\u043d\u0435\u0447\u043d\u043e\u0439 \u0438\u043c\u043f\u0443\u043b\u044c\u0441\u043d\u043e\u0439 \u0445\u0430\u0440\u0430\u043a\u0442\u0435\u0440\u0438\u0441\u0442\u0438\u043a\u043e\u0439 (\u041a\u0418\u0425, FIR, finite impulse response) [<a href=\"https:\/\/ru.wikipedia.org\/wiki\/%D0%A4%D0%B8%D0%BB%D1%8C%D1%82%D1%80_%D1%81_%D0%BA%D0%BE%D0%BD%D0%B5%D1%87%D0%BD%D0%BE%D0%B9_%D0%B8%D0%BC%D0%BF%D1%83%D0%BB%D1%8C%D1%81%D0%BD%D0%BE%D0%B9_%D1%85%D0%B0%D1%80%D0%B0%D0%BA%D1%82%D0%B5%D1%80%D0%B8%D1%81%D1%82%D0%B8%D0%BA%D0%BE%D0%B9\">L8<\/a>]. \u041d\u0435 \u0443\u0433\u043b\u0443\u0431\u043b\u044f\u044f\u0441\u044c \u0432 \u0442\u0435\u043e\u0440\u0438\u044e \u0426\u041e\u0421 \u0438 \u043c\u0430\u0442\u0435\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u0432\u044b\u043a\u043b\u0430\u0434\u043a\u0438 \u043e\u0442\u043c\u0435\u0442\u0438\u043c \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0435 \u2014 \u0443\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u0435, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442 \u0434\u0430\u043d\u043d\u044b\u0439 \u0432\u0438\u0434 \u0446\u0438\u0444\u0440\u043e\u0432\u044b\u0445 \u0444\u0438\u043b\u044c\u0442\u0440\u043e\u0432:<\/p>\n<p>  <\/p>\n<p><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/web\/edc\/efb\/96b\/edcefb96b96942a09ee40d2aab8e3194.png\"\/><\/p>\n<p>  <\/p>\n<p>\u0433\u0434\u0435 <strong>x(n)<\/strong> \u2014 \u0432\u0445\u043e\u0434\u043d\u043e\u0439 \u0441\u0438\u0433\u043d\u0430\u043b, <strong>y(n)<\/strong> \u2014 \u0432\u044b\u0445\u043e\u0434\u043d\u043e\u0439 \u0441\u0438\u0433\u043d\u0430\u043b, <strong>P<\/strong> \u2014 \u043f\u043e\u0440\u044f\u0434\u043e\u043a \u0444\u0438\u043b\u044c\u0442\u0440\u0430, <strong>bi<\/strong> \u2014 \u043a\u043e\u044d\u0444\u0444\u0438\u0446\u0438\u0435\u043d\u0442\u044b \u0444\u0438\u043b\u044c\u0442\u0440\u0430. \u042d\u0442\u043e \u0436\u0435 \u0443\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u0435 \u043c\u043e\u0436\u043d\u043e \u0437\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c:<\/p>\n<p>  <\/p>\n<p><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/web\/72f\/1a5\/a25\/72f1a5a25f6f4272ba19482374afb3e3.png\"\/><\/p>\n<p>  <\/p>\n<p>\u041f\u0440\u0438\u0440\u043e\u0434\u0443 \u0432\u0445\u043e\u0434\u043d\u043e\u0433\u043e \u0441\u0438\u0433\u043d\u0430\u043b\u0430 <strong>x(n)<\/strong> \u0432 \u0434\u0430\u043d\u043d\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u2014 \u043f\u0440\u043e\u0438\u0433\u043d\u043e\u0440\u0438\u0440\u0443\u0435\u043c. \u041f\u0443\u0441\u0442\u044c \u044d\u0442\u043e \u0431\u0443\u0434\u0443\u0442 \u0434\u0430\u043d\u043d\u044b\u0435, \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u044b\u0435 \u0441 \u0410\u0426\u041f, \u043d\u043e \u0441 \u0442\u0435\u043c \u0436\u0435 \u0443\u0441\u043f\u0435\u0445\u043e\u043c \u043e\u043d\u0438 \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u0441\u0447\u0438\u0442\u0430\u043d\u044b \u0438\u0437 \u0444\u0430\u0439\u043b\u0430. \u0414\u043b\u044f \u043d\u0430\u0441 \u0432 \u0440\u0430\u0441\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u0435\u043c\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u044d\u0442\u043e \u043d\u0435 \u0438\u043c\u0435\u0435\u0442 \u043d\u0438\u043a\u0430\u043a\u043e\u0433\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f. \u0422\u0430\u043a \u043a\u0430\u043a \u043d\u0430\u0448\u0430 \u0442\u0435\u043a\u0443\u0449\u0430\u044f \u0441\u0442\u0430\u0442\u044c\u044f &quot;\u043f\u0440\u043e \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u044f&quot;, \u0430 \u043d\u0435 &quot;\u043f\u0440\u043e \u0426\u041e\u0421&quot;, \u0442\u043e, \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e, \u043d\u0435 \u0431\u0443\u0434\u0435\u043c \u043f\u043e\u0433\u0440\u0443\u0436\u0430\u0442\u044c\u0441\u044f \u0438 \u0432 \u041c\u0430\u0433\u0438\u044e \u0444\u0438\u043b\u044c\u0442\u0440\u043e\u0432, \u0430 \u043f\u0440\u043e\u0441\u0442\u043e \u0432\u043e\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u0441\u044f \u043e\u0434\u043d\u0438\u043c \u0438\u0437 \u043e\u043d\u043b\u0430\u0439\u043d \u0441\u0435\u0440\u0432\u0438\u0441\u043e\u0432 \u0434\u043b\u044f \u0440\u0430\u0441\u0447\u0435\u0442\u0430 \u043a\u043e\u044d\u0444\u0444\u0438\u0446\u0438\u0435\u043d\u0442\u043e\u0432 [<a href=\"http:\/\/t-filter.engineerjs.com\/\">L9<\/a>]:<br \/>  \u0423\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c \u0436\u0435\u043b\u0430\u0435\u043c\u044b\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0444\u0438\u043b\u044c\u0442\u0440\u0430\u0446\u0438\u0438 (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043e\u0434\u0438\u043d \u0438\u0437 predefined \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u043e\u0432: band stop \u2014 \u0440\u0435\u0436\u0435\u043a\u0442\u043e\u0440\u043d\u044b\u0439 \u0444\u0438\u043b\u044c\u0442\u0440 [<a href=\"https:\/\/ru.wikipedia.org\/wiki\/%D0%9F%D0%BE%D0%BB%D0%BE%D1%81%D0%BD%D0%BE-%D0%B7%D0%B0%D0%B3%D1%80%D0%B0%D0%B6%D0%B4%D0%B0%D1%8E%D1%89%D0%B8%D0%B9_%D1%84%D0%B8%D0%BB%D1%8C%D1%82%D1%80\">L11<\/a>]) \u0438 \u043d\u0430\u0436\u0438\u043c\u0430\u0435\u043c \u043a\u043d\u043e\u043f\u043a\u0443 Design Filter:<\/p>\n<p>  <\/p>\n<p><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/web\/2b0\/e11\/a8a\/2b0e11a8af2b41d0a7a7717ac33155ff.png\"\/><\/p>\n<p>  <\/p>\n<p>\u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u043e\u043c \u0440\u0430\u0441\u0447\u0435\u0442\u0430 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0410\u0427\u0425 \u0444\u0438\u043b\u044c\u0442\u0440\u0430 [<a href=\"https:\/\/ru.wikipedia.org\/wiki\/%D0%90%D0%BC%D0%BF%D0%BB%D0%B8%D1%82%D1%83%D0%B4%D0%BD%D0%BE-%D1%87%D0%B0%D1%81%D1%82%D0%BE%D1%82%D0%BD%D0%B0%D1%8F_%D1%85%D0%B0%D1%80%D0%B0%D0%BA%D1%82%D0%B5%D1%80%D0%B8%D1%81%D1%82%D0%B8%D0%BA%D0%B0\">L12<\/a>]:<\/p>\n<p>  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u0410\u0427\u0425 \u0444\u0438\u043b\u044c\u0442\u0440\u0430<\/b><\/p>\n<div class=\"spoiler_text\">\n<p><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/web\/846\/102\/71c\/84610271c74d4900a64b039b69e1445e.png\"\/><\/p>\n<\/div>\n<\/div>\n<p>  <\/p>\n<p>\u041d\u0430\u0431\u043e\u0440 \u043a\u043e\u044d\u0444\u0444\u0438\u0446\u0438\u0435\u043d\u0442\u043e\u0432 \u0438 \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u0439 \u043a\u043e\u0434:<\/p>\n<p>  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">SampleFilter.h<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"cpp\">#ifndef SAMPLEFILTER_H_ #define SAMPLEFILTER_H_  \/* FIR filter designed with  http:\/\/t-filter.appspot.com  sampling frequency: 2000 Hz  * 0 Hz - 200 Hz   gain = 1   desired ripple = 5 dB   actual ripple = 3.1077303934211127 dB  * 300 Hz - 500 Hz   gain = 0   desired attenuation = -40 dB   actual attenuation = -42.49314043914754 dB  * 600 Hz - 1000 Hz   gain = 1   desired ripple = 5 dB   actual ripple = 3.1077303934211127 dB *\/  #define SAMPLEFILTER_TAP_NUM 25  typedef struct {   double history[SAMPLEFILTER_TAP_NUM];   unsigned int last_index; } SampleFilter;  void SampleFilter_init(SampleFilter* f); void SampleFilter_put(SampleFilter* f, double input); double SampleFilter_get(SampleFilter* f);  #endif<\/code><\/pre>\n<\/div>\n<\/div>\n<p>  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">SampleFilter.\u0441<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"cpp\">#include &quot;SampleFilter.h&quot;  static double filter_taps[SAMPLEFILTER_TAP_NUM] = {   0.037391727827352596,    -0.03299884552335979,   0.044230583967321345,    0.0023050970833628304,   -0.06768087195950104,    -0.046347105409124706,   -0.011717387509232432,   -0.0707342284185183,   -0.049766517282999544,   0.16086413543836361,   0.21561058688743148,     -0.10159456907827959,   0.6638637561392535,      -0.10159456907827959,   0.21561058688743148,     0.16086413543836361,   -0.049766517282999544,   -0.0707342284185183,   -0.011717387509232432,   -0.046347105409124706,   -0.06768087195950104,    0.0023050970833628304,   0.044230583967321345,    -0.03299884552335979,   0.037391727827352596 };  void SampleFilter_init(SampleFilter* f) {   int i;   for(i = 0; i &lt; SAMPLEFILTER_TAP_NUM; ++i)     f-&gt;history[i] = 0;   f-&gt;last_index = 0; }  void SampleFilter_put(SampleFilter* f, double input) {   f-&gt;history[f-&gt;last_index++] = input;   if(f-&gt;last_index == SAMPLEFILTER_TAP_NUM)     f-&gt;last_index = 0; }  double SampleFilter_get(SampleFilter* f) {   double acc = 0;   int index = f-&gt;last_index, i;   for(i = 0; i &lt; SAMPLEFILTER_TAP_NUM; ++i) {     index = index != 0 ? index-1 : SAMPLEFILTER_TAP_NUM-1;     acc += f-&gt;history[index] * filter_taps[i];   };   return acc; }<\/code><\/pre>\n<\/div>\n<\/div>\n<p>  <\/p>\n<p>\u041f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u043d\u0430 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0444\u0438\u043b\u044c\u0442\u0440\u0430\u0446\u0438\u0438, \u0444\u0443\u043d\u043a\u0446\u0438\u044e <em>SampleFilter_get<\/em>, \u0432\u0441\u043f\u043e\u043c\u043d\u0438\u043c \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u043d\u043d\u043e\u0435 \u0432\u044b\u0448\u0435 \u0443\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u0435 \u041a\u0418\u0425-\u0444\u0438\u043b\u044c\u0442\u0440\u0430 \u0438 \u043e\u0442\u043c\u0435\u0442\u0438\u043c \u043d\u0430\u0438\u0431\u043e\u043b\u0435\u0435 \u0432\u0430\u0436\u043d\u044b\u0435 \u0434\u043b\u044f \u043d\u0430\u0441 \u043c\u043e\u043c\u0435\u043d\u0442\u044b:<\/p>\n<p>  <\/p>\n<ul>\n<li>\u0434\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u043e\u0434\u0438\u043d \u043e\u0442\u0441\u0447\u0435\u0442 <strong>y(n)<\/strong>, \u0447\u0442\u043e \u0432 \u043d\u0430\u0448\u0435\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0440\u0430\u0432\u043d\u043e\u0441\u0438\u043b\u044c\u043d\u043e \u043e\u0434\u043d\u043e\u043c\u0443 \u0432\u044b\u0437\u043e\u0432\u0443 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 <em>SampleFilter_get<\/em> \u043d\u0430\u043c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0432 \u0446\u0438\u043a\u043b\u0435 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c 25 \u0432\u0445\u043e\u0434\u043d\u044b\u0445 \u043e\u0442\u0441\u0447\u0435\u0442\u043e\u0432 <strong>x(n)<\/strong> (\u043f\u043e\u0440\u044f\u0434\u043e\u043a \u0444\u0438\u043b\u044c\u0442\u0440\u0430, \u0441\u043c. \u043c\u0430\u043a\u0440\u043e\u0441 <em>SAMPLEFILTER_TAP_NUM<\/em> \u0438 &quot;taps&quot; \u043d\u0430 \u0441\u043a\u0440\u0438\u043d\u0448\u043e\u0442\u0435 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430);<\/li>\n<li>\u0435\u0441\u043b\u0438 \u043c\u044b \u0445\u043e\u0442\u0438\u043c, \u0447\u0442\u043e\u0431\u044b \u044d\u0442\u0430 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u043b\u0430\u0441\u044c \u043d\u0430\u043b\u0435\u0442\u0443 (\u043a \u043f\u0440\u0438\u043c\u0435\u0440\u0443, \u043f\u043e \u043c\u0435\u0440\u0435 \u043f\u043e\u0441\u0442\u0443\u043f\u043b\u0435\u043d\u0438\u044f <strong>x(n)<\/strong> \u0441 \u0410\u0426\u041f), \u0442\u043e \u043c\u044b \u0434\u043e\u043b\u0436\u043d\u044b \u0443\u0441\u043f\u0435\u0432\u0430\u0442\u044c \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0442\u044c \u0435\u0435 \u0441 \u0443\u0447\u0435\u0442\u043e\u043c sampling frequency, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0432 \u043d\u0430\u0448\u0435\u043c \u0441\u043b\u0443\u0447\u0430\u0435 2000Hz;<\/li>\n<li>\u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0438\u0437 \u044d\u0442\u0438\u0445 25 \u043e\u0442\u0441\u0447\u0435\u0442\u043e\u0432 <strong>x(n)<\/strong> \u043c\u044b \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u043c \u0440\u044f\u0434 \u043c\u0430\u0442\u0435\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0439: \u0443\u043c\u043d\u043e\u0436\u0435\u043d\u0438\u0435 \u043d\u0430 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0439 \u0435\u043c\u0443 \u043a\u043e\u044d\u0444\u0444\u0438\u0446\u0438\u0435\u043d\u0442, \u0441\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0432 \u0440\u0435\u0433\u0438\u0441\u0442\u0440-\u0430\u043a\u043a\u0443\u043c\u0443\u043b\u044f\u0442\u043e\u0440. \u041a\u0440\u043e\u043c\u0435 \u0442\u043e\u0433\u043e, \u043d\u0435 \u0437\u0430\u0431\u044b\u0432\u0430\u0435\u043c \u043e \u0441\u043e\u043f\u0443\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0445 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u044f\u0445 \u043f\u043e \u0447\u0442\u0435\u043d\u0438\u044e\/\u0437\u0430\u043f\u0438\u0441\u0438 \u0438\u0437\/\u0432 \u043f\u0430\u043c\u044f\u0442\u044c, \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0442\u0430\u043a\u0436\u0435 \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0432\u0440\u0435\u043c\u044f.<\/li>\n<\/ul>\n<p>  <\/p>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u043f\u0440\u0435\u0434\u043f\u043e\u043b\u043e\u0436\u0438\u043c, \u0447\u0442\u043e \u0443\u0441\u043b\u043e\u0432\u0438\u044f \u0437\u0430\u0434\u0430\u0447\u0438 \u0432 \u0441\u0438\u043b\u0443 \u043d\u0435\u043a\u0438\u0445 \u043e\u0431\u044a\u0435\u043a\u0442\u0438\u0432\u043d\u044b\u0445 \u043f\u0440\u0438\u0447\u0438\u043d \u0431\u044b\u043b\u0438 \u0443\u0442\u043e\u0447\u043d\u0435\u043d\u044b:<\/p>\n<p>  <\/p>\n<p><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/web\/b68\/54e\/68b\/b6854e68b20f40139d3ea5cd7c7c4a5a.png\"\/><\/p>\n<p>  <\/p>\n<p>\u0418 \u0432 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0435 \u043c\u044b \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u0432\u043e\u0442 \u0442\u0430\u043a\u0443\u044e \u0410\u0427\u0425:<\/p>\n<p>  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u0410\u0427\u0425 \u0444\u0438\u043b\u044c\u0442\u0440\u0430<\/b><\/p>\n<div class=\"spoiler_text\">\n<p><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/web\/47f\/75f\/875\/47f75f875a954ac1b426b2a7db6d3e3a.png\"\/><\/p>\n<\/div>\n<\/div>\n<p>  <\/p>\n<p>\u0427\u0442\u043e \u0434\u043b\u044f \u043d\u0430\u0441 \u0432\u0430\u0436\u043d\u043e:<\/p>\n<p>  <\/p>\n<ul>\n<li>\u0432 \u0441\u0432\u044f\u0437\u0438 \u0441 \u0443\u0432\u0435\u043b\u0438\u0447\u0435\u043d\u0438\u0435\u043c sampling frequency \u0434\u043e 4000Hz \u0432 2 \u0440\u0430\u0437\u0430 \u0441\u043e\u043a\u0440\u0430\u0442\u0438\u043b\u043e\u0441\u044c \u0432\u0440\u0435\u043c\u044f, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u043f\u043e\u0442\u0440\u0430\u0442\u0438\u0442\u044c \u043d\u0430 \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u044f, \u0435\u0441\u043b\u0438 \u0445\u043e\u0442\u0438\u043c \u043f\u043e\u043b\u0443\u0447\u0430\u0442\u044c \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b \u043d\u0430\u043b\u0435\u0442\u0443;<\/li>\n<li>\u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0438\u0442\u0435\u0440\u0430\u0446\u0438\u0439 (taps, \u043f\u043e\u0440\u044f\u0434\u043e\u043a \u0444\u0438\u043b\u044c\u0442\u0440\u0430) \u043f\u0440\u0438 \u044d\u0442\u043e\u043c \u0443\u0432\u0435\u043b\u0438\u0447\u0438\u043b\u043e\u0441\u044c \u043f\u043e\u0447\u0442\u0438 \u0432 3 \u0440\u0430\u0437\u0430 (\u0441 25 \u0434\u043e 67). \u0415\u0441\u043b\u0438 \u043d\u0435 \u0432\u043d\u043e\u0441\u0438\u0442\u044c \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0432 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 \u043d\u0435\u0440\u0430\u0432\u043d\u043e\u043c\u0435\u0440\u043d\u043e\u0441\u0442\u0438 \u0410\u0427\u0425 (\u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c ripple\/att. = 5 dB), \u0442\u043e \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0438\u0442\u0435\u0440\u0430\u0446\u0438\u0439 \u0432\u0441\u0435 \u0440\u0430\u0432\u043d\u043e \u0443\u0432\u0435\u043b\u0438\u0447\u0438\u0442\u0441\u044f \u0432 2 \u0440\u0430\u0437\u0430;<\/li>\n<li>\u0442\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u043d\u0435\u0437\u043d\u0430\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0435 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432 \u0444\u0438\u043b\u044c\u0442\u0440\u0430\u0446\u0438\u0438 \u043f\u0440\u0438\u0432\u0435\u043b\u043e \u043a \u0443\u0432\u0435\u043b\u0438\u0447\u0435\u043d\u0438\u044e \u0440\u0435\u0441\u0443\u0440\u0441\u043e\u0435\u043c\u043a\u043e\u0441\u0442\u0438 \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u0439 \u0432 6 \u0440\u0430\u0437 (\u043b\u0438\u0431\u043e \u0432 4).<\/li>\n<\/ul>\n<p>  <\/p>\n<p>\u041c\u043d\u0435 \u0431\u044b \u043d\u0435 \u0445\u043e\u0442\u0435\u043b\u043e\u0441\u044c, \u0447\u0442\u043e\u0431\u044b \u0447\u0438\u0442\u0430\u0442\u0435\u043b\u044c \u043e\u0431\u0440\u0430\u0449\u0430\u043b \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435 \u043d\u0430 \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u043d\u043d\u044b\u0435 \u0432 \u043f\u0440\u0438\u043c\u0435\u0440\u0435 \u0430\u0431\u0441\u043e\u043b\u044e\u0442\u043d\u044b\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432 \u0444\u0438\u043b\u044c\u0442\u0440\u0430. \u041e\u0441\u043d\u043e\u0432\u043d\u0430\u044f \u043c\u044b\u0441\u043b\u044c, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u0445\u043e\u0442\u0435\u043b\u043e\u0441\u044c \u0431\u044b \u0434\u043e\u043d\u0435\u0441\u0442\u0438, \u0437\u0430\u043a\u043b\u044e\u0447\u0430\u0435\u0442\u0441\u044f \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u0432 \u043a\u0430\u043a\u043e\u0439-\u0442\u043e \u043c\u043e\u043c\u0435\u043d\u0442 \u0443\u0432\u0435\u043b\u0438\u0447\u0435\u043d\u0438\u0435 \u0440\u0435\u0441\u0443\u0440\u0441\u043e\u0435\u043c\u043a\u043e\u0441\u0442\u0438 \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u0439 \u043c\u043e\u0436\u0435\u0442 \u0432\u044b\u0439\u0442\u0438 \u0437\u0430 \u0440\u0430\u043d\u0435\u0435 \u0441\u043f\u0440\u043e\u0433\u043d\u043e\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u043f\u0440\u0435\u0434\u0435\u043b\u044b. \u0418 \u043f\u043e\u0441\u043b\u0435 \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0433\u043e \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u0430, \u0435\u0433\u043e \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432, \u0438\u043b\u0438 \u0432\u0445\u043e\u0434\u043d\u044b\u0445 \u0434\u0430\u043d\u043d\u044b\u0445, \u0432\u0434\u0440\u0443\u0433, \u043c\u043e\u0436\u0435\u0442 \u043e\u043a\u0430\u0437\u0430\u0442\u044c\u0441\u044f \u0447\u0442\u043e \u0432\u0430\u0448\u0435 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u043d\u043e\u0435 \u044f\u0434\u0440\u043e \u0437\u0430\u043d\u0438\u043c\u0430\u0435\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u0442\u0435\u043c, \u0447\u0442\u043e &quot;\u043b\u043e\u043f\u0430\u0442\u0438\u0442&quot; \u0434\u0430\u043d\u043d\u044b\u0435, \u0434\u0430 \u0438 \u0442\u043e \u043d\u0435 \u0443\u0441\u043f\u0435\u0432\u0430\u0435\u0442 \u044d\u0442\u043e \u0434\u0435\u043b\u0430\u0442\u044c, \u043d\u0435 \u0433\u043e\u0432\u043e\u0440\u044f \u0443\u0436\u0435 \u043f\u0440\u043e \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u0445 \u0437\u0430\u0434\u0430\u0447. \u041b\u0438\u0431\u043e \u043e\u043d\u043e \u0443\u0441\u043f\u0435\u0448\u043d\u043e \u0441\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u0442\u0441\u044f, \u043d\u043e \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0435\u043c\u0430\u044f \u043f\u0440\u0438 \u044d\u0442\u043e\u043c \u043d\u0430\u0433\u0440\u0443\u0437\u043a\u0430 \u0438\u043b\u0438 \u0434\u043b\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u0439 \u0443\u0436\u0435 \u043d\u0435 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0442 \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u044f\u043c \u043a \u0441\u0438\u0441\u0442\u0435\u043c\u0435. \u0418 \u0432 \u044d\u0442\u043e\u0442 \u043c\u043e\u043c\u0435\u043d\u0442 \u043f\u0435\u0440\u0435\u0434 \u0432\u0430\u043c\u0438 \u043a\u0430\u043a \u043d\u0438\u043a\u043e\u0433\u0434\u0430 \u0432\u0441\u0442\u0430\u0435\u0442 \u0437\u0430\u0434\u0430\u0447\u0430 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u0438.<\/p>\n<p>  <\/p>\n<h2 id=\"skorost-vychisleniy\">\u0421\u043a\u043e\u0440\u043e\u0441\u0442\u044c \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u0439<\/h2>\n<p>  <\/p>\n<p>\u041f\u043e\u0441\u043b\u0435 \u0442\u043e\u0433\u043e, \u043a\u0430\u043a \u043c\u044b \u043d\u0430 \u043f\u0440\u043e\u0441\u0442\u043e\u043c \u043f\u0440\u0438\u043c\u0435\u0440\u0435 \u0443\u0432\u0438\u0434\u0435\u043b\u0438 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0443, \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u043d\u0430 \u0435\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u0435. \u041f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u0438 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u043e\u0432 \u0438\u0434\u0443\u0442 \u043d\u0430 \u0440\u044f\u0434 \u0443\u0445\u0438\u0449\u0440\u0435\u043d\u0438\u0439 \u0434\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u0432\u044b\u0441\u0438\u0442\u044c \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u0439: \u043f\u043e\u0432\u044b\u0448\u0430\u044e\u0442 \u0447\u0430\u0441\u0442\u043e\u0442\u0443, \u0443\u0432\u0435\u043b\u0438\u0447\u0438\u0432\u0430\u044e\u0442 \u0447\u0438\u0441\u043b\u043e \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u043d\u044b\u0445 \u044f\u0434\u0435\u0440, \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u044e\u0442 \u043d\u043e\u0432\u044b\u0435 \u043a\u043e\u043c\u0430\u043d\u0434\u044b, \u044d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442\u0438\u0440\u0443\u044e\u0442 \u0441 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0435\u0439 \u043a\u043e\u043d\u0432\u0435\u0439\u0435\u0440\u0430, \u043e\u0431\u044a\u0435\u043c\u043e\u043c \u043a\u044d\u0448\u0430, \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u044f\u0442 \u043a \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044e \u0432\u0441\u0435 \u0431\u043e\u043b\u0435\u0435 \u0438 \u0431\u043e\u043b\u0435\u0435 \u0432\u044b\u0441\u043e\u043a\u043e\u0441\u043a\u043e\u0440\u043e\u0441\u0442\u043d\u044b\u0445 \u0448\u0438\u043d \u0438 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u043e\u0432.<br \/>  \u0422\u0430\u043a\u0436\u0435 \u043d\u0438\u043a\u0442\u043e \u043d\u0435 \u0437\u0430\u0431\u0438\u0440\u0430\u0435\u0442 \u0443 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430 \u043f\u0440\u0430\u0432\u043e \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u0442\u044c \u043d\u0430\u0438\u0431\u043e\u043b\u0435\u0435 \u0443\u0437\u043a\u0438\u0435 \u043c\u0435\u0441\u0442\u0430 \u043d\u0430 \u0430\u0441\u0441\u0435\u043c\u0431\u043b\u0435\u0440\u0435, \u043f\u043e\u044d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0441 \u043e\u043f\u0446\u0438\u044f\u043c\u0438 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u0430, \u0441\u043c\u0435\u043d\u0438\u0442\u044c \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c \u043d\u0430 \u043c\u0435\u043d\u0435\u0435 \u0440\u0435\u0441\u0443\u0440\u0441\u043e\u0435\u043c\u043a\u0438\u0439 \u043b\u0438\u0431\u043e \u0432\u0435\u0434\u0443\u0449\u0438\u0439 \u0441\u0435\u0431\u044f \u0431\u043e\u043b\u0435\u0435 \u043f\u0440\u0435\u0434\u0441\u043a\u0430\u0437\u0443\u0435\u043c\u043e \u043d\u0430 \u0442\u043e\u043c \u0436\u0435 \u0434\u0438\u0430\u043f\u0430\u0437\u043e\u043d\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432.<br \/>  C\u043a\u043e\u043d\u0446\u0435\u043d\u0442\u0440\u0438\u0440\u0443\u0435\u043c\u0441\u044f \u043d\u0430 \u0434\u0432\u0443\u0445 \u0441\u043f\u043e\u0441\u043e\u0431\u0430\u0445 \u043f\u043e\u0432\u044b\u0441\u0438\u0442\u044c \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u0435 \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u044b \u0431\u0435\u0437 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0438 \u0441\u043e \u0441\u0442\u043e\u0440\u043e\u043d\u044b \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u044b \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0430:<\/p>\n<p>  <\/p>\n<ul>\n<li>\u043e\u0431\u044a\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u0435 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 \u0430\u0440\u0438\u0444\u043c\u0435\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0439 \u0432 \u043e\u0434\u043d\u0443 \u043a\u043e\u043c\u0430\u043d\u0434\u0443;<\/li>\n<li>\u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f SIMD-\u043f\u043e\u0434\u0445\u043e\u0434\u0430.<\/li>\n<\/ul>\n<p>  <\/p>\n<h3 id=\"obedinenie-arifmeticheskih-operaciy\">\u041e\u0431\u044a\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u0435 \u0430\u0440\u0438\u0444\u043c\u0435\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0439<\/h3>\n<p>  <\/p>\n<p>\u0412\u0435\u0440\u043d\u0435\u043c\u0441\u044f \u043a \u043d\u0430\u0448\u0435\u043c\u0443 \u0444\u0438\u043b\u044c\u0442\u0440\u0443 \u0438 \u0432\u043d\u0438\u043c\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u043d\u0430 \u043a\u043e\u0434 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 <em>SampleFilter_get<\/em>:<\/p>\n<p>  <\/p>\n<pre><code class=\"cpp\">double SampleFilter_get(SampleFilter* f) {   double acc = 0;   int index = f-&gt;last_index, i;   for(i = 0; i &lt; SAMPLEFILTER_TAP_NUM; ++i) {     index = index != 0 ? index-1 : SAMPLEFILTER_TAP_NUM-1;     acc += f-&gt;history[index] * filter_taps[i];   };   return acc; }<\/code><\/pre>\n<p>  <\/p>\n<p>\u0418 \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e \u043d\u0430 \u0441\u0442\u0440\u043e\u043a\u0443:<\/p>\n<p>  <\/p>\n<pre><code class=\"cpp\">acc += f-&gt;history[index] * filter_taps[i];<\/code><\/pre>\n<p>  <\/p>\n<p>\u0417\u0434\u0435\u0441\u044c \u043c\u044b \u0432\u0438\u0434\u0438\u043c 2 \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u043c\u044b\u0435 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438: \u0443\u043c\u043d\u043e\u0436\u0435\u043d\u0438\u0435 \u043d\u0430 \u043a\u043e\u044d\u0444\u0444\u0438\u0446\u0438\u0435\u043d\u0442 \u0438 \u043d\u0430\u043a\u043e\u043f\u043b\u0435\u043d\u0438\u0435 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u043e\u0432 \u044d\u0442\u043e\u0439 \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u0432 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439-\u0430\u043a\u043a\u0443\u043c\u0443\u043b\u044f\u0442\u043e\u0440\u0435. \u041f\u043e\u0434\u043e\u0431\u043d\u043e\u0435 \u0441\u043e\u0447\u0435\u0442\u0430\u043d\u0438\u0435 \u0443\u043c\u043d\u043e\u0436\u0435\u043d\u0438\u044f \u0438 \u0441\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u043e\u0447\u0435\u043d\u044c \u0447\u0430\u0441\u0442\u043e \u0432\u0441\u0442\u0440\u0435\u0447\u0430\u0435\u0442\u0441\u044f \u0432 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u0430\u0445 \u0426\u041e\u0421. \u041d\u043e \u0435\u0441\u043b\u0438 \u044d\u0442\u0438 \u0434\u0432\u0435 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438 \u0442\u0430\u043a \u0447\u0430\u0441\u0442\u043e \u0441\u043e\u0441\u0435\u0434\u0441\u0442\u0432\u0443\u044e\u0442 \u0434\u0440\u0443\u0433 \u0441 \u0434\u0440\u0443\u0433\u043e\u043c, \u0442\u043e \u043f\u043e\u0447\u0435\u043c\u0443 \u0431\u044b \u0438\u0445 \u043d\u0435 \u043e\u0431\u044a\u0435\u0434\u0438\u043d\u0438\u0442\u044c \u0432 \u043e\u0434\u043d\u0443 \u043a\u043e\u043c\u0430\u043d\u0434\u0443, \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u043c\u0443\u044e \u0432 \u0442\u0435\u0447\u0435\u043d\u0438\u0438 1 \u0442\u0430\u043a\u0442\u0430? \u0418\u0434\u0435\u044f \u0442\u0430\u043a\u043e\u0433\u043e \u043e\u0431\u044a\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u044f \u043f\u0440\u0438\u0448\u043b\u0430 \u0432 \u0433\u043e\u043b\u043e\u0432\u044b \u0438\u043d\u0436\u0435\u043d\u0435\u0440\u043e\u0432 \u043e\u0447\u0435\u043d\u044c \u0434\u0430\u0432\u043d\u043e. \u0422\u0430\u043a \u043f\u043e\u044f\u0432\u0438\u043b\u0430\u0441\u044c \u043a\u043e\u043c\u0430\u043d\u0434\u0430 &quot;\u0443\u043c\u043d\u043e\u0436\u0435\u043d\u0438\u0435 \u0441 \u043d\u0430\u043a\u043e\u043f\u043b\u0435\u043d\u0438\u0435\u043c&quot; (\u0441\u043e\u0432\u043c\u0435\u0449\u0451\u043d\u043d\u043e\u0435 \u0443\u043c\u043d\u043e\u0436\u0435\u043d\u0438\u0435-\u0441\u043b\u043e\u0436\u0435\u043d\u0438\u0435, multiply\u2013accumulate operation, MAC), \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043d\u044b\u043d\u0435 \u043f\u0440\u0438\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u0432\u043e \u0432\u0441\u0435\u0445 \u0446\u0438\u0444\u0440\u043e\u0432\u044b\u0445 \u0441\u0438\u0433\u043d\u0430\u043b\u044c\u043d\u044b\u0445 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0430\u0445:<\/p>\n<p>  <\/p>\n<p><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/web\/7e5\/32b\/2d9\/7e532b2d9e364c798d0eba5acf2f746d.png\"\/><\/p>\n<p>  <\/p>\n<h3 id=\"simd-podhod\">SIMD-\u043f\u043e\u0434\u0445\u043e\u0434<\/h3>\n<p>  <\/p>\n<p>\u041f\u043e\u0434\u043e\u0439\u0434\u0435\u043c \u043a \u0440\u0435\u0448\u0435\u043d\u0438\u044e \u0441 \u0434\u0440\u0443\u0433\u043e\u0439 \u0441\u0442\u043e\u0440\u043e\u043d\u044b. \u0410 \u043f\u043e\u0447\u0435\u043c\u0443 \u0431\u044b \u043d\u0430\u043c, \u0432\u043c\u0435\u0441\u0442\u043e \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0441 \u043a\u0430\u0436\u0434\u044b\u043c \u043e\u0442\u0441\u0447\u0435\u0442\u043e\u043c <strong>x(n)<\/strong> \u043f\u043e \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438, \u043d\u0435 \u043e\u0431\u044a\u0435\u0434\u0438\u043d\u0438\u0442\u044c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043e\u0442\u0441\u0447\u0435\u0442\u043e\u0432 \u0432 \u043e\u0434\u0438\u043d \u0432\u0435\u043a\u0442\u043e\u0440 (\u043c\u0430\u0441\u0441\u0438\u0432) \u0438 \u043f\u0440\u0438\u043c\u0435\u043d\u0438\u0442\u044c \u043a\u043e\u043c\u0430\u043d\u0434\u0443 \u0441\u0440\u0430\u0437\u0443 \u043a\u043e \u0432\u0441\u0435\u043c\u0443 \u0432\u0435\u043a\u0442\u043e\u0440\u0443, \u0430 \u0435\u0441\u043b\u0438 \u0442\u043e\u0447\u043d\u0435\u0435 \u2014 \u0442\u043e \u043e\u0434\u043d\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e \u043a \u043a\u0430\u0436\u0434\u043e\u043c\u0443 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0443 \u0432\u0435\u043a\u0442\u043e\u0440\u0430? \u0412 \u044d\u0442\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0437\u0430 \u043e\u0434\u0438\u043d \u0442\u0430\u043a\u0442 (\u043d\u0435 \u0441\u0447\u0438\u0442\u0430\u044f \u0440\u0430\u0431\u043e\u0442\u0443 \u0441 \u043f\u0430\u043c\u044f\u0442\u044c\u044e) \u043c\u043e\u0436\u043d\u043e \u0431\u0443\u0434\u0435\u0442 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0441\u0440\u0430\u0437\u0443 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043e\u0442\u0441\u0447\u0435\u0442\u043e\u0432:<\/p>\n<p>  <\/p>\n<p><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/web\/b23\/f7a\/1cd\/b23f7a1cdb174a5183368386eaaf9ff2.png\"\/><\/p>\n<p>  <\/p>\n<p>\u0418 \u0447\u0435\u043c \u0431\u043e\u043b\u044c\u0448\u0435 \u0431\u0443\u0434\u0435\u0442 \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e \u0434\u043e\u043f\u0443\u0441\u0442\u0438\u043c\u044b\u0439 \u0440\u0430\u0437\u043c\u0435\u0440 \u0432\u0435\u043a\u0442\u043e\u0440\u0430, \u0442\u0435\u043c \u0432\u044b\u0448\u0435 \u0431\u0443\u0434\u0435\u0442 \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0434\u0430\u043d\u043d\u044b\u0445. \u0414\u0430\u043d\u043d\u044b\u0439 \u043f\u0440\u0438\u043d\u0446\u0438\u043f \u043e\u0440\u0433\u0430\u043d\u0438\u0437\u0430\u0446\u0438\u0438 \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u0439 \u043d\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f <strong>SIMD<\/strong> (single instruction, multiple data; \u043e\u0434\u0438\u043d\u043e\u0447\u043d\u044b\u0439 \u043f\u043e\u0442\u043e\u043a \u043a\u043e\u043c\u0430\u043d\u0434, \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 \u043f\u043e\u0442\u043e\u043a \u0434\u0430\u043d\u043d\u044b\u0445) [<a href=\"https:\/\/ru.wikipedia.org\/wiki\/SIMD\">L13<\/a>]. \u041d\u0430 \u044d\u0442\u043e\u043c \u043f\u043e\u0434\u0445\u043e\u0434\u0435 \u0441\u0442\u0440\u043e\u0438\u0442\u0441\u044f \u0440\u0430\u0431\u043e\u0442\u0430 \u0432\u0435\u043a\u0442\u043e\u0440\u043d\u044b\u0445 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u043e\u0432 [<a href=\"https:\/\/ru.wikipedia.org\/wiki\/%D0%92%D0%B5%D0%BA%D1%82%D0%BE%D1%80%D0%BD%D1%8B%D0%B9_%D0%BF%D1%80%D0%BE%D1%86%D0%B5%D1%81%D1%81%D0%BE%D1%80\">L14<\/a>] \u0438 \u0432\u0435\u043a\u0442\u043e\u0440\u043d\u044b\u0445 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0439 \u043a \u0441\u043a\u0430\u043b\u044f\u0440\u043d\u044b\u043c \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0430\u043c: SSE \u0438 AVX \u0434\u043b\u044f \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u044b x86, MIPS SIMD [<a href=\"https:\/\/www.imgtec.com\/mips\/architectures\/simd\/\">L15<\/a>] \u0434\u043b\u044f \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u044b MIPS.<\/p>\n<p>  <\/p>\n<h2 id=\"mips-simd\">MIPS SIMD<\/h2>\n<p>  <\/p>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c, \u043a\u043e\u0433\u0434\u0430 \u043c\u044b \u043f\u043e\u043d\u0438\u043c\u0430\u0435\u043c \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u0435 \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u044b, \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0441\u0442\u0440\u043e\u044f\u0442\u0441\u044f \u0432\u0435\u043a\u0442\u043e\u0440\u043d\u044b\u0435 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u044b, \u043c\u043e\u0436\u043d\u043e \u043f\u0435\u0440\u0435\u0439\u0442\u0438 \u043d\u0435\u043f\u043e\u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u043a MIPS SIMD. \u0418\u0441\u0447\u0435\u0440\u043f\u044b\u0432\u0430\u044e\u0449\u0435\u0435 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u044d\u0442\u043e\u0433\u043e \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u043d\u043e \u0432 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438 [<a href=\"https:\/\/github.com\/zhelnio\/memos\/raw\/master\/public\/03_mips_simd\/doc\/D2_MD00866-2B-MSA32-AFP-01.12.pdf\">D2<\/a>], \u043e\u0442\u043c\u0435\u0442\u0438\u043c \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u0435 \u043c\u043e\u043c\u0435\u043d\u0442\u044b:<\/p>\n<p>  <\/p>\n<ul>\n<li>\u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e \u0432 \u0434\u0432\u0443\u0445 \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u0430\u0445: MIPS32 SIMD \u0438 MIPS64 SIMD. \u0422\u0430\u043a \u043a\u0430\u043a \u0411\u0430\u0439\u043a\u0430\u043b-\u04221 \u043e\u0441\u043d\u043e\u0432\u0430\u043d \u043d\u0430 \u044f\u0434\u0440\u0430\u0445 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u044b MIPS 32 r5, \u0442\u043e \u0432 \u0434\u0430\u043b\u044c\u043d\u0435\u0439\u0448\u0435\u043c, \u0443\u043f\u043e\u043c\u0438\u043d\u0430\u044f MIPS SIMD, \u0431\u0443\u0434\u0435\u043c \u0438\u043c\u0435\u0442\u044c \u0432 \u0432\u0432\u0438\u0434\u0443 MIPS32 SIMD. \u041d\u0430 \u0441\u0430\u0439\u0442\u0435 \u0438 \u0432 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438 Imagination Technologies \u043e\u043d\u043e \u0442\u0430\u043a\u0436\u0435 \u0443\u043f\u043e\u043c\u0438\u043d\u0430\u0435\u0442\u0441\u044f \u043a\u0430\u043a MSA (MIPS SIMD Architecture);<\/li>\n<li>\n<p>\u0440\u0430\u0431\u043e\u0442\u0430 \u043e\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0441 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c 32x 128-\u0431\u0438\u0442\u043d\u044b\u0445 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u043e\u0432 \u0434\u043b\u044f \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0432\u0435\u043a\u0442\u043e\u0440\u043d\u044b\u0445 \u0434\u0430\u043d\u043d\u044b\u0445. \u041a\u0430\u0436\u0434\u044b\u0439 \u0438\u0437 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d \u043a\u0430\u043a: 16x 8-\u0431\u0438\u0442\u043d\u044b\u0445 \u0432\u0435\u043a\u0442\u043e\u0440\u043e\u0432, 8x 16-\u0431\u0438\u0442\u043d\u044b\u0445, 4x 32-\u0431\u0438\u0442\u043d\u044b\u0445, \u043b\u0438\u0431\u043e 2x 64-\u0431\u0438\u0442\u043d\u044b\u0445:<br \/>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/web\/9f8\/df1\/80f\/9f8df180fe0749ac93753d269199ab48.png\"\/><\/p>\n<p>  <\/li>\n<li>\u043f\u0440\u0435\u0434\u043f\u043e\u043b\u0430\u0433\u0430\u0435\u0442 \u0431\u043e\u043b\u0435\u0435 150 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0439 \u043f\u043e \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0435 \u0434\u0430\u043d\u043d\u044b\u0445: \u0446\u0435\u043b\u043e\u0447\u0438\u0441\u043b\u0435\u043d\u043d\u044b\u0445, \u0441 \u043f\u043b\u0430\u0432\u0430\u044e\u0449\u0435\u0439 \u0438 \u0444\u0438\u043a\u0441\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0439 \u0442\u043e\u0447\u043a\u043e\u0439, \u0432\u043a\u043b\u044e\u0447\u0430\u044f \u0431\u0438\u0442\u043e\u0432\u044b\u0435 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438, \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438 \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u044f, \u043a\u043e\u043d\u0432\u0435\u0440\u0442\u0430\u0446\u0438\u0438:<\/li>\n<\/ul>\n<p>  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u0426\u0435\u043b\u043e\u0447\u0438\u0441\u043b\u0435\u043d\u043d\u044b\u0435 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438<\/b><\/p>\n<div class=\"spoiler_text\">\n<table>\n<thead>\n<tr>\n<th>Mnemonic<\/th>\n<th>Instruction Description<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>ADDV, ADDVI<\/td>\n<td>Add<\/td>\n<\/tr>\n<tr>\n<td>ADD_A, ADDS_A<\/td>\n<td>Add and Saturated Add Absolute Values<\/td>\n<\/tr>\n<tr>\n<td>ADDS_S, ADDS_U<\/td>\n<td>Signed and Unsigned Saturated Add<\/td>\n<\/tr>\n<tr>\n<td>HADD_S, HADD_U<\/td>\n<td>Signed and Unsigned Horizontal Add<\/td>\n<\/tr>\n<tr>\n<td>ASUB_S, ASUB_U<\/td>\n<td>Absolute Value of Signed and Unsigned Subtract<\/td>\n<\/tr>\n<tr>\n<td>AVE_S, AVE_U<\/td>\n<td>Signed and Unsigned Average<\/td>\n<\/tr>\n<tr>\n<td>AVER_S, AVER_U<\/td>\n<td>Signed and Unsigned Average with Rounding<\/td>\n<\/tr>\n<tr>\n<td>DOTP_S, DOTP_U<\/td>\n<td>Signed and Unsigned Dot Product<\/td>\n<\/tr>\n<tr>\n<td>DPADD_S, DPADD_U<\/td>\n<td>Signed and Unsigned Dot Product Add<\/td>\n<\/tr>\n<tr>\n<td>DPSUB_S, DPSUB_U<\/td>\n<td>Signed and Unsigned Dot Product Subtract<\/td>\n<\/tr>\n<tr>\n<td>DIV_S, DIV_U<\/td>\n<td>Divide<\/td>\n<\/tr>\n<tr>\n<td>MADDV<\/td>\n<td>Multiply-Add<\/td>\n<\/tr>\n<tr>\n<td>MAX_A, MIN_A<\/td>\n<td>Maximum and Minimum of Absolute Values<\/td>\n<\/tr>\n<tr>\n<td>MAX_S, MAXI_S, MAX_U, MAXI_U<\/td>\n<td>Signed and Unsigned Maximum<\/td>\n<\/tr>\n<tr>\n<td>MIN_S, MINI_S, MIN_U, MINI_U<\/td>\n<td>Signed and Unsigned Maximum<\/td>\n<\/tr>\n<tr>\n<td>MSUBV<\/td>\n<td>Multiply-Subtract<\/td>\n<\/tr>\n<tr>\n<td>MULV<\/td>\n<td>Multiply<\/td>\n<\/tr>\n<tr>\n<td>MOD_S, MOD_U<\/td>\n<td>Signed and Unsigned Remainder (Modulo)<\/td>\n<\/tr>\n<tr>\n<td>SAT_S, SAT_U<\/td>\n<td>Signed and Unsigned Saturate<\/td>\n<\/tr>\n<tr>\n<td>SUBS_S, SUBS_U<\/td>\n<td>Signed and Unsigned Saturated Subtract<\/td>\n<\/tr>\n<tr>\n<td>HSUB_S, HSUB_U<\/td>\n<td>Signed and Unsigned Horizontal Subtract<\/td>\n<\/tr>\n<tr>\n<td>SUBSUU_S<\/td>\n<td>Signed Saturated Unsigned Subtract<\/td>\n<\/tr>\n<tr>\n<td>SUBSUS_U<\/td>\n<td>Unsigned Saturated Signed Subtract from Unsigned<\/td>\n<\/tr>\n<tr>\n<td>SUBV, SUBVI<\/td>\n<td>Subtract<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u0411\u0438\u0442\u043e\u0432\u044b\u0435 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438<\/b><\/p>\n<div class=\"spoiler_text\">\n<table>\n<thead>\n<tr>\n<th>Mnemonic<\/th>\n<th>Instruction Description<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>AND, ANDI<\/td>\n<td>Logical And<\/td>\n<\/tr>\n<tr>\n<td>BCLR, BCLRI<\/td>\n<td>Bit Clear<\/td>\n<\/tr>\n<tr>\n<td>BINSL, BINSLI, BINSR, BINSRI<\/td>\n<td>Bit Insert Left and Right<\/td>\n<\/tr>\n<tr>\n<td>BMNZ, BMNZI<\/td>\n<td>Bit Move If Not Zero<\/td>\n<\/tr>\n<tr>\n<td>BMZ, BMZI<\/td>\n<td>Bit Move If Zero<\/td>\n<\/tr>\n<tr>\n<td>BNEG, BNEGI<\/td>\n<td>Bit Negate<\/td>\n<\/tr>\n<tr>\n<td>BSEL, BSELI<\/td>\n<td>Bit Select<\/td>\n<\/tr>\n<tr>\n<td>BSET, BSETI<\/td>\n<td>Bit Set<\/td>\n<\/tr>\n<tr>\n<td>NLOC Leading<\/td>\n<td>One Bits Count<\/td>\n<\/tr>\n<tr>\n<td>NLZC Leading<\/td>\n<td>Zero Bits Count<\/td>\n<\/tr>\n<tr>\n<td>NOR, NORI<\/td>\n<td>Logical Negated Or<\/td>\n<\/tr>\n<tr>\n<td>PCNT<\/td>\n<td>Population (Bits Set to 1) Count<\/td>\n<\/tr>\n<tr>\n<td>OR, ORI<\/td>\n<td>Logical Or<\/td>\n<\/tr>\n<tr>\n<td>SLL, SLLI<\/td>\n<td>Shift Left<\/td>\n<\/tr>\n<tr>\n<td>SRA, SRAI<\/td>\n<td>Shift Right Arithmetic<\/td>\n<\/tr>\n<tr>\n<td>SRAR, SRARI<\/td>\n<td>Rounding Shift Right Arithmetic<\/td>\n<\/tr>\n<tr>\n<td>SRL, SRLI<\/td>\n<td>Shift Right Logical<\/td>\n<\/tr>\n<tr>\n<td>SRLR, SRLRI<\/td>\n<td>Rounding Shift Right Logical<\/td>\n<\/tr>\n<tr>\n<td>XOR, XORI<\/td>\n<td>Logical Exclusive Or<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u0410\u0440\u0438\u0444\u043c\u0435\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438 \u0441 \u043f\u043b\u0430\u0432\u0430\u044e\u0449\u0435\u0439 \u0442\u043e\u0447\u043a\u043e\u0439<\/b><\/p>\n<div class=\"spoiler_text\">\n<table>\n<thead>\n<tr>\n<th>Mnemonic<\/th>\n<th>Instruction Description<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>FADD<\/td>\n<td>Floating-Point Addition<\/td>\n<\/tr>\n<tr>\n<td>FDIV<\/td>\n<td>Floating-Point Division<\/td>\n<\/tr>\n<tr>\n<td>FEXP2<\/td>\n<td>Floating-Point Base 2 Exponentiation<\/td>\n<\/tr>\n<tr>\n<td>FLOG2<\/td>\n<td>Floating-Point Base 2 Logarithm<\/td>\n<\/tr>\n<tr>\n<td>FMADD, FMSUB<\/td>\n<td>Floating-Point Fused Multiply-Add and Multiply-Subtract<\/td>\n<\/tr>\n<tr>\n<td>FMAX, FMIN<\/td>\n<td>Floating-Point Maximum and Minimum<\/td>\n<\/tr>\n<tr>\n<td>FMAX_A, FMIN_A<\/td>\n<td>Floating-Point Maximum and Minimum of Absolute Values<\/td>\n<\/tr>\n<tr>\n<td>FMUL<\/td>\n<td>Floating-Point Multiplication<\/td>\n<\/tr>\n<tr>\n<td>FRCP<\/td>\n<td>Approximate Floating-Point Reciprocal<\/td>\n<\/tr>\n<tr>\n<td>FRINT<\/td>\n<td>Floating-Point Round to Integer<\/td>\n<\/tr>\n<tr>\n<td>FRSQRT<\/td>\n<td>Approximate Floating-Point Reciprocal of Square Root<\/td>\n<\/tr>\n<tr>\n<td>FSQRT<\/td>\n<td>Floating-Point Square Root<\/td>\n<\/tr>\n<tr>\n<td>FSUB<\/td>\n<td>Floating-Point Subtraction<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u041d\u0435 \u0430\u0440\u0438\u0444\u043c\u0435\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438 \u0441 \u043f\u043b\u0430\u0432\u0430\u044e\u0449\u0435\u0439 \u0442\u043e\u0447\u043a\u043e\u0439<\/b><\/p>\n<div class=\"spoiler_text\">\n<table>\n<thead>\n<tr>\n<th>Mnemonic<\/th>\n<th>Instruction Description<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>FCLASS<\/td>\n<td>Floating-Point Class Mask<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u041e\u043f\u0435\u0440\u0430\u0446\u0438\u0438 \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u044f \u0441 \u043f\u043b\u0430\u0432\u0430\u044e\u0449\u0435\u0439 \u0442\u043e\u0447\u043a\u043e\u0439<\/b><\/p>\n<div class=\"spoiler_text\">\n<table>\n<thead>\n<tr>\n<th>Mnemonic<\/th>\n<th>Instruction Description<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>FCAF<\/td>\n<td>Floating-Point Quiet Compare Always False<\/td>\n<\/tr>\n<tr>\n<td>FCUN<\/td>\n<td>Floating-Point Quiet Compare Unordered<\/td>\n<\/tr>\n<tr>\n<td>FCOR<\/td>\n<td>Floating-Point Quiet Compare Ordered<\/td>\n<\/tr>\n<tr>\n<td>FCEQ<\/td>\n<td>Floating-Point Quiet Compare Equal<\/td>\n<\/tr>\n<tr>\n<td>FCUNE<\/td>\n<td>Floating-Point Quiet Compare Unordered or Not Equal<\/td>\n<\/tr>\n<tr>\n<td>FCUEQ<\/td>\n<td>Floating-Point Quiet Compare Unordered or Equal<\/td>\n<\/tr>\n<tr>\n<td>FCNE<\/td>\n<td>Floating-Point Quiet Compare Not Equal<\/td>\n<\/tr>\n<tr>\n<td>FCLT<\/td>\n<td>Floating-Point Quiet Compare Less Than<\/td>\n<\/tr>\n<tr>\n<td>FCULT<\/td>\n<td>Floating-Point Quiet Compare Unordered or Less Than<\/td>\n<\/tr>\n<tr>\n<td>FCLE<\/td>\n<td>Floating-Point Quiet Compare Less Than or Equal<\/td>\n<\/tr>\n<tr>\n<td>FCULE<\/td>\n<td>Floating-Point Quiet Compare Unordered or Less Than or Equal<\/td>\n<\/tr>\n<tr>\n<td>FSAF<\/td>\n<td>Floating-Point Signaling Compare Always False<\/td>\n<\/tr>\n<tr>\n<td>FSUN<\/td>\n<td>Floating-Point Signaling Compare Unordered<\/td>\n<\/tr>\n<tr>\n<td>FSOR<\/td>\n<td>Floating-Point Signaling Compare Ordered<\/td>\n<\/tr>\n<tr>\n<td>FSEQ<\/td>\n<td>Floating-Point Signaling Compare Equal<\/td>\n<\/tr>\n<tr>\n<td>FSUNE<\/td>\n<td>Floating-Point Signaling Compare Unordered or Not Equal<\/td>\n<\/tr>\n<tr>\n<td>FSUEQ<\/td>\n<td>Floating-Point Signaling Compare Unordered or Equal<\/td>\n<\/tr>\n<tr>\n<td>FSNE<\/td>\n<td>Floating-Point Signaling Compare Not Equal<\/td>\n<\/tr>\n<tr>\n<td>FSLT<\/td>\n<td>Floating-Point Signaling Compare Less Than<\/td>\n<\/tr>\n<tr>\n<td>FSULT<\/td>\n<td>Floating-Point Signaling Compare Unordered or Less Than<\/td>\n<\/tr>\n<tr>\n<td>FSLE<\/td>\n<td>Floating-Point Signaling Compare Less Than or Equal<\/td>\n<\/tr>\n<tr>\n<td>FSULE<\/td>\n<td>Floating-Point Signaling Compare Unordered or Less Than or Equal<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u041e\u043f\u0435\u0440\u0430\u0446\u0438\u0438 \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0441 \u043f\u043b\u0430\u0432\u0430\u044e\u0449\u0435\u0439 \u0442\u043e\u0447\u043a\u043e\u0439<\/b><\/p>\n<div class=\"spoiler_text\">\n<table>\n<thead>\n<tr>\n<th>Mnemonic<\/th>\n<th>Instruction Description<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>FEXDO<\/td>\n<td>Floating-Point Down-Convert Interchange Format<\/td>\n<\/tr>\n<tr>\n<td>FEXUPL, FEXUPR<\/td>\n<td>Left-Half and Right-Half Floating-Point Up-Convert Interchange Format<\/td>\n<\/tr>\n<tr>\n<td>FFINT_S, FFINT_U<\/td>\n<td>Floating-Point Convert from Signed and Unsigned Integer<\/td>\n<\/tr>\n<tr>\n<td>FFQL, FFQR<\/td>\n<td>Left-Half and Right-Half Floating-Point Convert from Fixed-Point<\/td>\n<\/tr>\n<tr>\n<td>FTINT_S, FTINT_U<\/td>\n<td>Floating-Point Round and Convert to Signed and Unsigned Integer<\/td>\n<\/tr>\n<tr>\n<td>FTRUNC_S, FTRUNC_U<\/td>\n<td>Floating-Point Truncate and Convert to Signed and Unsigned Integer<\/td>\n<\/tr>\n<tr>\n<td>FTQ<\/td>\n<td>Floating-Point Round and Convert to Fixed-Point<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u041e\u043f\u0435\u0440\u0430\u0446\u0438\u0438 \u0441 \u0444\u0438\u043a\u0441\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0439 \u0442\u043e\u0447\u043a\u043e\u0439<\/b><\/p>\n<div class=\"spoiler_text\">\n<table>\n<thead>\n<tr>\n<th>Mnemonic<\/th>\n<th>Instruction Description<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>MADD_Q, MADDR_Q<\/td>\n<td>Fixed-Point Multiply and Add without and with Rounding<\/td>\n<\/tr>\n<tr>\n<td>MSUB_Q, MSUBR_Q<\/td>\n<td>Fixed-Point Multiply and Subtract without and with Rounding<\/td>\n<\/tr>\n<tr>\n<td>MUL_Q, MULR_Q<\/td>\n<td>Fixed-Point Multiply without and with Rounding<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u041e\u043f\u0435\u0440\u0430\u0446\u0438\u0438 \u0432\u0435\u0442\u0432\u043b\u0435\u043d\u0438\u044f<\/b><\/p>\n<div class=\"spoiler_text\">\n<table>\n<thead>\n<tr>\n<th>Mnemonic<\/th>\n<th>Instruction Description<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>BNZ<\/td>\n<td>Branch If Not Zero<\/td>\n<\/tr>\n<tr>\n<td>BZ<\/td>\n<td>Branch If Zero<\/td>\n<\/tr>\n<tr>\n<td>CEQ, CEQI<\/td>\n<td>Compare Equal<\/td>\n<\/tr>\n<tr>\n<td>CLE_S, CLEI_S, CLE_U, CLEI_U<\/td>\n<td>Compare Less-Than-or-Equal Signed and Unsigned<\/td>\n<\/tr>\n<tr>\n<td>CLT_S, CLTI_S, CLT_U, CLTI_U<\/td>\n<td>Compare Less-Than Signed and Unsigned<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u041e\u043f\u0435\u0440\u0430\u0446\u0438\u0438 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u0438 \u0432\u044b\u0433\u0440\u0443\u0437\u043a\u0438 \u0432\u0435\u043a\u0442\u043e\u0440\u043e\u0432<\/b><\/p>\n<div class=\"spoiler_text\">\n<table>\n<thead>\n<tr>\n<th>Mnemonic<\/th>\n<th>Instruction Description<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>CFCMSA, CTCMSA<\/td>\n<td>Copy from and copy to MSA Control Register<\/td>\n<\/tr>\n<tr>\n<td>LD<\/td>\n<td>Load Vector<\/td>\n<\/tr>\n<tr>\n<td>LDI<\/td>\n<td>Load Immediate<\/td>\n<\/tr>\n<tr>\n<td>MOVE<\/td>\n<td>Vector to Vector Move<\/td>\n<\/tr>\n<tr>\n<td>SPLAT, SPLATI<\/td>\n<td>Replicate Vector Element<\/td>\n<\/tr>\n<tr>\n<td>FILL Fill<\/td>\n<td>Vector from GPR<\/td>\n<\/tr>\n<tr>\n<td>INSERT, INSVE<\/td>\n<td>Insert GPR and Vector element 0 to Vector Element<\/td>\n<\/tr>\n<tr>\n<td>COPY_S, COPY_U<\/td>\n<td>Copy element to GPR Signed and Unsigned<\/td>\n<\/tr>\n<tr>\n<td>ST<\/td>\n<td>Store Vector<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u041e\u043f\u0435\u0440\u0430\u0446\u0438\u0438 \u043f\u0435\u0440\u0435\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432 \u0432\u0435\u043a\u0442\u043e\u0440\u0430<\/b><\/p>\n<div class=\"spoiler_text\">\n<table>\n<thead>\n<tr>\n<th>Mnemonic<\/th>\n<th>Instruction Description<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>ILVEV, ILVOD<\/td>\n<td>Interleave Even, Odd<\/td>\n<\/tr>\n<tr>\n<td>ILVL, ILVR<\/td>\n<td>Interleave the Left, Right<\/td>\n<\/tr>\n<tr>\n<td>PCKEV, PCKOD<\/td>\n<td>Pack Even and Odd Elements<\/td>\n<\/tr>\n<tr>\n<td>SHF<\/td>\n<td>Set Shuffle<\/td>\n<\/tr>\n<tr>\n<td>SLD, SLDI<\/td>\n<td>Element Slide<\/td>\n<\/tr>\n<tr>\n<td>VSHF<\/td>\n<td>Vector shuffle<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u0418\u043d\u044b\u0435 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438<\/b><\/p>\n<div class=\"spoiler_text\">\n<table>\n<thead>\n<tr>\n<th>Mnemonic<\/th>\n<th>Instruction Description<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>LSA<\/td>\n<td>Left-shift add or load\/store address calculation<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>  <\/p>\n<ul>\n<li>\u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u043e \u043a\u043e\u043c\u0430\u043d\u0434 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e \u0432 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u0430\u0445, \u043e\u0442\u043b\u0438\u0447\u0430\u044e\u0449\u0438\u0445\u0441\u044f \u0434\u0440\u0443\u0433 \u043e\u0442 \u0434\u0440\u0443\u0433\u0430 \u0440\u0430\u0437\u043c\u0435\u0440\u043e\u043c \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430 \u0432\u0435\u043a\u0442\u043e\u0440\u0430 \u0438 \u0442\u0438\u043f\u043e\u043c \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u043c\u044b\u0445 \u0434\u0430\u043d\u043d\u044b\u0445. \u0422\u0430\u043a \u0443\u0436\u0435 \u0437\u043d\u0430\u043a\u043e\u043c\u0430\u044f \u043d\u0430\u043c \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u044f \u0443\u043c\u043d\u043e\u0436\u0435\u043d\u0438\u044f \u0441 \u043d\u0430\u043a\u043e\u043f\u043b\u0435\u043d\u0438\u0435\u043c \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u0430 \u043a\u0430\u043a: FMADD \u2014 \u0434\u043b\u044f \u0447\u0438\u0441\u0435\u043b \u0441 \u043f\u043b\u0430\u0432\u0430\u044e\u0449\u0435\u0439 \u0442\u043e\u0447\u043a\u043e\u0439, MADD_Q \u2014 \u0434\u043b\u044f \u0447\u0438\u0441\u0435\u043b \u0441 \u0444\u0438\u043a\u0441\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0439 \u0442\u043e\u0447\u043a\u043e\u0439 (\u0441 \u043d\u0430\u0441\u044b\u0449\u0435\u043d\u0438\u0435\u043c), MADDR_Q \u2014 \u0434\u043b\u044f \u0447\u0438\u0441\u0435\u043b \u0441 \u0444\u0438\u043a\u0441\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0439 \u0442\u043e\u0447\u043a\u043e\u0439 (\u0441 \u043d\u0430\u0441\u044b\u0449\u0435\u043d\u0438\u0435\u043c \u0438 \u043e\u043a\u0440\u0443\u0433\u043b\u0435\u043d\u0438\u0435\u043c), MADDV \u2014 \u0434\u043b\u044f \u0446\u0435\u043b\u044b\u0445 \u0447\u0438\u0441\u0435\u043b. \u041f\u0440\u0438 \u044d\u0442\u043e\u043c, \u043a \u043f\u0440\u0438\u043c\u0435\u0440\u0443, MADDV \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u0430 \u0432 4\u0445 \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u0430\u0445: MADDV.B \u2014 \u043a\u043e\u0433\u0434\u0430 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430\u043c\u0438 \u0434\u043b\u044f \u043f\u043e\u0431\u0430\u0439\u0442\u043e\u0432\u043e\u0439 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 (x8), MADDV.H \u2014 \u043a\u043e\u0433\u0434\u0430 \u043a\u0430\u0436\u0434\u044b\u0439 \u044d\u043b\u0435\u043c\u0435\u043d\u0442 \u0432\u0435\u043a\u0442\u043e\u0440\u0430 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043f\u043e\u043b\u0443\u0441\u043b\u043e\u0432\u043e\u043c (x16), MADDV.W \u2014 \u0441\u043b\u043e\u0432\u043e\u043c (x32) \u0438 MADDV.D \u2014 \u0434\u0432\u043e\u0439\u043d\u044b\u043c \u0441\u043b\u043e\u0432\u043e\u043c (x64)<\/li>\n<\/ul>\n<p>  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u0424\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u043e\u0435 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u043a\u043e\u043c\u0430\u043d\u0434\u044b<\/b><\/p>\n<div class=\"spoiler_text\">\n<p><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/web\/68f\/20a\/c03\/68f20ac03b554be8bc7eaac121a65ced.png\"\/><\/p>\n<\/div>\n<\/div>\n<p>  <\/p>\n<h2 id=\"podderzhka-na-urovne-kompilyatora\">\u041f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 \u043d\u0430 \u0443\u0440\u043e\u0432\u043d\u0435 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u0430<\/h2>\n<p>  <\/p>\n<p>MIPS SIMD \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u043e\u043c gcc, \u0432\u043c\u0435\u0441\u0442\u0435 \u0441 \u0442\u0435\u043c \u0443 \u044d\u0442\u043e\u0439 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0438 \u0435\u0441\u0442\u044c \u0441\u0432\u043e\u0438 \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e\u0441\u0442\u0438:<\/p>\n<p>  <\/p>\n<ul>\n<li>\u0434\u043b\u044f \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432 \u0432\u0435\u043a\u0442\u043e\u0440\u0430 \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u043e\u0439 \u0440\u0430\u0437\u043c\u0435\u0440\u043d\u043e\u0441\u0442\u0438 \u0432\u0432\u0435\u0434\u0435\u043d\u044b \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0435 \u0442\u0438\u043f\u044b \u0434\u0430\u043d\u043d\u044b\u0445 [<a href=\"https:\/\/gcc.gnu.org\/onlinedocs\/gcc\/MIPS-SIMD-Architecture-_0028MSA_0029-Support.html#MIPS-SIMD-Architecture-_0028MSA_0029-Support\">L16<\/a>];<\/li>\n<li>\u043c\u044b \u0438\u0437\u0431\u0430\u0432\u043b\u0435\u043d\u044b \u043e\u0442 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u0438 \u043d\u0435\u043f\u043e\u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0439 \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u043c\u0438 (\u0440\u0430\u0431\u043e\u0442\u0430 \u0432\u0435\u0434\u0435\u0442\u0441\u044f \u043d\u0430 \u0443\u0440\u043e\u0432\u043d\u0435 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0435\u0433\u043e \u0442\u0438\u043f\u0430);<\/li>\n<li>\u0434\u043b\u044f \u0432\u0441\u0435\u0445 \u043f\u0435\u0440\u0435\u0447\u0438\u0441\u043b\u0435\u043d\u043d\u044b\u0445 \u0432\u044b\u0448\u0435 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0439 \u0432\u0432\u0435\u0434\u0435\u043d\u044b \u0432\u044b\u0441\u043e\u043a\u043e\u0443\u0440\u043e\u0432\u043d\u0435\u0432\u044b\u0435 \u043f\u0441\u0435\u0432\u0434\u043e\u043d\u0438\u043c\u044b [<a href=\"https:\/\/gcc.gnu.org\/onlinedocs\/gcc\/MIPS-SIMD-Architecture-Built-in-Functions.html#MIPS-SIMD-Architecture-Built-in-Functions\">L17<\/a>];<\/li>\n<li>\u0441\u043e\u0433\u043b\u0430\u0441\u043d\u043e \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438 gcc, \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440 \u043d\u0435 \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u0442 \u0441\u0430\u043c\u043e\u0441\u0442\u043e\u044f\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u0440\u0435\u0448\u0435\u043d\u0438\u0439 \u043e\u0431 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0438 MIPS SIMD, \u044d\u0442\u043e \u0436\u0435 \u043f\u043e\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0430\u0435\u0442\u0441\u044f \u043d\u0435\u043f\u043b\u043e\u0445\u043e \u0440\u0430\u0437\u043e\u0431\u0440\u0430\u043d\u043d\u044b\u043c \u043f\u0440\u0438\u043c\u0435\u0440\u043e\u043c \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u044f MIPS SIMD, \u043e\u043f\u0443\u0431\u043b\u0438\u043a\u043e\u0432\u0430\u043d\u043d\u043e\u043c \u043d\u0430 \u0441\u0430\u0439\u0442\u0435 Imagination Technologies [<a href=\"https:\/\/github.com\/zhelnio\/memos\/raw\/master\/public\/03_mips_simd\/doc\/D3_MD00927-SIMD-programming-whitepaper.pdf\">D3<\/a>]. \u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u0435\u0441\u043b\u0438 \u043f\u0440\u043e\u0432\u0435\u0441\u0442\u0438 \u0433\u0440\u0443\u0431\u0443\u044e \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u044e, \u0442\u043e \u0440\u0430\u0431\u043e\u0442\u0430 \u0441 MIPS SIMD \u0431\u043b\u0438\u0436\u0435 \u043a \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0438\u044e \u0430\u0441\u0441\u0435\u043c\u0431\u043b\u0435\u0440\u043d\u044b\u0445 \u0432\u0441\u0442\u0430\u0432\u043e\u043a, \u043d\u0435\u0436\u0435\u043b\u0438 \u043a \u0432\u044b\u0441\u043e\u043a\u043e\u0443\u0440\u043e\u0432\u043d\u0435\u0432\u043e\u043c\u0443 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044e. \u0427\u0442\u043e \u0434\u043e\u043b\u0436\u043d\u043e \u0443\u0447\u0438\u0442\u044b\u0432\u0430\u0442\u044c\u0441\u044f \u043f\u0440\u0438 \u043f\u0440\u0438\u043d\u044f\u0442\u0438\u0438 \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u043e\u0431 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u0438.<\/li>\n<\/ul>\n<p>  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u041a\u043e\u0434 \u0434\u043e \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u0438<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"cpp\">#define ROUND_POWER_OF_TWO(value, n) (((value) + (1 &lt;&lt; ((n) - 1))) &gt;&gt; (n)) static inline unsigned char clip_pixel(int i32Val) {     return ((i32Val) &gt; 255) ? 255u : ((i32Val) &lt; 0) ? 0u : (i32Val); } void vert_filter_8taps_16width_c(unsigned char *pSrc, \/\/ SOURCE POINTER int SrcStride,       \/\/ SOURCE BUFFER PITCH unsigned char *pDst, \/\/ DEST POINTER int DstStride,       \/\/ DEST BUFFER PITCH char *pFilter,       \/\/ POINTER TO FILTER BANK int Height)          \/\/ HEIGHT OF THE BLOCK {     unsigned int Row, Col;     int FiltSum;     short Src0, Src1, Src2, Src3, Src4, Src5, Src6, Src7;     pSrc -= (8 \/ 2 - 1) * SrcStride; \/\/ MOVE INPUT SRC POINTER TO APPROPRIATE POSITION      \/\/ LOOP FOR NUMBER OF COLUMNS-16     for (Col = 0; Col &lt; 16; ++Col)     {         Src0 = pSrc[0 * SrcStride];         Src1 = pSrc[1 * SrcStride];         Src2 = pSrc[2 * SrcStride];         Src3 = pSrc[3 * SrcStride];         Src4 = pSrc[4 * SrcStride];         Src5 = pSrc[5 * SrcStride];         Src6 = pSrc[6 * SrcStride];          \/\/ LOOP FOR NUMBER OF ROWS         for (Row = 0; Row &lt; Height; Row++)         {             Src7 = pSrc[(7 + Row) * SrcStride];             FiltSum = 0;              \/\/ ACCUMULATED FILTER SUM += PIXEL * FILTER COEFF             FiltSum += (Src0 * pi8Filter[0]);             FiltSum += (Src1 * pi8Filter[1]);             FiltSum += (Src2 * pi8Filter[2]);             FiltSum += (Src3 * pi8Filter[3]);             FiltSum += (Src4 * pi8Filter[4]);             FiltSum += (Src5 * pi8Filter[5]);             FiltSum += (Src6 * pi8Filter[6]);             FiltSum += (Src7 * pi8Filter[7]);             FiltSum = ROUND_POWER_OF_TWO(FiltSum, 7); \/\/ ROUNDING             pDst[Row * DstStride] = clip_pixel(FiltSum);\/\/ CLIP RESULT IN 0-255(UNSIGNED CHAR)              \/\/ PREPARING FOR NEXT CONVOLUTION- SLIDING WINDOW             Src0 = Src1;             Src1 = Src2;             Src2 = Src3;             Src3 = Src4;             Src4 = Src5;             Src5 = Src6;             Src6 = Src7;         }         pSrc += 1;         pDst += 1;     } }<\/code><\/pre>\n<\/div>\n<\/div>\n<p>  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u041a\u043e\u0434 \u043f\u043e\u0441\u043b\u0435 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u0438 \u0441 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c MIPS SIMD<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"cpp\">\/* MSA VECTOR TYPES *\/ #define WRLEN 128 \/\/ VECTOR REGISTER LENGTH 128-BIT #define NUMWRELEM (WRLEN &gt;&gt; 3) typedef signed char IMG_VINT8 __attribute__ ((vector_size(NUMWRELEM)));    \/\/VEC SIGNED BYTES typedef unsigned char IMG_VUINT8 __attribute__ ((vector_size(NUMWRELEM))); \/\/VEC UNSIGNED BYTES typedef short IMG_VINT16 __attribute__ ((vector_size(NUMWRELEM)));         \/\/VEC SIGNED HALF-WORD #define LOAD_UNPACK_VEC(pSrc, SrcStride, vi16VecRight, vi16VecLeft) \\ { \\     IMG_VUINT8 vu8Src; \\     IMG_VINT16 vi16Vec0; \\     IMG_VINT8 vi8Tmp0; \\     \/* LOAD INPUT VECTOR *\/ \\     vu8Src = *((IMG_VINT8 *)(pSrc)); \\     \/* RANGE WARPING TO MAINTAIN 16 BIT PRECISION *\/ \\     vi16Vec0 = __builtin_msa_xori_b(vu8Src, 128); \\     \/* CALCULATE SIGN EXTENSION *\/ \\     vi8Tmp0 = __builtin_msa_clti_s_b(vi16Vec0, 0); \\     \/* INTERLEAVE RIGHT TO 16 BIT VEC *\/ \\     vi16VecRight = __builtin_msa_ilvr_b(vi8Tmp0, vi16Vec0); \\     \/* INTERLEAVE LEFT TO 16 BIT VEC *\/ \\     vi16VecLeft = __builtin_msa_ilvl_b(vi8Tmp0, vi16Vec0); \\     pSrc += SrcStride; \\ } void vert_filter_8taps_16width_msa(unsigned char *pSrc, \/\/ SOURCE POINTER int SrcStride,         \/\/ SOURCE BUFFER PITCH unsigned char *pDst,   \/\/ DEST POINTER int DstStride,         \/\/ DEST BUFFER PITH char *pFilter,         \/\/ POINTER TO FILTER BANK int Height)            \/\/ HEIGHT OF THE BLOCK {     int u32LoopCnt;     VINT16 vi16Vec0Right, vi16Vec1Right, vi16Vec2Right, vi16Vec3Right;     VINT16 vi16Vec4Right, vi16Vec5Right, vi16Vec6Right, vi16Vec7Right;     VINT16 vi16Vec0Left, vi16Vec1Left, vi16Vec2Left, vi16Vec3Left;     VINT16 vi16Vec4Left, vi16Vec5Left, vi16Vec6Left, vi16Vec7Left;     VINT16 vi16Temp1Right, vi16Temp1Left;     VINT16 vi16Filt0, vi16Filt1, vi16Filt2, vi16Filt3;     VINT16 vi16Filt4, vi16Filt5, vi16Filt6, vi16Filt7;     pSrc -= (3 * SrcStride);      \/\/ PREPARE FILTER COEFF IN VEC REGISTERS     vi16Filt0 = __builtin_msa_fill_h(*(pFilter));     vi16Filt1 = __builtin_msa_fill_h(*(pFilter + 1));     vi16Filt2 = __builtin_msa_fill_h(*(pFilter + 2));     vi16Filt3 = __builtin_msa_fill_h(*(pFilter + 3));     vi16Filt4 = __builtin_msa_fill_h(*(pFilter + 4));     vi16Filt5 = __builtin_msa_fill_h(*(pFilter + 5));     vi16Filt6 = __builtin_msa_fill_h(*(pFilter + 6));     vi16Filt7 = __builtin_msa_fill_h(*(pFilter + 7));      \/\/LOAD 7 INPUT VECTORS     LOAD_UNPACK_VEC(pSrc, SrcStride, vi16Vec0Right, vi16Vec0Left)     LOAD_UNPACK_VEC(pSrc, SrcStride, vi16Vec1Right, vi16Vec1Left)     LOAD_UNPACK_VEC(pSrc, SrcStride, vi16Vec2Right, vi16Vec2Left)     LOAD_UNPACK_VEC(pSrc, SrcStride, vi16Vec3Right, vi16Vec3Left)     LOAD_UNPACK_VEC(pSrc, SrcStride, vi16Vec4Right, vi16Vec4Left)     LOAD_UNPACK_VEC(pSrc, SrcStride, vi16Vec5Right, vi16Vec5Left)     LOAD_UNPACK_VEC(pSrc, SrcStride, vi16Vec6Right, vi16Vec6Left)      \/\/ START CONVOLUTION VERTICALLY     for (u32LoopCnt = Height; u32LoopCnt--; )     {         \/\/LOAD 8TH INPUT VECTOR         LOAD_UNPACK_VEC(pSrc, SrcStride, vi16Vec7Right, vi16Vec7Left)          \/* FILTER CALC *\/         IMG_VINT16 vi16Tmp1, vi16Tmp2;         IMG_VINT8 vi8Tmp3;          \/\/ 8 TAP VECTORIZED CONVOLUTION FOR RIGHT HALF         vi16Tmp1 = (vi16Vec0Right * vi16Filt0);         vi16Tmp1 += (vi16Vec1Right * vi16Filt1);         vi16Tmp1 += (vi16Vec2Right * vi16Filt2);         vi16Tmp1 += (vi16Vec3Right * vi16Filt3);         vi16Tmp2 = (vi16Vec4Right * vi16Filt4);         vi16Tmp2 += (vi16Vec5Right * vi16Filt5);         vi16Tmp2 += (vi16Vec6Right * vi16Filt6);         vi16Tmp2 += (vi16Vec7Right * vi16Filt7);         vi16Temp1Right = __builtin_msa_adds_s_h(vi16Tmp1, vi16Tmp2);          \/\/ 8 TAP VECTORIZED CONVOLUTION FOR LEFT HALF         vi16Tmp1 = (vi16Vec0Left * vi16Filt0);         vi16Tmp1 += (vi16Vec1Left * vi16Filt1);         vi16Tmp1 += (vi16Vec2Left * vi16Filt2);         vi16Tmp1 += (vi16Vec3Left * vi16Filt3);         vi16Tmp2 = (vi16Vec4Left * vi16Filt4);         vi16Tmp2 += (vi16Vec5Left * vi16Filt5);         vi16Tmp2 += (vi16Vec6Left * vi16Filt6);         vi16Tmp2 += (vi16Vec7Left * vi16Filt7);         vi16Temp1Left = __builtin_msa_adds_s_h(vi16Tmp1, vi16Tmp2);          \/\/ ROUNDING RIGHT SHIFT RANGE CLIPPING AND NARROWING         vi16Temp1Right = __builtin_msa_srari_h(vi16Temp1Right, 7);         vi16Temp1Right = __builtin_msa_sat_s_h(vi16Temp1Right, 7);         vi16Temp1Left = __builtin_msa_srari_h(vi16Temp1Left, 7);         vi16Temp1Left = __builtin_msa_sat_s_h(vi16Temp1Left, 7);         vi8Tmp3 = __builtin_msa_pckev_b(vi16Temp1Left, vi16Temp1Right);         vi8Tmp3 = __builtin_msa_xori_b(vi8Tmp3, 128);          \/\/ STORE OUTPUT VEC         *((IMG_VINT8 *)(pDst)) = (vi8Tmp3);         pDst += DstStride;          \/\/ PREPARING FOR NEXT CONVOLUTION- SLIDING WINDOW         vi16Vec0Right = vi16Vec1Right;         vi16Vec1Right = vi16Vec2Right;         vi16Vec2Right = vi16Vec3Right;         vi16Vec3Right = vi16Vec4Right;         vi16Vec4Right = vi16Vec5Right;         vi16Vec5Right = vi16Vec6Right;         vi16Vec6Right = vi16Vec7Right;         vi16Vec0Left = vi16Vec1Left;         vi16Vec1Left = vi16Vec2Left;         vi16Vec2Left = vi16Vec3Left;         vi16Vec3Left = vi16Vec4Left;         vi16Vec4Left = vi16Vec5Left;         vi16Vec5Left = vi16Vec6Left;         vi16Vec6Left = vi16Vec7Left;     } } <\/code><\/pre>\n<\/div>\n<\/div>\n<p>  <\/p>\n<h2 id=\"ocenka-proizvoditelnosti\">\u041e\u0446\u0435\u043d\u043a\u0430 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438<\/h2>\n<p>  <\/p>\n<p>\u041f\u0435\u0440\u0432\u043e\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e \u0443 \u043c\u0435\u043d\u044f \u0431\u044b\u043b\u0438 \u043c\u044b\u0441\u043b\u0438 \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u043f\u0440\u043e\u0441\u0442\u0435\u0439\u0448\u0435\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 (\u0441\u0438\u043d\u0442\u0435\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0442\u0435\u0441\u0442) \u0434\u043b\u044f \u043e\u0446\u0435\u043d\u043a\u0438 \u043f\u0440\u0438\u0440\u043e\u0441\u0442\u0430 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u043f\u0440\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0438 MIPS SIMD. \u041d\u043e \u043d\u0435\u0441\u043c\u043e\u0442\u0440\u044f \u043d\u0430 \u0432\u0441\u044e \u0441\u0432\u043e\u044e \u043f\u0440\u0438\u0432\u043b\u0435\u043a\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c, \u044d\u0442\u043e\u0442 \u0432\u0430\u0440\u0438\u0430\u043d\u0442 \u043d\u0435 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043f\u043e\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u043c, \u0432\u0432\u0438\u0434\u0443 \u0435\u0433\u043e \u043e\u0442\u043e\u0440\u0432\u0430\u043d\u043d\u043e\u0441\u0442\u0438 \u043e\u0442 \u0440\u0435\u0430\u043b\u044c\u043d\u044b\u0445 \u0437\u0430\u0434\u0430\u0447 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f. \u041d\u0430 \u043d\u0430\u0448\u0435 \u0441\u0447\u0430\u0441\u0442\u044c\u0435 \u0440\u0430\u0431\u043e\u0442\u043d\u0438\u043a\u0438 Imagination Technologies \u0438 MIPS \u0441\u0434\u0435\u043b\u0430\u043b\u0438 \u0432\u0435\u0441\u043e\u043c\u044b\u0439 \u0432\u043a\u043b\u0430\u0434 \u0432 ffmpeg [<a href=\"https:\/\/github.com\/FFmpeg\/FFmpeg\/tree\/master\/libavcodec\/mips\">L18<\/a>] \u2014 \u0448\u0438\u0440\u043e\u043a\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u043e\u0435 open source \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435, \u043f\u0440\u0435\u0434\u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u043d\u043e\u0435 \u0434\u043b\u044f \u043a\u043e\u043d\u0432\u0435\u0440\u0442\u0430\u0446\u0438\u0438 \u0430\u0443\u0434\u0438\u043e \u0438 \u0432\u0438\u0434\u0435\u043e [<a href=\"http:\/\/ffmpeg.org\/\">L19<\/a>]. \u041f\u043e\u043b\u0430\u0433\u0430\u044e, \u0447\u0442\u043e \u043e\u043d\u0438 \u043a\u0430\u043a \u043d\u0438\u043a\u0442\u043e \u0434\u0440\u0443\u0433\u043e\u0439 \u0437\u043d\u0430\u044e\u0442, \u043a\u0430\u043a \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0440\u0430\u0441\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u0435\u043c\u0443\u044e \u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u044e, \u0430 \u0437\u043d\u0430\u0447\u0438\u0442 \u044d\u0442\u043e\u0442 \u043a\u043e\u0434 \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u0442\u044c \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e \u044d\u0444\u0444\u0435\u043a\u0442\u0438\u0432\u0435\u043d.<br \/>  \u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u0435\u0441\u043b\u0438 \u043c\u044b \u0441\u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u0443\u0435\u043c ffmpeg \u0432 \u0434\u0432\u0443\u0445 \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u0430\u0445: \u0441 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u043e\u0439 MIPS SIMD \u0438 \u0431\u0435\u0437 \u043d\u0435\u0435, \u0442\u043e \u043c\u043e\u0436\u043d\u043e \u0431\u0443\u0434\u0435\u0442 \u0441\u0440\u0430\u0432\u043d\u0438\u0442\u044c \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c \u0440\u0430\u0431\u043e\u0442\u044b \u043d\u0430 \u043e\u0434\u0438\u043d\u0430\u043a\u043e\u0432\u044b\u0445 \u0432\u0445\u043e\u0434\u043d\u044b\u0445 \u0434\u0430\u043d\u043d\u044b\u0445 \u0438 \u043f\u043e \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0430\u043c \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u043d\u0435\u043a\u0438\u0439 \u0432\u044b\u0432\u043e\u0434 \u043e\u0431 \u044d\u0444\u0444\u0435\u043a\u0442\u0438\u0432\u043d\u043e\u0441\u0442\u0438 \u0432\u0435\u043a\u0442\u043e\u0440\u043d\u044b\u0445 \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u0439.<\/p>\n<p>  <\/p>\n<h3 id=\"sborka-ffmpeg\">\u0421\u0431\u043e\u0440\u043a\u0430 ffmpeg<\/h3>\n<p>  <\/p>\n<p>\u0412\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f \u043d\u0430 \u043c\u0430\u0448\u0438\u043d\u0435 x86 \u043f\u043e\u0434 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435\u043c \u041e\u0421 Linux. \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f \u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0430 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0441 \u0441\u0430\u0439\u0442\u0430 Imagination Technologies [<a href=\"https:\/\/community.imgtec.com\/developers\/mips\/tools\/codescape-mips-sdk\/\">L20<\/a>] \u0432 \u0440\u0435\u0436\u0438\u043c\u0435 \u043a\u0440\u043e\u0441\u0441-\u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u0438. \u0422\u0435\u0441\u0442\u044b \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u044e\u0442\u0441\u044f \u043d\u0430 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u043c \u0441\u0442\u0430\u0431\u0438\u043b\u044c\u043d\u043e\u043c \u0440\u0435\u043b\u0438\u0437\u0435 \u043d\u0430 \u043c\u043e\u043c\u0435\u043d\u0442 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u0441\u0442\u0430\u0442\u044c\u0438 \u2014 ffmpeg 3.3 [<a href=\"http:\/\/ffmpeg.org\/\">L19<\/a>].<\/p>\n<p>  <\/p>\n<p>\u041a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f ffmpeg \u0434\u043b\u044f \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u0430 \u0441 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u043e\u0439 MIPS SIMD:<\/p>\n<p>  <\/p>\n<pre><code>.\/configure --enable-cross-compile --prefix=..\/ffmpeg-msa  --cross-prefix=\/home\/stas\/mipsfpga\/toolchain\/mips-mti-linux-gnu\/2016.05-03\/bin\/mips-mti-linux-gnu- --arch=mips --cpu=p5600 --target-os=linux --extra-cflags=&quot;-EL -static&quot; --extra-ldflags=&quot;-EL -static&quot; --disable-iconv<\/code><\/pre>\n<p>  <\/p>\n<p>\u0418 \u0441 \u043e\u0442\u043a\u043b\u044e\u0447\u0435\u043d\u043d\u043e\u0439 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u043e\u0439 MIPS SIMD:<\/p>\n<p>  <\/p>\n<pre><code>.\/configure --enable-cross-compile --prefix=..\/ffmpeg-soft --cross-prefix=\/home\/stas\/mipsfpga\/toolchain\/mips-mti-linux-gnu\/2016.05-03\/bin\/mips-mti-linux-gnu- --arch=mips --cpu=p5600 --target-os=linux --extra-cflags=&quot;-EL -static&quot; --extra-ldflags=&quot;-EL -static&quot; --disable-iconv --disable-msa<\/code><\/pre>\n<p>  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043a \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438<\/b><\/p>\n<div class=\"spoiler_text\">\n<table>\n<thead>\n<tr>\n<th>\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440<\/th>\n<th>\u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>&#8212;enable-cross-compile<\/td>\n<td>\u0441\u0431\u043e\u0440\u043a\u0430 \u0431\u0443\u0434\u0435\u0442 \u043e\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043b\u044f\u0442\u044c\u0441\u044f \u043d\u0430 \u043c\u0430\u0448\u0438\u043d\u0435 \u0441 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u043e\u0439, \u043e\u0442\u043b\u0438\u0447\u043d\u043e\u0439 \u043e\u0442\u0446\u0435\u043b\u0435\u0432\u043e\u0439<\/td>\n<\/tr>\n<tr>\n<td>&#8212;prefix=..\/ffmpeg-msa<\/td>\n<td>\u043a\u0430\u0442\u0430\u043b\u043e\u0433, \u0432 \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0431\u0443\u0434\u0443\u0442 \u043f\u043e\u043c\u0435\u0449\u0435\u043d\u044b \u0444\u0430\u0439\u043b\u044b \u043f\u043e\u0441\u043b\u0435 \u043a\u043e\u043c\u0430\u043d\u0434\u044b make install<\/td>\n<\/tr>\n<tr>\n<td>&#8212;cross-prefix=..\/mips-mti-linux-gnu-<\/td>\n<td>\u043f\u0443\u0442\u044c \u043a toolchain<\/td>\n<\/tr>\n<tr>\n<td>&#8212;arch=mips<\/td>\n<td>\u0446\u0435\u043b\u0435\u0432\u0430\u044f \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0430 \u2014 MIPS<\/td>\n<\/tr>\n<tr>\n<td>&#8212;cpu=p5600<\/td>\n<td>\u0446\u0435\u043b\u0435\u0432\u043e\u0435 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u043d\u043e\u0435 \u044f\u0434\u0440\u043e \u2014 p5600<\/td>\n<\/tr>\n<tr>\n<td>&#8212;target-os=linux<\/td>\n<td>\u0446\u0435\u043b\u0435\u0432\u0430\u044f \u041e\u0421 \u2014 Linux<\/td>\n<\/tr>\n<tr>\n<td>&#8212;extra-cflags=&quot;-EL -static&quot;<\/td>\n<td>\u0446\u0435\u043b\u0435\u0432\u0430\u044f \u0441\u0438\u0441\u0442\u0435\u043c\u0430 \u2014 little endian, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0435\u0441\u0432\u044f\u0437\u044b\u0432\u0430\u043d\u0438\u0435<\/td>\n<\/tr>\n<tr>\n<td>&#8212;extra-ldflags=&quot;-EL -static&quot;<\/td>\n<td>\u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u043e<\/td>\n<\/tr>\n<tr>\n<td>&#8212;disable-iconv<\/td>\n<td>\u043e\u0442\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u044c, \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u0443\u044e \u0441 \u043a\u043e\u0434\u0438\u0440\u043e\u0432\u043a\u0430\u043c\u0438 \u0442\u0435\u043a\u0441\u0442\u0430<\/td>\n<\/tr>\n<tr>\n<td>&#8212;disable-msa<\/td>\n<td>\u043d\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c MIPS SIMD<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>  <\/p>\n<p>\u0415\u0441\u043b\u0438 \u0432\u044b \u043f\u043b\u0430\u043d\u0438\u0440\u0443\u0435\u0442\u0435 \u043f\u043e\u0432\u0442\u043e\u0440\u0438\u0442\u044c \u044d\u0442\u0438 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f, \u0442\u043e \u0443\u0447\u0442\u0438\u0442\u0435, \u0447\u0442\u043e \u0441\u0431\u043e\u0440\u043a\u0430 ffmpeg 3.3 \u0441 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u043e\u0439 MIPS SIMD \u0432\u044b\u0432\u0430\u043b\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0441 \u043c\u0435\u043b\u043a\u043e\u0439 \u043e\u0448\u0438\u0431\u043a\u043e\u0439, \u0434\u043b\u044f \u0443\u0441\u0442\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0432 \u0444\u0430\u0439\u043b libavcodec\\mips\\hevcpred_msa.c \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c:<\/p>\n<p>  <\/p>\n<pre><code>#include &quot;libavcodec\/hevcdec.h&quot;<\/code><\/pre>\n<p>  <\/p>\n<h3 id=\"testirovanie\">\u0422\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435<\/h3>\n<p>  <\/p>\n<p>\u0412\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f \u043d\u0430 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0435 \u0411\u0430\u0439\u043a\u0430\u043b-\u04221:<\/p>\n<p>  <\/p>\n<pre><code># uname -a Linux baikal-BFK-18446744073709551615 4.4.41-bfk #0 SMP Tue Apr 25 15:54:24 MSK 2017 mips GNU\/Linux<\/code><\/pre>\n<p>  <\/p>\n<p>\u0412 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0432\u0445\u043e\u0434\u043d\u044b\u0445 \u0434\u0430\u043d\u043d\u044b\u0445 \u0432\u044b\u0441\u0442\u0443\u043f\u0430\u044e\u0442 \u0434\u0432\u0430 \u0432\u0438\u0434\u0435\u043e\u0440\u043e\u043b\u0438\u043a\u0430 \u0437\u0430\u043a\u043e\u0434\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u0441 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c x264 [<a href=\"http:\/\/www.h264info.com\/clips.html\">L21<\/a>] \u0438 x265 [<a href=\"https:\/\/x265.com\/hevc-video-files\/\">L22<\/a>]. \u0422\u0435\u0441\u0442\u043e\u0432\u043e\u0439 \u0437\u0430\u0434\u0430\u0447\u0435\u0439 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0434\u0435\u043a\u043e\u0434\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0432\u0438\u0434\u0435\u043e \u0441 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u0435\u043c \u0441\u043a\u0440\u0438\u043d\u0448\u043e\u0442\u043e\u0432 \u0447\u0435\u0440\u0435\u0437 \u0440\u0430\u0432\u043d\u044b\u0435 \u043f\u0440\u043e\u043c\u0435\u0436\u0443\u0442\u043a\u0438 \u0432\u0440\u0435\u043c\u0435\u043d\u0438:<\/p>\n<p>  <\/p>\n<pre><code>.\/ffmpeg-mips\/ffmpeg-msa\/bin\/ffmpeg -i .\/The\\ Simpsons\\ Movie\\ -\\ Trailer_x264.mp4 -vf fps=1\/10 .\/out_img\/ffmpeg-msa_x264_%d.jpg -report -benchmark  .\/ffmpeg-mips\/ffmpeg-msa\/bin\/ffmpeg -i .\/Tears_400_x265.mp4 -vf fps=1 .\/out_img\/ffmpeg-msa_x265_%d.jpg -report -benchmark  .\/ffmpeg-mips\/ffmpeg-soft\/bin\/ffmpeg -i .\/The\\ Simpsons\\ Movie\\ -\\ Trailer_x264.mp4 -vf fps=1\/10 .\/out_img\/ffmpeg-soft_x264_%d.jpg -report -benchmark  .\/ffmpeg-mips\/ffmpeg-soft\/bin\/ffmpeg -i .\/Tears_400_x265.mp4 -vf fps=1 .\/out_img\/ffmpeg-soft_x265_%d.jpg -report -benchmark<\/code><\/pre>\n<p>  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u043e\u043f\u0446\u0438\u0439 \u0437\u0430\u043f\u0443\u0441\u043a\u0430<\/b><\/p>\n<div class=\"spoiler_text\">\n<table>\n<thead>\n<tr>\n<th>\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440<\/th>\n<th>\u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>-i .\/Tears_400_x265.mp4<\/td>\n<td>\u0444\u0430\u0439\u043b, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u043e\u0434\u043b\u0435\u0436\u0438\u0442 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0435<\/td>\n<\/tr>\n<tr>\n<td>-vf fps=1<\/td>\n<td>\u043f\u0435\u0440\u0438\u043e\u0434 (\u0447\u0430\u0441\u0442\u043e\u0442\u0430) \u0441\u043d\u044f\u0442\u0438\u044f \u0441\u043a\u0440\u0438\u043d\u0448\u043e\u0442\u043e\u0432 (1 \u0441\u0435\u043a \u2014 \u0434\u043b\u044f \u043a\u043e\u0440\u043e\u0442\u043a\u043e\u0433\u043e \u0440\u043e\u043b\u0438\u043a\u0430, 10 \u0441\u0435\u043a \u2014 \u0434\u043b\u044f \u0434\u043b\u0438\u043d\u043d\u043e\u0433\u043e)<\/td>\n<\/tr>\n<tr>\n<td>.\/out_img\/ffmpeg-soft<em>x264<\/em>%d.jpg<\/td>\n<td>\u0448\u0430\u0431\u043b\u043e\u043d \u0438\u043c\u0435\u043d\u0438 \u0432\u044b\u0445\u043e\u0434\u043d\u043e\u0433\u043e \u0444\u0430\u0439\u043b\u0430<\/td>\n<\/tr>\n<tr>\n<td>-report<\/td>\n<td>\u0441\u0444\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043e\u0442\u0447\u0435\u0442 \u043f\u043e \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0430\u043c \u0440\u0430\u0431\u043e\u0442\u044b<\/td>\n<\/tr>\n<tr>\n<td>-benchmark<\/td>\n<td>\u0432\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0432 \u043e\u0442\u0447\u0435\u0442 \u0434\u0430\u043d\u043d\u044b\u0435 \u043e \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>  <\/p>\n<h4 id=\"rezultaty-raboty-ffmpeg\">\u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b \u0440\u0430\u0431\u043e\u0442\u044b ffmpeg<\/h4>\n<p>  <\/p>\n<table>\n<thead>\n<tr>\n<th>\u0421\u0446\u0435\u043d\u0430\u0440\u0438\u0439<\/th>\n<th>\u0414\u043b\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c (c\u0435\u043a)<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>\u0434\u0435\u043a\u043e\u0434\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 x264 \u0441 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u043e\u0439 MIPS SIMD<\/td>\n<td>113<\/td>\n<\/tr>\n<tr>\n<td>\u0434\u0435\u043a\u043e\u0434\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 x265 \u0441 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u043e\u0439 MIPS SIMD<\/td>\n<td>22<\/td>\n<\/tr>\n<tr>\n<td>\u0434\u0435\u043a\u043e\u0434\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 x264 \u0431\u0435\u0437 MIPS SIMD<\/td>\n<td>164<\/td>\n<\/tr>\n<tr>\n<td>\u0434\u0435\u043a\u043e\u0434\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 x265 \u0431\u0435\u0437 MIPS SIMD<\/td>\n<td>52<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>  <\/p>\n<p>\u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u0435 \u0432\u0440\u0435\u043c\u044f \u0434\u0435\u043a\u043e\u0434\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u043f\u0440\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0438 MIPS SIMD \u0441\u043e\u043a\u0440\u0430\u0449\u0430\u0435\u0442\u0441\u044f \u0432 1.5 \u2014 2.4 \u0440\u0430\u0437\u0430.<\/p>\n<p>  <\/p>\n<p>\u041f\u043e\u043b\u043d\u044b\u0435 \u043b\u043e\u0433\u0438 \u0440\u0430\u0431\u043e\u0442\u044b ffmpeg \u043e\u043f\u0443\u0431\u043b\u0438\u043a\u043e\u0432\u0430\u043d\u044b \u043d\u0430 github [<a href=\"https:\/\/github.com\/zhelnio\/memos\/tree\/master\/public\/03_mips_simd\/mips_ffmpeg_logs\">L23<\/a>].<\/p>\n<p>  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u0414\u0435\u043a\u043e\u0434\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 x264 \u0441 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u043e\u0439 MIPS SIMD (\u043e\u0442\u0447\u0435\u0442, \u0441\u043e\u043a\u0440\u0430\u0449\u0435\u043d\u043d\u044b\u0439 \u0432\u0430\u0440\u0438\u0430\u043d\u0442)<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code>ffmpeg started on 2010-10-18 at 00:30:26 Report written to &quot;ffmpeg-20101018-003026.log&quot; Command line: .\/ffmpeg-mips\/ffmpeg-msa\/bin\/ffmpeg -i &quot;.\/The Simpsons Movie - Trailer_x264.mp4&quot; -vf &quot;fps=1\/10&quot; &quot;.\/out_img\/ffmpeg-msa_x264_%d.jpg&quot; -report -benchmark ffmpeg version 3.3 Copyright (c) 2000-2017 the FFmpeg developers   built with gcc 4.9.2 (Codescape GNU Tools 2016.05-03 for MIPS MTI Linux)   configuration: --enable-cross-compile --prefix=..\/ffmpeg-msa --cross-prefix=\/home\/stas\/mipsfpga\/toolchain\/mips-mti-linux-gnu\/2016.05-03\/bin\/mips-mti-linux-gnu- --arch=mips --cpu=p5600 --target-os=linux --extra-cflags='-EL -static' --extra-ldflags='-EL -static' --disable-iconv   libavutil      55. 58.100 \/ 55. 58.100   libavcodec     57. 89.100 \/ 57. 89.100   libavformat    57. 71.100 \/ 57. 71.100   libavdevice    57.  6.100 \/ 57.  6.100   libavfilter     6. 82.100 \/  6. 82.100   libswscale      4.  6.100 \/  4.  6.100   libswresample   2.  7.100 \/  2.  7.100 Splitting the commandline. Reading option '-i' ... matched as input url with argument '.\/The Simpsons Movie - Trailer_x264.mp4'. Reading option '-vf' ... matched as option 'vf' (set video filters) with argument 'fps=1\/10'. Reading option '.\/out_img\/ffmpeg-msa_x264_%d.jpg' ... matched as output url. Reading option '-report' ... matched as option 'report' (generate a report) with argument '1'. Reading option '-benchmark' ... matched as option 'benchmark' (add timings for benchmarking) with argument '1'. Finished splitting the commandline. Parsing a group of options: global . Applying option report (generate a report) with argument 1. Applying option benchmark (add timings for benchmarking) with argument 1. Successfully parsed a group of options. Parsing a group of options: input url .\/The Simpsons Movie - Trailer_x264.mp4. Successfully parsed a group of options. Opening an input file: .\/The Simpsons Movie - Trailer_x264.mp4. [file @ 0x1fce0e0] Setting default whitelist 'file,crypto' [mov,mp4,m4a,3gp,3g2,mj2 @ 0x1fcd980] Format mov,mp4,m4a,3gp,3g2,mj2 probed with size=2048 and score=100 [mov,mp4,m4a,3gp,3g2,mj2 @ 0x1fcd980] ISO: File Type Major Brand: isom [mov,mp4,m4a,3gp,3g2,mj2 @ 0x1fcd980] Unknown dref type 0x206c7275 size 12 [mov,mp4,m4a,3gp,3g2,mj2 @ 0x1fcd980] Unknown dref type 0x206c7275 size 12 [mov,mp4,m4a,3gp,3g2,mj2 @ 0x1fcd980] Before avformat_find_stream_info() pos: 73516232 bytes read:65587 seeks:1 nb_streams:2 [h264 @ 0x1fcecb0] nal_unit_type: 7, nal_ref_idc: 3 [h264 @ 0x1fcecb0] nal_unit_type: 8, nal_ref_idc: 3 [h264 @ 0x1fcecb0] nal_unit_type: 6, nal_ref_idc: 0 [h264 @ 0x1fcecb0] nal_unit_type: 5, nal_ref_idc: 3 [h264 @ 0x1fcecb0] user data:&quot;x264 - core 54 svn-620M - H.264\/MPEG-4 AVC codec - Copyleft 2005 - http:\/\/www.videolan.org\/x264.html - options: cabac=1 ref=5 deblock=1:0:0 analyse=0x1:0x131 me=umh subme=6 brdo=1 mixed_ref=0 me_range=16 chroma_me=1 trellis=1 8x8dct=0 cqm=0 deadzone=21,11 chroma_qp_offset=0 threads=1 nr=0 decimate=1 mbaff=0 bframes=1 b_pyramid=0 b_adapt=1 b_bias=0 direct=3 wpredb=0 bime=0 keyint=250 keyint_min=25 scenecut=40 rc=2pass bitrate=4214 ratetol=1.0 rceq='blurCplx^(1-qComp)' qcomp=0.60 qpmin=10 qpmax=51 qpstep=4 cplxblur=20.0 qblur=0.5 ip_ratio=1.40 pb_ratio=1.30&quot; [h264 @ 0x1fcecb0] Reinit context to 1280x544, pix_fmt: yuv420p [h264 @ 0x1fcecb0] no picture  [mov,mp4,m4a,3gp,3g2,mj2 @ 0x1fcd980] All info found [mov,mp4,m4a,3gp,3g2,mj2 @ 0x1fcd980] After avformat_find_stream_info() pos: 94845 bytes read:141348 seeks:2 frames:13 Input #0, mov,mp4,m4a,3gp,3g2,mj2, from '.\/The Simpsons Movie - Trailer_x264.mp4':   Metadata:     major_brand     : isom     minor_version   : 1     compatible_brands: isomavc1     creation_time   : 2007-02-19T05:03:04.000000Z   Duration: 00:02:17.30, start: 0.000000, bitrate: 4283 kb\/s     Stream #0:0(und), 12, 1\/24000: Video: h264 (Main) (avc1 \/ 0x31637661), yuv420p, 1280x544, 4221 kb\/s, 23.98 fps, 23.98 tbr, 24k tbn, 47.95 tbc (default)     Metadata:       creation_time   : 2007-02-19T05:03:04.000000Z       handler_name    : GPAC ISO Video Handler     Stream #0:1(und), 1, 1\/48000: Audio: aac (HE-AAC) (mp4a \/ 0x6134706D), 48000 Hz, stereo, fltp, 64 kb\/s (default)     Metadata:       creation_time   : 2007-02-19T05:03:08.000000Z       handler_name    : GPAC ISO Audio Handler Successfully opened the file. Parsing a group of options: output url .\/out_img\/ffmpeg-msa_x264_%d.jpg. Applying option vf (set video filters) with argument fps=1\/10. Successfully parsed a group of options. Opening an output file: .\/out_img\/ffmpeg-msa_x264_%d.jpg. Successfully opened the file. detected 2 logical cores [h264 @ 0x20191e0] nal_unit_type: 7, nal_ref_idc: 3 [h264 @ 0x20191e0] nal_unit_type: 8, nal_ref_idc: 3 Stream mapping:   Stream #0:0 -&gt; #0:0 (h264 (native) -&gt; mjpeg (native)) Press [q] to stop, [?] for help cur_dts is invalid (this is harmless if it occurs once at the start per stream) cur_dts is invalid (this is harmless if it occurs once at the start per stream) [h264 @ 0x20191e0] nal_unit_type: 6, nal_ref_idc: 0 [h264 @ 0x20191e0] nal_unit_type: 5, nal_ref_idc: 3 [h264 @ 0x20191e0] user data:&quot;x264 - core 54 svn-620M - H.264\/MPEG-4 AVC codec - Copyleft 2005 - http:\/\/www.videolan.org\/x264.html - options: cabac=1 ref=5 deblock=1:0:0 analyse=0x1:0x131 me=umh subme=6 brdo=1 mixed_ref=0 me_range=16 chroma_me=1 trellis=1 8x8dct=0 cqm=0 deadzone=21,11 chroma_qp_offset=0 threads=1 nr=0 decimate=1 mbaff=0 bframes=1 b_pyramid=0 b_adapt=1 b_bias=0 direct=3 wpredb=0 bime=0 keyint=250 keyint_min=25 scenecut=40 rc=2pass bitrate=4214 ratetol=1.0 rceq='blurCplx^(1-qComp)' qcomp=0.60 qpmin=10 qpmax=51 qpstep=4 cplxblur=20.0 qblur=0.5 ip_ratio=1.40 pb_ratio=1.30&quot; [h264 @ 0x20191e0] Reinit context to 1280x544, pix_fmt: yuv420p [h264 @ 0x20191e0] no picture  cur_dts is invalid (this is harmless if it occurs once at the start per stream) [h264 @ 0x2026050] nal_unit_type: 1, nal_ref_idc: 2 [h264 @ 0x2060f00] nal_unit_type: 1, nal_ref_idc: 0 cur_dts is invalid (this is harmless if it occurs once at the start per stream) [h264 @ 0x20191e0] nal_unit_type: 1, nal_ref_idc: 2 [Parsed_fps_0 @ 0x202bf50] Setting 'fps' to value '1\/10' [Parsed_fps_0 @ 0x202bf50] fps=1\/10 [graph 0 input from stream 0:0 @ 0x202c6f0] Setting 'video_size' to value '1280x544' [graph 0 input from stream 0:0 @ 0x202c6f0] Setting 'pix_fmt' to value '0' [graph 0 input from stream 0:0 @ 0x202c6f0] Setting 'time_base' to value '1\/24000' [graph 0 input from stream 0:0 @ 0x202c6f0] Setting 'pixel_aspect' to value '0\/1' [graph 0 input from stream 0:0 @ 0x202c6f0] Setting 'sws_param' to value 'flags=2' [graph 0 input from stream 0:0 @ 0x202c6f0] Setting 'frame_rate' to value '24000\/1001' [graph 0 input from stream 0:0 @ 0x202c6f0] w:1280 h:544 pixfmt:yuv420p tb:1\/24000 fr:24000\/1001 sar:0\/1 sws_param:flags=2 [format @ 0x202c030] compat: called with args=[yuvj420p|yuvj422p|yuvj444p] [format @ 0x202c030] Setting 'pix_fmts' to value 'yuvj420p|yuvj422p|yuvj444p' [auto_scaler_0 @ 0x202c660] Setting 'flags' to value 'bicubic' [auto_scaler_0 @ 0x202c660] w:iw h:ih flags:'bicubic' interl:0 [format @ 0x202c030] auto-inserting filter 'auto_scaler_0' between the filter 'Parsed_fps_0' and the filter 'format' [AVFilterGraph @ 0x202bb80] query_formats: 4 queried, 2 merged, 1 already done, 0 delayed [auto_scaler_0 @ 0x202c660] picking yuvj420p out of 3 ref:yuv420p alpha:0 [swscaler @ 0x202cf00] deprecated pixel format used, make sure you did set range correctly [auto_scaler_0 @ 0x202c660] w:1280 h:544 fmt:yuv420p sar:0\/1 -&gt; w:1280 h:544 fmt:yuvj420p sar:0\/1 flags:0x4 [mjpeg @ 0x1ff5f90] Forcing thread count to 1 for MJPEG encoding, use -thread_type slice or a constant quantizer if you want to use multiple cpu cores [mjpeg @ 0x1ff5f90] intra_quant_bias = 96 inter_quant_bias = 0 Output #0, image2, to '.\/out_img\/ffmpeg-msa_x264_%d.jpg':   Metadata:     major_brand     : isom     minor_version   : 1     compatible_brands: isomavc1     encoder         : Lavf57.71.100     Stream #0:0(und), 0, 10\/1: Video: mjpeg, yuvj420p(pc), 1280x544, q=2-31, 200 kb\/s, 0.10 fps, 0.10 tbn, 0.10 tbc (default)     Metadata:       creation_time   : 2007-02-19T05:03:04.000000Z       handler_name    : GPAC ISO Video Handler       encoder         : Lavc57.89.100 mjpeg     Side data:       cpb: bitrate max\/min\/avg: 0\/0\/200000 buffer size: 0 vbv_delay: -1 cur_dts is invalid (this is harmless if it occurs once at the start per stream) [Parsed_fps_0 @ 0x202bf50] Dropping 1 frame(s). cur_dts is invalid (this is harmless if it occurs once at the start per stream)  ...  [h264 @ 0x2060f00] nal_unit_type: 1, nal_ref_idc: 2 [Parsed_fps_0 @ 0x202bf50] Dropping 1 frame(s). [Parsed_fps_0 @ 0x202bf50] Dropping 1 frame(s). [Parsed_fps_0 @ 0x202bf50] Dropping 1 frame(s). [file @ 0x209dc40] Setting default whitelist 'file,crypto' [AVIOContext @ 0x2189ab0] Statistics: 0 seeks, 1 writeouts frame=   15 fps=0.2 q=1.6 size=N\/A time=00:02:30.00 bitrate=N\/A speed=2.03x     No more output streams to write to, finishing. frame=   15 fps=0.2 q=1.6 Lsize=N\/A time=00:02:30.00 bitrate=N\/A speed=2.03x     video:1382kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: unknown Input file #0 (.\/The Simpsons Movie - Trailer_x264.mp4):   Input stream #0:0 (video): 3288 packets read (72364468 bytes); 3288 frames decoded;    Input stream #0:1 (audio): 1 packets read (134 bytes);    Total: 3289 packets (72364602 bytes) demuxed Output file #0 (.\/out_img\/ffmpeg-msa_x264_%d.jpg):   Output stream #0:0 (video): 15 frames encoded; 15 packets muxed (1414925 bytes);    Total: 15 packets (1414925 bytes) muxed bench: utime=113.070s 3288 frames successfully decoded, 0 decoding errors bench: maxrss=39264kB [Parsed_fps_0 @ 0x202bf50] 3288 frames in, 15 frames out; 3273 frames dropped, 0 frames duplicated. [AVIOContext @ 0x1fd6230] Statistics: 73517562 bytes read, 5 seeks<\/code><\/pre>\n<\/div>\n<\/div>\n<p>  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u0414\u0435\u043a\u043e\u0434\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 x265 \u0441 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u043e\u0439 MIPS SIMD (\u043e\u0442\u0447\u0435\u0442, \u0441\u043e\u043a\u0440\u0430\u0449\u0435\u043d\u043d\u044b\u0439 \u0432\u0430\u0440\u0438\u0430\u043d\u0442)<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code>ffmpeg started on 2010-10-18 at 00:27:58 Report written to &quot;ffmpeg-20101018-002758.log&quot; Command line: .\/ffmpeg-mips\/ffmpeg-msa\/bin\/ffmpeg -i .\/Tears_400_x265.mp4 -vf &quot;fps=1&quot; &quot;.\/out_img\/ffmpeg-msa_x265_%d.jpg&quot; -report -benchmark ffmpeg version 3.3 Copyright (c) 2000-2017 the FFmpeg developers   built with gcc 4.9.2 (Codescape GNU Tools 2016.05-03 for MIPS MTI Linux)   configuration: --enable-cross-compile --prefix=..\/ffmpeg-msa --cross-prefix=\/home\/stas\/mipsfpga\/toolchain\/mips-mti-linux-gnu\/2016.05-03\/bin\/mips-mti-linux-gnu- --arch=mips --cpu=p5600 --target-os=linux --extra-cflags='-EL -static' --extra-ldflags='-EL -static' --disable-iconv   libavutil      55. 58.100 \/ 55. 58.100   libavcodec     57. 89.100 \/ 57. 89.100   libavformat    57. 71.100 \/ 57. 71.100   libavdevice    57.  6.100 \/ 57.  6.100   libavfilter     6. 82.100 \/  6. 82.100   libswscale      4.  6.100 \/  4.  6.100   libswresample   2.  7.100 \/  2.  7.100 Splitting the commandline. Reading option '-i' ... matched as input url with argument '.\/Tears_400_x265.mp4'. Reading option '-vf' ... matched as option 'vf' (set video filters) with argument 'fps=1'. Reading option '.\/out_img\/ffmpeg-msa_x265_%d.jpg' ... matched as output url. Reading option '-report' ... matched as option 'report' (generate a report) with argument '1'. Reading option '-benchmark' ... matched as option 'benchmark' (add timings for benchmarking) with argument '1'. Finished splitting the commandline. Parsing a group of options: global . Applying option report (generate a report) with argument 1. Applying option benchmark (add timings for benchmarking) with argument 1. Successfully parsed a group of options. Parsing a group of options: input url .\/Tears_400_x265.mp4. Successfully parsed a group of options. Opening an input file: .\/Tears_400_x265.mp4. [file @ 0x1fce0e0] Setting default whitelist 'file,crypto' [mov,mp4,m4a,3gp,3g2,mj2 @ 0x1fcd980] Format mov,mp4,m4a,3gp,3g2,mj2 probed with size=2048 and score=100 [mov,mp4,m4a,3gp,3g2,mj2 @ 0x1fcd980] ISO: File Type Major Brand: iso4 [mov,mp4,m4a,3gp,3g2,mj2 @ 0x1fcd980] Unknown dref type 0x206c7275 size 12 [mov,mp4,m4a,3gp,3g2,mj2 @ 0x1fcd980] Before avformat_find_stream_info() pos: 705972 bytes read:32827 seeks:1 nb_streams:1 [hevc @ 0x1fceca0] nal_unit_type: 32(VPS), nuh_layer_id: 0, temporal_id: 0 [hevc @ 0x1fceca0] Decoding VPS [hevc @ 0x1fceca0] Main profile bitstream [hevc @ 0x1fceca0] nal_unit_type: 33(SPS), nuh_layer_id: 0, temporal_id: 0 [hevc @ 0x1fceca0] Decoding SPS [hevc @ 0x1fceca0] Main profile bitstream [hevc @ 0x1fceca0] Decoding VUI [hevc @ 0x1fceca0] nal_unit_type: 34(PPS), nuh_layer_id: 0, temporal_id: 0 [hevc @ 0x1fceca0] Decoding PPS [mov,mp4,m4a,3gp,3g2,mj2 @ 0x1fcd980] All info found [mov,mp4,m4a,3gp,3g2,mj2 @ 0x1fcd980] After avformat_find_stream_info() pos: 20299 bytes read:65595 seeks:2 frames:1 Input #0, mov,mp4,m4a,3gp,3g2,mj2, from '.\/Tears_400_x265.mp4':   Metadata:     major_brand     : iso4     minor_version   : 1     compatible_brands: iso4hvc1     creation_time   : 2014-08-25T18:10:46.000000Z   Duration: 00:00:13.96, start: 0.125000, bitrate: 404 kb\/s     Stream #0:0(und), 1, 1\/24000: Video: hevc (Main) (hvc1 \/ 0x31637668), yuv420p(tv), 1920x800, 402 kb\/s, 24 fps, 24 tbr, 24k tbn, 24 tbc (default)     Metadata:       creation_time   : 2014-08-25T18:10:46.000000Z       handler_name    : hevc:fps=24@GPAC0.5.1-DEV-rev4807 Successfully opened the file. Parsing a group of options: output url .\/out_img\/ffmpeg-msa_x265_%d.jpg. Applying option vf (set video filters) with argument fps=1. Successfully parsed a group of options. Opening an output file: .\/out_img\/ffmpeg-msa_x265_%d.jpg. Successfully opened the file. detected 2 logical cores [hevc @ 0x1fe5a00] nal_unit_type: 32(VPS), nuh_layer_id: 0, temporal_id: 0 [hevc @ 0x1fe5a00] Decoding VPS [hevc @ 0x1fe5a00] Main profile bitstream [hevc @ 0x1fe5a00] nal_unit_type: 33(SPS), nuh_layer_id: 0, temporal_id: 0 [hevc @ 0x1fe5a00] Decoding SPS [hevc @ 0x1fe5a00] Main profile bitstream [hevc @ 0x1fe5a00] Decoding VUI [hevc @ 0x1fe5a00] nal_unit_type: 34(PPS), nuh_layer_id: 0, temporal_id: 0 [hevc @ 0x1fe5a00] Decoding PPS Stream mapping:   Stream #0:0 -&gt; #0:0 (hevc (native) -&gt; mjpeg (native)) Press [q] to stop, [?] for help cur_dts is invalid (this is harmless if it occurs once at the start per stream) cur_dts is invalid (this is harmless if it occurs once at the start per stream) [hevc @ 0x1fe5a00] nal_unit_type: 39(SEI_PREFIX), nuh_layer_id: 0, temporal_id: 0 [hevc @ 0x1fe5a00] nal_unit_type: 39(SEI_PREFIX), nuh_layer_id: 0, temporal_id: 0 [hevc @ 0x1fe5a00] nal_unit_type: 19(IDR_W_RADL), nuh_layer_id: 0, temporal_id: 0 [hevc @ 0x1fe5a00] Decoding SEI [hevc @ 0x1fe5a00] Skipped PREFIX SEI 5 [hevc @ 0x1fe5a00] Decoding SEI [hevc @ 0x1fe5a00] Skipped PREFIX SEI 6 cur_dts is invalid (this is harmless if it occurs once at the start per stream) [hevc @ 0x1ffeba0] nal_unit_type: 1(TRAIL_R), nuh_layer_id: 0, temporal_id: 0 [hevc @ 0x200c4d0] nal_unit_type: 1(TRAIL_R), nuh_layer_id: 0, temporal_id: 0 [hevc @ 0x200c4d0] Output frame with POC 0. [hevc @ 0x1fe5a00] Decoded frame with POC 0. cur_dts is invalid (this is harmless if it occurs once at the start per stream) [hevc @ 0x1fe5a00] nal_unit_type: 0(TRAIL_N), nuh_layer_id: 0, temporal_id: 0 [hevc @ 0x1fe5a00] Output frame with POC 1. [hevc @ 0x1ffeba0] Decoded frame with POC 5. cur_dts is invalid (this is harmless if it occurs once at the start per stream) [hevc @ 0x1ffeba0] nal_unit_type: 0(TRAIL_N), nuh_layer_id: 0, temporal_id: 0 [hevc @ 0x1ffeba0] Output frame with POC 2. [hevc @ 0x200c4d0] Decoded frame with POC 3. [Parsed_fps_0 @ 0x201a6c0] Setting 'fps' to value '1' [Parsed_fps_0 @ 0x201a6c0] fps=1\/1 [graph 0 input from stream 0:0 @ 0x201abb0] Setting 'video_size' to value '1920x800' [graph 0 input from stream 0:0 @ 0x201abb0] Setting 'pix_fmt' to value '0' [graph 0 input from stream 0:0 @ 0x201abb0] Setting 'time_base' to value '1\/24000' [graph 0 input from stream 0:0 @ 0x201abb0] Setting 'pixel_aspect' to value '0\/1' [graph 0 input from stream 0:0 @ 0x201abb0] Setting 'sws_param' to value 'flags=2' [graph 0 input from stream 0:0 @ 0x201abb0] Setting 'frame_rate' to value '24\/1' [graph 0 input from stream 0:0 @ 0x201abb0] w:1920 h:800 pixfmt:yuv420p tb:1\/24000 fr:24\/1 sar:0\/1 sws_param:flags=2 [format @ 0x201aad0] compat: called with args=[yuvj420p|yuvj422p|yuvj444p] [format @ 0x201aad0] Setting 'pix_fmts' to value 'yuvj420p|yuvj422p|yuvj444p' [auto_scaler_0 @ 0x201a350] Setting 'flags' to value 'bicubic' [auto_scaler_0 @ 0x201a350] w:iw h:ih flags:'bicubic' interl:0 [format @ 0x201aad0] auto-inserting filter 'auto_scaler_0' between the filter 'Parsed_fps_0' and the filter 'format' [AVFilterGraph @ 0x201a2f0] query_formats: 4 queried, 2 merged, 1 already done, 0 delayed [auto_scaler_0 @ 0x201a350] picking yuvj420p out of 3 ref:yuv420p alpha:0 [swscaler @ 0x21d7da0] deprecated pixel format used, make sure you did set range correctly [auto_scaler_0 @ 0x201a350] w:1920 h:800 fmt:yuv420p sar:0\/1 -&gt; w:1920 h:800 fmt:yuvj420p sar:0\/1 flags:0x4 [mjpeg @ 0x1fe2ba0] Forcing thread count to 1 for MJPEG encoding, use -thread_type slice or a constant quantizer if you want to use multiple cpu cores [mjpeg @ 0x1fe2ba0] intra_quant_bias = 96 inter_quant_bias = 0 Output #0, image2, to '.\/out_img\/ffmpeg-msa_x265_%d.jpg':   Metadata:     major_brand     : iso4     minor_version   : 1     compatible_brands: iso4hvc1     encoder         : Lavf57.71.100     Stream #0:0(und), 0, 1\/1: Video: mjpeg, yuvj420p(pc), 1920x800, q=2-31, 200 kb\/s, 1 fps, 1 tbn, 1 tbc (default)     Metadata:       creation_time   : 2014-08-25T18:10:46.000000Z       handler_name    : hevc:fps=24@GPAC0.5.1-DEV-rev4807       encoder         : Lavc57.89.100 mjpeg     Side data:       cpb: bitrate max\/min\/avg: 0\/0\/200000 buffer size: 0 vbv_delay: -1 cur_dts is invalid (this is harmless if it occurs once at the start per stream)  ...  No more output streams to write to, finishing. frame=   15 fps=0.7 q=24.8 Lsize=N\/A time=00:00:15.00 bitrate=N\/A speed=0.668x     video:1084kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: unknown Input file #0 (.\/Tears_400_x265.mp4):   Input stream #0:0 (video): 335 packets read (701773 bytes); 335 frames decoded;    Total: 335 packets (701773 bytes) demuxed Output file #0 (.\/out_img\/ffmpeg-msa_x265_%d.jpg):   Output stream #0:0 (video): 15 frames encoded; 15 packets muxed (1109604 bytes);    Total: 15 packets (1109604 bytes) muxed bench: utime=22.300s 335 frames successfully decoded, 0 decoding errors bench: maxrss=72432kB [Parsed_fps_0 @ 0x201a6c0] 335 frames in, 15 frames out; 320 frames dropped, 0 frames duplicated. [AVIOContext @ 0x1fd6220] Statistics: 734659 bytes read, 2 seeks<\/code><\/pre>\n<\/div>\n<\/div>\n<p>  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u0414\u0435\u043a\u043e\u0434\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 x264 \u0431\u0435\u0437 MIPS SIMD (\u043e\u0442\u0447\u0435\u0442, \u0441\u043e\u043a\u0440\u0430\u0449\u0435\u043d\u043d\u044b\u0439 \u0432\u0430\u0440\u0438\u0430\u043d\u0442)<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code>ffmpeg started on 2010-10-18 at 00:28:31 Report written to &quot;ffmpeg-20101018-002831.log&quot; Command line: .\/ffmpeg-mips\/ffmpeg-soft\/bin\/ffmpeg -i &quot;.\/The Simpsons Movie - Trailer_x264.mp4&quot; -vf &quot;fps=1\/10&quot; &quot;.\/out_img\/ffmpeg-soft_x264_%d.jpg&quot; -report -benchmark ffmpeg version 3.3 Copyright (c) 2000-2017 the FFmpeg developers   built with gcc 4.9.2 (Codescape GNU Tools 2016.05-03 for MIPS MTI Linux)   configuration: --enable-cross-compile --prefix=..\/ffmpeg-soft --cross-prefix=\/home\/stas\/mipsfpga\/toolchain\/mips-mti-linux-gnu\/2016.05-03\/bin\/mips-mti-linux-gnu- --arch=mips --cpu=p5600 --target-os=linux --extra-cflags='-EL -static' --extra-ldflags='-EL -static' --disable-iconv --disable-msa   libavutil      55. 58.100 \/ 55. 58.100   libavcodec     57. 89.100 \/ 57. 89.100   libavformat    57. 71.100 \/ 57. 71.100   libavdevice    57.  6.100 \/ 57.  6.100   libavfilter     6. 82.100 \/  6. 82.100   libswscale      4.  6.100 \/  4.  6.100   libswresample   2.  7.100 \/  2.  7.100 Splitting the commandline. Reading option '-i' ... matched as input url with argument '.\/The Simpsons Movie - Trailer_x264.mp4'. Reading option '-vf' ... matched as option 'vf' (set video filters) with argument 'fps=1\/10'. Reading option '.\/out_img\/ffmpeg-soft_x264_%d.jpg' ... matched as output url. Reading option '-report' ... matched as option 'report' (generate a report) with argument '1'. Reading option '-benchmark' ... matched as option 'benchmark' (add timings for benchmarking) with argument '1'. Finished splitting the commandline. Parsing a group of options: global . Applying option report (generate a report) with argument 1. Applying option benchmark (add timings for benchmarking) with argument 1. Successfully parsed a group of options. Parsing a group of options: input url .\/The Simpsons Movie - Trailer_x264.mp4. Successfully parsed a group of options. Opening an input file: .\/The Simpsons Movie - Trailer_x264.mp4. [file @ 0x1f4a0e0] Setting default whitelist 'file,crypto' [mov,mp4,m4a,3gp,3g2,mj2 @ 0x1f49980] Format mov,mp4,m4a,3gp,3g2,mj2 probed with size=2048 and score=100 [mov,mp4,m4a,3gp,3g2,mj2 @ 0x1f49980] ISO: File Type Major Brand: isom [mov,mp4,m4a,3gp,3g2,mj2 @ 0x1f49980] Unknown dref type 0x206c7275 size 12 [mov,mp4,m4a,3gp,3g2,mj2 @ 0x1f49980] Unknown dref type 0x206c7275 size 12 [mov,mp4,m4a,3gp,3g2,mj2 @ 0x1f49980] Before avformat_find_stream_info() pos: 73516232 bytes read:65587 seeks:1 nb_streams:2 [h264 @ 0x1f4acb0] nal_unit_type: 7, nal_ref_idc: 3 [h264 @ 0x1f4acb0] nal_unit_type: 8, nal_ref_idc: 3 [h264 @ 0x1f4acb0] nal_unit_type: 6, nal_ref_idc: 0 [h264 @ 0x1f4acb0] nal_unit_type: 5, nal_ref_idc: 3 [h264 @ 0x1f4acb0] user data:&quot;x264 - core 54 svn-620M - H.264\/MPEG-4 AVC codec - Copyleft 2005 - http:\/\/www.videolan.org\/x264.html - options: cabac=1 ref=5 deblock=1:0:0 analyse=0x1:0x131 me=umh subme=6 brdo=1 mixed_ref=0 me_range=16 chroma_me=1 trellis=1 8x8dct=0 cqm=0 deadzone=21,11 chroma_qp_offset=0 threads=1 nr=0 decimate=1 mbaff=0 bframes=1 b_pyramid=0 b_adapt=1 b_bias=0 direct=3 wpredb=0 bime=0 keyint=250 keyint_min=25 scenecut=40 rc=2pass bitrate=4214 ratetol=1.0 rceq='blurCplx^(1-qComp)' qcomp=0.60 qpmin=10 qpmax=51 qpstep=4 cplxblur=20.0 qblur=0.5 ip_ratio=1.40 pb_ratio=1.30&quot; [h264 @ 0x1f4acb0] Reinit context to 1280x544, pix_fmt: yuv420p [h264 @ 0x1f4acb0] no picture  [mov,mp4,m4a,3gp,3g2,mj2 @ 0x1f49980] All info found [mov,mp4,m4a,3gp,3g2,mj2 @ 0x1f49980] After avformat_find_stream_info() pos: 94845 bytes read:141348 seeks:2 frames:13 Input #0, mov,mp4,m4a,3gp,3g2,mj2, from '.\/The Simpsons Movie - Trailer_x264.mp4':   Metadata:     major_brand     : isom     minor_version   : 1     compatible_brands: isomavc1     creation_time   : 2007-02-19T05:03:04.000000Z   Duration: 00:02:17.30, start: 0.000000, bitrate: 4283 kb\/s     Stream #0:0(und), 12, 1\/24000: Video: h264 (Main) (avc1 \/ 0x31637661), yuv420p, 1280x544, 4221 kb\/s, 23.98 fps, 23.98 tbr, 24k tbn, 47.95 tbc (default)     Metadata:       creation_time   : 2007-02-19T05:03:04.000000Z       handler_name    : GPAC ISO Video Handler     Stream #0:1(und), 1, 1\/48000: Audio: aac (HE-AAC) (mp4a \/ 0x6134706D), 48000 Hz, stereo, fltp, 64 kb\/s (default)     Metadata:       creation_time   : 2007-02-19T05:03:08.000000Z       handler_name    : GPAC ISO Audio Handler Successfully opened the file. Parsing a group of options: output url .\/out_img\/ffmpeg-soft_x264_%d.jpg. Applying option vf (set video filters) with argument fps=1\/10. Successfully parsed a group of options. Opening an output file: .\/out_img\/ffmpeg-soft_x264_%d.jpg. Successfully opened the file. detected 2 logical cores [h264 @ 0x1f951e0] nal_unit_type: 7, nal_ref_idc: 3 [h264 @ 0x1f951e0] nal_unit_type: 8, nal_ref_idc: 3 Stream mapping:   Stream #0:0 -&gt; #0:0 (h264 (native) -&gt; mjpeg (native)) Press [q] to stop, [?] for help cur_dts is invalid (this is harmless if it occurs once at the start per stream) cur_dts is invalid (this is harmless if it occurs once at the start per stream) [h264 @ 0x1f951e0] nal_unit_type: 6, nal_ref_idc: 0 [h264 @ 0x1f951e0] nal_unit_type: 5, nal_ref_idc: 3 [h264 @ 0x1f951e0] user data:&quot;x264 - core 54 svn-620M - H.264\/MPEG-4 AVC codec - Copyleft 2005 - http:\/\/www.videolan.org\/x264.html - options: cabac=1 ref=5 deblock=1:0:0 analyse=0x1:0x131 me=umh subme=6 brdo=1 mixed_ref=0 me_range=16 chroma_me=1 trellis=1 8x8dct=0 cqm=0 deadzone=21,11 chroma_qp_offset=0 threads=1 nr=0 decimate=1 mbaff=0 bframes=1 b_pyramid=0 b_adapt=1 b_bias=0 direct=3 wpredb=0 bime=0 keyint=250 keyint_min=25 scenecut=40 rc=2pass bitrate=4214 ratetol=1.0 rceq='blurCplx^(1-qComp)' qcomp=0.60 qpmin=10 qpmax=51 qpstep=4 cplxblur=20.0 qblur=0.5 ip_ratio=1.40 pb_ratio=1.30&quot; [h264 @ 0x1f951e0] Reinit context to 1280x544, pix_fmt: yuv420p [h264 @ 0x1f951e0] no picture  cur_dts is invalid (this is harmless if it occurs once at the start per stream) [h264 @ 0x1fa2050] nal_unit_type: 1, nal_ref_idc: 2 [h264 @ 0x1fdcf00] nal_unit_type: 1, nal_ref_idc: 0 cur_dts is invalid (this is harmless if it occurs once at the start per stream) [h264 @ 0x1f951e0] nal_unit_type: 1, nal_ref_idc: 2 [Parsed_fps_0 @ 0x1fa7f50] Setting 'fps' to value '1\/10' [Parsed_fps_0 @ 0x1fa7f50] fps=1\/10 [graph 0 input from stream 0:0 @ 0x1fa86f0] Setting 'video_size' to value '1280x544' [graph 0 input from stream 0:0 @ 0x1fa86f0] Setting 'pix_fmt' to value '0' [graph 0 input from stream 0:0 @ 0x1fa86f0] Setting 'time_base' to value '1\/24000' [graph 0 input from stream 0:0 @ 0x1fa86f0] Setting 'pixel_aspect' to value '0\/1' [graph 0 input from stream 0:0 @ 0x1fa86f0] Setting 'sws_param' to value 'flags=2' [graph 0 input from stream 0:0 @ 0x1fa86f0] Setting 'frame_rate' to value '24000\/1001' [graph 0 input from stream 0:0 @ 0x1fa86f0] w:1280 h:544 pixfmt:yuv420p tb:1\/24000 fr:24000\/1001 sar:0\/1 sws_param:flags=2 [format @ 0x1fa8030] compat: called with args=[yuvj420p|yuvj422p|yuvj444p] [format @ 0x1fa8030] Setting 'pix_fmts' to value 'yuvj420p|yuvj422p|yuvj444p' [auto_scaler_0 @ 0x1fa8660] Setting 'flags' to value 'bicubic' [auto_scaler_0 @ 0x1fa8660] w:iw h:ih flags:'bicubic' interl:0 [format @ 0x1fa8030] auto-inserting filter 'auto_scaler_0' between the filter 'Parsed_fps_0' and the filter 'format' [AVFilterGraph @ 0x1fa7b80] query_formats: 4 queried, 2 merged, 1 already done, 0 delayed [auto_scaler_0 @ 0x1fa8660] picking yuvj420p out of 3 ref:yuv420p alpha:0 [swscaler @ 0x1fa8f00] deprecated pixel format used, make sure you did set range correctly [auto_scaler_0 @ 0x1fa8660] w:1280 h:544 fmt:yuv420p sar:0\/1 -&gt; w:1280 h:544 fmt:yuvj420p sar:0\/1 flags:0x4 [mjpeg @ 0x1f71f90] Forcing thread count to 1 for MJPEG encoding, use -thread_type slice or a constant quantizer if you want to use multiple cpu cores [mjpeg @ 0x1f71f90] intra_quant_bias = 96 inter_quant_bias = 0 Output #0, image2, to '.\/out_img\/ffmpeg-soft_x264_%d.jpg':   Metadata:     major_brand     : isom     minor_version   : 1     compatible_brands: isomavc1     encoder         : Lavf57.71.100     Stream #0:0(und), 0, 10\/1: Video: mjpeg, yuvj420p(pc), 1280x544, q=2-31, 200 kb\/s, 0.10 fps, 0.10 tbn, 0.10 tbc (default)     Metadata:       creation_time   : 2007-02-19T05:03:04.000000Z       handler_name    : GPAC ISO Video Handler       encoder         : Lavc57.89.100 mjpeg     Side data:       cpb: bitrate max\/min\/avg: 0\/0\/200000 buffer size: 0 vbv_delay: -1 cur_dts is invalid (this is harmless if it occurs once at the start per stream) [Parsed_fps_0 @ 0x1fa7f50] Dropping 1 frame(s). [h264 @ 0x1fa2050] nal_unit_type: 1, nal_ref_idc: 0  ...  [AVIOContext @ 0x2229af0] Statistics: 0 seeks, 1 writeouts No more output streams to write to, finishing. frame=   15 fps=0.1 q=1.6 Lsize=N\/A time=00:02:30.00 bitrate=N\/A speed=1.45x     video:1382kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: unknown Input file #0 (.\/The Simpsons Movie - Trailer_x264.mp4):   Input stream #0:0 (video): 3288 packets read (72364468 bytes); 3288 frames decoded;    Input stream #0:1 (audio): 1 packets read (134 bytes);    Total: 3289 packets (72364602 bytes) demuxed Output file #0 (.\/out_img\/ffmpeg-soft_x264_%d.jpg):   Output stream #0:0 (video): 15 frames encoded; 15 packets muxed (1414925 bytes);    Total: 15 packets (1414925 bytes) muxed bench: utime=164.240s 3288 frames successfully decoded, 0 decoding errors bench: maxrss=39936kB [Parsed_fps_0 @ 0x1fa7f50] 3288 frames in, 15 frames out; 3273 frames dropped, 0 frames duplicated. [AVIOContext @ 0x1f52230] Statistics: 73517562 bytes read, 5 seeks <\/code><\/pre>\n<\/div>\n<\/div>\n<p>  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u0414\u0435\u043a\u043e\u0434\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 x265 \u0431\u0435\u0437 MIPS SIMD (\u043e\u0442\u0447\u0435\u0442, \u0441\u043e\u043a\u0440\u0430\u0449\u0435\u043d\u043d\u044b\u0439 \u0432\u0430\u0440\u0438\u0430\u043d\u0442)<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code>ffmpeg started on 2010-10-18 at 00:27:14 Report written to &quot;ffmpeg-20101018-002714.log&quot; Command line: .\/ffmpeg-mips\/ffmpeg-soft\/bin\/ffmpeg -i .\/Tears_400_x265.mp4 -vf &quot;fps=1&quot; &quot;.\/out_img\/ffmpeg-soft_x265_%d.jpg&quot; -report -benchmark ffmpeg version 3.3 Copyright (c) 2000-2017 the FFmpeg developers   built with gcc 4.9.2 (Codescape GNU Tools 2016.05-03 for MIPS MTI Linux)   configuration: --enable-cross-compile --prefix=..\/ffmpeg-soft --cross-prefix=\/home\/stas\/mipsfpga\/toolchain\/mips-mti-linux-gnu\/2016.05-03\/bin\/mips-mti-linux-gnu- --arch=mips --cpu=p5600 --target-os=linux --extra-cflags='-EL -static' --extra-ldflags='-EL -static' --disable-iconv --disable-msa   libavutil      55. 58.100 \/ 55. 58.100   libavcodec     57. 89.100 \/ 57. 89.100   libavformat    57. 71.100 \/ 57. 71.100   libavdevice    57.  6.100 \/ 57.  6.100   libavfilter     6. 82.100 \/  6. 82.100   libswscale      4.  6.100 \/  4.  6.100   libswresample   2.  7.100 \/  2.  7.100 Splitting the commandline. Reading option '-i' ... matched as input url with argument '.\/Tears_400_x265.mp4'. Reading option '-vf' ... matched as option 'vf' (set video filters) with argument 'fps=1'. Reading option '.\/out_img\/ffmpeg-soft_x265_%d.jpg' ... matched as output url. Reading option '-report' ... matched as option 'report' (generate a report) with argument '1'. Reading option '-benchmark' ... matched as option 'benchmark' (add timings for benchmarking) with argument '1'. Finished splitting the commandline. Parsing a group of options: global . Applying option report (generate a report) with argument 1. Applying option benchmark (add timings for benchmarking) with argument 1. Successfully parsed a group of options. Parsing a group of options: input url .\/Tears_400_x265.mp4. Successfully parsed a group of options. Opening an input file: .\/Tears_400_x265.mp4. [file @ 0x1f4a0e0] Setting default whitelist 'file,crypto' [mov,mp4,m4a,3gp,3g2,mj2 @ 0x1f49980] Format mov,mp4,m4a,3gp,3g2,mj2 probed with size=2048 and score=100 [mov,mp4,m4a,3gp,3g2,mj2 @ 0x1f49980] ISO: File Type Major Brand: iso4 [mov,mp4,m4a,3gp,3g2,mj2 @ 0x1f49980] Unknown dref type 0x206c7275 size 12 [mov,mp4,m4a,3gp,3g2,mj2 @ 0x1f49980] Before avformat_find_stream_info() pos: 705972 bytes read:32827 seeks:1 nb_streams:1 [hevc @ 0x1f4aca0] nal_unit_type: 32(VPS), nuh_layer_id: 0, temporal_id: 0 [hevc @ 0x1f4aca0] Decoding VPS [hevc @ 0x1f4aca0] Main profile bitstream [hevc @ 0x1f4aca0] nal_unit_type: 33(SPS), nuh_layer_id: 0, temporal_id: 0 [hevc @ 0x1f4aca0] Decoding SPS [hevc @ 0x1f4aca0] Main profile bitstream [hevc @ 0x1f4aca0] Decoding VUI [hevc @ 0x1f4aca0] nal_unit_type: 34(PPS), nuh_layer_id: 0, temporal_id: 0 [hevc @ 0x1f4aca0] Decoding PPS [mov,mp4,m4a,3gp,3g2,mj2 @ 0x1f49980] All info found [mov,mp4,m4a,3gp,3g2,mj2 @ 0x1f49980] After avformat_find_stream_info() pos: 20299 bytes read:65595 seeks:2 frames:1 Input #0, mov,mp4,m4a,3gp,3g2,mj2, from '.\/Tears_400_x265.mp4':   Metadata:     major_brand     : iso4     minor_version   : 1     compatible_brands: iso4hvc1     creation_time   : 2014-08-25T18:10:46.000000Z   Duration: 00:00:13.96, start: 0.125000, bitrate: 404 kb\/s     Stream #0:0(und), 1, 1\/24000: Video: hevc (Main) (hvc1 \/ 0x31637668), yuv420p(tv), 1920x800, 402 kb\/s, 24 fps, 24 tbr, 24k tbn, 24 tbc (default)     Metadata:       creation_time   : 2014-08-25T18:10:46.000000Z       handler_name    : hevc:fps=24@GPAC0.5.1-DEV-rev4807 Successfully opened the file. Parsing a group of options: output url .\/out_img\/ffmpeg-soft_x265_%d.jpg. Applying option vf (set video filters) with argument fps=1. Successfully parsed a group of options. Opening an output file: .\/out_img\/ffmpeg-soft_x265_%d.jpg. Successfully opened the file. detected 2 logical cores [hevc @ 0x1f61a00] nal_unit_type: 32(VPS), nuh_layer_id: 0, temporal_id: 0 [hevc @ 0x1f61a00] Decoding VPS [hevc @ 0x1f61a00] Main profile bitstream [hevc @ 0x1f61a00] nal_unit_type: 33(SPS), nuh_layer_id: 0, temporal_id: 0 [hevc @ 0x1f61a00] Decoding SPS [hevc @ 0x1f61a00] Main profile bitstream [hevc @ 0x1f61a00] Decoding VUI [hevc @ 0x1f61a00] nal_unit_type: 34(PPS), nuh_layer_id: 0, temporal_id: 0 [hevc @ 0x1f61a00] Decoding PPS Stream mapping:   Stream #0:0 -&gt; #0:0 (hevc (native) -&gt; mjpeg (native)) Press [q] to stop, [?] for help cur_dts is invalid (this is harmless if it occurs once at the start per stream) cur_dts is invalid (this is harmless if it occurs once at the start per stream) [hevc @ 0x1f61a00] nal_unit_type: 39(SEI_PREFIX), nuh_layer_id: 0, temporal_id: 0 [hevc @ 0x1f61a00] nal_unit_type: 39(SEI_PREFIX), nuh_layer_id: 0, temporal_id: 0 [hevc @ 0x1f61a00] nal_unit_type: 19(IDR_W_RADL), nuh_layer_id: 0, temporal_id: 0 [hevc @ 0x1f61a00] Decoding SEI [hevc @ 0x1f61a00] Skipped PREFIX SEI 5 [hevc @ 0x1f61a00] Decoding SEI [hevc @ 0x1f61a00] Skipped PREFIX SEI 6 cur_dts is invalid (this is harmless if it occurs once at the start per stream) [hevc @ 0x1f7aba0] nal_unit_type: 1(TRAIL_R), nuh_layer_id: 0, temporal_id: 0 [hevc @ 0x1f884d0] nal_unit_type: 1(TRAIL_R), nuh_layer_id: 0, temporal_id: 0 [hevc @ 0x1f884d0] Output frame with POC 0. [hevc @ 0x1f61a00] Decoded frame with POC 0. cur_dts is invalid (this is harmless if it occurs once at the start per stream) [hevc @ 0x1f61a00] nal_unit_type: 0(TRAIL_N), nuh_layer_id: 0, temporal_id: 0 [hevc @ 0x1f61a00] Output frame with POC 1. [hevc @ 0x1f7aba0] Decoded frame with POC 5. cur_dts is invalid (this is harmless if it occurs once at the start per stream) [hevc @ 0x1f7aba0] nal_unit_type: 0(TRAIL_N), nuh_layer_id: 0, temporal_id: 0 [hevc @ 0x1f7aba0] Output frame with POC 2. [hevc @ 0x1f884d0] Decoded frame with POC 3. [Parsed_fps_0 @ 0x1f966c0] Setting 'fps' to value '1' [Parsed_fps_0 @ 0x1f966c0] fps=1\/1 [graph 0 input from stream 0:0 @ 0x1f96bb0] Setting 'video_size' to value '1920x800' [graph 0 input from stream 0:0 @ 0x1f96bb0] Setting 'pix_fmt' to value '0' [graph 0 input from stream 0:0 @ 0x1f96bb0] Setting 'time_base' to value '1\/24000' [graph 0 input from stream 0:0 @ 0x1f96bb0] Setting 'pixel_aspect' to value '0\/1' [graph 0 input from stream 0:0 @ 0x1f96bb0] Setting 'sws_param' to value 'flags=2' [graph 0 input from stream 0:0 @ 0x1f96bb0] Setting 'frame_rate' to value '24\/1' [graph 0 input from stream 0:0 @ 0x1f96bb0] w:1920 h:800 pixfmt:yuv420p tb:1\/24000 fr:24\/1 sar:0\/1 sws_param:flags=2 [format @ 0x1f96ad0] compat: called with args=[yuvj420p|yuvj422p|yuvj444p] [format @ 0x1f96ad0] Setting 'pix_fmts' to value 'yuvj420p|yuvj422p|yuvj444p' [hevc @ 0x1f61a00] Decoded frame with POC 1. [hevc @ 0x1f7aba0] Decoded frame with POC 2. [auto_scaler_0 @ 0x1f96350] Setting 'flags' to value 'bicubic' [auto_scaler_0 @ 0x1f96350] w:iw h:ih flags:'bicubic' interl:0 [format @ 0x1f96ad0] auto-inserting filter 'auto_scaler_0' between the filter 'Parsed_fps_0' and the filter 'format' [AVFilterGraph @ 0x1f962f0] query_formats: 4 queried, 2 merged, 1 already done, 0 delayed [auto_scaler_0 @ 0x1f96350] picking yuvj420p out of 3 ref:yuv420p alpha:0 [swscaler @ 0x2153da0] deprecated pixel format used, make sure you did set range correctly [auto_scaler_0 @ 0x1f96350] w:1920 h:800 fmt:yuv420p sar:0\/1 -&gt; w:1920 h:800 fmt:yuvj420p sar:0\/1 flags:0x4 [mjpeg @ 0x1f5eba0] Forcing thread count to 1 for MJPEG encoding, use -thread_type slice or a constant quantizer if you want to use multiple cpu cores [mjpeg @ 0x1f5eba0] intra_quant_bias = 96 inter_quant_bias = 0 Output #0, image2, to '.\/out_img\/ffmpeg-soft_x265_%d.jpg':   Metadata:     major_brand     : iso4     minor_version   : 1     compatible_brands: iso4hvc1     encoder         : Lavf57.71.100     Stream #0:0(und), 0, 1\/1: Video: mjpeg, yuvj420p(pc), 1920x800, q=2-31, 200 kb\/s, 1 fps, 1 tbn, 1 tbc (default)     Metadata:       creation_time   : 2014-08-25T18:10:46.000000Z       handler_name    : hevc:fps=24@GPAC0.5.1-DEV-rev4807       encoder         : Lavc57.89.100 mjpeg     Side data:       cpb: bitrate max\/min\/avg: 0\/0\/200000 buffer size: 0 vbv_delay: -1 cur_dts is invalid (this is harmless if it occurs once at the start per stream) [hevc @ 0x1f884d0] nal_unit_type: 0(TRAIL_N), nuh_layer_id: 0, temporal_id: 0 [hevc @ 0x1f884d0] Output frame with POC 3. [Parsed_fps_0 @ 0x1f966c0] Dropping 1 frame(s). frame=    0 fps=0.0 q=0.0 size=N\/A time=00:00:00.00 bitrate=N\/A speed=   0x     cur_dts is invalid (this is harmless if it occurs once at the start per stream) [Parsed_fps_0 @ 0x1f966c0] Dropping 1 frame(s). [hevc @ 0x1f61a00] nal_unit_type: 1(TRAIL_R), nuh_layer_id: 0, temporal_id: 0 cur_dts is invalid (this is harmless if it occurs once at the start per stream) [hevc @ 0x1f61a00] Output frame with POC 4.  ...   No more output streams to write to, finishing. frame=   15 fps=0.5 q=24.8 Lsize=N\/A time=00:00:15.00 bitrate=N\/A speed=0.451x     video:1084kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: unknown Input file #0 (.\/Tears_400_x265.mp4):   Input stream #0:0 (video): 335 packets read (701773 bytes); 335 frames decoded;    Total: 335 packets (701773 bytes) demuxed Output file #0 (.\/out_img\/ffmpeg-soft_x265_%d.jpg):   Output stream #0:0 (video): 15 frames encoded; 15 packets muxed (1109604 bytes);    Total: 15 packets (1109604 bytes) muxed bench: utime=52.330s 335 frames successfully decoded, 0 decoding errors bench: maxrss=72480kB [Parsed_fps_0 @ 0x1f966c0] 335 frames in, 15 frames out; 320 frames dropped, 0 frames duplicated. [AVIOContext @ 0x1f52220] Statistics: 734659 bytes read, 2 seeks<\/code><\/pre>\n<\/div>\n<\/div>\n<p>  <\/p>\n<h2 id=\"vyvody\">\u0412\u044b\u0432\u043e\u0434\u044b<\/h2>\n<p>  <\/p>\n<ul>\n<li>MIPS SIMD \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043c\u043e\u0449\u043d\u044b\u043c \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u043c \u043f\u043e\u0432\u044b\u0448\u0435\u043d\u0438\u044f \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u0438 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0432 \u0440\u0430\u0437\u044b \u0441\u043e\u043a\u0440\u0430\u0442\u0438\u0442\u044c \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u0435 \u0432\u0440\u0435\u043c\u044f \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u0439 \u0438 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c \u0443\u0432\u0435\u043b\u0438\u0447\u0438\u0442\u044c \u0438\u0445 \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c;<\/li>\n<li>\u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u044f \u2014 \u044d\u0442\u043e \u0434\u043e\u0440\u043e\u0433\u043e \u0432 \u0447\u0430\u0441\u0442\u0438 \u0442\u0440\u0443\u0434\u043e\u0437\u0430\u0442\u0440\u0430\u0442 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430. \u0420\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u043a\u0430\u043a\u043e\u0433\u043e-\u043b\u0438\u0431\u043e \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u0430 \u0441 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c MIPS SIMD \u0431\u043b\u0438\u0436\u0435 \u043a \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0438\u044e \u0430\u0441\u0441\u0435\u043c\u0431\u043b\u0435\u0440\u043d\u044b\u0445 \u0432\u0441\u0442\u0430\u0432\u043e\u043a, \u043d\u0435\u0436\u0435\u043b\u0438 \u043a \u0432\u044b\u0441\u043e\u043a\u043e\u0443\u0440\u043e\u0432\u043d\u0435\u0432\u043e\u043c\u0443 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044e. \u0427\u0442\u043e \u0442\u0440\u0435\u0431\u0443\u0435\u0442 \u0432\u0437\u0432\u0435\u0448\u0435\u043d\u043d\u043e\u0433\u043e \u043f\u043e\u0434\u0445\u043e\u0434\u0430 \u043f\u0440\u0438 \u043f\u0440\u0438\u043d\u044f\u0442\u0438\u0438 \u0440\u0435\u0448\u0435\u043d\u0438\u0439 \u043e \u043f\u0435\u0440\u0435\u0440\u0430\u0431\u043e\u0442\u043a\u0435 \u043a\u043e\u0434\u0430;<\/li>\n<li>\u0411\u0430\u0439\u043a\u0430\u043b-\u04221 \u2014 \u044d\u0442\u043e \u043d\u0435 \u0432\u044b\u043c\u044b\u0441\u0435\u043b \u043c\u0430\u0440\u043a\u0435\u0442\u043e\u043b\u043e\u0433\u043e\u0432, \u043e\u043d \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442, \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442, \u043f\u043e\u0434 \u043d\u0435\u0433\u043e \u0432\u043f\u043e\u043b\u043d\u0435 \u0441\u043f\u043e\u043a\u043e\u0439\u043d\u043e \u0431\u044b\u043b\u0430 \u0441\u043e\u0431\u0440\u0430\u043d\u0430 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u044f\u044f \u0432\u0435\u0440\u0441\u0438\u044f \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0441\u043b\u043e\u0436\u043d\u043e\u0433\u043e \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u043e\u0433\u043e \u043f\u0430\u043a\u0435\u0442\u0430 \u0438 \u043e\u043d\u0430 \u043d\u0430 \u043d\u0435\u043c \u0431\u0435\u0437 \u043f\u0440\u043e\u0431\u043b\u0435\u043c \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u043b\u0430\u0441\u044c.<\/li>\n<\/ul>\n<p>  <\/p>\n<h3 id=\"ssylki\">\u0421\u0441\u044b\u043b\u043a\u0438<\/h3>\n<p>  <\/p>\n<p>[L1] \u2014 <a href=\"http:\/\/www.baikalelectronics.ru\/products\/T1\/\">\u041f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440 \u0411\u0430\u0439\u043a\u0430\u043b-\u04221<\/a>;<br \/>  [L2] \u2014 <a href=\"https:\/\/github.com\/MIPSfpga\/mipsfpga-plus\">\u041f\u0440\u043e\u0435\u043a\u0442 MIPSfpga-plus \u043d\u0430 github<\/a>;<br \/>  [L3] \u2014 <a href=\"https:\/\/www.imgtec.com\/mips\/warrior\/p-class-p5600-multiprocessor-core\/\">P-Class P5600 Multiprocessor Core<\/a>;<br \/>  [L4] \u2014 <a href=\"https:\/\/habrahabr.ru\/post\/276205\/\">\u0414\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438 \u0432 \u043c\u0438\u043a\u0440\u043e\u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440 MIPS, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0442 \u0432 \u043a\u043e\u043d\u0432\u0435\u0439\u0435\u0440\u0435 \u043a\u0430\u043a \u0435\u0433\u043e \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0435<\/a>;<br \/>  [L5] \u2014 <a href=\"http:\/\/www.ti.com\/lsds\/ti\/processors\/dsp\/overview.page\">Texas Instruments. Digital Signal Processors<\/a>;<br \/>  [L6] \u2014 <a href=\"https:\/\/habrahabr.ru\/post\/172969\/\">\u0410\u043b\u044c\u0442\u0435\u0440\u043d\u0430\u0442\u0438\u0432\u043d\u043e\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u043c\u043e\u0449\u043d\u043e\u0441\u0442\u0435\u0439 GPU<\/a>;<br \/>  [L7] \u2014 <a href=\"https:\/\/habrahabr.ru\/post\/72247\/\">OpenCL. \u0427\u0442\u043e \u044d\u0442\u043e \u0442\u0430\u043a\u043e\u0435 \u0438 \u0437\u0430\u0447\u0435\u043c \u043e\u043d \u043d\u0443\u0436\u0435\u043d<\/a>;<br \/>  [L8] \u2014 <a href=\"https:\/\/ru.wikipedia.org\/wiki\/%D0%A4%D0%B8%D0%BB%D1%8C%D1%82%D1%80_%D1%81_%D0%BA%D0%BE%D0%BD%D0%B5%D1%87%D0%BD%D0%BE%D0%B9_%D0%B8%D0%BC%D0%BF%D1%83%D0%BB%D1%8C%D1%81%D0%BD%D0%BE%D0%B9_%D1%85%D0%B0%D1%80%D0%B0%D0%BA%D1%82%D0%B5%D1%80%D0%B8%D1%81%D1%82%D0%B8%D0%BA%D0%BE%D0%B9\">Wikipedia: \u0424\u0438\u043b\u044c\u0442\u0440 \u0441 \u043a\u043e\u043d\u0435\u0447\u043d\u043e\u0439 \u0438\u043c\u043f\u0443\u043b\u044c\u0441\u043d\u043e\u0439 \u0445\u0430\u0440\u0430\u043a\u0442\u0435\u0440\u0438\u0441\u0442\u0438\u043a\u043e\u0439<\/a>;<br \/>  [L9] \u2014 <a href=\"http:\/\/t-filter.engineerjs.com\/\">TFilter. Free online FIR filter design tool<\/a>;<br \/>  [L10] \u2014 <a href=\"https:\/\/ru.wikipedia.org\/wiki\/%D0%A6%D0%B8%D1%84%D1%80%D0%BE%D0%B2%D0%BE%D0%B9_%D1%81%D0%B8%D0%B3%D0%BD%D0%B0%D0%BB%D1%8C%D0%BD%D1%8B%D0%B9_%D0%BF%D1%80%D0%BE%D1%86%D0%B5%D1%81%D1%81%D0%BE%D1%80\">Wikipedia: \u0426\u0438\u0444\u0440\u043e\u0432\u043e\u0439 \u0441\u0438\u0433\u043d\u0430\u043b\u044c\u043d\u044b\u0439 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440<\/a>;<br \/>  [L11] \u2014 <a href=\"https:\/\/ru.wikipedia.org\/wiki\/%D0%9F%D0%BE%D0%BB%D0%BE%D1%81%D0%BD%D0%BE-%D0%B7%D0%B0%D0%B3%D1%80%D0%B0%D0%B6%D0%B4%D0%B0%D1%8E%D1%89%D0%B8%D0%B9_%D1%84%D0%B8%D0%BB%D1%8C%D1%82%D1%80\">Wikipedia: \u041f\u043e\u043b\u043e\u0441\u043d\u043e-\u0437\u0430\u0433\u0440\u0430\u0436\u0434\u0430\u044e\u0449\u0438\u0439 \u0444\u0438\u043b\u044c\u0442\u0440<\/a>;<br \/>  [L12] \u2014 <a href=\"https:\/\/ru.wikipedia.org\/wiki\/%D0%90%D0%BC%D0%BF%D0%BB%D0%B8%D1%82%D1%83%D0%B4%D0%BD%D0%BE-%D1%87%D0%B0%D1%81%D1%82%D0%BE%D1%82%D0%BD%D0%B0%D1%8F_%D1%85%D0%B0%D1%80%D0%B0%D0%BA%D1%82%D0%B5%D1%80%D0%B8%D1%81%D1%82%D0%B8%D0%BA%D0%B0\">Wikipedia: \u0410\u043c\u043f\u043b\u0438\u0442\u0443\u0434\u043d\u043e-\u0447\u0430\u0441\u0442\u043e\u0442\u043d\u0430\u044f \u0445\u0430\u0440\u0430\u043a\u0442\u0435\u0440\u0438\u0441\u0442\u0438\u043a\u0430<\/a>;<br \/>  [L13] \u2014 <a href=\"https:\/\/ru.wikipedia.org\/wiki\/SIMD\">Wikipedia: SIMD<\/a>;<br \/>  [L14] \u2014 <a href=\"https:\/\/ru.wikipedia.org\/wiki\/%D0%92%D0%B5%D0%BA%D1%82%D0%BE%D1%80%D0%BD%D1%8B%D0%B9_%D0%BF%D1%80%D0%BE%D1%86%D0%B5%D1%81%D1%81%D0%BE%D1%80\">Wikipedia: \u0412\u0435\u043a\u0442\u043e\u0440\u043d\u044b\u0439 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440<\/a>;<br \/>  [L15] \u2014 <a href=\"https:\/\/www.imgtec.com\/mips\/architectures\/simd\/\">MIPS SIMD<\/a>;<br \/>  [L16] \u2014 <a href=\"https:\/\/gcc.gnu.org\/onlinedocs\/gcc\/MIPS-SIMD-Architecture-_0028MSA_0029-Support.html#MIPS-SIMD-Architecture-_0028MSA_0029-Support\">GCC: MIPS SIMD Architecture (MSA) Support<\/a>;<br \/>  [L17] \u2014 <a href=\"https:\/\/gcc.gnu.org\/onlinedocs\/gcc\/MIPS-SIMD-Architecture-Built-in-Functions.html#MIPS-SIMD-Architecture-Built-in-Functions\">GCC: MIPS SIMD Architecture Built-in Functions<\/a>;<br \/>  [L18] \u2014 <a href=\"https:\/\/github.com\/FFmpeg\/FFmpeg\/tree\/master\/libavcodec\/mips\">\u041f\u0440\u043e\u0435\u043a\u0442 ffmpeg \u043d\u0430 github (\u043a\u0430\u0442\u0430\u043b\u043e\u0433 libavcodec\/mips\/)<\/a>;<br \/>  [L19] \u2014 <a href=\"http:\/\/ffmpeg.org\/\">FFmpeg multimedia framework<\/a>;<br \/>  [L20] \u2014 <a href=\"https:\/\/community.imgtec.com\/developers\/mips\/tools\/codescape-mips-sdk\/\">Codescape MIPS SDK<\/a>;<br \/>  [L21] \u2014 <a href=\"http:\/\/www.h264info.com\/clips.html\">H.264 Demo Clips<\/a>;<br \/>  [L22] \u2014 <a href=\"https:\/\/x265.com\/hevc-video-files\/\">x256. Sample HEVC Video Files<\/a>;<br \/>  [L23] \u2014 <a href=\"https:\/\/github.com\/zhelnio\/memos\/tree\/master\/public\/03_mips_simd\/mips_ffmpeg_logs\">\u041b\u043e\u0433\u0438 \u0440\u0430\u0431\u043e\u0442\u044b ffmpeg<\/a><br \/>  [L24] \u2014 <a href=\"http:\/\/silicon-russia.com\/public_materials\/2016_11_04_one_day_mipsfpga_connected_mcu_materials_public_for_the_website\/04_present_nanometer_asic_seminar\/\">\u041c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u044b \u0441\u0435\u043c\u0438\u043d\u0430\u0440\u0430 \u0421\u043f\u0435\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u043b\u044c\u043d\u044b\u0435 \u0441\u0445\u0435\u043c\u044b \u043d\u0430\u043d\u043e\u0443\u0440\u043e\u0432\u043d\u044f<\/a>;<\/p>\n<p>  <\/p>\n<h3 id=\"dokumentaciya\">\u0414\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044f<\/h3>\n<p>  <\/p>\n<p>[D1] \u2014 <a href=\"https:\/\/www.google.ru\/search?q=\u0442\u0438\u0442\u0446\u0435+\u0448\u0435\u043d\u043a+\u043f\u043e\u043b\u0443\u043f\u0440\u043e\u0432\u043e\u0434\u043d\u0438\u043a\u043e\u0432\u0430\u044f+\u0441\u0445\u0435\u043c\u043e\u0442\u0435\u0445\u043d\u0438\u043a\u0430\">\u0422\u0438\u0442\u0446\u0435 \u0423., \u0428\u0435\u043d\u043a \u041a. \u2014 \u041f\u043e\u043b\u0443\u043f\u0440\u043e\u0432\u043e\u0434\u043d\u0438\u043a\u043e\u0432\u0430\u044f \u0441\u0445\u0435\u043c\u043e\u0442\u0435\u0445\u043d\u0438\u043a\u0430<\/a>;<br \/>  [D2] \u2014 <a href=\"https:\/\/github.com\/zhelnio\/memos\/raw\/master\/public\/03_mips_simd\/doc\/D2_MD00866-2B-MSA32-AFP-01.12.pdf\">MIPS Architecture for Programmers Volume IV-j: The MIPS32 SIMD Architecture Module<\/a>;<br \/>  [D3] \u2014 <a href=\"https:\/\/github.com\/zhelnio\/memos\/raw\/master\/public\/03_mips_simd\/doc\/D3_MD00927-SIMD-programming-whitepaper.pdf\">MIPS SIMD programming. Optimizing multimedia codecs<\/a>;<\/p>\n<p>  <\/p>\n<h3 id=\"izobrazheniya-i-tablicy\">\u0418\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0438 \u0442\u0430\u0431\u043b\u0438\u0446\u044b<\/h3>\n<p>  <\/p>\n<p>[P1] \u2014 <a href=\"https:\/\/habrastorage.org\/web\/0e8\/94d\/2bc\/0e894d2bc32d46f6afd5fa80ba3bee20.png\">\u0411\u043b\u043e\u043a-\u0441\u0445\u0435\u043c\u0430 \u0411\u0430\u0439\u043a\u0430\u043b-\u04221<\/a>. (\u0418\u0441\u0442\u043e\u0447\u043d\u0438\u043a: <a href=\"http:\/\/www.baikalelectronics.ru\/products\/T1\/\">L1<\/a>);<br \/>  [P2] \u2014 <a href=\"https:\/\/habrastorage.org\/web\/2b0\/e11\/a8a\/2b0e11a8af2b41d0a7a7717ac33155ff.png\">TFilter. \u041f\u0440\u0438\u043c\u0435\u0440 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u0440\u0435\u0436\u0435\u043a\u0442\u043e\u0440\u043d\u043e\u0433\u043e \u0444\u0438\u043b\u044c\u0442\u0440\u0430 1<\/a> (\u0441\u043a\u0440\u0438\u043d\u0448\u043e\u0442);<br \/>  [P3] \u2014 <a href=\"https:\/\/habrastorage.org\/web\/846\/102\/71c\/84610271c74d4900a64b039b69e1445e.png\">TFilter. \u0410\u0427\u0425 \u0440\u0435\u0436\u0435\u043a\u0442\u043e\u0440\u043d\u043e\u0433\u043e \u0444\u0438\u043b\u044c\u0442\u0440\u0430 1<\/a>;<br \/>  [P4] \u2014 <a href=\"https:\/\/habrastorage.org\/web\/b68\/54e\/68b\/b6854e68b20f40139d3ea5cd7c7c4a5a.png\">TFilter. \u041f\u0440\u0438\u043c\u0435\u0440 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u0440\u0435\u0436\u0435\u043a\u0442\u043e\u0440\u043d\u043e\u0433\u043e \u0444\u0438\u043b\u044c\u0442\u0440\u0430 2<\/a> (\u0441\u043a\u0440\u0438\u043d\u0448\u043e\u0442);<br \/>  [P5] \u2014 <a href=\"https:\/\/habrastorage.org\/web\/47f\/75f\/875\/47f75f875a954ac1b426b2a7db6d3e3a.png\">TFilter. \u0410\u0427\u0425 \u0440\u0435\u0436\u0435\u043a\u0442\u043e\u0440\u043d\u043e\u0433\u043e \u0444\u0438\u043b\u044c\u0442\u0440\u0430 2<\/a>;<br \/>  [P6] \u2014 <a href=\"https:\/\/habrastorage.org\/web\/b23\/f7a\/1cd\/b23f7a1cdb174a5183368386eaaf9ff2.png\">\u0421\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u0435 \u0442\u0440\u0430\u0434\u0438\u0446\u0438\u043e\u043d\u043d\u043e\u0433\u043e \u043f\u043e\u0434\u0445\u043e\u0434\u0430 \u0438 SIMD-\u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0444\u0438\u043b\u044c\u0442\u0440\u0430<\/a> (\u0418\u0441\u0442\u043e\u0447\u043d\u0438\u043a: <a href=\"https:\/\/github.com\/zhelnio\/memos\/raw\/master\/public\/03_mips_simd\/doc\/D3_MD00927-SIMD-programming-whitepaper.pdf\">D3<\/a>);<br \/>  [P7] \u2014 <a href=\"https:\/\/habrastorage.org\/web\/9f8\/df1\/80f\/9f8df180fe0749ac93753d269199ab48.png\">MSA Vector registers<\/a> (\u0418\u0441\u0442\u043e\u0447\u043d\u0438\u043a: <a href=\"https:\/\/github.com\/zhelnio\/memos\/raw\/master\/public\/03_mips_simd\/doc\/D2_MD00866-2B-MSA32-AFP-01.12.pdf\">D2<\/a>);<br \/>  [P8] \u2014 <a href=\"https:\/\/habrastorage.org\/web\/68f\/20a\/c03\/68f20ac03b554be8bc7eaac121a65ced.png\">MADDV Operation description<\/a> (\u0418\u0441\u0442\u043e\u0447\u043d\u0438\u043a: <a href=\"https:\/\/github.com\/zhelnio\/memos\/raw\/master\/public\/03_mips_simd\/doc\/D2_MD00866-2B-MSA32-AFP-01.12.pdf\">D2<\/a>);<\/p>\n<p> \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"https:\/\/habrahabr.ru\/post\/328566\/\"> https:\/\/habrahabr.ru\/post\/328566\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u041a\u043e\u043b\u043b\u0435\u0433\u0438 \u0438\u0437 \u0411\u0430\u0439\u043a\u0430\u043b \u042d\u043b\u0435\u043a\u0442\u0440\u043e\u043d\u0438\u043a\u0441 \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0438\u043b\u0438 \u043f\u043e\u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0441 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u043e\u043c \u0411\u0430\u0439\u043a\u0430\u043b-\u04221 [<a href=\"http:\/\/www.baikalelectronics.ru\/products\/T1\/\">L1<\/a>] \u0438 \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u043e \u0441\u0432\u043e\u0438\u0445 \u0432\u043f\u0435\u0447\u0430\u0442\u043b\u0435\u043d\u0438\u044f\u0445. \u0414\u043b\u044f \u043d\u0438\u0445 \u044d\u0442\u043e \u0441\u043f\u043e\u0441\u043e\u0431 \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u0430\u0442\u044c \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430\u043c \u043e \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044f\u0445 \u0438 \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e\u0441\u0442\u044f\u0445 \u0441\u0432\u043e\u0435\u0433\u043e \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0430. \u0414\u043b\u044f \u043c\u0435\u043d\u044f \u2014 \u0448\u0430\u043d\u0441 \u043f\u043e\u0431\u043b\u0438\u0436\u0435 \u043f\u043e\u0437\u043d\u0430\u043a\u043e\u043c\u0438\u0442\u044c\u0441\u044f \u0441 \u0441\u0438\u0441\u0442\u0435\u043c\u043e\u0439 \u043d\u0430 \u0441\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u043c \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u043d\u043e\u043c \u044f\u0434\u0440\u0435 \u0438 \u0432 \u0431\u0443\u0434\u0443\u0449\u0435\u043c \u0438\u0437\u043e\u0431\u0440\u0435\u0442\u0430\u0442\u044c \u043f\u043e\u043c\u0435\u043d\u044c\u0448\u0435 &quot;\u0432\u0435\u043b\u043e\u0441\u0438\u043f\u0435\u0434\u043e\u0432&quot;, \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u044f, \u043a \u043f\u0440\u0438\u043c\u0435\u0440\u0443, \u043d\u043e\u0432\u0443\u044e \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u0432 \u043f\u0440\u043e\u0435\u043a\u0442 MIPSfpga-plus [<a href=\"https:\/\/github.com\/MIPSfpga\/mipsfpga-plus\">L2<\/a>]. \u041d\u0443 \u0438 \u043e\u0431\u044b\u0447\u043d\u043e\u0435 \u0438\u043d\u0436\u0435\u043d\u0435\u0440\u043d\u043e\u0435 \u043b\u044e\u0431\u043e\u043f\u044b\u0442\u0441\u0442\u0432\u043e, \u043e\u043f\u044f\u0442\u044c \u0436\u0435\u2026<br \/>  \u0421\u0435\u0433\u043e\u0434\u043d\u044f \u0440\u0435\u0447\u044c \u043f\u043e\u0439\u0434\u0435\u0442 \u043e \u0432\u0435\u043a\u0442\u043e\u0440\u043d\u043e\u043c \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0438 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u044b MIPS SIMD, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e \u0432 \u044f\u0434\u0440\u0430\u0445 MIPS Warrior P-class P5600 [<a href=\"https:\/\/www.imgtec.com\/mips\/warrior\/p-class-p5600-multiprocessor-core\/\">L3<\/a>], \u0430 \u0437\u043d\u0430\u0447\u0438\u0442 \u043f\u0440\u0438\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u0438 \u0432 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0435 \u0411\u0430\u0439\u043a\u0430\u043b-\u04221. \u0421\u0442\u0430\u0442\u044c\u044f \u043e\u0440\u0438\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0430 \u043d\u0430 \u043d\u0430\u0447\u0438\u043d\u0430\u044e\u0449\u0438\u0445 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432.<\/p>\n<p>  <\/p>\n<p><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/web\/0e8\/94d\/2bc\/0e894d2bc32d46f6afd5fa80ba3bee20.png\"\/><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-286359","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/286359","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=286359"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/286359\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=286359"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=286359"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=286359"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}