Публикации автора: SadKo

Прикладной SIMD 003: прежде, чем начать (часть 2)

13 мар 2018

Инициализация DSP-модуля После того, как мы смогли корректно идентифицировать необходимые нам расширения процессора, возникает необходимость в инициализации всего DSP-модуля. Частично мы уже выполнили большую часть работы, написав код идентификации и поиска поддерживаемых расширений процессора. Теперь осталось открыть завесу над тайной, зачем всё это нам нужно. Давайте представим себе ситуацию, когда нам необходимо выполнить какую-то функцию, осуществляющую достаточно нетривиальные и...
Читать далее
Лайков +1 Комментариев0 Просмотров2.475

Прикладной SIMD 003: прежде, чем начать (часть 1)

12 мар 2018

Предисловие В этой статье мы рассмотрим необходимый минимум действий для того, чтобы подготовить почву для работы с SIMD. Для этого необходимо выполнить ряд действий: удобно организовать проект; написать функцию идентификации процессора и поиска расширенных наборов инструкций; реализовать механизм инициализации всего DSP-модуля; написать функции инициализации и восстановления машинного контекста; собрать всё воедино с нужными опциями. Организация проекта Для того, чтобы впоследствии...
Читать далее
Лайков +1 Комментариев0 Просмотров2.276

Прикладной SIMD 002: краткий обзор

16 фев 2018

Предисловие Данная статья ставит целью в первую очередь рассказать хронологию появления тех или иных технологий SIMD в процессорах семейства x86 и одновременно кратко охарактеризовать их. Предыстория: FPU Изначально процессоры 8086 и 8088 (как более дешёвая версия 8086 с восьмибитной шиной данных) имели шестнадцатиразрядные регистры общего назначения и предоставляли возможность вычислений с использованием только целочисленной арифметики. Тем не менее в процессорах был предусмотрен набор...
Читать далее
Лайков +3 Комментариев6 Просмотров4.759

Прикладной SIMD 001: введение (часть 3)

16 фев 2018

Специфика программного кода Учитывая то, что плагины в первую очередь разрабатываются для использования в некоторой DAW (Digital Audio Workstation, цифровая звуковая рабочая станция), фреймы принято делить на отдельные моно-каналы. Благодаря этому значительно упрощается их коммутация, обработка и микширование в DAW (далее будет использоваться более общий и употребимый термин — хост (host)). Иными словами, стереоканал — это просто совокупность из двух моно-каналов. Каждый канал ассоциируется...
Читать далее
Лайков +2 Комментариев1 Просмотров2.627

Прикладной SIMD 001: введение (часть 2)

16 фев 2018

Анатомия сэмпла Разобравшись с частотой дискретизации и минимальной разрядностью сэмпла для нужд профессиональной аудиообработки, необходимо решить ещё один вопрос: каким образом семпл будет храниться в памяти. Как уже ранее упоминалось, для дискретизации по уровню сигнала может быть использована как линейная, так и нелинейная шкала. Нелинейная шкала была введена в цифровой телефонии для того, чтобы расширить динамический диапазон сигнала, но при этом сэкономить на размере сэмпла. На рисунке...
Читать далее
Лайков +1 Комментариев1 Просмотров2.770

Прикладной SIMD 001: введение (часть 1)

16 фев 2018

Предисловие Всем привет! Меня зовут Владимир Садовников, и в последнее время я активно занимаюсь разработкой плагинов, осуществляющих цифровую обработку аудиосигналов (DSP, Digital Signal Processing) на процессорах архитектуры x86 и x86_64. Учитывая то, что такие плагины зачастую осуществляют обработку сигнала в реальном времени, приходится достаточно основательно заниматься вопросом оптимизации вычислительных алгоритмов. При этом, одним из основных приёмов оптимизации является написание...
Читать далее
Лайков +3 Комментариев3 Просмотров3.055

Файлы для статьи Знакомимся с Raspberry Pi

13 янв 2018

Файлы для статьи "Знакомимся с Raspberry Pi"
Читать далее
Лайков +1 Комментариев0 Просмотров1.618

Знакомимся с Raspberry Pi

13 янв 2018

Предисловие Наступал новый 2018 год. Кто-то собрался уезжать праздновать его наступление в тёплые края за границу, а кто-то остался праздновать новый год дома, в серых стенах каменного Санкт-Петербурга. Пожалуй, несомненно то, что новогодние праздники – особенная пора, от которой ждут волшебства, единения с семьёй и друзьями, и, разумеется, подарков, ведь все мы в той или иной степени в душе немного дети. Просто те, что помладше, ждут Деда Мороза, а те, что постарше, идут за подарками в...
Читать далее
Лайков +4 Комментариев4 Просмотров5.608

Начала программирования в защищённом режиме (часть 2)

24 авг 2017

Линейный адрес таблицы указывает, в какой области оперативной памяти находится таблица. Размер таблицы считается в байтах, при чём значение битов 0-15 должно быть на единицу меньше реального размера таблицы. Структура регистра LDTR выглядит следующим образом: [IMG] Рисунок 17. Структура данных регистра LDTR Из всех 10 байт нам доступны лишь младшие два байта (биты 0-15), в которые следует загрузить селектор дескриптора таблицы LDT, находящийся в таблице GDT. В таком случае общий механизм...
Читать далее
Лайков +2 Комментариев1 Просмотров4.039

Начала программирования в защищённом режиме (часть 1)

24 авг 2017

Начала программирования в защищённом режиме. Часть 1 Предисловие Данный цикл статей расчитан на пользователей персональный компьютеров типа IBM PC, которые хотели бы познакомиться с архитектурой процессоров семейства Intel в защищённом режиме и написать свою собственную программу, функционирующую как вполне самостоятельная операционная система. От читателя требуется хотя бы минимальный опыт программирования на языках Assembler и C++, потому что будет предполагаться, что с некоторыми...
Читать далее
Лайков +2 Комментариев8 Просмотров12.441

Кодирование Хаффмана (часть 3)

24 авг 2017

Кодирование Хаффмана. Часть 3 Вступление В прошлой части мы рассмотрели программу на C++, сжимающую данные. Кроме этого, автор соизволил признаться, что написанная программа не является идеалом, и что при определённых наборах частот сжатие будет неверным. Эта статья посвящена распаковке сжатого файла при помощи программы на ассемблере и дерева, построенного программой сжатия. Опять же следует оговориться: программа не рассчитана на распаковку гигантских файлов, но её в любой момент можно...
Читать далее
Лайков +2 Комментариев2 Просмотров4.085

Кодирование Хаффмана (часть 1 и 2)

20 авг 2017

Кодирование Хаффмана. Часть 1. Вступление Здравствуй, дорогой читатель! В данной статье будет рассмотрен один из способов сжатия данных. Этот способ является достаточно широко распространённым и заслуживает определённого внимания. Данный материал рассчитан по объёму на три статьи, первая из которых будет посвящена алгоритму сжатия, вторая - программной реализации алгоритма, а третья ― декомпрессии. Алгоритм сжатия будет написан на языке C++, алгоритм декомпрессии ― на языке Assembler....
Читать далее
Лайков +2 Комментариев1 Просмотров26.852