Обновить
4
@Ilya_JOATMONread⁠-⁠only

Пользователь

Отправить сообщение

Процессор на коленке ч.1

Уровень сложностиСредний
Время на прочтение11 мин
Охват и читатели23K


Предыстория


Захотелось мне как-то перевести управление станком на ПЛИС, а для этого понадобилось ядро процессора. Поиск на opencores не особо помог, x86 лицензированный, ARM лицензированный, NIOS… ну, вы поняли. Если выдумывать свою систему команд, может получиться криво, и главное, где брать компилятор. В общем, всё было сложно, так что на время идею пришлось отложить.
С недавних пор ситуация изменилась, архитектура RISC-V пошла в массы.

Читать дальше →

Процессор на коленке ч.2

Уровень сложностиСредний
Время на прочтение10 мин
Охват и читатели15K

В прошлой части собрали минимальное ядро, теперь хотелось бы его запустить. Для запуска нужен исполняемый файл, потом его надо загрузить в память процессора и запустить симуляцию. Ещё неплохо, чтобы в процессе работы можно было выводить что-то в консоль для отладки.
Читать дальше →

Процессор на коленке ч.5. Кэш

Уровень сложностиСредний
Время на прочтение14 мин
Охват и читатели14K


В прошлой статье приделали конвейер и теперь можно запускать программы, расположенные в локальной памяти процессора. Но с одной лишь локальной памятью далеко не уедешь, у маленького ПЛИСа её жалких 50 кБ, поэтому надо делать небольшое локальное хранилище, синхронизируемое с внешней памятью, то есть кэш. Есть отладочная плата с SD RAM, в идеальном случае хорошо бы добавить её поддержку, но для начала внешнюю память будет изображать внутренняя. Дополнительным эффектом от добавления кэша оказалось увеличение доступной памяти, потому что для чтения параллельно с двух адресов создавалось два набора памяти, а теперь чтение за один такт делается только с одного адреса.
Ветка реализации проекта лежит на гитхабе.

Читать дальше →

Процессор на коленке ч.6. Классический 5-этапный конвейер

Уровень сложностиСредний
Время на прочтение9 мин
Охват и читатели15K

Готовим процессор к добавлению суперскалярности - переделываем 3-х этапный конвейер RISC-V в 5-этапный и попутно измеряем производительность.

Читать далее

Как правильно вызывать CUDA

Время на прочтение16 мин
Охват и читатели21K

Вероятно, вам уже попадались подобные руководства по CUDA: хрестоматийный пример «Hello World», в котором перемешан код для ЦП и графического процессора. Всё это сложено в один гетерогенный файл с исходниками на CUDA C++, а для запуска ядра применяется синтаксис NVCC с тройными угловыми скобками <<<>>>, который уже стал культовым:

Читать далее

Процессор на коленке ч.4. Конвейер для ПЛИС

Уровень сложностиСредний
Время на прочтение23 мин
Охват и читатели6.9K

В прошлой части добавили расширение M (умножение и деление), теперь будем собирать под ПЛИС Cyclone IV. При попытке собрать проект Quartus говорит, что с асинхронной памятью работать не будет, поэтому заменяем её на синхронную, и это сразу приводит к серьёзным последствиям.

Читать далее

Процессор на коленке ч.3. Алгоритм быстрого деления

Уровень сложностиСредний
Время на прочтение33 мин
Охват и читатели15K


В прошлой части запустили тестирование производительности для нашего процессора, теперь будем его ускорять с помощью модуля аппаратного умножения и деления. Не хотелось повышать информационную энтропию, выкладывая очередную статью про деление столбиком, поэтому в результате двух недель исследований удалось собрать нечто красивое и потенциально очень быстрое. Предыстория в статье может быть сложной, но сам алгоритм прост.
Читать дальше →

GUI для исследования внутренностей PDF

Время на прочтение3 мин
Охват и читатели16K


Как известно, PDF-файлы часто используются как контейнеры для вирусов и эксплоитов. Они применяются в фишинговых кампаниях и социальной инженерии, когда жертве присылают для просмотра «безобидный документ» в формате PDF, а тот запускает на исполнение вредоносный код через незакрытую уязвимость в браузере или PDF-ридере.

Перед открытием документа всегда желательно посмотреть, что находится внутри. Для этих целей существуют парсеры, которые разбирают PDF. Например, Interactive PDF Analysis (IPA, на скриншоте вверху) и другие.

Даже если перед нами чистый PDF, иногда нужно изучить содержимое и извлечь полезные ресурсы в нетронутом виде — например, оригинальные изображения в JPG.
Читать дальше →

Cекретный ингредиент для реверс-инжиниринга: как работает наш собственный опенсорс-плагин для IDA

Уровень сложностиСредний
Время на прочтение10 мин
Охват и читатели8.6K
Привет, Хабр! Меня зовут Георгий Кучерин, я — Security Researcher в Глобальном центре исследования и анализа угроз (GReAT) «Лаборатории Касперского», где мы занимаемся изучением APT-атак, кампаний кибершпионажа и тенденций в международной киберпреступности. Да-да, тот самый GReAT, который раскрыл кампанию «Операция Триангуляция» и множество других сложных атак :)



В нашем арсенале есть собственный плагин hrtng для IDA Pro (известная утилита для реверс-инжиниринга), который упрощает реверсинг вредоносного ПО. Недавно мы опубликовали код этого плагина в открытом доступе под лицензией GPLv3 — и хотим наглядно показать, как именно он может облегчить реверсеру жизнь. В этой статье мы проанализируем с помощью hrtng образец известного трояна FinSpy, а в процессе анализа дадим немного рекомендаций по работе с IDA в целом.
Читать дальше →

Метод «Безумного Макса» для тренировки проектировщиков кастомных вычисляющих структур

Время на прочтение6 мин
Охват и читатели4.1K

Когда студент устраивается на работу в электронную компанию, очень здорово, если он уже умеет строить одну и ту же электронную схему разными способами, в зависимости от требований пропускной способности, максимальной тактовой частоты, размера и энергопотребления.

Как натренировать такое умение? Для новых домашних работ в программе Школы Синтеза Цифровых Схем мы решили разодрать на блоки реальный процессор и дать студентам задачу собирать разные специализированные вычислительные устройства из этих блоков, примерно как герои фильма "Безумный Макс: Дорога ярости" собирали свои боевые драндулеты из частей реальных автомобилей.

В качестве первой жертвы мы выбрали ...

Айсберг софта для чтения и слушания на японском с первых дней обучения

Уровень сложностиПростой
Время на прочтение16 мин
Охват и читатели16K

По каким-то причинам (sic!), японский язык хочет выучить ужасающее количество программистов. Реально, мой любимый японский подкастер Тэппей говорит, что у него девять из десяти учеников что‑нибудь кодят. Поэтому у нас нет недостатка в отличном софте. Буду рассказывать про кучу инструментов, позволяющих погрузиться в закорючки и взаимодействовать с нативным контентом с первых дней. Японофилы узнают что‑нибудь, о чем они еще не слышали, а если вы учите другой язык — возможно захотите сделать что-то похожее для него.

Читать далее

Нейросетевой апскейлинг дома: вторая молодость для классических мультфильмов

Уровень сложностиСредний
Время на прочтение11 мин
Охват и читатели18K


В мире цифрового контента существует множество старых видеозаписей, которые заслуживают второй жизни. Будь то любимый мультфильм с потрескавшейся VHS-кассеты или редкий аниме-сериал с DVD, качество которого оставляет желать лучшего, у каждого есть свои «цифровые раритеты», которые хочется сохранить и улучшить.

С помощью нейросетей можно это осуществить. Сначала мы рассмотрим наш инструментарий, а затем сразу перейдём к кейсам использования. Каждый пример будет сопровождаться сравнениями, видео и скриншотами, чтобы показать реальный процесс и результат улучшения качества. Причём сделать эти шаги может каждый — бесплатно и без глубоких знаний в области нейронных сетей. Однако, как и любая обработка оригинального материала, этот подход может вызывать разные мнения.

Внимание: все видео в статье загружены на ютуб.
Читать дальше →

Дорожная карта тестирования безопасности в играх: Поиск уязвимостей в видеоиграх

Уровень сложностиСредний
Время на прочтение5 мин
Охват и читатели1.6K

В этом руководстве я расскажу, как я создаю инструменты для поиска уязвимостей в видеоиграх для программ вознаграждений за баги. В частности, я сосредоточусь на моих исследованиях игры Sword of Convallaria.

Весь исходный код доступен на GitHub.

Детали игры

Sword of Convallaria доступна на платформках PC и мобильных устройствах, и на данный момент имеет около 2,000 активных пользователей одновременно на Steam (источник: SteamDB). Игра монетизируется через микротранзакции с системой "плати, чтобы победить" и включает PvP-режим. Учитывая ее размер, разработчики должны беспокоиться о возможных уязвимостях, однако у них нет формальной программы вознаграждений за баги.

Игра построена на Unity и использует Lua для большей части игровой логики и обработки. Сетевой протокол использует HTTPS для процесса аутентификации/входа и UDP-пакеты с сообщениями protobuf для общения внутри игры.

Читать далее

Тяжелый H[header]

Уровень сложностиПростой
Время на прочтение16 мин
Охват и читатели18K

Всегда хотел написать о чем-нибудь легком и воздушном, как пишет например @antoshkkaпро userver или о том, как легко и непринужденно обернуть какую-нибудь хрень алгоритм в десяток шаблонов, полить это все std::optional и попивая кофе ждать, когда компилятор соизволит это всё пережевать. Но судьба (а не тимлид, нет, как вы могли такое подумать) постоянно подкидывает задачки, где суровые объятия отладчика не отпускают мечтательную душу программера до поздней ночи, да вечная борьба с компилятором рушит все попытки обернуть результат хрени алгоритма в другой десяток шаблонов. На этот раз судьба ясным июньским утром подкинула забавную задачу - время полной сборки бандла подбиралось к двум часам, да собирать бандлы нынче удовольствие не из быстрых, но посмотрев статистику стало понятно, что ~55% процентов времени тратится на сборку ресурсов: текстур, моделей, локализацию, и тд. Там есть что чинить, но это царство билд-инженеров. Еще 30% или сорок минут тратится на тесты, теперь все что мы насобирали и переконвертили надо проверить, загрузить, пострелять, побегать, монстров поубивать, BT-шки погонять, с этим пусть QA разбираются. А вот оставшиеся 15% или около 15 минут мы занимались настоящей работой, собирали сердце проекта - бинарь. Да норм, у нас всегда так, даже на пустом проекте UE - сказали наши мобильщики и ушли пить кофе на терассу . Но мы же не мобильщики, мы серьезные AAA ребята, у нас свой движок и кастомный пайплайн на билдферме. И потом 15 минут это очень много, даже если у тебя 27к файлов в проекте, айда смотреть куда время потратили.

Убить немного времени

Синтез цифровых схем: что почитать при любом уровне подготовки

Уровень сложностиПростой
Время на прочтение7 мин
Охват и читатели28K

Осенью стартовал новый поток Школы синтеза цифровых схем — нашей бесплатной образовательной программы о современных приемах проектирования цифровых микросхем. От серийных ASIC и микропроцессоров общего назначения до реконфигурируемых FPGA и специализированных вычислителей. По этим и связанным темам выпущено немало профессиональной литературы. Мы попросили преподавателей Школы — Юрия Панчула и Александра Рябова — выбрать книги, которые помогут при обучении в школе и самостоятельном освоении синтеза цифровых схем.

Читать далее

Тестирование целочисленного сумматора с интерфейсами AXI-Stream на SystemVerilog

Уровень сложностиСредний
Время на прочтение15 мин
Охват и читатели5.1K

Сменив недавно работу, перейдя с языка VHDL на язык SystemVerilog и оказавшись в команде, где есть отдельная группа верификаторов, я осознал, что сильно отстал в верификации. На VHDL ранее мной писались лишь простые тесты разработчика, которые показывали, что блок выполняет требуемую функцию и ничего более. Каждый тест писался с нуля и не было повторного использования кода. Решив исправить эту проблему, я погрузился в чтение SystemVerilog for Verification A Guide to Learning the Testbench Language Features за авторством Chris Spear, Greg Tumbush. Прочитав книгу, понял, что нужно написать какой-то тестовый проект, дабы закрепить полученную информацию. Вспомнил, что видел на хабре цикл статей по верификации от @pcbteach, написанный на verilog, и решил написать тест для сумматора с интерфейсами AXI-Stream на SystemVerilog.

Читать далее

Информация

В рейтинге
Не участвует
Зарегистрирован
Активность