{"id":302270,"date":"2020-04-21T21:00:29","date_gmt":"2020-04-21T21:00:29","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=302270"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=302270","title":{"rendered":"SHISHUA: \u0441\u0430\u043c\u044b\u0439 \u0431\u044b\u0441\u0442\u0440\u044b\u0439 \u0432 \u043c\u0438\u0440\u0435 \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440 \u043f\u0441\u0435\u0432\u0434\u043e\u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u0445 \u0447\u0438\u0441\u0435\u043b"},"content":{"rendered":"\n<div class=\"post__text post__text-html post__text_v1\" id=\"post-content-body\" data-io-article-url=\"https:\/\/habr.com\/ru\/company\/mailru\/blog\/498352\/\">\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/5p\/ex\/bl\/5pexblhd_seedlgm8iidkfktef4.jpeg\" width=\"400\"><\/div>\n<p>  \u041f\u043e\u043b\u0433\u043e\u0434\u0430 \u043d\u0430\u0437\u0430\u0434 \u043c\u043d\u0435 \u0437\u0430\u0445\u043e\u0442\u0435\u043b\u043e\u0441\u044c \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u043b\u0443\u0447\u0448\u0438\u0439 \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440 \u043f\u0441\u0435\u0432\u0434\u043e\u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u0445 \u0447\u0438\u0441\u0435\u043b (\u0413\u041f\u0421\u0427) \u0441 \u043a\u0430\u043a\u043e\u0439-\u043d\u0438\u0431\u0443\u0434\u044c \u043d\u0435\u043e\u0431\u044b\u0447\u043d\u043e\u0439 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u043e\u0439. \u042f \u0434\u0443\u043c\u0430\u043b, \u0447\u0442\u043e \u043d\u0430\u0447\u0430\u043b\u043e \u0431\u0443\u0434\u0435\u0442 \u043b\u0451\u0433\u043a\u0438\u043c, \u0430 \u043f\u043e \u043c\u0435\u0440\u0435 \u0440\u0430\u0431\u043e\u0442\u044b \u0437\u0430\u0434\u0430\u0447\u0430 \u0441\u0442\u0430\u043d\u0435\u0442 \u043c\u0435\u0434\u043b\u0435\u043d\u043d\u043e \u0443\u0441\u043b\u043e\u0436\u043d\u044f\u0442\u044c\u0441\u044f. \u0418 \u0434\u0443\u043c\u0430\u043b, \u0441\u043c\u043e\u0433\u0443 \u043b\u0438 \u044f \u043d\u0430\u0443\u0447\u0438\u0442\u044c\u0441\u044f \u0432\u0441\u0435\u043c\u0443 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0431\u044b\u0441\u0442\u0440\u043e, \u0447\u0442\u043e\u0431\u044b \u0441\u043f\u0440\u0430\u0432\u0438\u0442\u044c\u0441\u044f \u0441 \u0441\u0430\u043c\u044b\u043c \u0441\u043b\u043e\u0436\u043d\u044b\u043c.<\/p>\n<p>  \u041a \u043c\u043e\u0435\u043c\u0443 \u0443\u0434\u0438\u0432\u043b\u0435\u043d\u0438\u044e, \u0441\u043b\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0432\u043e\u0437\u0440\u0430\u0441\u0442\u0430\u043b\u0430 \u043d\u0435 \u043b\u0438\u043d\u0435\u0439\u043d\u043e. \u041f\u043e\u0431\u0430\u0439\u0442\u043e\u0432\u043e\u0435 \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u043f\u043e \u043a\u0440\u0438\u0442\u0435\u0440\u0438\u044e \u0445\u0438-\u043a\u0432\u0430\u0434\u0440\u0430\u0442 \u043e\u043a\u0430\u0437\u0430\u043b\u043e\u0441\u044c \u043e\u0447\u0435\u043d\u044c \u0442\u0440\u0443\u0434\u043d\u044b\u043c! \u041f\u043e\u0437\u0434\u043d\u0435\u0435 \u0441\u0442\u043e\u043b\u044c \u0436\u0435 \u0442\u0440\u0443\u0434\u043d\u043e \u0431\u044b\u043b\u043e \u043f\u0440\u043e\u0439\u0442\u0438 \u0442\u0435\u0441\u0442\u044b diehard. \u042f <a href=\"https:\/\/mobile.twitter.com\/espadrine\/status\/1184542865969614849\">\u043e\u043f\u0443\u0431\u043b\u0438\u043a\u043e\u0432\u0430\u043b \u0442\u0435\u043a\u0443\u0449\u0438\u0435 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b<\/a>, \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u043d\u044f\u0442\u044c, \u043a\u0430\u043a\u0438\u0435 \u0435\u0449\u0451 \u0442\u0440\u0443\u0434\u043d\u043e\u0441\u0442\u0438 \u043c\u0435\u043d\u044f \u043e\u0436\u0438\u0434\u0430\u044e\u0442. \u041e\u0434\u043d\u0430\u043a\u043e <a href=\"https:\/\/mobile.twitter.com\/espadrine\/status\/1184883565634424832\">\u0442\u0435\u0441\u0442 PractRand \u0432 \u0442\u043e\u0442 \u0440\u0430\u0437 \u043f\u0440\u043e\u0439\u0442\u0438 \u043d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c<\/a>.<\/p>\n<p>  \u0417\u0430\u0442\u0435\u043c \u0431\u044b\u043b\u043e \u043e\u0447\u0435\u043d\u044c \u0442\u0440\u0443\u0434\u043d\u043e<a href=\"https:\/\/mobile.twitter.com\/espadrine\/status\/1186358084425400320\"> \u043f\u0440\u043e\u0445\u043e\u0436\u0434\u0435\u043d\u0438\u0435 \u0442\u0435\u0441\u0442\u0430 BigCrush<\/a>.<\/p>\n<p>  \u0417\u0430\u0442\u0435\u043c \u0431\u044b\u043b\u043e \u043e\u0447\u0435\u043d\u044c \u0442\u0440\u0443\u0434\u043d\u043e \u043f\u0435\u0440\u0435\u0434\u0430\u0432\u0430\u0442\u044c 32 \u0442\u0435\u0431\u0438\u0431\u0430\u0439\u0442\u0430 \u0434\u0430\u043d\u043d\u044b\u0445 \u043f\u0440\u0438 \u043f\u0440\u043e\u0445\u043e\u0436\u0434\u0435\u043d\u0438\u0438 PractRand. \u0421\u043a\u043e\u0440\u043e\u0441\u0442\u044c \u0441\u0442\u0430\u043b\u0430 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u043e\u0439. \u041c\u0430\u043b\u043e \u0431\u044b\u043b\u043e \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044e, \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u044e\u0449\u0435\u0439 \u0434\u0435\u0441\u044f\u0442\u044c \u043c\u0435\u0433\u0430\u0431\u0430\u0439\u0442\u043e\u0432 \u0432 \u0441\u0435\u043a\u0443\u043d\u0434\u0443, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u043f\u0440\u043e\u0445\u043e\u0436\u0434\u0435\u043d\u0438\u0435 PractRand \u0437\u0430\u043d\u044f\u043b\u043e \u0431\u044b \u043c\u0435\u0441\u044f\u0446. \u041d\u043e \u0434\u043e\u043b\u0436\u0435\u043d \u043f\u0440\u0438\u0437\u043d\u0430\u0442\u044c\u0441\u044f, \u0447\u0442\u043e <a href=\"https:\/\/github.com\/espadrine\/combit\">\u043f\u0440\u043e\u0439\u0442\u0438 \u044d\u0442\u043e\u0442 \u0442\u0435\u0441\u0442 \u0441\u043e \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c\u044e \u0433\u0438\u0433\u0430\u0431\u0430\u0439\u0442 \u0432 \u0441\u0435\u043a\u0443\u043d\u0434\u0443<\/a> \u0431\u044b\u043b\u043e \u043e\u0447\u0435\u043d\u044c \u0442\u0440\u0443\u0434\u043d\u043e.<br \/>  <a name=\"habracut\"><\/a><br \/>  \u041a\u043e\u0433\u0434\u0430 \u043f\u043e\u0434\u043d\u0438\u043c\u0430\u0435\u0448\u044c\u0441\u044f \u043d\u0430 \u0442\u0430\u043a\u0443\u044e \u0432\u044b\u0441\u043e\u0442\u0443\u2026 \u0442\u0435\u0431\u0435 \u0445\u043e\u0447\u0435\u0442\u0441\u044f \u0443\u0437\u043d\u0430\u0442\u044c, \u0441\u043c\u043e\u0436\u0435\u0448\u044c \u043b\u0438 \u0442\u044b \u0434\u043e\u0431\u0440\u0430\u0442\u044c\u0441\u044f \u0434\u043e \u0433\u0440\u0430\u043d\u0438\u0446\u044b \u041f\u0430\u0440\u0435\u0442\u043e. \u0422\u044b \u0445\u043e\u0447\u0435\u0448\u044c \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0441\u0430\u043c\u044b\u0439 \u0431\u044b\u0441\u0442\u0440\u044b\u0439 \u0432 \u043c\u0438\u0440\u0435 \u0413\u041f\u0421\u0427, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u0440\u043e\u0439\u0434\u0451\u0442 \u0441\u0430\u043c\u044b\u0435 \u0441\u043b\u043e\u0436\u043d\u044b\u0435 \u0441\u0442\u0430\u0442\u0438\u0441\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u0442\u0435\u0441\u0442\u044b.<\/p>\n<p>  \u041c\u043d\u0435 \u044d\u0442\u043e \u0443\u0434\u0430\u043b\u043e\u0441\u044c.<\/p>\n<p>  \u0412 <a href=\"https:\/\/espadrine.github.io\/blog\/posts\/a-primer-on-randomness.html\">\u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u0439 \u0441\u0442\u0430\u0442\u044c\u0435<\/a> \u044f \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u0430\u043b, \u0447\u0435\u043c\u0443 \u043d\u0430\u0443\u0447\u0438\u043b\u0441\u044f, \u0447\u0442\u043e\u0431\u044b \u0434\u043e\u0431\u0438\u0442\u044c\u0441\u044f \u0441\u0432\u043e\u0435\u0439 \u0446\u0435\u043b\u0438. \u0410 \u0437\u0434\u0435\u0441\u044c \u044f \u0440\u0430\u0441\u0441\u043a\u0430\u0436\u0443, \u043a\u0430\u043a \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0444\u0438\u043d\u0430\u043b\u044c\u043d\u0430\u044f \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0430.<\/p>\n<h2>\u0426\u0435\u043b\u044c<\/h2>\n<p>  \u041d\u0430\u0447\u043d\u0451\u043c \u0441 \u043e\u0447\u0435\u0432\u0438\u0434\u043d\u043e\u0433\u043e: <strong>\u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c \u0437\u0430\u0432\u0438\u0441\u0438\u0442 \u043e\u0442 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u044b<\/strong>. \u042f \u0441\u043e\u0441\u0440\u0435\u0434\u043e\u0442\u043e\u0447\u0438\u043b\u0441\u044f \u043d\u0430 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u0438 \u043f\u043e\u0434 \u0441\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u0443\u044e \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0443 x86-64 (\u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u044b Intel \u0438 AMD).<\/p>\n<p>  \u0414\u043b\u044f \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u044f \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u043a\u043b\u0430\u0441\u0441\u0438\u0447\u0435\u0441\u043a\u0430\u044f \u043c\u0435\u0442\u0440\u0438\u043a\u0430 <strong>cpb<\/strong>: \u044d\u0442\u043e \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0446\u0438\u043a\u043b\u043e\u0432 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0430, \u043f\u043e\u0442\u0440\u0430\u0447\u0435\u043d\u043d\u044b\u0445 \u043d\u0430 \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u043e\u0434\u043d\u043e\u0433\u043e \u0431\u0430\u0439\u0442\u0430. \u042d\u0442\u0430 \u043c\u0435\u0442\u0440\u0438\u043a\u0430 <a href=\"https:\/\/bench.cr.yp.to\/supercop.html\">\u0432\u044b\u0447\u0438\u0441\u043b\u044f\u0435\u0442\u0441\u044f \u0438 \u0441\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u0435\u0442\u0441\u044f<\/a> \u0432\u043e \u0432\u0441\u0435\u0445 \u043a\u0440\u0438\u043f\u0442\u043e\u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u0440\u0430\u0431\u043e\u0442\u0430\u0445. \u0427\u0443\u0442\u044c \u043c\u0435\u043d\u044c\u0448\u0430\u044f \u0432\u0435\u043b\u0438\u0447\u0438\u043d\u0430 cpb \u0432 \u043c\u0438\u0440\u0435 \u041f\u041e \u0438\u043b\u0438 \u043e\u0431\u043e\u0440\u0443\u0434\u043e\u0432\u0430\u043d\u0438\u044f \u043c\u043e\u0436\u0435\u0442 \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0438\u0442\u044c \u043f\u043e\u0431\u0435\u0434\u0443 \u0432 \u0441\u043e\u0440\u0435\u0432\u043d\u043e\u0432\u0430\u043d\u0438\u0438 \u0438\u043b\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u043d\u0430 \u0432\u0435\u0431-\u0441\u0430\u0439\u0442\u0430\u0445 \u043f\u043e \u0432\u0441\u0435\u043c\u0443 \u043c\u0438\u0440\u0443.<\/p>\n<p>  \u0427\u0442\u043e\u0431\u044b \u0443\u043b\u0443\u0447\u0448\u0438\u0442\u044c cpb, \u043c\u043e\u0436\u043d\u043e:<\/p>\n<ol>\n<li>\u0413\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0431\u043e\u043b\u044c\u0448\u0435 \u0431\u0430\u0439\u0442\u043e\u0432 \u043f\u0440\u0438 \u0442\u043e\u043c \u0436\u0435 \u043e\u0431\u044a\u0451\u043c\u0435 \u0440\u0430\u0431\u043e\u0442\u044b,<\/li>\n<li>\u0418\u043b\u0438 \u0434\u0435\u043b\u0430\u0442\u044c \u043c\u0435\u043d\u044c\u0448\u0435 \u0440\u0430\u0431\u043e\u0442\u044b, \u0447\u0442\u043e\u0431\u044b \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0442\u043e\u0436\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0431\u0430\u0439\u0442\u043e\u0432,<\/li>\n<li>\u0418\u043b\u0438 \u0440\u0430\u0441\u043f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u0438\u0442\u044c \u0440\u0430\u0431\u043e\u0442\u0443.<\/li>\n<\/ol>\n<p>  \u041c\u044b \u0441\u0434\u0435\u043b\u0430\u0435\u043c \u0432\u0441\u0451 \u043f\u0435\u0440\u0435\u0447\u0438\u0441\u043b\u0435\u043d\u043d\u043e\u0435.<\/p>\n<p>  \u0421\u043e\u0433\u043b\u0430\u0441\u043d\u043e \u043f\u0435\u0440\u0432\u043e\u043c\u0443 \u043f\u0443\u043d\u043a\u0442\u0443, \u043d\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u043f\u0440\u0438 \u043a\u0430\u0436\u0434\u043e\u0439 \u0438\u0442\u0435\u0440\u0430\u0446\u0438\u0438 \u0432\u044b\u0434\u0430\u0432\u0430\u0442\u044c \u0431\u043e\u043b\u044c\u0448\u0435 \u0431\u0438\u0442\u043e\u0432. <\/p>\n<p>  \u042f \u0431\u043e\u044f\u043b\u0441\u044f, \u0447\u0442\u043e \u043c\u043d\u0435 \u0431\u0443\u0434\u0443\u0442 \u0433\u043e\u0432\u043e\u0440\u0438\u0442\u044c: \u00ab\u0415\u0441\u043b\u0438 \u043e\u043d \u043d\u0435 \u0432\u044b\u0434\u0430\u0451\u0442 32-\u0431\u0438\u0442\u043d\u044b\u0435 \u0447\u0438\u0441\u043b\u0430, \u0442\u043e \u044d\u0442\u043e \u043d\u0435 \u0413\u041f\u0421\u0427\u00bb, \u0438\u043b\u0438 \u0442\u043e \u0436\u0435 \u0441\u0430\u043c\u043e\u0435 \u0441 64-\u0431\u0438\u0442\u043d\u044b\u043c\u0438 \u0447\u0438\u0441\u043b\u0430\u043c\u0438. \u0418\u043b\u0438: \u00ab\u0413\u041f\u0421\u0427 \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u0442\u044c \u043f\u0440\u0435\u0434\u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d \u0442\u043e\u043b\u044c\u043a\u043e \u0434\u043b\u044f \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u044b x86-64\u00bb, \u0441\u043b\u043e\u0432\u043d\u043e \u0437\u0430\u043f\u0440\u0435\u0449\u0435\u043d\u044b \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438 \u0432\u0440\u043e\u0434\u0435 POPCNT \u0438\u043b\u0438 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u044b \u0432\u0440\u043e\u0434\u0435 %xmm7.<\/p>\n<p>  \u041e\u0434\u043d\u0430\u043a\u043e \u0413\u041f\u0421\u0427 \u2014 \u044d\u0442\u043e \u0438\u043d\u0436\u0435\u043d\u0435\u0440\u0438\u044f: \u0430\u0432\u0442\u043e\u0440\u044b \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440\u043e\u0432 \u0443\u0436\u0435 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0434\u0435\u0441\u044f\u0442\u0438\u043b\u0435\u0442\u0438\u0439 \u0441\u0442\u0430\u0440\u0430\u044e\u0442\u0441\u044f \u0432\u044b\u0436\u0430\u0442\u044c \u0438\u0437 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u043e\u0432 \u0432\u0441\u0451 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0435! \u041a\u043e\u0433\u0434\u0430 \u043f\u043e\u044f\u0432\u0438\u043b\u0441\u044f ROL, \u043e\u043d\u0438 \u043d\u0430\u0447\u0430\u043b\u0438 \u043f\u043e\u043b\u0430\u0433\u0430\u0442\u044c\u0441\u044f \u043d\u0430 \u043d\u0435\u0433\u043e. \u0421 \u043f\u043e\u044f\u0432\u043b\u0435\u043d\u0438\u0435\u043c 64-\u0431\u0438\u0442\u043d\u044b\u0445 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u043e\u0432 \u0441\u0442\u0430\u043b\u0438 \u043f\u043e\u043b\u0430\u0433\u0430\u0442\u044c\u0441\u044f \u043d\u0430 %rax. \u041a\u043e\u043d\u0435\u0447\u043d\u043e, \u043d\u0430 ARM \u0442\u0430\u043a\u0438\u0435 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u044b \u043c\u043e\u0433\u0443\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u043c\u0435\u0434\u043b\u0435\u043d\u043d\u0435\u0435 (\u0445\u043e\u0442\u044f \u044d\u0442\u043e \u0435\u0449\u0451 \u043f\u0440\u0435\u0434\u0441\u0442\u043e\u0438\u0442 \u0432\u044b\u044f\u0441\u043d\u0438\u0442\u044c), \u043e\u0434\u043d\u0430\u043a\u043e 64-\u0431\u0438\u0442\u043d\u044b\u0435 \u0413\u041f\u0421\u0427 \u0430\u043a\u0442\u0438\u0432\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u0438\u0441\u044c \u0435\u0449\u0451 \u0434\u043e \u0442\u043e\u0433\u043e, \u043a\u0430\u043a Android \u043d\u0430\u0447\u0430\u043b \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u0442\u044c \u0432 2019-\u043c \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0443 64-\u0431\u0438\u0442\u043d\u043e\u0441\u0442\u0438!<\/p>\n<p>  \u0422\u043e \u0435\u0441\u0442\u044c \u044d\u0442\u0430 \u0441\u0444\u0435\u0440\u0430 \u0440\u0430\u0437\u0432\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0432\u043c\u0435\u0441\u0442\u0435 \u0441 \u0430\u043f\u043f\u0430\u0440\u0430\u0442\u043d\u043e\u0439 \u0447\u0430\u0441\u0442\u044c\u044e. \u0418 \u0441\u0435\u0433\u043e\u0434\u043d\u044f \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u044b Intel \u0438 AMD \u0437\u0430 \u0441\u0447\u0451\u0442 <a href=\"https:\/\/software.intel.com\/en-us\/articles\/how-intel-avx2-improves-performance-on-server-applications\">AVX2<\/a> \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u044e\u0442 \u0443\u0436\u0435 256-\u0431\u0438\u0442\u043d\u044b\u0435 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438. RC4 \u0432\u044b\u0434\u0430\u0432\u0430\u043b 1 \u0431\u0430\u0439\u0442, drand48 \u043c\u043e\u0433 \u0437\u0430 \u0440\u0430\u0437 \u0432\u044b\u0434\u0430\u0432\u0430\u0442\u044c 4 \u0431\u0430\u0439\u0442\u0430, pcg64 \u2014 8 \u0431\u0430\u0439\u0442\u043e\u0432, \u0430 \u0442\u0435\u043f\u0435\u0440\u044c \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u0441\u0440\u0430\u0437\u0443 \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043f\u043e 32 \u0431\u0430\u0439\u0442\u0430.<\/p>\n<p>  8 \u0431\u0430\u0439\u0442\u043e\u0432 \u043c\u043e\u0433\u0443\u0442 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0442\u044c \u0441\u043e\u0431\u043e\u0439 64-\u0431\u0438\u0442\u043d\u043e\u0435 \u0447\u0438\u0441\u043b\u043e, \u0438 \u0432 \u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u0435 \u044f\u0437\u044b\u043a\u043e\u0432 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0435\u0441\u0442\u044c \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u044b\u0435 \u0442\u0438\u043f\u044b. \u041d\u043e \u043c\u0430\u043b\u043e \u043a\u0430\u043a\u0438\u0435 \u044f\u0437\u044b\u043a\u0438 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u044e\u0442 \u0442\u0438\u043f\u044b \u0434\u043b\u044f 16 \u0431\u0430\u0439\u0442\u043e\u0432 (\u043f\u0440\u0438\u043c\u0435\u0447\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0435 \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u2014 <a href=\"https:\/\/gcc.gnu.org\/onlinedocs\/gcc\/_005f_005fint128.html\">__uint128_t<\/a> \u0432 \u0421). \u0415\u0449\u0451 \u043c\u0435\u043d\u044c\u0448\u0435 \u044f\u0437\u044b\u043a\u043e\u0432 \u0438\u043c\u0435\u044e\u0442 \u0442\u0438\u043f \u0434\u043b\u044f 32 \u0431\u0430\u0439\u0442\u043e\u0432 (\u043a\u0440\u043e\u043c\u0435 \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0438\u0445).<\/p>\n<p>  \u0422\u0430\u043a \u0447\u0442\u043e \u043c\u043e\u0436\u0435\u043c \u043f\u043e\u043f\u0440\u043e\u0449\u0430\u0442\u044c\u0441\u044f \u0441 \u043e\u0431\u044b\u0447\u043d\u044b\u043c \u043f\u0440\u043e\u0442\u043e\u0442\u0438\u043f\u043e\u043c \u0413\u041f\u0421\u0427-\u0444\u0443\u043d\u043a\u0446\u0438\u0438 (\u043f\u0440\u0438\u043c\u0435\u0440 \u0438\u0437 \u0431\u0435\u043d\u0447\u043c\u0430\u0440\u043a\u0430 \u0412\u0438\u043d\u044c\u0438 <a href=\"http:\/\/xoshiro.di.unimi.it\/hwd.c\">HWD<\/a>):<\/p>\n<pre><code class=\"plaintext\">static uint64_t next(void); <\/code><\/pre>\n<p>  \u0412\u043c\u0435\u0441\u0442\u043e \u044d\u0442\u043e\u0433\u043e \u043c\u043e\u0436\u043d\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440, \u0437\u0430\u043f\u043e\u043b\u043d\u044f\u044e\u0449\u0438\u0439 \u0431\u0443\u0444\u0435\u0440 (\u043f\u0440\u0438\u043c\u0435\u0440 \u0438\u0437<a href=\"https:\/\/github.com\/espadrine\/shishua\/blob\/master\/prng.c\"> \u043c\u043e\u0435\u0433\u043e \u0431\u0435\u043d\u0447\u043c\u0430\u0440\u043a\u0430<\/a>):<\/p>\n<pre><code class=\"plaintext\">void prng_gen(prng_state *s, __uint64_t buf[], __uint64_t size); <\/code><\/pre>\n<p>  \u041a\u0430\u043a\u0438\u0435 \u0443 \u044d\u0442\u043e\u0433\u043e \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u043d\u0435\u0434\u043e\u0441\u0442\u0430\u0442\u043a\u0438?<\/p>\n<p>  \u0415\u0441\u043b\u0438 \u0432\u0430\u0448 \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440 \u0432\u044b\u0434\u0430\u0451\u0442 \u043f\u043e 32 \u0431\u0430\u0439\u0442\u0430 \u0437\u0430 \u0440\u0430\u0437, \u0442\u043e \u043d\u0443\u0436\u043d\u043e, \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u0442\u0440\u0435\u0431\u0438\u0442\u0435\u043b\u044c \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u0438\u043b \u043c\u0430\u0441\u0441\u0438\u0432, \u043a\u0440\u0430\u0442\u043d\u044b\u0439 32 (\u0432 \u0438\u0434\u0435\u0430\u043b\u0435, \u0432\u044b\u0440\u043e\u0432\u043d\u0435\u043d\u043d\u044b\u0439 \u043f\u043e 32 \u0431\u0430\u0439\u0442\u0430\u043c). \u0425\u043e\u0442\u044f \u043c\u043e\u0436\u043d\u043e \u043e\u0431\u043e\u0439\u0442\u0438\u0441\u044c \u0438 \u0431\u0435\u0437 \u044d\u0442\u043e\u0433\u043e, \u043f\u0440\u043e\u0441\u0442\u043e \u0431\u0443\u0434\u0435\u043c \u0437\u0430\u043f\u043e\u043b\u043d\u044f\u0442\u044c \u0431\u0443\u0444\u0435\u0440. \u041d\u0435\u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 \u0431\u0443\u0434\u0435\u043c \u0438\u0437 \u043d\u0435\u0433\u043e \u0443\u0431\u0438\u0440\u0430\u0442\u044c \u0438 \u0441\u043d\u043e\u0432\u0430 \u0437\u0430\u043f\u043e\u043b\u043d\u044f\u0442\u044c \u043f\u043e \u043c\u0435\u0440\u0435 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u0438. <i>\u0417\u0430\u0434\u0435\u0440\u0436\u043a\u0430<\/i> \u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0441\u044f \u043d\u0435\u043f\u0440\u0435\u0434\u0441\u043a\u0430\u0437\u0443\u0435\u043c\u043e\u0439: \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0432\u044b\u0437\u043e\u0432\u044b \u0431\u0443\u0434\u0443\u0442 \u043f\u0440\u043e\u0441\u0442\u043e \u0447\u0438\u0442\u0430\u0442\u044c \u0431\u0443\u0444\u0435\u0440. \u041d\u043e \u0432 \u0441\u0440\u0435\u0434\u043d\u0435\u043c \u0432\u0441\u0451 \u0431\u0443\u0434\u0435\u0442 \u0442\u0430\u043a \u0436\u0435.<\/p>\n<p>  \u0422\u0435\u043f\u0435\u0440\u044c \u043c\u044b \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u0435\u043c \u0431\u043e\u043b\u044c\u0448\u0435 \u0431\u0430\u0439\u0442\u043e\u0432, \u0434\u0435\u043b\u0430\u044f \u0442\u043e\u0442 \u0436\u0435 \u043e\u0431\u044a\u0451\u043c \u0440\u0430\u0431\u043e\u0442\u044b. \u041a\u0430\u043a \u043d\u0430\u043c \u0440\u0430\u0441\u043f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u0438\u0442\u044c \u0435\u0451?<\/p>\n<h2>\u041f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u0438\u0437\u043c<\/h2>\n<p>  \u041f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u044b \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u044e\u0442 \u043d\u0430 \u0432\u0441\u0435\u0445 \u0443\u0440\u043e\u0432\u043d\u044f\u0445 \u043d\u0435\u0432\u0435\u0440\u043e\u044f\u0442\u043d\u044b\u0439 \u043d\u0430\u0431\u043e\u0440 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432 \u0440\u0430\u0441\u043f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u0438\u0432\u0430\u043d\u0438\u044f.<\/p>\n<p>  \u0412\u043e-\u043f\u0435\u0440\u0432\u044b\u0445, \u044d\u0442\u043e SIMD-\u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438 (Single-Instruction, Multiple Data). \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, AVX2 \u043f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u044c\u043d\u043e \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442 \u0447\u0435\u0442\u044b\u0440\u0435 64-\u0431\u0438\u0442\u043d\u044b\u0445 \u0441\u043b\u043e\u0436\u0435\u043d\u0438\u044f, \u0438\u043b\u0438 \u0432\u043e\u0441\u0435\u043c\u044c 32-\u0431\u0438\u0442\u043d\u044b\u0445, \u0438 \u0442.\u0434.<\/p>\n<p>  \u0412 \u043a\u0440\u0438\u043f\u0442\u043e\u0433\u0440\u0430\u0444\u0438\u0438 \u044d\u0442\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442 \u0443\u0436\u0435 \u043b\u0435\u0442 \u043f\u044f\u0442\u043d\u0430\u0434\u0446\u0430\u0442\u044c. \u041f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u0438\u0437\u043c \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0438\u043b \u043d\u0435\u0432\u0435\u0440\u043e\u044f\u0442\u043d\u0443\u044e \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c <a href=\"https:\/\/github.com\/floodyberry\/supercop\/tree\/master\/crypto_stream\/chacha20\/dolbeau\/amd64-avx2\">ChaCha20<\/a>. \u0415\u0433\u043e \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u044e\u0442 \u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u043e \u0432\u0430\u0436\u043d\u044b\u0445 \u043f\u0440\u0438\u043c\u0438\u0442\u0438\u0432\u043e\u0432, \u043d\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0449\u0438\u0445 AESNI. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, <a href=\"https:\/\/norx.io\/data\/norx.pdf\">NORX<\/a> \u0438 <a href=\"https:\/\/cryptojedi.org\/papers\/gimli-20170627.pdf\">Gimli<\/a> \u0441\u043f\u0440\u043e\u0435\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u044b \u0441 \u0443\u0447\u0451\u0442\u043e\u043c \u043f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u0438\u0437\u043c\u0430.<\/p>\n<p>  \u041d\u0435\u0434\u0430\u0432\u043d\u043e \u0432 \u043d\u0435\u043a\u0440\u0438\u043f\u0442\u043e\u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u043e\u043c \u0413\u041f\u0421\u0427-\u0441\u043e\u043e\u0431\u0449\u0435\u0441\u0442\u0432\u0435 \u0442\u043e\u0436\u0435 \u0432\u043e\u0437\u0440\u043e\u0441 \u0438\u043d\u0442\u0435\u0440\u0435\u0441 \u043a \u044d\u0442\u043e\u0439 \u0442\u0435\u043c\u0435. \u0412 \u0447\u0430\u0441\u0442\u043d\u043e\u0441\u0442\u0438, \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0435 \u043f\u0440\u0438\u043c\u0438\u0442\u0438\u0432\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u0440\u043e\u0435\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043b\u0438\u0441\u044c \u043d\u0435 \u043f\u043e\u0434 SIMD, \u043c\u043e\u0433\u0443\u0442 \u0441\u0442\u0430\u0442\u044c \u043e\u0441\u043d\u043e\u0432\u043e\u0439 \u0434\u043b\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u043e\u0447\u0435\u043d\u044c \u0431\u044b\u0441\u0442\u0440\u044b\u0445 \u0413\u041f\u0421\u0427.<\/p>\n<p>  \u041a\u043e\u0433\u0434\u0430 \u0421\u0435\u0431\u0430\u0441\u0442\u044c\u044f\u043d\u043e \u0412\u0438\u043d\u044c\u044f (Sebastiano Vigna) \u043f\u0440\u043e\u0434\u0432\u0438\u0433\u0430\u043b \u0441\u0432\u043e\u044e \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0443 <a href=\"http:\/\/prng.di.unimi.it\/#speed\">xoshiro256++<\/a> \u0432 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u043e\u0439 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0435 \u044f\u0437\u044b\u043a\u0430 Julia, <a href=\"https:\/\/github.com\/JuliaLang\/julia\/issues\/27614#issuecomment-548154730\">\u043e\u043d \u0432\u044b\u044f\u0441\u043d\u0438\u043b<\/a>, \u0447\u0442\u043e \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b \u0432\u043e\u0441\u044c\u043c\u0438 \u043a\u043e\u043d\u043a\u0443\u0440\u0435\u043d\u0442\u043d\u044b\u0445, \u043f\u043e-\u0440\u0430\u0437\u043d\u043e\u043c\u0443 \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0445 \u044d\u043a\u0437\u0435\u043c\u043f\u043b\u044f\u0440\u043e\u0432 \u0413\u041f\u0421\u0427 \u043c\u043e\u0436\u043d\u043e \u043a\u043e\u043d\u043a\u0430\u0442\u0435\u043d\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043e\u0447\u0435\u043d\u044c \u0431\u044b\u0441\u0442\u0440\u043e, \u0435\u0441\u043b\u0438 \u043a\u0430\u0436\u0434\u0443\u044e \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u044e \u0438\u0441\u043f\u043e\u043b\u043d\u044f\u0442\u044c \u043e\u0434\u043d\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e \u0432\u043e \u0432\u0441\u0435\u0445 \u0413\u041f\u0421\u0427.<\/p>\n<p>  SIMD \u2014 \u043b\u0438\u0448\u044c \u043e\u0434\u0438\u043d \u0438\u0437 \u0443\u0440\u043e\u0432\u043d\u0435\u0439 \u0440\u0430\u0441\u043f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u0438\u0432\u0430\u043d\u0438\u044f \u0432 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0435. \u0420\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u044e \u043f\u0440\u043e\u0447\u0438\u0442\u0430\u0442\u044c <a href=\"https:\/\/espadrine.github.io\/blog\/posts\/a-primer-on-randomness.html\">\u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0443\u044e \u0441\u0442\u0430\u0442\u044c\u044e \u043f\u043e \u044d\u0442\u043e\u0439 \u0442\u0435\u043c\u0435<\/a>, \u0447\u0442\u043e\u0431\u044b \u0438\u043c\u0435\u0442\u044c \u043b\u0443\u0447\u0448\u0435\u0435 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0435, \u043d\u043e \u044f \u0431\u0443\u0434\u0443 \u0434\u0430\u0432\u0430\u0442\u044c \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u043e\u044f\u0441\u043d\u0435\u043d\u0438\u044f.<\/p>\n<p>  <strong>\u041a\u043e\u043d\u0432\u0435\u0439\u0435\u0440\u044b \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0430<\/strong> \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0442 \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0442\u044c \u043d\u0430 \u0440\u0430\u0437\u043d\u044b\u0445 \u0441\u0442\u0430\u0434\u0438\u044f\u0445 \u043f\u043e \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0439. \u0415\u0441\u043b\u0438 \u0445\u043e\u0440\u043e\u0448\u043e \u043e\u0440\u0433\u0430\u043d\u0438\u0437\u043e\u0432\u0430\u0442\u044c \u043f\u043e\u0440\u044f\u0434\u043e\u043a \u0438\u0445 \u0438\u0441\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f, \u0447\u0442\u043e\u0431\u044b \u0443\u043c\u0435\u043d\u044c\u0448\u0438\u0442\u044c \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043c\u0435\u0436\u0434\u0443 \u0441\u0442\u0430\u0434\u0438\u044f\u043c\u0438, \u0442\u043e \u043c\u043e\u0436\u043d\u043e \u0443\u0441\u043a\u043e\u0440\u0438\u0442\u044c \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0443 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0439.<\/p>\n<p>  <strong>\u0421\u0443\u043f\u0435\u0440\u0441\u043a\u0430\u043b\u044f\u0440\u043d\u043e\u0435 \u0438\u0441\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435<\/strong> \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043e\u0434\u043d\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0442\u044c \u0432\u044b\u0447\u0438\u0441\u043b\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u0447\u0430\u0441\u0442\u0438 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0439. \u041d\u043e \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043e\u043d\u0438 \u043d\u0435 \u0434\u043e\u043b\u0436\u043d\u044b \u0438\u043c\u0435\u0442\u044c \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0435\u0439 \u043d\u0430 \u0447\u0442\u0435\u043d\u0438\u0435-\u0437\u0430\u043f\u0438\u0441\u044c. \u041c\u043e\u0436\u043d\u043e \u0430\u0434\u0430\u043f\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0443 \u0434\u043b\u044f \u0441\u043d\u0438\u0436\u0435\u043d\u0438\u044f \u0440\u0438\u0441\u043a\u0430 \u043f\u0440\u043e\u0441\u0442\u043e\u0435\u0432, \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u044f \u0437\u0430\u043f\u0438\u0441\u044c \u0437\u0430\u0434\u043e\u043b\u0433\u043e \u0434\u043e \u0447\u0442\u0435\u043d\u0438\u044f.<\/p>\n<p>  <strong>\u0412\u043d\u0435\u043e\u0447\u0435\u0440\u0435\u0434\u043d\u043e\u0435 \u0438\u0441\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435<\/strong> \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0443 \u0438\u0441\u043f\u043e\u043b\u043d\u044f\u0442\u044c \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438 \u043d\u0435 \u0432 \u043f\u043e\u0440\u044f\u0434\u043a\u0435 \u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u044f, \u0430 \u043f\u043e \u043c\u0435\u0440\u0435 \u0438\u0445 \u0433\u043e\u0442\u043e\u0432\u043d\u043e\u0441\u0442\u0438, \u0434\u0430\u0436\u0435 \u0435\u0441\u043b\u0438 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0438\u0435 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438 \u0435\u0449\u0451 \u043d\u0435 \u0433\u043e\u0442\u043e\u0432\u044b. \u041d\u043e \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043d\u0435 \u0434\u043e\u043b\u0436\u043d\u043e \u0431\u044b\u0442\u044c \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043d\u0430 \u0447\u0442\u0435\u043d\u0438\u0435-\u0437\u0430\u043f\u0438\u0441\u044c.<\/p>\n<p>  \u0410 \u0442\u0435\u043f\u0435\u0440\u044c \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0438\u043c \u043a \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438!<\/p>\n<h2>\u0410\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0430<\/h2>\n<p>  \u0420\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u0441\u0445\u0435\u043c\u0443, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043d\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043f\u043e\u043b\u0443-SHISHUA. \u041e\u0442\u043a\u0443\u0434\u0430 \u0442\u0430\u043a\u043e\u0435 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435, \u0441\u0442\u0430\u043d\u0435\u0442 \u043f\u043e\u0441\u0442\u0435\u043f\u0435\u043d\u043d\u043e \u043e\u0447\u0435\u0432\u0438\u0434\u043d\u043e \u043f\u043e \u043c\u0435\u0440\u0435 \u0447\u0442\u0435\u043d\u0438\u044f.<\/p>\n<p>  \u0421\u0445\u0435\u043c\u0430 \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0442\u0430\u043a:<\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/bd8\/df1\/b8f\/bd8df1b8fcfae4897eb4b74f2c6e856f.jpg\"><\/div>\n<p>  \u0420\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u0435\u0451 \u0441\u0442\u0440\u043e\u043a\u0430 \u0437\u0430 \u0441\u0442\u0440\u043e\u043a\u043e\u0439.<\/p>\n<pre><code class=\"plaintext\">typedef struct prng_state {   __m256i state[2];   __m256i output;   __m256i counter; } prng_state; <\/code><\/pre>\n<p>  \u0421\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u0434\u0435\u043b\u0438\u0442\u0441\u044f \u043d\u0430 \u0434\u0432\u0435 \u0447\u0430\u0441\u0442\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u043e\u043c\u0435\u0449\u0430\u044e\u0442\u0441\u044f \u0432 \u0440\u0435\u0433\u0438\u0441\u0442\u0440 AVX2 (256 \u0431\u0438\u0442). \u0414\u043b\u044f \u043f\u043e\u0432\u044b\u0448\u0435\u043d\u0438\u044f \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u0438 \u043c\u044b \u0434\u0435\u0440\u0436\u0438\u043c \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u043d\u0435\u0434\u0430\u043b\u0435\u043a\u043e \u043e\u0442 \u0441\u0430\u043c\u043e\u0433\u043e \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f, \u043d\u043e \u043e\u043d \u043d\u0435 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0447\u0430\u0441\u0442\u044c\u044e \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f.<\/p>\n<p>  \u0422\u0430\u043a\u0436\u0435 \u0443 \u043d\u0430\u0441 \u0435\u0441\u0442\u044c 64-\u0431\u0438\u0442\u043d\u044b\u0439 \u0441\u0447\u0451\u0442\u0447\u0438\u043a. \u0414\u043b\u044f \u0443\u043f\u0440\u043e\u0449\u0435\u043d\u0438\u044f \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u044f \u043e\u043d \u0442\u043e\u0436\u0435 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u043e\u043c AVX2. \u0414\u0435\u043b\u043e \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u0443 AVX2 \u0435\u0441\u0442\u044c \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u0430\u044f \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e\u0441\u0442\u044c: \u043e\u0431\u044b\u0447\u043d\u044b\u0435 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u044b (%rax \u0438 \u043f\u043e\u0434\u043e\u0431\u043d\u044b\u0435) \u043d\u0435 \u043c\u043e\u0433\u0443\u0442 \u043f\u043e\u0441\u0440\u0435\u0434\u0441\u0442\u0432\u043e\u043c MOV \u043f\u0435\u0440\u0435\u0434\u0430\u0432\u0430\u0442\u044c\u0441\u044f \u043d\u0430\u043f\u0440\u044f\u043c\u0443\u044e \u0432 SIMD, \u043e\u043d\u0438 \u0434\u043e\u043b\u0436\u043d\u044b \u043f\u0440\u043e\u0445\u043e\u0434\u0438\u0442\u044c \u0447\u0435\u0440\u0435\u0437 \u043e\u043f\u0435\u0440\u0430\u0442\u0438\u0432\u043d\u0443\u044e \u043f\u0430\u043c\u044f\u0442\u044c (\u0447\u0430\u0449\u0435 \u0432\u0441\u0435\u0433\u043e \u0447\u0435\u0440\u0435\u0437 \u0441\u0442\u0435\u043a), \u0447\u0442\u043e \u043f\u043e\u0432\u044b\u0448\u0430\u0435\u0442 \u0437\u0430\u0434\u0435\u0440\u0436\u043a\u0443 \u0438 \u043e\u0431\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0432 \u0434\u0432\u0435 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u043d\u044b\u0435 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438 (MOV \u0432 \u0441\u0442\u0435\u043a, VMOV \u0438\u0437 \u0441\u0442\u0435\u043a\u0430).<\/p>\n<p>  \u0422\u0435\u043f\u0435\u0440\u044c \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u043d\u0430 \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435. \u041d\u0430\u0447\u043d\u0451\u043c \u0441 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438, \u0437\u0430\u0442\u0435\u043c \u043f\u0440\u043e\u0439\u0434\u0451\u043c\u0441\u044f \u043f\u043e \u0431\u0443\u0444\u0435\u0440\u0443 \u0438 \u043d\u0430 \u043a\u0430\u0436\u0434\u043e\u0439 \u0438\u0442\u0435\u0440\u0430\u0446\u0438\u0438 \u0437\u0430\u043f\u043e\u043b\u043d\u0438\u043c \u0435\u0433\u043e 32 \u0431\u0430\u0439\u0442\u0430\u043c\u0438.<\/p>\n<pre><code class=\"plaintext\">inline void prng_gen(prng_state *s, __uint64_t buf[], __uint64_t size) {   __m256i s0 = s-&gt;state[0], counter = s-&gt;counter,           s1 = s-&gt;state[1],       o = s-&gt;output;   for (__uint64_t i = 0; i &lt; size; i += 4) {     _mm256_storeu_si256((__m256i*)&amp;buf[i], o);     \/\/ \u2026   }   s-&gt;state[0] = s0; s-&gt;counter = counter;   s-&gt;state[1] = s1; s-&gt;output  = o; } <\/code><\/pre>\n<p>  \u041f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u0437\u0430\u0438\u043d\u043b\u0430\u0439\u043d\u0435\u043d\u0430, \u043d\u0435\u043c\u0435\u0434\u043b\u0435\u043d\u043d\u043e\u0435 \u0437\u0430\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u0431\u0443\u0444\u0435\u0440\u0430 \u043f\u0440\u0438 \u0441\u0442\u0430\u0440\u0442\u0435 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0443 \u0441\u0440\u0430\u0437\u0443 \u0436\u0435 \u0438\u0441\u043f\u043e\u043b\u043d\u044f\u0442\u044c \u0437\u0430\u0432\u0438\u0441\u044f\u0449\u0438\u0435 \u043e\u0442 \u044d\u0442\u043e\u0433\u043e \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438 \u043f\u043e\u0441\u0440\u0435\u0434\u0441\u0442\u0432\u043e\u043c \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c\u0430 \u0432\u043d\u0435\u043e\u0447\u0435\u0440\u0435\u0434\u043d\u043e\u0433\u043e \u0438\u0441\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f.<\/p>\n<p>  \u0412\u043d\u0443\u0442\u0440\u0438 \u0446\u0438\u043a\u043b\u0430 \u043c\u044b \u0431\u044b\u0441\u0442\u0440\u043e \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u043c \u0442\u0440\u0438 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438 \u043d\u0430\u0434 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435\u043c:<\/p>\n<ol>\n<li><strong>SHI<\/strong>ft<\/li>\n<li><strong>SHU<\/strong>ffle<\/li>\n<li><strong>A<\/strong>dd<\/li>\n<\/ol>\n<p>  \u041e\u0442\u0441\u044e\u0434\u0430 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 SHISHUA!<\/p>\n<h3>\u0421\u043d\u0430\u0447\u0430\u043b\u0430 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u043c \u0441\u0434\u0432\u0438\u0433 (shift)<\/h3>\n<p>  <\/p>\n<pre><code class=\"plaintext\">u0 = _mm256_srli_epi64(s0, 1);              u1 = _mm256_srli_epi64(s1, 3); <\/code><\/pre>\n<p>  \u041a \u0441\u043e\u0436\u0430\u043b\u0435\u043d\u0438\u044e, AVX2 \u043d\u0435 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 \u043e\u0431\u043e\u0440\u043e\u0442\u044b. \u041d\u043e \u044f \u0445\u043e\u0447\u0443 \u043f\u0435\u0440\u0435\u043c\u0435\u0448\u0430\u0442\u044c \u0431\u0438\u0442\u044b \u043e\u0434\u043d\u043e\u0439 \u043f\u043e\u0437\u0438\u0446\u0438\u0438 \u0432 64-\u0431\u0438\u0442\u043d\u043e\u043c \u0447\u0438\u0441\u043b\u0435 \u0441 \u0431\u0438\u0442\u0430\u043c\u0438 \u0434\u0440\u0443\u0433\u043e\u0439 \u043f\u043e\u0437\u0438\u0446\u0438\u0438! \u0418 \u0441\u0434\u0432\u0438\u0433 \u2014 \u043b\u0443\u0447\u0448\u0438\u0439 \u0441\u043f\u043e\u0441\u043e\u0431 \u044d\u0442\u043e \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u0442\u044c. \u0411\u0443\u0434\u0435\u043c \u0441\u0434\u0432\u0438\u0433\u0430\u0442\u044c \u043d\u0430 \u043d\u0435\u0447\u0451\u0442\u043d\u043e\u0435 \u0447\u0438\u0441\u043b\u043e, \u0447\u0442\u043e\u0431\u044b \u043a\u0430\u0436\u0434\u044b\u0439 \u0431\u0438\u0442 \u043f\u043e\u0431\u044b\u0432\u0430\u043b \u043d\u0430 \u0432\u0441\u0435\u0445 64-\u0431\u0438\u0442\u043d\u044b\u0445 \u043f\u043e\u0437\u0438\u0446\u0438\u044f\u0445, \u0430 \u043d\u0435 \u043d\u0430 \u043f\u043e\u043b\u043e\u0432\u0438\u043d\u0435 \u0438\u0437 \u043d\u0438\u0445.<\/p>\n<p>  \u041f\u0440\u0438 \u0441\u0434\u0432\u0438\u0433\u0435 \u0442\u0435\u0440\u044f\u044e\u0442\u0441\u044f \u0431\u0438\u0442\u044b, \u0447\u0442\u043e \u043f\u0440\u0438\u0432\u043e\u0434\u0438\u0442 \u043a \u0443\u0434\u0430\u043b\u0435\u043d\u0438\u044e \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 \u0438\u0437 \u043d\u0430\u0448\u0435\u0433\u043e \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f. \u042d\u0442\u043e \u043f\u043b\u043e\u0445\u043e, \u043d\u0443\u0436\u043d\u043e \u043c\u0438\u043d\u0438\u043c\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043f\u043e\u0442\u0435\u0440\u0438. \u0421\u0430\u043c\u044b\u0435 \u043c\u0430\u043b\u0435\u043d\u044c\u043a\u0438\u0435 \u043d\u0435\u0447\u0451\u0442\u043d\u044b\u0435 \u0447\u0438\u0441\u043b\u0430 \u2014 1 \u0438 3, \u043c\u044b \u0431\u0443\u0434\u0435\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0440\u0430\u0437\u043d\u044b\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0441\u0434\u0432\u0438\u0433\u0430, \u0447\u0442\u043e\u0431\u044b \u0443\u0432\u0435\u043b\u0438\u0447\u0438\u0442\u044c \u0440\u0430\u0441\u0445\u043e\u0436\u0434\u0435\u043d\u0438\u0435 \u043c\u0435\u0436\u0434\u0443 \u0434\u0432\u0443\u043c\u044f \u0447\u0430\u0441\u0442\u044f\u043c\u0438. \u042d\u0442\u043e \u043f\u043e\u043c\u043e\u0436\u0435\u0442 \u0443\u043c\u0435\u043d\u044c\u0448\u0438\u0442\u044c \u0441\u0445\u043e\u0434\u0441\u0442\u0432\u043e \u0438\u0445 \u0441\u0430\u043c\u043e\u043a\u043e\u0440\u0440\u0435\u043b\u044f\u0446\u0438\u0438. <\/p>\n<p>  \u0411\u0443\u0434\u0435\u043c \u0441\u0434\u0432\u0438\u0433\u0430\u0442\u044c \u0432\u043f\u0440\u0430\u0432\u043e, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u043a\u0440\u0430\u0439\u043d\u0438\u0435 \u043f\u0440\u0430\u0432\u044b\u0435 \u0431\u0438\u0442\u044b \u0438\u043c\u0435\u044e\u0442 \u0441\u0430\u043c\u043e\u0435 \u043d\u0438\u0437\u043a\u043e\u0435 \u0434\u0438\u0444\u0444\u0443\u0437\u0438\u044f \u043f\u0440\u0438 \u0441\u043b\u043e\u0436\u0435\u043d\u0438\u0438: \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043c\u043b\u0430\u0434\u0448\u0438\u0439 \u0431\u0438\u0442 \u0432 A+B \u2014 \u044d\u0442\u043e \u043f\u0440\u043e\u0441\u0442\u043e XOR \u043c\u043b\u0430\u0434\u0448\u0438\u0445 \u0431\u0438\u0442\u043e\u0432 A \u0438 B.<\/p>\n<h3>\u041f\u0435\u0440\u0435\u043c\u0435\u0448\u0438\u0432\u0430\u043d\u0438\u0435<\/h3>\n<p>  <\/p>\n<pre><code class=\"plaintext\">t0 = _mm256_permutevar8x32_epi32(s0, shu0); t1 = _mm256_permutevar8x32_epi32(s1, shu1); <\/code><\/pre>\n<p>  \u0412\u043e\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u0441\u044f 32-\u0431\u0438\u0442\u043d\u044b\u043c \u043f\u0435\u0440\u0435\u043c\u0435\u0448\u0438\u0432\u0430\u043d\u0438\u0435\u043c, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u043e\u043d\u043e \u0434\u0430\u0451\u0442 \u0438\u043d\u0443\u044e \u0433\u0440\u0430\u043d\u0443\u043b\u044f\u0440\u043d\u043e\u0441\u0442\u044c \u043f\u043e \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u044e \u0441 64-\u0431\u0438\u0442\u043d\u044b\u043c\u0438 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u044f\u043c\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u044b \u0432\u0435\u0437\u0434\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c (\u043d\u0430\u0440\u0443\u0448\u0430\u0435\u0442\u0441\u044f 64-\u0431\u0438\u0442\u043d\u043e\u0435 \u0432\u044b\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u043d\u0438\u0435). \u041a \u0442\u043e\u043c\u0443 \u0436\u0435 \u044d\u0442\u043e \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c cross-lane \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u044f: \u0434\u0440\u0443\u0433\u0438\u0435 \u043f\u0435\u0440\u0435\u043c\u0435\u0448\u0438\u0432\u0430\u043d\u0438\u044f \u043c\u043e\u0433\u0443\u0442 \u0434\u0432\u0438\u0433\u0430\u0442\u044c \u0431\u0438\u0442\u044b \u0432 \u0440\u0430\u043c\u043a\u0430\u0445 \u043b\u0435\u0432\u044b\u0445 128 \u0431\u0438\u0442\u043e\u0432, \u0435\u0441\u043b\u0438 \u043e\u043d\u0438 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438 \u043d\u0430\u0447\u0438\u043d\u0430\u044e\u0442\u0441\u044f \u0441\u043b\u0435\u0432\u0430, \u0438\u043b\u0438 \u0432 \u0440\u0430\u043c\u043a\u0430\u0445 \u043f\u0440\u0430\u0432\u044b\u0445 128 \u0431\u0438\u0442\u043e\u0432, \u0435\u0441\u043b\u0438 \u043d\u0430\u0447\u0438\u043d\u0430\u044e\u0442\u0441\u044f \u0441\u043f\u0440\u0430\u0432\u0430.<\/p>\n<p>  \u041a\u043e\u043d\u0441\u0442\u0430\u043d\u0442\u044b \u043f\u0435\u0440\u0435\u043c\u0435\u0448\u0438\u0432\u0430\u043d\u0438\u044f:<\/p>\n<pre><code class=\"plaintext\">__m256i shu0 = _mm256_set_epi32(4, 3, 2, 1, 0, 7, 6, 5),         shu1 = _mm256_set_epi32(2, 1, 0, 7, 6, 5, 4, 3); <\/code><\/pre>\n<p>  \u0427\u0442\u043e\u0431\u044b \u043f\u0435\u0440\u0435\u043c\u0435\u0448\u0438\u0432\u0430\u043d\u0438\u0435 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0443\u043b\u0443\u0447\u0448\u0438\u043b\u043e \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442, \u043c\u044b \u043f\u0435\u0440\u0435\u0434\u0432\u0438\u043d\u0435\u043c \u0441\u043b\u0430\u0431\u044b\u0435 (\u0441 \u043d\u0438\u0437\u043a\u0438\u043c \u0440\u0430\u0441\u0441\u0435\u0438\u0432\u0430\u043d\u0438\u0435\u043c) 32-\u0431\u0438\u0442\u043d\u044b\u0435 \u0447\u0430\u0441\u0442\u0438 64-\u0431\u0438\u0442\u043d\u044b\u0445 \u0441\u043b\u043e\u0436\u0435\u043d\u0438\u0439 \u043d\u0430 \u0441\u0438\u043b\u044c\u043d\u044b\u0435 \u043f\u043e\u0437\u0438\u0446\u0438\u0438, \u0447\u0442\u043e\u0431\u044b \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u0441\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0438\u0445 \u043e\u0431\u043e\u0433\u0430\u0449\u0430\u043b\u0438.<\/p>\n<p>  \u041c\u043b\u0430\u0434\u0448\u0430\u044f 32-\u0431\u0438\u0442\u043d\u0430\u044f \u0447\u0430\u0441\u0442\u044c 64-\u0431\u0438\u0442\u043d\u043e\u0433\u043e \u0447\u0430\u043d\u043a\u0430 \u043d\u0438\u043a\u043e\u0433\u0434\u0430 \u043d\u0435 \u043f\u0435\u0440\u0435\u043c\u0435\u0449\u0430\u0435\u0442\u0441\u044f \u0432 \u0442\u043e\u0442 \u0436\u0435 64-\u0431\u0438\u0442\u043d\u044b\u0439 \u0447\u0430\u043d\u043a, \u0447\u0442\u043e \u0438 \u0441\u0442\u0430\u0440\u0448\u0430\u044f \u0447\u0430\u0441\u0442\u044c. \u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u043e\u0431\u0435 \u0447\u0430\u0441\u0442\u0438 \u043d\u0435 \u043e\u0441\u0442\u0430\u044e\u0442\u0441\u044f \u0432 \u0440\u0430\u043c\u043a\u0430\u0445 \u043e\u0434\u043d\u043e\u0433\u043e \u0447\u0430\u043d\u043a\u0430, \u0447\u0442\u043e \u0443\u043b\u0443\u0447\u0448\u0430\u0435\u0442 \u043f\u0435\u0440\u0435\u043c\u0435\u0448\u0438\u0432\u0430\u043d\u0438\u0435.<\/p>\n<p>  \u0412 \u043a\u043e\u043d\u0446\u0435 \u043a\u043e\u043d\u0446\u043e\u0432 \u043a\u0430\u0436\u0434\u0430\u044f 32-\u0431\u0438\u0442\u043d\u0430\u044f \u0447\u0430\u0441\u0442\u044c \u043f\u0440\u043e\u0445\u043e\u0434\u0438\u0442 \u043f\u043e \u0432\u0441\u0435\u043c \u043f\u043e\u0437\u0438\u0446\u0438\u044f\u043c \u043f\u043e \u043a\u0440\u0443\u0433\u0443: \u0441 A \u043d\u0430 B, \u0441 B \u043d\u0430 C, \u2026 \u0441 H \u043d\u0430 A.<\/p>\n<p>  \u0412\u044b \u043c\u043e\u0433\u043b\u0438 \u0437\u0430\u043c\u0435\u0442\u0438\u0442\u044c, \u0447\u0442\u043e \u043f\u0440\u043e\u0441\u0442\u0435\u0439\u0448\u0435\u0435 \u043f\u0435\u0440\u0435\u043c\u0435\u0448\u0438\u0432\u0430\u043d\u0438\u0435, \u0443\u0447\u0438\u0442\u044b\u0432\u0430\u044e\u0449\u0435\u0435 \u0432\u0441\u0435 \u044d\u0442\u0438 \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u0435, \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0441\u043e\u0431\u043e\u0439 \u0434\u0432\u0430 256-\u0431\u0438\u0442\u043d\u044b\u0445 \u043e\u0431\u043e\u0440\u043e\u0442\u0430 (\u043e\u0431\u043e\u0440\u043e\u0442\u044b \u043d\u0430 96 \u0431\u0438\u0442\u043e\u0432 \u0438 160 \u0431\u0438\u0442\u043e\u0432 \u0432\u043f\u0440\u0430\u0432\u043e \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e).<\/p>\n<h3>\u0421\u043b\u043e\u0436\u0435\u043d\u0438\u0435<\/h3>\n<p>  \u0421\u043b\u043e\u0436\u0438\u043c 64-\u0431\u0438\u0442\u043d\u044b\u0435 \u0447\u0430\u043d\u043a\u0438 \u0438\u0437 \u0434\u0432\u0443\u0445 \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 \u2014 \u0441\u0434\u0432\u0438\u0433\u0430 \u0438 \u043f\u0435\u0440\u0435\u043c\u0435\u0448\u0438\u0432\u0430\u043d\u0438\u044f.<\/p>\n<pre><code class=\"plaintext\">s0 = _mm256_add_epi64(t0, u0);              s1 = _mm256_add_epi64(t1, u1); <\/code><\/pre>\n<p>  \u0421\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u2014 \u044d\u0442\u043e \u0433\u043b\u0430\u0432\u043d\u044b\u0439 \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a \u0440\u0430\u0441\u0441\u0435\u0438\u0432\u0430\u043d\u0438\u044f: \u043f\u0440\u0438 \u044d\u0442\u043e\u0439 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438 \u0431\u0438\u0442\u044b \u043a\u043e\u043c\u0431\u0438\u043d\u0438\u0440\u0443\u044e\u0442 \u0432 \u043d\u0435\u0441\u043e\u043a\u0440\u0430\u0449\u0430\u0435\u043c\u044b\u0435 \u043a\u043e\u043c\u0431\u0438\u043d\u0430\u0446\u0438\u0438 \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u0439 XOR \u0438 AND, \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u044b\u0435 \u043f\u043e 64-\u0431\u0438\u0442\u043d\u044b\u043c \u043f\u043e\u0437\u0438\u0446\u0438\u044f\u043c.<\/p>\n<p>  \u0425\u0440\u0430\u043d\u0435\u043d\u0438\u0435 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0430 \u0441\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0432\u043d\u0443\u0442\u0440\u0438 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f \u043d\u0430\u0432\u0441\u0435\u0433\u0434\u0430 \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0435\u0442 \u044d\u0442\u043e \u0440\u0430\u0441\u0441\u0435\u0438\u0432\u0430\u043d\u0438\u0435.<\/p>\n<h3>\u0412\u044b\u0445\u043e\u0434\u043d\u0430\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u044f<\/h3>\n<p>  \u041e\u0442\u043a\u0443\u0434\u0430 \u043c\u044b \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u0432\u044b\u0445\u043e\u0434\u043d\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435?<\/p>\n<p>  \u0412\u0441\u0451 \u043f\u0440\u043e\u0441\u0442\u043e: \u0441\u043e\u0437\u0434\u0430\u043d\u043d\u0430\u044f \u043d\u0430\u043c\u0438 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0434\u0432\u0435 \u043d\u0435\u0437\u0430\u0432\u0438\u0441\u0438\u043c\u044b\u0435 \u0447\u0430\u0441\u0442\u0438 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f s0 \u0438 s1, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u0438\u043a\u0430\u043a \u043d\u0435 \u0432\u043b\u0438\u044f\u044e\u0442 \u0434\u0440\u0443\u0433 \u043d\u0430 \u0434\u0440\u0443\u0433\u0430. \u041f\u0440\u0438\u043c\u0435\u043d\u044f\u0435\u043c \u043a \u043d\u0438\u043c XOR \u0438 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u0441\u043e\u0432\u0435\u0440\u0448\u0435\u043d\u043d\u043e \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u0439 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442.<\/p>\n<p>  \u0414\u043b\u044f \u0443\u0441\u0438\u043b\u0435\u043d\u0438\u044f \u043d\u0435\u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043c\u0435\u0436\u0434\u0443 \u0434\u0430\u043d\u043d\u044b\u043c\u0438, \u043a \u043a\u043e\u0442\u043e\u0440\u044b\u043c \u043c\u044b \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u0435\u043c XOR, \u0432\u043e\u0437\u044c\u043c\u0451\u043c \u0447\u0430\u0441\u0442\u0438\u0447\u043d\u044b\u0439 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442: \u0441\u0434\u0432\u0438\u043d\u0443\u0442\u0443\u044e \u0447\u0430\u0441\u0442\u044c \u043e\u0434\u043d\u043e\u0433\u043e \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f \u0438 \u043f\u0435\u0440\u0435\u043c\u0435\u0448\u0430\u043d\u043d\u0443\u044e \u0447\u0430\u0441\u0442\u044c \u0434\u0440\u0443\u0433\u043e\u0433\u043e.<\/p>\n<pre><code class=\"plaintext\">o = _mm256_xor_si256(u0, t1); <\/code><\/pre>\n<p>  \u042d\u0442\u043e \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u043e \u0443\u043c\u0435\u043d\u044c\u0448\u0435\u043d\u0438\u044e \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0435\u0439 \u043f\u043e \u0447\u0442\u0435\u043d\u0438\u044e-\u0437\u0430\u043f\u0438\u0441\u0438 \u043c\u0435\u0436\u0434\u0443 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044f\u043c\u0438 \u0432 \u0441\u0443\u043f\u0435\u0440\u0441\u043a\u0430\u043b\u044f\u0440\u043d\u043e\u043c \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0435, \u043a\u0430\u043a \u0435\u0441\u043b\u0438 \u0431\u044b u0 \u0438 t1 \u0431\u044b\u043b\u0438 \u0433\u043e\u0442\u043e\u0432\u044b \u0434\u043b\u044f \u0447\u0442\u0435\u043d\u0438\u044f \u0434\u043e s0 \u0438 s1.<\/p>\n<p>  \u0422\u0435\u043f\u0435\u0440\u044c \u043e\u0431\u0441\u0443\u0434\u0438\u043c \u0441\u0447\u0451\u0442\u0447\u0438\u043a. \u041c\u044b \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u043c \u0435\u0433\u043e \u0432 \u043d\u0430\u0447\u0430\u043b\u0435 \u0446\u0438\u043a\u043b\u0430. \u0421\u043d\u0430\u0447\u0430\u043b\u0430 \u0438\u0437\u043c\u0435\u043d\u044f\u0435\u043c \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435, \u0430 \u0437\u0430\u0442\u0435\u043c \u0443\u0432\u0435\u043b\u0438\u0447\u0438\u0432\u0430\u0435\u043c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0441\u0447\u0451\u0442\u0447\u0438\u043a\u0430:<\/p>\n<pre><code class=\"plaintext\">s1 = _mm256_add_epi64(s1, counter); counter = _mm256_add_epi64(counter, increment); <\/code><\/pre>\n<p>  \u041f\u043e\u0447\u0435\u043c\u0443 \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u043c\u0435\u043d\u044f\u0435\u043c \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435, \u0430 \u043f\u043e\u0442\u043e\u043c \u043e\u0431\u043d\u043e\u0432\u043b\u044f\u0435\u043c \u0441\u0447\u0451\u0442\u0447\u0438\u043a? s1 \u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0441\u044f \u0434\u043e\u0441\u0442\u0443\u043f\u0435\u043d \u0440\u0430\u043d\u044c\u0448\u0435, \u044d\u0442\u043e \u0441\u043d\u0438\u0436\u0430\u0435\u0442 \u0432\u0435\u0440\u043e\u044f\u0442\u043d\u043e\u0441\u0442\u044c \u0442\u043e\u0433\u043e, \u0447\u0442\u043e \u043f\u043e\u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0435\u0433\u043e \u0447\u0438\u0442\u0430\u044e\u0442, \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u044f\u0442\u0441\u044f \u0432 \u043a\u043e\u043d\u0432\u0435\u0439\u0435\u0440\u0435 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0430. \u0422\u0430\u043a\u0436\u0435 \u044d\u0442\u0430 \u043e\u0447\u0435\u0440\u0451\u0434\u043d\u043e\u0441\u0442\u044c \u043f\u043e\u043c\u043e\u0433\u0430\u0435\u0442 \u0438\u0437\u0431\u0435\u0436\u0430\u0442\u044c \u043f\u0440\u044f\u043c\u043e\u0439 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u0441\u0447\u0451\u0442\u0447\u0438\u043a\u0430 \u043f\u043e \u0447\u0442\u0435\u043d\u0438\u044e-\u0437\u0430\u043f\u0438\u0441\u0438.<\/p>\n<p>  \u041c\u044b \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u0435\u043c \u0441\u0447\u0451\u0442\u0447\u0438\u043a \u043a s1, \u0430 \u043d\u0435 \u043a s0, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u043e\u043d\u0438 \u0432\u0441\u0451-\u0440\u0430\u0432\u043d\u043e \u043e\u0431\u0430 \u0432\u043b\u0438\u044f\u044e\u0442 \u043d\u0430 \u0432\u044b\u0445\u043e\u0434\u043d\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435, \u043e\u0434\u043d\u0430\u043a\u043e, s1 \u0442\u0435\u0440\u044f\u0435\u0442 \u0438\u0437-\u0437\u0430 \u0441\u0434\u0432\u0438\u0433\u0430 \u0431\u043e\u043b\u044c\u0448\u0435 \u0431\u0438\u0442\u043e\u0432, \u0442\u0430\u043a \u0447\u0442\u043e \u044d\u0442\u043e \u043f\u043e\u043c\u043e\u0433\u0430\u0435\u0442 \u0435\u043c\u0443 \u00ab\u0432\u0441\u0442\u0430\u0442\u044c \u043d\u0430 \u043d\u043e\u0433\u0438\u00bb \u043f\u043e\u0441\u043b\u0435 \u0441\u0434\u0432\u0438\u0433\u0430.<\/p>\n<p>  \u0421\u0447\u0451\u0442\u0447\u0438\u043a \u043c\u043e\u0436\u0435\u0442 \u0438 \u043d\u0435 \u0437\u0430\u0444\u0438\u043a\u0441\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043f\u0440\u043e\u0445\u043e\u0436\u0434\u0435\u043d\u0438\u0435 \u0442\u0435\u0441\u0442\u0430 PractRand. \u0415\u0433\u043e \u0435\u0434\u0438\u043d\u0441\u0442\u0432\u0435\u043d\u043d\u0430\u044f \u0446\u0435\u043b\u044c \u2014 \u0437\u0430\u0434\u0430\u0442\u044c \u043d\u0438\u0436\u043d\u044e\u044e \u0433\u0440\u0430\u043d\u0438\u0446\u0443 \u0432 2<sup>69<\/sup> \u0431\u0430\u0439\u0442\u043e\u0432 = 512 \u044d\u043a\u0441\u0431\u0438\u0431\u0430\u0439\u0442\u043e\u0432 \u043d\u0430 \u043f\u0435\u0440\u0438\u043e\u0434 \u0413\u041f\u0421\u0427: \u043c\u044b \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u043c \u043f\u043e\u0432\u0442\u043e\u0440\u044f\u0442\u044c \u0446\u0438\u043a\u043b \u0442\u043e\u043b\u044c\u043a\u043e \u0447\u0435\u0440\u0435\u0437 \u043e\u0434\u043d\u043e \u0442\u044b\u0441\u044f\u0447\u0435\u043b\u0435\u0442\u0438\u0435 \u0440\u0430\u0431\u043e\u0442\u044b \u0441\u043e \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c\u044e 10 \u0433\u0438\u0431\u0438\u0431\u0430\u0439\u0442\u043e\u0432 \u0432 \u0441\u0435\u043a. \u0412\u0440\u044f\u0434 \u043b\u0438 \u044d\u0442\u043e \u0431\u0443\u0434\u0435\u0442 \u0441\u043b\u0438\u0448\u043a\u043e\u043c \u043d\u0438\u0437\u043a\u043e\u0439 \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c\u044e \u0434\u043b\u044f \u043f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0432 \u0431\u043b\u0438\u0436\u0430\u0439\u0448\u0438\u0435 \u0432\u0435\u043a\u0430. <\/p>\n<p>  \u0418\u043d\u043a\u0440\u0435\u043c\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435:<\/p>\n<pre><code class=\"plaintext\">__m256i increment = _mm256_set_epi64x(1, 3, 5, 7); <\/code><\/pre>\n<p>  \u0412 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0438\u043d\u043a\u0440\u0435\u043c\u0435\u043d\u0442\u043e\u0432 \u0432\u044b\u0431\u0438\u0440\u0430\u044e\u0442\u0441\u044f \u043d\u0435\u0447\u0451\u0442\u043d\u044b\u0435 \u0447\u0438\u0441\u043b\u0430, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u0442\u043e\u043b\u044c\u043a\u043e \u0431\u0430\u0437\u043e\u0432\u044b\u0435 \u0432\u0437\u0430\u0438\u043c\u043d\u043e \u043f\u0440\u043e\u0441\u0442\u044b\u0435 \u0447\u0438\u0441\u043b\u0430 \u043e\u0445\u0432\u0430\u0442\u044b\u0432\u0430\u044e\u0442 \u0432\u0435\u0441\u044c \u0446\u0438\u043a\u043b \u043a\u043e\u043d\u0435\u0447\u043d\u043e\u0433\u043e \u043f\u043e\u043b\u044f GF(2<sup>64<\/sup>), \u0430 \u0432\u0441\u0435 \u043d\u0435\u0447\u0451\u0442\u043d\u044b\u0435 \u0447\u0438\u0441\u043b\u0430 \u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u0432\u0437\u0430\u0438\u043c\u043d\u043e \u043f\u0440\u043e\u0441\u0442\u044b\u043c\u0438 \u0434\u043b\u044f 2. \u0418\u043d\u044b\u043c\u0438 \u0441\u043b\u043e\u0432\u0430\u043c\u0438, \u0435\u0441\u043b\u0438 \u0432\u044b \u0438\u043d\u043a\u0440\u0435\u043c\u0435\u043d\u0442\u0438\u0440\u0443\u0435\u0442\u0435 \u043f\u043e \u0447\u0451\u0442\u043d\u043e\u043c\u0443 \u0446\u0435\u043b\u043e\u043c\u0443 \u0447\u0438\u0441\u043b\u0443 \u0432 \u0434\u0438\u0430\u043f\u0430\u0437\u043e\u043d\u0435 \u043e\u0442 0 \u0434\u043e 4, \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u044f\u0441\u044c \u043a 0 \u043f\u043e\u0441\u043b\u0435 4, \u0442\u043e \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0441\u044f \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c 0-2-0-2-\u2026, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043d\u0438\u043a\u043e\u0433\u0434\u0430 \u043d\u0435 \u043f\u0440\u0438\u0432\u0435\u0434\u0451\u0442 \u043a 1 \u0438\u043b\u0438 3. \u0410 \u043d\u0435\u0447\u0451\u0442\u043d\u044b\u0439 \u0438\u043d\u043a\u0440\u0435\u043c\u0435\u043d\u0442 \u043f\u0440\u043e\u0445\u043e\u0434\u0438\u0442 \u0447\u0435\u0440\u0435\u0437 \u0432\u0441\u0435 \u0446\u0435\u043b\u044b\u0435 \u0447\u0438\u0441\u043b\u0430.<\/p>\n<p>  \u0414\u043b\u044f \u0432\u0441\u0435\u0445 64-\u0431\u0438\u0442\u043d\u044b\u0445 \u0447\u0438\u0441\u0435\u043b \u0432 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0438 \u043c\u044b \u043f\u0440\u0438\u043c\u0435\u043d\u0438\u043c \u0440\u0430\u0437\u043d\u044b\u0435 \u043d\u0435\u0447\u0451\u0442\u043d\u044b\u0435 \u0447\u0438\u0441\u043b\u0430, \u0447\u0442\u043e \u0435\u0449\u0451 \u0431\u043e\u043b\u044c\u0448\u0435 \u0440\u0430\u0437\u0434\u0435\u043b\u0438\u0442 \u0438\u0445 \u0438 \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u0443\u0441\u0438\u043b\u0438\u0442 \u0441\u043c\u0435\u0448\u0438\u0432\u0430\u043d\u0438\u0435. \u042f \u0432\u044b\u0431\u0440\u0430\u043b \u0441\u0430\u043c\u044b\u0435 \u043c\u0430\u043b\u0435\u043d\u044c\u043a\u0438\u0435 \u043d\u0435\u0447\u0451\u0442\u043d\u044b\u0435 \u0447\u0438\u0441\u043b\u0430, \u0447\u0442\u043e\u0431\u044b \u043e\u043d\u0438 \u043d\u0435 \u0432\u044b\u0433\u043b\u044f\u0434\u0435\u043b\u0438 \u0432\u043e\u043b\u0448\u0435\u0431\u043d\u044b\u043c\u0438.<\/p>\n<p>  \u0422\u0430\u043a \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043f\u0435\u0440\u0435\u0445\u043e\u0434 \u043c\u0435\u0436\u0434\u0443 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f\u043c\u0438 \u0438 \u0432\u044b\u0445\u043e\u0434\u043d\u0430\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u044f. \u041a\u0430\u043a \u0438\u0445 \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c?<\/p>\n<h3>\u0418\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f<\/h3>\n<p>  \u0418\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u0443\u0435\u043c \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0448\u0435\u0441\u0442\u043d\u0430\u0434\u0446\u0430\u0442\u0435\u0440\u0438\u0447\u043d\u044b\u0445 \u0446\u0438\u0444\u0440 \u03a6 \u2014 \u0438\u0440\u0440\u0430\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0447\u0438\u0441\u043b\u0430, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u043c\u0435\u043d\u044c\u0448\u0435 \u0432\u0441\u0435\u0433\u043e \u0430\u043f\u043f\u0440\u043e\u043a\u0441\u0438\u043c\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0434\u0440\u043e\u0431\u044c\u044e.<\/p>\n<pre><code class=\"plaintext\">static __uint64_t phi[8] = {   0x9E3779B97F4A7C15, 0xF39CC0605CEDC834, 0x1082276BF3A27251, 0xF86C6A11D0C18E95,   0x2767F0B153D27B7F, 0x0347045B5BF1827F, 0x01886F0928403002, 0xC1D64BA40F335E36, }; <\/code><\/pre>\n<p>  \u0412\u043e\u0437\u044c\u043c\u0451\u043c 256-\u0431\u0438\u0442\u043d\u043e\u0435 \u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e\u0435 \u0447\u0438\u0441\u043b\u043e. \u0422\u0430\u043a \u0447\u0430\u0441\u0442\u043e \u0434\u0435\u043b\u0430\u0435\u0442\u0441\u044f \u0432 \u043a\u0440\u0438\u043f\u0442\u043e\u0433\u0440\u0430\u0444\u0438\u0438 \u0438 \u043d\u0435 \u0432\u0440\u0435\u0434\u0438\u0442 \u0440\u0430\u0431\u043e\u0442\u0435 \u043d\u0435\u043a\u0440\u0438\u043f\u0442\u043e\u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u0413\u041f\u0421\u0427:<\/p>\n<pre><code class=\"plaintext\">prng_state prng_init(SEEDTYPE seed[4]) {   prng_state s;   \/\/ \u2026   return s; } <\/code><\/pre>\n<p>  \u041c\u044b \u043d\u0435 \u0445\u043e\u0442\u0438\u043c \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u044d\u0442\u043e\u0433\u043e \u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0447\u0438\u0441\u043b\u0430 \u043f\u0435\u0440\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0442\u044c \u0432\u0441\u044e \u0447\u0430\u0441\u0442\u044c \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f (s0 \u0438\u043b\u0438 s1), \u043d\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u043f\u043e\u0432\u043b\u0438\u044f\u0442\u044c \u043b\u0438\u0448\u044c \u043d\u0430 \u043f\u043e\u043b\u043e\u0432\u0438\u043d\u0443. \u0422\u0430\u043a \u043c\u044b \u0438\u0437\u0431\u0435\u0436\u0438\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u043e\u0441\u043b\u0430\u0431\u043b\u044f\u044e\u0449\u0438\u0445 \u043d\u0430\u0447\u0430\u043b\u044c\u043d\u044b\u0445 \u0447\u0438\u0441\u0435\u043b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u043e \u0438\u043b\u0438 \u043d\u0430\u043c\u0435\u0440\u0435\u043d\u043d\u043e \u0437\u0430\u0434\u0430\u044e\u0442 \u0438\u0437\u0432\u0435\u0441\u0442\u043d\u043e\u0435 \u0441\u043b\u0430\u0431\u043e\u0435 \u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e\u0435 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435.<\/p>\n<p>  \u041f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u043c\u044b \u043d\u0435 \u043c\u0435\u043d\u044f\u0435\u043c \u043f\u043e\u043b\u043e\u0432\u0438\u043d\u0443 \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f, \u043c\u044b \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0435\u043c \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u044c \u043d\u0430\u0434 128 \u0431\u0438\u0442\u0430\u043c\u0438 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f. \u0422\u0430\u043a\u043e\u0439 \u044d\u043d\u0442\u0440\u043e\u043f\u0438\u0438 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0434\u043b\u044f \u043d\u0430\u0447\u0430\u043b\u0430 \u0438 \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0441\u0438\u043b\u044c\u043d\u043e\u0439 \u043f\u043e\u0437\u0438\u0446\u0438\u0438.<\/p>\n<pre><code class=\"plaintext\">s.state[0] = _mm256_set_epi64x(phi[3], phi[2] ^ seed[1], phi[1], phi[0] ^ seed[0]); s.state[1] = _mm256_set_epi64x(phi[7], phi[6] ^ seed[3], phi[5], phi[4] ^ seed[2]); <\/code><\/pre>\n<p>  \u0417\u0430\u0442\u0435\u043c \u043c\u044b \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0440\u0430\u0437 \u043f\u043e\u0432\u0442\u043e\u0440\u044f\u0435\u043c (<code>ROUNDS<\/code>) \u0442\u0430\u043a\u0443\u044e \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c:<\/p>\n<ol>\n<li>\u041f\u0440\u043e\u0433\u043e\u043d\u044f\u0435\u043c \u044d\u0442\u0430\u043f\u044b (<code>STEPS<\/code>) \u0438\u0442\u0435\u0440\u0430\u0446\u0438\u0439 SHISHUA.<\/li>\n<li>\u041f\u0440\u0438\u0441\u0432\u0430\u0438\u0432\u0430\u0435\u043c \u043e\u0434\u043d\u0443 \u0447\u0430\u0441\u0442\u044c \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f \u0434\u0440\u0443\u0433\u043e\u043c\u0443 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044e, \u0430 \u0434\u0440\u0443\u0433\u0443\u044e \u0447\u0430\u0441\u0442\u044c \u2014 \u0432\u044b\u0445\u043e\u0434\u043d\u043e\u043c\u0443 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0443.<\/li>\n<\/ol>\n<p>  <\/p>\n<pre><code class=\"plaintext\">for (char i = 0; i &lt; ROUNDS; i++) {   prng_gen(&amp;s, buf, 4 * STEPS);   s.state[0] = s.state[1];   s.state[1] = s.output; } <\/code><\/pre>\n<p>  \u041f\u0440\u0438\u0441\u0432\u043e\u0435\u043d\u0438\u0435 \u0432\u044b\u0445\u043e\u0434\u043d\u043e\u043c\u0443 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0443 \u043f\u043e\u0432\u044b\u0448\u0430\u0435\u0442 \u0440\u0430\u0441\u0441\u0435\u0438\u0432\u0430\u043d\u0438\u0435 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f. \u041f\u0440\u0438 \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u043d\u0435 \u0438\u043c\u0435\u0435\u0442 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u0430\u044f \u0440\u0430\u0431\u043e\u0442\u0430 \u0438 \u043a\u043e\u0440\u0440\u0435\u043b\u044f\u0446\u0438\u044f \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0439, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u044d\u0442\u0430 \u0441\u0435\u0440\u0438\u044f \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0439 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f \u043e\u0434\u043d\u043e\u043a\u0440\u0430\u0442\u043d\u043e. \u041d\u0430\u0441 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u0443\u0435\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u0440\u0430\u0441\u0441\u0435\u0438\u0432\u0430\u043d\u0438\u0435 \u043f\u0440\u0438 \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438. <\/p>\n<p>  \u041e\u0446\u0435\u043d\u0438\u0432 \u0432\u043b\u0438\u044f\u043d\u0438\u0435 \u043d\u0430 \u043a\u043e\u0440\u0440\u0435\u043b\u044f\u0446\u0438\u044e \u043d\u0430\u0447\u0430\u043b\u044c\u043d\u044b\u0445 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439, \u044f \u0432\u044b\u0431\u0440\u0430\u043b \u0434\u043b\u044f <code>STEPS<\/code> \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 2, \u0430 \u0434\u043b\u044f <code>ROUNDS<\/code> \u2014 10. \u041a\u043e\u0440\u0440\u0435\u043b\u044f\u0446\u0438\u044e \u044f \u0432\u044b\u0447\u0438\u0441\u043b\u0438\u043b, \u043f\u043e\u0434\u0441\u0447\u0438\u0442\u0430\u0432 \u00ab\u043d\u0435\u043e\u0431\u044b\u0447\u043d\u044b\u0435\u00bb \u0438 \u00ab\u043f\u043e\u0434\u043e\u0437\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435\u00bb \u0430\u043d\u043e\u043c\u0430\u043b\u0438\u0438, \u0432\u043e\u0437\u043d\u0438\u043a\u0430\u044e\u0449\u0438\u0435 \u0438\u0437-\u0437\u0430 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0430 \u0413\u041f\u0421\u0427 \u0432 PractRand.<\/p>\n<h2>\u041f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c<\/h2>\n<p>  \u0418\u0437\u043c\u0435\u0440\u044f\u0442\u044c \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c \u0441\u043b\u043e\u0436\u043d\u043e \u043f\u043e \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u043c \u043f\u0440\u0438\u0447\u0438\u043d\u0430\u043c:<\/p>\n<ul>\n<li><strong>\u0418\u0437\u043c\u0435\u0440\u0435\u043d\u0438\u0435 \u043f\u043e \u0447\u0430\u0441\u0430\u043c <\/strong>\u043c\u043e\u0436\u0435\u0442 \u0438\u043c\u0435\u0442\u044c \u043d\u0435\u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u0443\u044e \u0442\u043e\u0447\u043d\u043e\u0441\u0442\u044c.<\/li>\n<li>\u0412 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0435 \u0441\u0442\u043e\u043b\u044c\u043a\u043e \u0432\u0441\u0435\u0433\u043e <strong>\u0440\u0430\u0441\u043f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u0438\u0432\u0430\u0435\u0442\u0441\u044f<\/strong>, \u0447\u0442\u043e \u043e\u0442\u0441\u043b\u0435\u0436\u0438\u0432\u0430\u043d\u0438\u0435 \u043d\u0430\u0447\u0430\u043b\u0430 \u0438 \u043a\u043e\u043d\u0446\u0430 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0439, \u0432\u043e-\u043f\u0435\u0440\u0432\u044b\u0445 \u043d\u0435 \u0434\u0435\u0442\u0435\u0440\u043c\u0438\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u043e, \u0430 \u0432\u043e-\u0432\u0442\u043e\u0440\u044b\u0445, \u0441\u0438\u043b\u044c\u043d\u043e \u0437\u0430\u0432\u0438\u0441\u0438\u0442 \u043e\u0442 \u0434\u0440\u0443\u0433\u0438\u0445 \u0441\u043e\u0431\u044b\u0442\u0438\u0439 \u0432 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0435.<\/li>\n<li>\u041e\u0447\u0435\u0432\u0438\u0434\u043d\u043e, \u0447\u0442\u043e \u043d\u0430 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0430\u0445 \u0440\u0430\u0437\u043d\u044b\u0445 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u0435\u0439 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b \u0431\u0443\u0434\u0443\u0442 \u0440\u0430\u0437\u043d\u044b\u043c\u0438. \u0422\u043e \u0436\u0435 \u0441\u0430\u043c\u043e\u0435 \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0441\u044f \u0438 \u043a \u0440\u0430\u0437\u043d\u044b\u043c <strong>\u0441\u0435\u0440\u0438\u044f\u043c<\/strong> \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u043e\u0432 \u043e\u0434\u043d\u043e\u0433\u043e \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044f.<\/li>\n<li>\u0421\u0435\u0433\u043e\u0434\u043d\u044f \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u044b \u0438\u043c\u0435\u044e\u0442 <a href=\"https:\/\/www.intel.com\/content\/www\/us\/en\/architecture-and-technology\/turbo-boost\/turbo-boost-technology.html\"><strong>\u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0443\u044e \u0442\u0430\u043a\u0442\u043e\u0432\u0443\u044e \u0447\u0430\u0441\u0442\u043e\u0442\u0443<\/strong><\/a>: \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0442 \u0431\u044b\u0441\u0442\u0440\u0435\u0435 \u0438\u043b\u0438 \u043c\u0435\u0434\u043b\u0435\u043d\u043d\u0435\u0435 \u0432 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 \u043d\u0430\u0433\u0440\u0443\u0437\u043a\u0438, \u0447\u0442\u043e\u0431\u044b \u0441\u043d\u0438\u0437\u0438\u0442\u044c \u043f\u043e\u0442\u0440\u0435\u0431\u043b\u0435\u043d\u0438\u0435 \u044d\u043d\u0435\u0440\u0433\u0438\u0438 \u0438\u043b\u0438 \u0440\u0438\u0441\u043a \u043f\u0435\u0440\u0435\u0433\u0440\u0435\u0432\u0430.<\/li>\n<\/ul>\n<p>  \u042f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u043d\u0443\u044e \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044e RDTSC, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0432\u044b\u0447\u0438\u0441\u043b\u044f\u0435\u0442 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0446\u0438\u043a\u043b\u043e\u0432.<\/p>\n<p>  \u0427\u0442\u043e\u0431\u044b \u043b\u044e\u0431\u043e\u0439 \u0436\u0435\u043b\u0430\u044e\u0449\u0438\u0439 \u043c\u043e\u0433 \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0441\u0442\u0438 \u043c\u043e\u0438 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b, \u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e \u043e\u0431\u043b\u0430\u0447\u043d\u0443\u044e \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u0443\u044e \u043c\u0430\u0448\u0438\u043d\u0443. \u042d\u0442\u043e \u043d\u0435 \u043c\u0435\u043d\u044f\u0435\u0442 \u0443\u0440\u043e\u0432\u0435\u043d\u044c \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u043e\u0432 \u0431\u0435\u043d\u0447\u043c\u0430\u0440\u043a\u0430 \u043f\u043e \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u044e \u0441 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u044b\u043c \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435\u043c. \u041a\u0440\u043e\u043c\u0435 \u0442\u043e\u0433\u043e, \u0432\u0430\u043c \u043d\u0435 \u043f\u0440\u0438\u0434\u0451\u0442\u0441\u044f \u043f\u043e\u043a\u0443\u043f\u0430\u0442\u044c \u0442\u0430\u043a\u043e\u0439 \u0436\u0435 \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440, \u043a\u0430\u043a \u0443 \u043c\u0435\u043d\u044f. \u0418 \u043d\u0430\u043a\u043e\u043d\u0435\u0446, \u0435\u0441\u0442\u044c \u043c\u043d\u043e\u0433\u043e \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u0439, \u043a\u043e\u0433\u0434\u0430 \u0413\u041f\u0421\u0427 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u044e\u0442 \u0432 \u043e\u0431\u043b\u0430\u043a\u0430\u0445. <\/p>\n<p>  \u042f \u0432\u044b\u0431\u0440\u0430\u043b Google Cloud Platform N2 (\u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440 Intel) \u0438 N2D (\u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440 AMD). \u0414\u043e\u0441\u0442\u043e\u0438\u043d\u0441\u0442\u0432\u043e GCP \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u043e\u043d\u0438 \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u044e\u0442 \u0441\u0435\u0440\u0432\u0435\u0440\u044b \u0441 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0430\u043c\u0438 \u043e\u0431\u043e\u0438\u0445 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u0435\u0439. \u0412 \u0441\u0442\u0430\u0442\u044c\u0435 \u043c\u044b \u0441\u043e\u0441\u0440\u0435\u0434\u043e\u0442\u043e\u0447\u0438\u043c\u0441\u044f \u043d\u0430 Intel, \u043d\u043e \u0434\u043b\u044f AMD \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b \u0431\u0443\u0434\u0443\u0442 \u0442\u043e\u0433\u043e \u0436\u0435 \u043f\u043e\u0440\u044f\u0434\u043a\u0430.<\/p>\n<p>  \u0427\u0442\u043e\u0431\u044b \u0433\u043b\u0443\u0431\u0436\u0435 \u043f\u043e\u0433\u0440\u0443\u0437\u0438\u0442\u044c\u0441\u044f \u0432 \u0442\u0435\u043c\u0443, \u0434\u0430\u0432\u0430\u0439\u0442\u0435 \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u043f\u0440\u043e\u0433\u043e\u043d\u0438\u043c \u0441\u0442\u0430\u0440\u044b\u0439 \u043a\u0440\u0438\u043f\u0442\u043e\u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440 RC4. \u041d\u0435 \u0438\u043c\u0435\u044f \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u0440\u0430\u0441\u043f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u0438\u0442\u044c \u0440\u0430\u0431\u043e\u0442\u0443, \u044f \u043f\u043e\u043b\u0443\u0447\u0438\u043b <strong>7,5 cpb<\/strong> (\u0446\u0438\u043a\u043b\u043e\u0432 \u043d\u0430 \u0441\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u0431\u0430\u0439\u0442).<\/p>\n<p>  \u0422\u0435\u043f\u0435\u0440\u044c \u043f\u0440\u043e\u0433\u043e\u043d\u0438\u043c \u043e\u0447\u0435\u043d\u044c \u043f\u043e\u043f\u0443\u043b\u044f\u0440\u043d\u044b\u0439 \u0438 \u0431\u044b\u0441\u0442\u0440\u044b\u0439 MCG: <a href=\"https:\/\/lemire.me\/blog\/2019\/03\/19\/the-fastest-conventional-random-number-generator-that-can-pass-big-crush\/\">\u043f\u0440\u043e\u0441\u0442\u0435\u0439\u0448\u0438\u0439 \u0413\u041f\u0421\u0427 Lehmer128<\/a>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u0440\u043e\u0445\u043e\u0434\u0438\u0442 \u0442\u0435\u0441\u0442 BigCrush, \u043f\u043e\u043a\u0430\u0437\u0430\u043b <strong>0,5 cpb<\/strong>. \u041e\u0433\u043e, \u043e\u0442\u043b\u0438\u0447\u043d\u043e!<\/p>\n<p>  \u0417\u0430\u0442\u0435\u043c \u043f\u0440\u043e\u0433\u043e\u043d\u0438\u043c \u0441\u0432\u0435\u0436\u0443\u044e \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0443, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0434\u043b\u044f \u0431\u044b\u0441\u0442\u0440\u044b\u0445 \u0445\u044d\u0448-\u0442\u0430\u0431\u043b\u0438\u0446 \u2014 <a href=\"https:\/\/github.com\/wangyi-fudan\/wyhash\/blob\/master\/wyhash_v6.h\">wyrand<\/a>. <strong>0,41 cpb<\/strong>, \u0447\u0443\u0442\u044c \u043b\u0443\u0447\u0448\u0435!<\/p>\n<p>  \u041d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0413\u041f\u0421\u0427 \u043d\u0435 \u043f\u0440\u043e\u0445\u043e\u0434\u044f\u0442 32-\u0442\u0435\u0431\u0438\u0431\u0430\u0439\u0442\u043d\u044b\u0439 \u0442\u0435\u0441\u0442 PractRand, \u043d\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0442 \u043e\u0447\u0435\u043d\u044c \u0431\u044b\u0441\u0442\u0440\u043e. <a href=\"http:\/\/prng.di.unimi.it\/xoshiro256plus.c\">Xoshiro256+<\/a> \u0434\u043e\u0442\u044f\u043d\u0443\u043b \u0442\u043e\u043b\u044c\u043a\u043e \u0434\u043e 512 \u043c\u0435\u0431\u0438\u0431\u0430\u0439\u0442\u043e\u0432, \u043d\u043e \u043f\u0440\u043e\u0434\u0435\u043c\u043e\u043d\u0441\u0442\u0440\u0438\u0440\u043e\u0432\u0430\u043b \u043e\u0447\u0435\u043d\u044c \u0432\u044b\u0441\u043e\u043a\u0443\u044e \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c: <strong>0,34 cpb<\/strong>.<\/p>\n<p>  \u0415\u0449\u0451 \u043e\u0434\u043d\u0430 \u0441\u0432\u0435\u0436\u0430\u044f \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0430 <a href=\"http:\/\/www.romu-random.org\/\">RomuTrio<\/a>. \u041e\u043d\u0430 \u043f\u0440\u0435\u0442\u0435\u043d\u0434\u0443\u0435\u0442 \u043d\u0430 \u0442\u0438\u0442\u0443\u043b \u0441\u0430\u043c\u043e\u0433\u043e \u0431\u044b\u0441\u0442\u0440\u043e\u0433\u043e \u0413\u041f\u0421\u0427 \u0432 \u043c\u0438\u0440\u0435 \u2014 <strong>0,31 cpb<\/strong>.<\/p>\n<p>  \u041b\u0430\u0434\u043d\u043e, \u044d\u0442\u043e\u0433\u043e \u0445\u0432\u0430\u0442\u0438\u0442. \u0427\u0442\u043e \u043f\u043e\u043a\u0430\u0437\u0430\u043b \u043f\u043e\u043b\u0443-SHISHUA?<\/p>\n<p>  <strong>0,14 cpb<\/strong>. \u0412\u0434\u0432\u043e\u0435 \u0431\u044b\u0441\u0442\u0440\u0435\u0435 RomuTrio.<\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/c84\/f7a\/c9f\/c84f7ac9fcbc4d4a7b2400ae552522a4.png\"><\/div>\n<p>  \u041a\u0440\u0443\u0442\u043e. \u0422\u0435\u043f\u0435\u0440\u044c \u043f\u0440\u043e\u0442\u0435\u0441\u0442\u0438\u0440\u0443\u0435\u043c \u043a\u0440\u0438\u043f\u0442\u043e\u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440 ChaCha8. \u041e\u043d \u0434\u043e\u0441\u0442\u0438\u0433\u2026 <strong>0,12 cpb<\/strong>.<\/p>\n<p>  \u041e\u0439.<\/p>\n<p>  SIMD \u2014 \u044d\u0442\u043e \u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0435\u0435 \u0432\u043e\u043b\u0448\u0435\u0431\u0441\u0442\u0432\u043e!<\/p>\n<p>  \u0414\u043b\u044f \u043a\u0440\u0438\u043f\u0442\u043e\u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0441\u043e\u043e\u0431\u0449\u0435\u0441\u0442\u0432\u0430 <a href=\"https:\/\/twitter.com\/hashbreaker\/status\/1023965175219728386\">\u044d\u0442\u043e \u043d\u0435 \u0441\u0442\u0430\u043b\u043e \u043e\u0441\u043e\u0431\u044b\u043c \u0441\u044e\u0440\u043f\u0440\u0438\u0437\u043e\u043c<\/a>. ChaCha8 \u043d\u0435\u043e\u0431\u044b\u0447\u0430\u0439\u043d\u043e \u043b\u0435\u0433\u043a\u043e \u0440\u0430\u0441\u043f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u0438\u0432\u0430\u0442\u044c. \u042d\u0442\u043e \u043b\u0438\u0448\u044c \u0445\u043e\u0440\u043e\u0448\u043e \u0445\u044d\u0448\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u0441\u0447\u0451\u0442\u0447\u0438\u043a \u0432 \u0440\u0430\u0441\u0441\u0435\u044f\u043d\u043d\u043e\u043c \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0438.<\/p>\n<p>  \u0410 \u0435\u0449\u0451 \u043f\u043e\u043c\u043d\u0438\u0442\u0435, \u043a\u0430\u043a \u043a\u043e\u043c\u0430\u043d\u0434\u0430 \u044f\u0437\u044b\u043a\u0430 Julia \u043f\u044b\u0442\u0430\u043b\u0430\u0441\u044c \u043e\u0431\u044a\u0435\u0434\u0438\u043d\u0438\u0442\u044c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u044d\u043a\u0437\u0435\u043c\u043f\u043b\u044f\u0440\u043e\u0432 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u044b \u0412\u0438\u043d\u044c\u0438, \u0447\u0442\u043e\u0431\u044b \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0431\u044b\u0441\u0442\u0440\u044b\u0439 \u0413\u041f\u0421\u0427 \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 SIMD? \u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u043d\u0430 \u0438\u0445 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442, \u0432\u043e\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0432\u0448\u0438\u0441\u044c \u044d\u0442\u043e\u0439 \u043c\u0435\u0442\u043e\u0434\u0438\u043a\u043e\u0439 (<a href=\"http:\/\/prng.di.unimi.it\/#speed\">8 \u0448\u0442\u0443\u043a Xoshiro256+<\/a>). <strong>0,09 cpb<\/strong>! <\/p>\n<p>  \u0422\u0435\u0445\u043d\u0438\u0447\u0435\u0441\u043a\u0438, \u043c\u043e\u0439 \u043d\u043e\u0443\u0442\u0431\u0443\u043a \u043c\u043e\u0433 \u043f\u043e\u0432\u043b\u0438\u044f\u0442\u044c \u043d\u0430 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b. \u042f \u043d\u0435 \u0443\u0432\u0435\u0440\u0435\u043d, \u043f\u043e\u0447\u0435\u043c\u0443 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u043a\u043e\u043c\u0430\u043d\u0434\u044b Julia \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0431\u044b\u0441\u0442\u0440\u0435\u0435 ChaCha8 \u0432 GCP, \u043d\u043e \u043c\u0435\u0434\u043b\u0435\u043d\u043d\u0435\u0435 \u043f\u0440\u0438 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e\u043c \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0438. \u041d\u0430 \u043c\u043e\u0435\u0439 \u043c\u0430\u0448\u0438\u043d\u0435 \u043f\u043e\u043b\u0443-SHISHUA \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0431\u044b\u0441\u0442\u0440\u0435\u0435 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u043a\u043e\u043c\u0430\u043d\u0434\u044b Julia, \u043d\u043e \u043c\u0435\u0434\u043b\u0435\u043d\u043d\u0435\u0435 ChaCha8.<\/p>\n<p>  \u041d\u0443\u0436\u043d\u043e \u043f\u043e\u0431\u0435\u0434\u0438\u0442\u044c \u0432\u0441\u0435\u0445 \u043a\u043e\u043d\u043a\u0443\u0440\u0435\u043d\u0442\u043e\u0432. <\/p>\n<p>  \u0412\u0435\u0440\u043e\u044f\u0442\u043d\u043e, \u0432\u044b \u0443\u0436\u0435 \u0441\u043f\u0440\u0430\u0448\u0438\u0432\u0430\u0435\u0442\u0435, \u043f\u043e\u0447\u0435\u043c\u0443 \u043c\u044b \u043d\u0430\u0437\u0432\u0430\u043b\u0438 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0443\u044e \u0432\u0435\u0440\u0441\u0438\u044e \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440\u0430 \u043f\u043e\u043b\u0443-SHISHUA? \u041f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u043e\u043a\u0430\u0437\u0430\u043b\u043e\u0441\u044c \u043b\u0435\u0433\u043a\u043e \u043f\u043e\u0432\u044b\u0441\u0438\u0442\u044c \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c \u0432\u0434\u0432\u043e\u0435, \u0435\u0441\u043b\u0438 \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u0434\u0432\u0430 \u044d\u043a\u0437\u0435\u043c\u043f\u043b\u044f\u0440\u0430 \u043f\u043e\u043b\u0443-SHISHUA.<\/p>\n<p>  \u0410\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u043e \u0438\u0434\u0435\u0435 \u043a\u043e\u043c\u0430\u043d\u0434\u044b Julia, \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u0443\u0435\u043c \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e \u0434\u0432\u0430 \u0413\u041f\u0421\u0427 (\u0447\u0435\u0442\u044b\u0440\u0435 \u0431\u043b\u043e\u043a\u0430 256-\u0431\u0438\u0442\u043d\u043e\u0433\u043e \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f), \u043f\u043e\u043e\u0447\u0435\u0440\u0451\u0434\u043d\u043e \u043f\u043e\u0434\u0430\u0432\u0430\u044f \u043d\u0430 \u0432\u044b\u0445\u043e\u0434 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b \u0438\u0445 \u0440\u0430\u0431\u043e\u0442\u044b.<\/p>\n<p>  \u041d\u043e \u0435\u0441\u043b\u0438 \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0431\u043e\u043b\u044c\u0448\u0435 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0439, \u0442\u043e \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u0432\u044b\u0434\u0430\u0432\u0430\u0442\u044c \u0435\u0449\u0451 \u0431\u043e\u043b\u044c\u0448\u0435 \u0434\u0430\u043d\u043d\u044b\u0445, \u043f\u043e\u043f\u0430\u0440\u043d\u043e \u043a\u043e\u043c\u0431\u0438\u043d\u0438\u0440\u0443\u044f \u0447\u0435\u0442\u044b\u0440\u0435 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f:<\/p>\n<pre><code class=\"plaintext\">o0 = _mm256_xor_si256(u0, t1); o1 = _mm256_xor_si256(u2, t3); o2 = _mm256_xor_si256(s0, s3); o3 = _mm256_xor_si256(s2, s1); <\/code><\/pre>\n<p>  \u0422\u0430\u043a \u043c\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u0438 SHISHUA, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u043e\u043a\u0430\u0437\u0430\u043b \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c \u0432 <strong>0,06 cpb<\/strong>.<\/p>\n<p>  \u042d\u0442\u043e \u0432\u0434\u0432\u043e\u0435 \u0431\u044b\u0441\u0442\u0440\u0435\u0435 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u0433\u043e \u0441\u0430\u043c\u043e\u0433\u043e \u0431\u044b\u0441\u0442\u0440\u043e\u0433\u043e \u043a\u043e\u043d\u043a\u0443\u0440\u0435\u043d\u0442\u0430 \u0432 \u043c\u0438\u0440\u0435, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u0440\u043e\u0448\u0451\u043b 32-\u0442\u0435\u0431\u0438\u0431\u0430\u0439\u0442\u043d\u044b\u0439 \u0442\u0435\u0441\u0442 PractRand. \u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u043d\u0430 \u0433\u0440\u0430\u0444\u0438\u043a\u0435.<\/p>\n<p>  \u041f\u043e\u043b\u0430\u0433\u0430\u044e, \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u0430\u0441\u044c \u043a\u043e\u043d\u043a\u0443\u0440\u0435\u043d\u0442\u043e\u0441\u043f\u043e\u0441\u043e\u0431\u043d\u043e\u0439. \u041d\u0430 \u043c\u043e\u0451\u043c \u043d\u043e\u0443\u0442\u0431\u0443\u043a\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0435\u0449\u0451 \u0431\u044b\u0441\u0442\u0440\u0435\u0435 \u2014 0,03 cpb, \u043d\u043e \u0431\u0443\u0434\u0443 \u043f\u0440\u0438\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0442\u044c\u0441\u044f \u0441\u0432\u043e\u0438\u0445 \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u043e\u0432 \u043a\u0430\u0441\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u0431\u0435\u043d\u0447\u043c\u0430\u0440\u043a\u0430.<\/p>\n<p>  \u041d\u0430\u0434\u0435\u044e\u0441\u044c, \u0435\u0449\u0451 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043d\u0435\u0434\u0435\u043b\u044c \u043c\u043e\u0439 \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440 \u043f\u0440\u043e\u0434\u0435\u0440\u0436\u0438\u0442\u0441\u044f \u043d\u0430 \u043f\u044c\u0435\u0434\u0435\u0441\u0442\u0430\u043b\u0435 \u0441\u0430\u043c\u043e\u0433\u043e \u0431\u044b\u0441\u0442\u0440\u043e\u0433\u043e \u0432 \u043c\u0438\u0440\u0435 (\u043f\u043e\u0436\u0430\u043b\u0443\u0439\u0441\u0442\u0430, \u0441\u0434\u0435\u043b\u0430\u0439\u0442\u0435 \u0442\u0430\u043a).<\/p>\n<h2>\u041a\u0430\u0447\u0435\u0441\u0442\u0432\u043e<\/h2>\n<p>  \u0413\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440 \u0447\u0435\u0441\u0442\u043d\u043e \u043f\u0440\u043e\u0445\u043e\u0434\u0438\u0442 BigCrush \u0438 32-\u0442\u0435\u0431\u0438\u0431\u0430\u0439\u0442\u043d\u044b\u0439 \u0442\u0435\u0441\u0442 PractRand. \u0418 \u0432\u0441\u0451 \u0431\u043b\u0430\u0433\u043e\u0434\u0430\u0440\u044f \u0447\u0435\u0442\u044b\u0440\u0451\u043c \u0432\u044b\u0445\u043e\u0434\u043d\u044b\u043c \u043f\u043e\u0442\u043e\u043a\u0430\u043c.<\/p>\n<p>  \u041a \u043d\u0435\u0434\u043e\u0441\u0442\u0430\u0442\u043a\u0430\u043c \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u044b \u043c\u043e\u0436\u043d\u043e \u043e\u0442\u043d\u0435\u0441\u0442\u0438 \u0435\u0451 <strong>\u043d\u0435\u043e\u0431\u0440\u0430\u0442\u0438\u043c\u043e\u0441\u0442\u044c<\/strong>. \u042d\u0442\u043e \u0432\u0438\u0434\u043d\u043e \u043f\u043e \u0443\u043c\u0435\u043d\u044c\u0448\u0435\u043d\u0438\u044e \u0434\u043e 4-\u0431\u0438\u0442\u043d\u043e\u0433\u043e \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f \u0441 <code>s0 = [a, b]<\/code> \u0438 <code>s1 = [c, d]<\/code>. \u041f\u0440\u0438 \u0441\u0434\u0432\u0438\u0433\u0435 \u043c\u044b \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u043c <code>[0, a]<\/code> \u0438<code>[0, d]<\/code>, \u0430 \u043f\u0440\u0438 \u043f\u0435\u0440\u0435\u043c\u0435\u0448\u0438\u0432\u0430\u043d\u0438\u0438 \u2014 <code>[b, c]<\/code> \u0438 <code>[d, a]<\/code>. \u041d\u043e\u0432\u044b\u0439 <code>s0<\/code> \u0440\u0430\u0432\u0435\u043d <code>[b, c] + [0, a] = [b\u2295(a\u2227c), a\u2295c]<\/code>, \u0430 <code>s1<\/code> \u0440\u0430\u0432\u0435\u043d <code>[d, a] + [0, c] = [d\u2295(a\u2227c), a\u2295c]<\/code>. \u0415\u0441\u043b\u0438 <code>a = \u00acc<\/code>, \u0442\u043e\u0433\u0434\u0430 <code>a\u2295c = 1<\/code> \u0438 <code>a\u2227c = 0<\/code>, \u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e, <code>s0 = [b, 1]<\/code> \u0438 <code>s1 = [d, 1]<\/code>. \u0422\u043e \u0435\u0441\u0442\u044c \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u0434\u0432\u0435 \u043a\u043e\u043c\u0431\u0438\u043d\u0430\u0446\u0438\u0438 <code>a<\/code> and <code>c<\/code>, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0434\u0430\u044e\u0442 \u043d\u0430\u043c \u0442\u043e \u0436\u0435 \u0444\u0438\u043d\u0430\u043b\u044c\u043d\u043e\u0435 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435.<\/p>\n<p>  \u0412 \u043d\u0430\u0448\u0435\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u044d\u0442\u043e \u043d\u0435 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u043e\u0439, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e 64-\u0431\u0438\u0442\u043d\u044b\u0439 \u0441\u0447\u0451\u0442\u0447\u0438\u043a \u0442\u043e\u0436\u0435 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0447\u0430\u0441\u0442\u044c\u044e \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f. \u041f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0441\u044f \u043c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u0439 \u0446\u0438\u043a\u043b \u0432 2<sup>71<\/sup> \u0431\u0430\u0439\u0442\u0430 (\u043f\u043e 128 \u0431\u0430\u0439\u0442\u043e\u0432 \u043d\u0430 \u043f\u0435\u0440\u0435\u0445\u043e\u0434 \u043c\u0435\u0436\u0434\u0443 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f\u043c\u0438), \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043d\u0430 \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u0438 \u0432 10 \u0433\u0438\u0431\u0438\u0431\u0430\u0439\u0442\u043e\u0432\/\u0441\u0435\u043a. \u043f\u0440\u043e\u0434\u043b\u0438\u0442\u0441\u044f \u0441\u0435\u043c\u044c \u0442\u044b\u0441\u044f\u0447 \u043b\u0435\u0442. \u042d\u0442\u043e \u0443\u0440\u0430\u0432\u043d\u043e\u0432\u0435\u0448\u0438\u0432\u0430\u0435\u0442 \u043f\u043e\u0442\u0435\u0440\u044f\u043d\u043d\u044b\u0435 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f.<\/p>\n<p>  \u041a\u0440\u043e\u043c\u0435 \u0442\u043e\u0433\u043e, \u0434\u0430\u0436\u0435 \u043d\u0435\u0441\u043c\u043e\u0442\u0440\u044f \u043d\u0430 \u043d\u0435\u043e\u0431\u0440\u0430\u0442\u0438\u043c\u043e\u0441\u0442\u044c \u0441\u0440\u0435\u0434\u043d\u0438\u0439 \u043f\u0435\u0440\u0438\u043e\u0434 \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0430 \u043c\u0435\u0436\u0434\u0443 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f\u043c\u0438 \u0440\u0430\u0432\u0435\u043d 2^((256+1)\u00f72). \u042d\u0442\u043e \u0434\u0430\u0451\u0442 \u0441\u0440\u0435\u0434\u043d\u0438\u0439 \u0446\u0438\u043a\u043b \u0432 2<sup>135<\/sup> \u0431\u0430\u0439\u0442\u043e\u0432 (\u043d\u0430 \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u0438 \u0432 10 \u0433\u0438\u0431\u0438\u0431\u0430\u0439\u0442\u043e\u0432\/\u0441\u0435\u043a. \u0431\u0443\u0434\u0435\u0442 \u0434\u043b\u0438\u0442\u044c\u0441\u044f \u0431\u043e\u043b\u0435\u0435 \u0447\u0435\u043c \u0432 \u0442\u0440\u0438\u043b\u043b\u0438\u043e\u043d \u0440\u0430\u0437 \u0434\u043e\u043b\u044c\u0448\u0435, \u0447\u0435\u043c \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442 \u0412\u0441\u0435\u043b\u0435\u043d\u043d\u0430\u044f). \u0425\u043e\u0442\u044f \u044f \u0441\u0447\u0438\u0442\u0430\u044e, \u0447\u0442\u043e \u0441\u0440\u0435\u0434\u043d\u0438\u0435 \u0446\u0438\u043a\u043b\u044b \u043f\u0435\u0440\u0435\u043e\u0446\u0435\u043d\u0438\u0432\u0430\u044e\u0442, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u043e\u043d\u0438 \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0430\u043c \u043d\u0435 \u0433\u043e\u0432\u043e\u0440\u044f\u0442 \u043e \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0440\u0430\u0431\u043e\u0442\u044b \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440\u0430.<\/p>\n<p>  \u0412\u043e\u0442 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b \u0431\u0435\u043d\u0447\u043c\u0430\u0440\u043a\u0430:<\/p>\n<div class=\"scrollable-table\">\n<table>\n<tr>\n<th><strong>\u0413\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440<\/strong><\/th>\n<th><strong>\u041f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c<\/strong><\/th>\n<th><strong>\u041a\u0430\u0447\u0435\u0441\u0442\u0432\u043e<\/strong><\/th>\n<th><strong>\u041a\u043e\u0440\u0440\u0435\u043b\u044f\u0446\u0438\u044f \u043d\u0430\u0447\u0430\u043b\u044c\u043d\u044b\u0445 \u0447\u0438\u0441\u0435\u043b<\/strong><\/th>\n<\/tr>\n<tr>\n<td>SHISHUA<\/td>\n<td>0,06<\/td>\n<td>&gt;32 \u0422\u0438\u0411<\/td>\n<td>&gt;256 \u0413\u0438\u0411<\/td>\n<\/tr>\n<tr>\n<td>xoshiro256+x8<\/td>\n<td>0,09<\/td>\n<td>1 \u041a\u0438\u0411<\/td>\n<td>0 \u041a\u0438\u0411<\/td>\n<\/tr>\n<tr>\n<td>ChaCha8<\/td>\n<td>0,12<\/td>\n<td>&gt;32 \u0422\u0438\u0411?<\/td>\n<td>&gt;32 \u0422\u0438\u0411?<\/td>\n<\/tr>\n<tr>\n<td>RomuTrio<\/td>\n<td>0,31<\/td>\n<td>&gt;32 \u0422\u0438\u0411<\/td>\n<td>1 \u041a\u0438\u0411<\/td>\n<\/tr>\n<tr>\n<td>xoshiro256+<\/td>\n<td>0,34<\/td>\n<td>512 \u041c\u0438\u0411<\/td>\n<td>1 \u041a\u0438\u0411<\/td>\n<\/tr>\n<tr>\n<td>wyrand<\/td>\n<td>0,41<\/td>\n<td>&gt;32 \u0422\u0438\u0411<\/td>\n<td>8 \u041a\u0438\u0411<\/td>\n<\/tr>\n<tr>\n<td>Lehmer128<\/td>\n<td>0,44<\/td>\n<td>&gt;32 \u0422\u0438\u0411<\/td>\n<td>1 \u041a\u0438\u0411<\/td>\n<\/tr>\n<tr>\n<td>RC4<\/td>\n<td>7,48<\/td>\n<td>1 \u0422\u0438\u0411<\/td>\n<td>1 \u041a\u0438\u0411<\/td>\n<\/tr>\n<\/table>\n<\/div>\n<p>  <\/p>\n<ol>\n<li><strong>\u041f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c<\/strong>: \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0446\u0438\u043a\u043b\u043e\u0432 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0430, \u043f\u043e\u0442\u0440\u0430\u0447\u0435\u043d\u043d\u044b\u0445 \u043d\u0430 \u043e\u0434\u0438\u043d \u0441\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u0431\u0430\u0439\u0442. \u041f\u043e\u043b\u0443\u0447\u0435\u043d\u043e \u043d\u0430 \u043e\u0431\u043b\u0430\u0447\u043d\u044b\u0445 \u043c\u0430\u0448\u0438\u043d\u0430\u0445 N2 GCP \u0438 N2D (AMD), \u043f\u043e\u0440\u044f\u0434\u043e\u043a \u043e\u0434\u0438\u043d\u0430\u043a\u043e\u0432\u044b\u0439.<\/li>\n<li><strong>\u041a\u0430\u0447\u0435\u0441\u0442\u0432\u043e<\/strong>: \u0443\u0440\u043e\u0432\u0435\u043d\u044c, \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440 \u0437\u0430\u0432\u0430\u043b\u0438\u0432\u0430\u0435\u0442 \u043f\u0440\u043e\u0445\u043e\u0436\u0434\u0435\u043d\u0438\u0435 \u0442\u0435\u0441\u0442\u0430 PractRand. \u0415\u0441\u043b\u0438 \u043d\u0435 \u0437\u0430\u0432\u0430\u043b\u0438\u0432\u0430\u0435\u0442, \u0441\u0442\u043e\u0438\u0442 \u0437\u043d\u0430\u043a &gt;. \u0415\u0441\u043b\u0438 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u043d\u0435 \u0434\u043e\u043a\u0430\u0437\u0430\u043d, \u0441\u0442\u043e\u0438\u0442 \u0432\u043e\u043f\u0440\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u0437\u043d\u0430\u043a.<\/li>\n<li><strong>\u041a\u043e\u0440\u0440\u0435\u043b\u044f\u0446\u0438\u044f \u043d\u0430\u0447\u0430\u043b\u044c\u043d\u044b\u0445 \u0447\u0438\u0441\u0435\u043b<\/strong>: \u043f\u0440\u043e\u0445\u043e\u0436\u0434\u0435\u043d\u0438\u0435 PractRand \u0441 \u0447\u0435\u0440\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u0435\u043c \u0431\u0430\u0439\u0442\u043e\u0432 \u0438\u0437 \u0432\u043e\u0441\u044c\u043c\u0438 \u043f\u043e\u0442\u043e\u043a\u043e\u0432 \u0441 \u043d\u0430\u0447\u0430\u043b\u044c\u043d\u044b\u043c\u0438 \u0447\u0438\u0441\u043b\u0430\u043c\u0438 0, 1, 2, 4, 8, 16, 32, 64. \u041c\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c PractRand \u0441\u043e \u0441\u0432\u0451\u0440\u0442\u043a\u043e\u0439 \u0432\u0434\u0432\u043e\u0435 \u0438 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u043d\u044b\u043c\u0438 \u0442\u0435\u0441\u0442\u0430\u043c\u0438.\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/ea7\/3f6\/f1d\/ea73f6f1db25664622785ba127764dbc.png\"><\/div>\n<p>  <\/li>\n<\/ol>\n<p>  <\/p>\n<h2>\u0414\u0430\u043b\u0435\u0435<\/h2>\n<p>  \u0425\u043e\u0442\u044f \u0432 \u043d\u0430\u0448\u0435\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u043d\u0435\u0442 \u043d\u0438\u043a\u0430\u043a\u0438\u0445 \u043f\u0440\u043e\u0431\u043b\u0435\u043c \u0441 \u043d\u0435\u043e\u0431\u0440\u0430\u0442\u0438\u043c\u043e\u0441\u0442\u044c\u044e, \u0432\u0441\u0451 \u0436\u0435 \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u0443\u043b\u0443\u0447\u0448\u0438\u0442\u044c SHISHUA.<\/p>\n<p>  \u0412 \u043c\u043e\u0451\u043c \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0438 \u0438\u0434\u0435\u0430\u043b\u044c\u043d\u044b\u0439 \u0413\u041f\u0421\u0427 \u043e\u0431\u043b\u0430\u0434\u0430\u0435\u0442 \u0442\u0430\u043a\u0438\u043c\u0438 \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u0430\u043c\u0438:<\/p>\n<ol>\n<li><strong>\u041f\u0435\u0440\u0435\u0445\u043e\u0434 \u043c\u0435\u0436\u0434\u0443 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f\u043c\u0438 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0441\u043e\u0431\u043e\u0439 \u0446\u0438\u043a\u043b\u0438\u0447\u0435\u0441\u043a\u043e\u0435 \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u0435<\/strong>, \u0447\u0442\u043e \u0434\u0430\u0451\u0442 \u0446\u0438\u043a\u043b \u0432 2<sup>1024<\/sup>. \u0414\u043b\u044f \u0435\u0433\u043e \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0438\u044f \u0441\u043e \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c\u044e 10 \u0433\u0438\u0431\u0438\u0431\u0430\u0439\u0442\/\u0441\u0435\u043a. \u043f\u043e\u043d\u0430\u0434\u043e\u0431\u0438\u0442\u0441\u044f \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0432 10<sup>282<\/sup> \u0440\u0430\u0437 \u0431\u043e\u043b\u044c\u0448\u0435, \u0447\u0435\u043c \u0432\u043e\u0437\u0440\u0430\u0441\u0442 \u0412\u0441\u0435\u043b\u0435\u043d\u043d\u043e\u0439. \u042d\u0442\u043e \u043d\u0435 \u0441\u043e\u0432\u0441\u0435\u043c \u00ab\u043b\u0443\u0447\u0448\u0435\u00bb (\u043d\u0435\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0435\u0441\u0442\u044c \u043d\u0435\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c). \u041d\u043e \u0435\u0441\u043b\u0438 \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u0443\u043c\u0435\u043d\u044c\u0448\u0438\u0442\u044c \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0443 \u0434\u043e \u0431\u043e\u043b\u0435\u0435 \u043c\u0435\u043b\u043a\u043e\u0433\u043e \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f \u0431\u0435\u0437 \u0432\u043b\u0438\u044f\u043d\u0438\u044f \u043d\u0430 \u0440\u0430\u0441\u0441\u0435\u0438\u0432\u0430\u043d\u0438\u0435, \u0442\u043e \u043c\u043e\u0436\u0435\u043c \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0435\u0449\u0451 \u0431\u043e\u043b\u0435\u0435 \u0431\u044b\u0441\u0442\u0440\u044b\u0439 \u0413\u041f\u0421\u0427. \u041a\u0430\u043a \u0434\u0443\u043c\u0430\u0435\u0442\u0435, \u0443\u0434\u0430\u0441\u0442\u0441\u044f \u043b\u0438 \u0443\u043c\u0435\u0441\u0442\u0438\u0442\u044c \u0435\u0433\u043e \u0432 128-\u0431\u0438\u0442\u043d\u044b\u0439 \u0440\u0435\u0433\u0438\u0441\u0442\u0440 NEON \u0432 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0430\u0445 ARM? \u041a\u0440\u043e\u043c\u0435 \u0442\u043e\u0433\u043e, \u043d\u0430\u043c \u0431\u043e\u043b\u044c\u0448\u0435 \u043d\u0435 \u043d\u0443\u0436\u0435\u043d \u0431\u0443\u0434\u0435\u0442 \u0441\u0447\u0451\u0442\u0447\u0438\u043a, \u0447\u0442\u043e \u0441\u044d\u043a\u043e\u043d\u043e\u043c\u0438\u0442 \u0434\u0432\u0435 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438 \u0441\u043b\u043e\u0436\u0435\u043d\u0438\u044f.<\/li>\n<li><strong>\u0412\u044b\u0445\u043e\u0434\u043d\u0430\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0434\u043e\u043a\u0430\u0437\u0430\u043d\u043d\u043e \u043d\u0435\u043e\u0431\u0440\u0430\u0442\u0438\u043c\u043e\u0439<\/strong>. \u042d\u0442\u043e \u043d\u0430\u043c\u0438 \u0443\u0436\u0435 \u0434\u043e\u0441\u0442\u0438\u0433\u043d\u0443\u0442\u043e \u0431\u043b\u0430\u0433\u043e\u0434\u0430\u0440\u044f \u0442\u043e\u043c\u0443, \u043a\u0430\u043a \u0432 SHISHUA \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u0435\u0442\u0441\u044f XOR \u043a \u0434\u0432\u0443\u043c \u043d\u0435\u0437\u0430\u0432\u0438\u0441\u0438\u043c\u044b\u043c \u0447\u0438\u0441\u043b\u0430\u043c. \u041d\u043e \u044f \u0435\u0449\u0451 \u043d\u0435 \u0434\u043e\u043a\u0430\u0437\u0430\u043b, \u0447\u0442\u043e \u0447\u0438\u0441\u043b\u0430 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043d\u0435 \u043a\u043e\u0440\u0440\u0435\u043b\u0438\u0440\u0443\u044e\u0442.<\/li>\n<li><strong>\u0418\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f \u043d\u0435\u043e\u0431\u0440\u0430\u0442\u0438\u043c\u0430,<\/strong> \u043a\u043e\u0433\u0434\u0430 \u0443 \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f \u0435\u0441\u0442\u044c 2<sup>128<\/sup> \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u044b\u0445 \u043d\u0430\u0447\u0430\u043b\u044c\u043d\u044b\u0445 \u0447\u0438\u0441\u0435\u043b (\u0447\u0442\u043e\u0431\u044b \u043f\u0440\u0435\u0434\u043e\u0442\u0432\u0440\u0430\u0442\u0438\u0442\u044c \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0443\u0433\u0430\u0434\u0430\u0442\u044c \u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e\u0435 \u0447\u0438\u0441\u043b\u043e). \u0421\u043f\u043e\u0441\u043e\u0431 \u043f\u0440\u0438\u0441\u0432\u043e\u0435\u043d\u0438\u044f \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f \u0441\u0432\u043e\u0435\u043c\u0443 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u043c \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0443 \u0432 SHISHUA, \u0441\u043a\u043e\u0440\u0435\u0435 \u0432\u0441\u0435\u0433\u043e, \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0438\u0432\u0430\u0435\u0442 \u043d\u0435\u043e\u0431\u0440\u0430\u0442\u0438\u043c\u043e\u0441\u0442\u044c. \u041a\u0440\u043e\u043c\u0435 \u0442\u043e\u0433\u043e, \u043c\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c \u043f\u0435\u0440\u0435\u0445\u043e\u0434 \u043c\u0435\u0436\u0434\u0443 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f\u043c\u0438 (\u0447\u0430\u0441\u0442\u0438\u0447\u043d\u043e \u043d\u0435\u043e\u0431\u0440\u0430\u0442\u0438\u043c) \u0438 \u0432\u044b\u0445\u043e\u0434\u043d\u0443\u044e \u0444\u0443\u043d\u043a\u0446\u0438\u044e (\u0432\u0435\u0440\u043e\u044f\u0442\u043d\u043e, \u043d\u0435\u043e\u0431\u0440\u0430\u0442\u0438\u043c\u0430, \u0441\u043c. \u043f\u0443\u043d\u043a\u0442 2).<\/li>\n<li><strong>\u0423 \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f \u0438\u0434\u0435\u0430\u043b\u044c\u043d\u043e\u0435 \u0440\u0430\u0441\u0441\u0435\u0438\u0432\u0430\u043d\u0438\u0435<\/strong>: \u0432\u0441\u0435 \u0431\u0438\u0442\u044b \u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0447\u0438\u0441\u043b\u0430 \u0432\u043b\u0438\u044f\u044e\u0442 \u043d\u0430 \u0432\u0441\u0435 \u0431\u0438\u0442\u044b \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f \u0441 \u043e\u0434\u0438\u043d\u0430\u043a\u043e\u0432\u043e\u0439 \u0432\u0435\u0440\u043e\u044f\u0442\u043d\u043e\u0441\u0442\u044c\u044e. \u0425\u043e\u0447\u0443 \u044d\u0442\u043e \u0432\u044b\u044f\u0441\u043d\u0438\u0442\u044c \u043f\u0440\u0438\u043c\u0435\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043a SHISHUA.<\/li>\n<\/ol>\n<p>  \u041e\u0434\u043d\u043e\u0439 \u0438\u0437 \u043f\u0440\u043e\u0431\u043b\u0435\u043c, \u0441\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u044e\u0449\u0438\u0445 \u0440\u0430\u0437\u0432\u0438\u0442\u0438\u0435 \u0413\u041f\u0421\u0427 \u0438 \u043a\u0440\u0438\u043f\u0442\u043e\u0433\u0440\u0430\u0444\u0438\u0438 \u0432 \u0446\u0435\u043b\u043e\u043c, \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0438\u0435 \u0431\u043e\u043b\u0435\u0435 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0433\u043e \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u044f \u043e\u0431\u0449\u0435\u0433\u043e \u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f. \u041c\u043d\u0435 \u043d\u0443\u0436\u0435\u043d \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043c\u043e\u0436\u0435\u0442 \u0441\u0440\u0430\u0437\u0443 \u0432\u044b\u0434\u0430\u0442\u044c \u043c\u043d\u0435 \u0442\u043e\u0447\u043d\u044b\u0439 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0438\u0437\u043c\u0435\u0440\u0435\u043d\u0438\u0439, \u0447\u0442\u043e\u0431\u044b \u044f \u043c\u043e\u0433 \u043d\u0430 \u043b\u0435\u0442\u0443 \u0441\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u0442\u044c \u0440\u0430\u0437\u043d\u044b\u0435 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u044b.<\/p>\n<p>  PractRand \u0432\u0435\u043b\u0438\u043a\u043e\u043b\u0435\u043f\u0435\u043d \u043f\u043e \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u044e \u0441 \u0442\u0435\u043c, \u0447\u0442\u043e \u0431\u044b\u043b\u043e \u0434\u043e \u043d\u0435\u0433\u043e, \u043e\u0434\u043d\u0430\u043a\u043e:<\/p>\n<ul>\n<li>\u041e\u043d \u043d\u0435 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043e\u0446\u0435\u043d\u0438\u0432\u0430\u0442\u044c \u0432\u044b\u0441\u043e\u043a\u043e\u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0435 \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440\u044b, \u0434\u0435\u043b\u0430\u044f \u043d\u0435\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u044b\u043c \u0438\u0445 \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u0435 \u0434\u0440\u0443\u0433 \u0441 \u0434\u0440\u0443\u0433\u043e\u043c. \u041d\u0430\u043c \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0433\u043e\u0432\u043e\u0440\u0438\u0442\u044c: \u00ab\u043d\u0443, \u043f\u043e\u0441\u043b\u0435 32 \u0442\u0435\u0431\u0438\u0431\u0430\u0439\u0442\u043e\u0432 \u0443 \u043d\u0438\u0445 \u043d\u0435\u0442 \u043d\u0438\u043a\u0430\u043a\u0438\u0445 \u0430\u043d\u043e\u043c\u0430\u043b\u0438\u0439&#8230;\u00bb<\/li>\n<li>\u041d\u0430 \u0435\u0433\u043e \u043f\u0440\u043e\u0433\u043e\u043d \u0443\u0445\u043e\u0434\u044f\u0442 \u043d\u0435\u0434\u0435\u043b\u0438&#8230;<\/li>\n<\/ul>\n<p>  \u041d\u0430\u0434\u0435\u044e\u0441\u044c, \u0441\u043a\u043e\u0440\u043e \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u044f \u0441\u0438\u043b\u044c\u043d\u043e \u0443\u043b\u0443\u0447\u0448\u0438\u0442\u0441\u044f.<\/div>\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:\/\/habr.com\/ru\/company\/mailru\/blog\/498352\/\"> https:\/\/habr.com\/ru\/company\/mailru\/blog\/498352\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"\n<div class=\"post__text post__text-html post__text_v1\" id=\"post-content-body\" data-io-article-url=\"https:\/\/habr.com\/ru\/company\/mailru\/blog\/498352\/\">\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/5p\/ex\/bl\/5pexblhd_seedlgm8iidkfktef4.jpeg\" width=\"400\"><\/div>\n<p>  \u041f\u043e\u043b\u0433\u043e\u0434\u0430 \u043d\u0430\u0437\u0430\u0434 \u043c\u043d\u0435 \u0437\u0430\u0445\u043e\u0442\u0435\u043b\u043e\u0441\u044c \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u043b\u0443\u0447\u0448\u0438\u0439 \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440 \u043f\u0441\u0435\u0432\u0434\u043e\u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u0445 \u0447\u0438\u0441\u0435\u043b (\u0413\u041f\u0421\u0427) \u0441 \u043a\u0430\u043a\u043e\u0439-\u043d\u0438\u0431\u0443\u0434\u044c \u043d\u0435\u043e\u0431\u044b\u0447\u043d\u043e\u0439 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u043e\u0439. \u042f \u0434\u0443\u043c\u0430\u043b, \u0447\u0442\u043e \u043d\u0430\u0447\u0430\u043b\u043e \u0431\u0443\u0434\u0435\u0442 \u043b\u0451\u0433\u043a\u0438\u043c, \u0430 \u043f\u043e \u043c\u0435\u0440\u0435 \u0440\u0430\u0431\u043e\u0442\u044b \u0437\u0430\u0434\u0430\u0447\u0430 \u0441\u0442\u0430\u043d\u0435\u0442 \u043c\u0435\u0434\u043b\u0435\u043d\u043d\u043e \u0443\u0441\u043b\u043e\u0436\u043d\u044f\u0442\u044c\u0441\u044f. \u0418 \u0434\u0443\u043c\u0430\u043b, \u0441\u043c\u043e\u0433\u0443 \u043b\u0438 \u044f \u043d\u0430\u0443\u0447\u0438\u0442\u044c\u0441\u044f \u0432\u0441\u0435\u043c\u0443 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0431\u044b\u0441\u0442\u0440\u043e, \u0447\u0442\u043e\u0431\u044b \u0441\u043f\u0440\u0430\u0432\u0438\u0442\u044c\u0441\u044f \u0441 \u0441\u0430\u043c\u044b\u043c \u0441\u043b\u043e\u0436\u043d\u044b\u043c.<\/p>\n<p>  \u041a \u043c\u043e\u0435\u043c\u0443 \u0443\u0434\u0438\u0432\u043b\u0435\u043d\u0438\u044e, \u0441\u043b\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0432\u043e\u0437\u0440\u0430\u0441\u0442\u0430\u043b\u0430 \u043d\u0435 \u043b\u0438\u043d\u0435\u0439\u043d\u043e. \u041f\u043e\u0431\u0430\u0439\u0442\u043e\u0432\u043e\u0435 \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u043f\u043e \u043a\u0440\u0438\u0442\u0435\u0440\u0438\u044e \u0445\u0438-\u043a\u0432\u0430\u0434\u0440\u0430\u0442 \u043e\u043a\u0430\u0437\u0430\u043b\u043e\u0441\u044c \u043e\u0447\u0435\u043d\u044c \u0442\u0440\u0443\u0434\u043d\u044b\u043c! \u041f\u043e\u0437\u0434\u043d\u0435\u0435 \u0441\u0442\u043e\u043b\u044c \u0436\u0435 \u0442\u0440\u0443\u0434\u043d\u043e \u0431\u044b\u043b\u043e \u043f\u0440\u043e\u0439\u0442\u0438 \u0442\u0435\u0441\u0442\u044b diehard. \u042f <a href=\"https:\/\/mobile.twitter.com\/espadrine\/status\/1184542865969614849\">\u043e\u043f\u0443\u0431\u043b\u0438\u043a\u043e\u0432\u0430\u043b \u0442\u0435\u043a\u0443\u0449\u0438\u0435 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b<\/a>, \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u043d\u044f\u0442\u044c, \u043a\u0430\u043a\u0438\u0435 \u0435\u0449\u0451 \u0442\u0440\u0443\u0434\u043d\u043e\u0441\u0442\u0438 \u043c\u0435\u043d\u044f \u043e\u0436\u0438\u0434\u0430\u044e\u0442. \u041e\u0434\u043d\u0430\u043a\u043e <a href=\"https:\/\/mobile.twitter.com\/espadrine\/status\/1184883565634424832\">\u0442\u0435\u0441\u0442 PractRand \u0432 \u0442\u043e\u0442 \u0440\u0430\u0437 \u043f\u0440\u043e\u0439\u0442\u0438 \u043d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c<\/a>.<\/p>\n<p>  \u0417\u0430\u0442\u0435\u043c \u0431\u044b\u043b\u043e \u043e\u0447\u0435\u043d\u044c \u0442\u0440\u0443\u0434\u043d\u043e<a href=\"https:\/\/mobile.twitter.com\/espadrine\/status\/1186358084425400320\"> \u043f\u0440\u043e\u0445\u043e\u0436\u0434\u0435\u043d\u0438\u0435 \u0442\u0435\u0441\u0442\u0430 BigCrush<\/a>.<\/p>\n<p>  \u0417\u0430\u0442\u0435\u043c \u0431\u044b\u043b\u043e \u043e\u0447\u0435\u043d\u044c \u0442\u0440\u0443\u0434\u043d\u043e \u043f\u0435\u0440\u0435\u0434\u0430\u0432\u0430\u0442\u044c 32 \u0442\u0435\u0431\u0438\u0431\u0430\u0439\u0442\u0430 \u0434\u0430\u043d\u043d\u044b\u0445 \u043f\u0440\u0438 \u043f\u0440\u043e\u0445\u043e\u0436\u0434\u0435\u043d\u0438\u0438 PractRand. \u0421\u043a\u043e\u0440\u043e\u0441\u0442\u044c \u0441\u0442\u0430\u043b\u0430 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u043e\u0439. \u041c\u0430\u043b\u043e \u0431\u044b\u043b\u043e \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044e, \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u044e\u0449\u0435\u0439 \u0434\u0435\u0441\u044f\u0442\u044c \u043c\u0435\u0433\u0430\u0431\u0430\u0439\u0442\u043e\u0432 \u0432 \u0441\u0435\u043a\u0443\u043d\u0434\u0443, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u043f\u0440\u043e\u0445\u043e\u0436\u0434\u0435\u043d\u0438\u0435 PractRand \u0437\u0430\u043d\u044f\u043b\u043e \u0431\u044b \u043c\u0435\u0441\u044f\u0446. \u041d\u043e \u0434\u043e\u043b\u0436\u0435\u043d \u043f\u0440\u0438\u0437\u043d\u0430\u0442\u044c\u0441\u044f, \u0447\u0442\u043e <a href=\"https:\/\/github.com\/espadrine\/combit\">\u043f\u0440\u043e\u0439\u0442\u0438 \u044d\u0442\u043e\u0442 \u0442\u0435\u0441\u0442 \u0441\u043e \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c\u044e \u0433\u0438\u0433\u0430\u0431\u0430\u0439\u0442 \u0432 \u0441\u0435\u043a\u0443\u043d\u0434\u0443<\/a> \u0431\u044b\u043b\u043e \u043e\u0447\u0435\u043d\u044c \u0442\u0440\u0443\u0434\u043d\u043e.  <\/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-302270","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/302270","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=302270"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/302270\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=302270"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=302270"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=302270"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}