Рубрика «x86»

Go 1.11: AVX-512 со вкусом Go - 1

В Go 1.11 значительно обновлён ассемблер под платформу x86.

У программистов появится возможность использовать AVX-512 — новейшие инструкции, доступные в процессорах Intel.

Под катом:

  • Самые значительные обновления в cmd/asm (go tool asm)
  • Как был внедрён новый набор инструкций в Go ассемблер
  • Использование новых инструкций и специальных возможностей EVEX префикса
  • Уровень интеграции в тулчейн (рецепты обхождения текущих ограничений)

Читать полностью »

В этой статье я покажу, как написать рудиментарный, нативный x86-64 just-in-time компилятор (JIT) на CPython, используя только встроенные модули.

Код предназначен для UNIX-систем, таких как macOS и Linux, но его должно быть легко транслировать на другие системы, типа Windows. Весь код опубликован на github.com/cslarsen/minijit.

Цель — сгенерировать в рантайме новые версии нижеприведённого ассемблерного кода и выполнить их.

48 b8 ed ef be ad de  movabs $0xdeadbeefed, %rax
00 00 00
48 0f af c7           imul   %rdi,%rax
c3                    retq

В основном, мы будем иметь дело с левой частью кода — байтовой последовательностью 48 b8 ed ... и так далее. Эти 15 байтов в машинном коде составляют функцию x86-64, которая умножает свой аргумент на константу 0xdeadbeefed. На этапе JIT будут созданы функции с разными такими константами. Такая надуманная форма специализации должна продемонстрировать базовую механику JIT-компиляции.
Читать полностью »

В августе этого года компания Lenovo презентовала свою новую линейку продуктов для дата-центров под маркой ThinkSystem, в которую входят серверы, системы хранения данных и коммутаторы. Если говорить про серверную линейку, то всего в рамках новой торговой марки было представлено 14 моделей различных форм-факторов (напольных, стоечных, высокоплотных и блейд-серверов), в том числе и топовая система ThinkSystem SR950, рассчитанная на решение критически важных и ресурсоёмких задач, таких как базы данных, аналитика, ERP, CRM и, конечно же, виртуализация. Получить такую систему для обзора хотя бы на пару дней — большая удача и сегодня я постараюсь рассказать вам об этом интересном сервере как можно подробнее.

Обзор сервера Lenovo ThinkSystem SR950 - 1
Читать полностью »

В предыдущей статье мы рассказали о трендах на рынке аппаратных средств, о трансформации Lenovo и привели примеры реализованных проектов. Предлагаем вашему вниманию вторую часть рассказа об анонсе новых систем и решений Lenovo для дата-центров, где мы подробнее расскажем о платформе Intel Purley, продуктах ThinkSystem и ThinkAgile.

image
Читать полностью »

Особенности миграции c RISC на х86 в России: теперь нас держит старый банковский софт времён DOS и Netware - 1

Подозреваю, что довольно значимая часть читателей поста младше, чем эти операционные системы. Но на них в закромах Родины ещё бегает наш российский (и не только) софт. Да и вы наверняка нет-нет, да видели DOS-приклад на рабочих местах Сбербанка или в больницах.

Есть такие Power-машины, которые предназначены для расчётов больших и тяжёлых штук. На них работает приклад, который не может быть запущен в обычном кластере, как правило — банковские системы и всякие биржевые штуки. Проблема в том, что современные гипервизоры создают виртуальную машину не больше, чем физический сервер, где они стоят. А один физический x86-сервер для таких задач мелковат. Поэтому и используется архитектура x64 (RISC).

Одинаковые по суммарной производительности системы на x86 и x64 отличаются по цене в десятки и сотни раз. Казалось бы, никаких проблем: надо переписать софт так, чтобы он мог работать в сотни потоков и встать в кластер или облако, да?

Ага, сейчас! Программистов, кто это писал, уже нет. Исходники обычно утеряны или же написаны на языках времён мезозоя. Даже документации обычно нет. Поэтому знаете, что мы делаем? Мы заворачиваем гипервизор в гипервизор. О, это отдельная песня. Сейчас расскажу.

Читать полностью »

Быстрое удаление пробелов из строк на процессорах ARM - 1Предположим, что я дал вам относительно длинную строку, а вы хотите удалить из неё все пробелы. В ASCII мы можем определить пробелы как знак пробела (‘ ’) и знаки окончания строки (‘r’ и ‘n’). Меня больше всего интересуют вопросы алгоритма и производительности, так что мы можем упростить задачу и удалить все байты со значениями меньшими либо равными 32.

В предыдущией статье, где я задавал вопрос об удалении пробелов на скорость, лучшим ответом было использование векторизации с помощью 128-битных регистров (SSE4). Оно оказалось в 5-10 раз быстрее подхода в лоб.

Очень удобно, что во всех процессорах имеются 128-битные векторные регистры, также как в процессорах x64. Неужели процессоры ARM могут работать настолько же быстро, как процессоры x64?
Читать полностью »

На днях в мои руки попала любопытная железка. Признаться я давно её ждал со времени анонса на кикстартере. И даже чуть-чуть отчаялся дождаться (т.к. мне слили причины, почему задерживался выпуск, та еще санта-барбара была). А заполучив её, будет преступлением не сделать хоть какой-нибудь обзор.

image

Читать полностью »

Однажды мне пришлось вычислять сумму векторов целых чисел.

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

В реальности стояла задача проверить контрольную сумму заголовков IPv4, которая является суммой обратных кодов (дополнений до единицы) двухбайтных машинных слов. Проще говоря, это означает сложение всех слов и всех битов переноса, которые производятся в процессе. У этой процедуры есть несколько приятных особенностей:

  • её можно эффективно выполнить с помощью процессорной инструкции ADC (к сожалению, эта функция недоступна в C);
  • её можно выполнить на словах любого размера (можете добавить по желанию восьмибайтные значения, только результат следует уменьшить до двух байт и добавить все биты переполнения);
  • она нечувствительна к порядку следования байтов (удивительно, но это так).

Читать полностью »

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

Высокопроизводительные вычисления на архитектуре x86 для эпохи технологий с эффектом присутствия - 1
Читать полностью »

Замена RISC-машины на x86: приглашаю пощупать и потестировать завтра - 1
RISC-архитектура довольно долго была безальтернативной для процессинга банков и другого ответственного хайлоада. Как только начался кризис, всё чаще и чаще стало звучать мнение, что x86 тоже вполне может справиться. Теперь x86 активно щупают и кое-где внедряют. Потому что экономия в разы.

Завтра, в четверг 27 октября, в 18:00 мы будем издеваться над x86-машиной с интригующим названием Huawei Kunlun. Приходите потыкать в него палочкой. Будем нагружать его Oracle и майнингом биткоинов до тех пор, пока он, как бензопила из анекдота, не скажет «Хррр».

Ниже — короткое FAQ про RISC-машины и программа тест-драйва.
Читать полностью »