Меню

Разработчик Microsoft перенес векторную базу данных, закодированную на языке ABAP SAP, на ZX Spectrum

Мощный процессор Z80 выполнил код с поразительной скоростью, доказав, что ретро-технологии во многом верны.

Старший инженер-программист Microsoft по имени Алиса Виноградова перенесла базу данных, написанную ею на языке ABAP компании SAP, на почтенный процессор Z80, на котором работает Sinclair ZX Spectrum, и была поражена результатами.

Виноградова назвала свою базу данных ZVDB-Z80 и описывает ее как «векторную базу данных, полностью разработанную на ABAP, призванную предложить независимое решение без опоры на внешние векторные базы данных».

ABAP, также известный как Advanced Business Application Programming, — это язык программирования ERP-гиганта SAP, созданный для написания приложений для своей платформы.

Естественно, код есть на GitHub, где инженер объяснила, что «В прошлом месяце я чистила старый код и заново открыл ZVDB».

Когда Виноградова пересмотрела свое отношение к ZVDB, у нее «было осознание, которое заставило меня улыбнуться».

«ABAP (родился в 1983 году) и Z80 (родился в 1976 году) — практически современники», — написала она. «Они выросли в одну и ту же эпоху вычислений — когда память была драгоценна, циклы считались, а каждый байт имел значение».

Виноградова ценит приемы, которые разработчикам приходится использовать для создания хорошего программного обеспечения, несмотря на эти ограничения.

«Когда я создавала ZVDB, я намеренно применила каждую известную мне оптимизацию Z80», — написала она. «Почему? Потому что эти «старые» методы неподвластны времени — они просто делают современный код невероятно быстрым».

Поэтому она снова использовала их при переписывании ZVDB на языке ассемблера Z80 и утверждает, что при запуске на старом процессоре ее код работал «всего в 3–6 раз медленнее, несмотря на разницу в тактовой частоте в 857 раз».

Виноградова не считает это большим сюрпризом. «Эти оптимизации были рождены для Z80. Они просто оказались универсально оптимальными», — написала она, прежде чем объяснить, почему она считает, что Z80 «по-прежнему выигрывает в 2025 году».

Каждый урок Z80, который я применила к ABAP, остается актуальным на современном оборудовании:

  1. Таблицы поиска всегда быстрее вычислений
    • Z80: Экономит эти драгоценные циклы
    • Современный ЦП: упрощенные схемы доступа к кэшу
  2. Последовательный доступ к памяти — это главное
    • Z80: Один цикл вместо четырех для произвольного доступа
    • HANA: Колоночное хранилище любит последовательные шаблоны
  3. Битовые операции универсальны
    • Z80: Собственные инструкции ЦП, встроенные инструкции для процессора
    • Современный ЦП: SIMD делает то же самое, только быстрее
  4. Предварительные вычисления превосходят математические вычисления во время выполнения
    • Z80: Не могу позволить себе выполнять вычисления
    • Современные системы: зачем вычислять то, что можно запомнить?

«Те годы со сборкой Z80 были не просто ностальгией — это были тренировки, обучение», — добавила она. «Тогда каждый цикл имел значение, и знаете что? Каждый цикл имеет значение и сейчас. Масштаб изменился. Принципы — нет».

«Когда я перенесу это на HANA AMDP, это будет еще быстрее. Потому что AMDP использует мой алгоритм, оптимизированный для Z80, и распараллеливает его. «Но основная идея — поиск быстрее вычислений, последовательный доступ быстрее произвольного — появилась ещё в 1976 году».

Её страница на GitHub, конечно же, содержит код, о котором здесь говорится, а также инструкции по запуску на реальном Sinclair ZX Spectrum, онлайн-эмуляторах JSSpeccy или Qaop/JS, либо на локальных эмуляторах Fuse, ZEsarUX, Speccy или Retro Virtual Machine.

Статья переведена с английского языка на русский язык при помощи автопереводчика.

Источник: The Register.

Больше новостей читайте в телеграм-канале SAPLAND: Новости экосистемы.