Открыть сервис

Technology Independent Machine Interface

Technology Independent Machine Interface (TIMI, с англ. — «технологически независимый машинный интерфейс») — это программно-аппаратный интерфейс, используемый в операционной системе IBM i (ранее известной как OS/400) для серверов IBM Power Systems (ранее — AS/400, iSeries, System i). TIMI обеспечивает абстракцию между прикладным программным обеспечением и аппаратной платформой, позволяя программам, написанным для одной версии системы, выполняться на более новых моделях серверов без перекомпиляции или модификации исходного кода, даже при кардинальном изменении архитектуры процессора.

История

Разработка TIMI началась в конце 1980-х годов в рамках проекта IBM по созданию новой компьютерной платформы, которая должна была заменить устаревшие системы System/36 и System/38. Главной целью было обеспечить обратную совместимость приложений на десятилетия вперёд, независимо от смены поколений процессоров.

Первая реализация TIMI была представлена в 1988 году с выходом системы IBM AS/400 на процессоре CISC (Complex Instruction Set Computer) — 48-битном микропроцессоре IBM IMPI (Internal Microprogrammed Interface). В 1995 году IBM перевела платформу AS/400 на 64-битные процессоры PowerPC (RISC-архитектура). Благодаря TIMI все существовавшие на тот момент приложения, написанные для CISC-процессоров, продолжили работать на новой RISC-платформе без изменений, что стало уникальным достижением для индустрии.

В 2008 году IBM объявила о переходе на процессоры Power6, а затем Power7, Power8, Power9 и Power10. Каждый раз TIMI обеспечивал бесшовную миграцию прикладного ПО. В 2020-х годах платформа IBM i продолжает использовать TIMI, что позволяет компаниям эксплуатировать программы, написанные в 1990-х годах, на современных серверах.

Архитектура и принцип работы

TIMI представляет собой промежуточный слой между прикладным программным обеспечением и аппаратным обеспечением (или низкоуровневой микрокодовой прослойкой — Licensed Internal Code, LIC). Он работает на уровне машинного кода, но не является физическим процессором.

Уровни абстракции

  1. Прикладной уровень (Application Layer) — программы, написанные на языках высокого уровня (RPG, COBOL, C, Java, CL — Control Language), компилируются не в машинный код целевого процессора, а в специальный промежуточный код — MI-код (Machine Interface code). Этот код не зависит от архитектуры конкретного процессора.
  2. Уровень TIMI (TIMI Layer) — хранит MI-код в скомпилированном виде в объектной системе (библиотека LIBL, объекты типа PGM, *SRVPGM). При выполнении программы TIMI транслирует MI-код в машинный код текущего процессора.
  3. Аппаратный уровень (Hardware Layer) — физический процессор (PowerPC, Power) выполняет сгенерированный машинный код.

Механизм трансляции

Трансляция MI-кода в машинный код выполняется двумя способами:

  • Интерпретация — в ранних версиях AS/400 (до PowerPC) MI-код интерпретировался микрокодом. Это было медленнее, но обеспечивало максимальную совместимость.
  • Динамическая компиляция (Just-In-Time, JIT) — начиная с RISC-процессоров, TIMI использует динамическую компиляцию: MI-код при первом запуске преобразуется в машинный код и кэшируется. Последующие вызовы выполняются напрямую, без повторной трансляции.

Объектная модель

Ключевая особенность TIMI — работа с объектами, а не с файлами. В IBM i все данные и программы являются объектами, имеющими строго типизированную структуру. TIMI управляет объектами через единый интерфейс, что позволяет:

  • Переносить объекты между системами с разными процессорами без изменений (простое копирование через SAVF или LIB).
  • Обеспечивать целостность данных на уровне системы (объекты не могут быть повреждены из-за несовместимости архитектур).

Преимущества

  • Обратная совместимость — приложения, написанные 30 лет назад, работают на современном оборудовании без перекомпиляции. Это критически важно для предприятий, использующих унаследованные системы (например, банки, страховые компании, розничные сети).
  • Независимость от аппаратных обновлений — переход на новые процессоры не требует переписывания кода. Компании могут обновлять серверы, не останавливая бизнес-процессы.
  • Безопасность — TIMI изолирует прикладной код от прямого доступа к аппаратуре, что снижает риск ошибок и атак на низком уровне.
  • Переносимость — программы, написанные для IBM i, могут быть перенесены на другую систему IBM i с другим процессором простым копированием.

Недостатки и ограничения

  • Привязка к платформе IBM i — TIMI работает только в среде IBM i. Приложения, использующие TIMI, невозможно перенести на другие операционные системы (Windows, Linux, Unix) без полной переработки.
  • Производительность — динамическая компиляция и абстракция добавляют накладные расходы по сравнению с нативным машинным кодом. Однако на практике для большинства бизнес-приложений (управление базами данных, транзакции, отчёты) это незаметно.
  • Сложность разработки — разработчики должны понимать модель TIMI и объектную систему IBM i, что требует специального обучения.

Сравнение с другими технологиями

TIMI концептуально схож с виртуальными машинами (например, Java Virtual Machine, .NET Common Language Runtime), но имеет существенные отличия:

ХарактеристикаTIMI (IBM i)JVM (Java).NET CLR
Целевая платформаТолько IBM i (Power)КроссплатформеннаяWindows (основная), Linux, macOS
Уровень абстракцииМашинный код + объектная системаБайт-кодIL-код
Совместимость с унаследованным ПОПолная (30+ лет)Ограниченная версиями JVMОграниченная версиями .NET
ПроизводительностьВысокая (JIT-компиляция)Средняя (JIT)Высокая (JIT + AOT)
ТипизацияСтрогая, объектнаяСтрогая, объектнаяСтрогая, объектная

TIMI также отличается от эмуляции (например, эмуляция x86 на ARM) тем, что не эмулирует конкретный процессор, а предоставляет единый интерфейс для всех процессоров семейства Power.

Применение

TIMI используется в основном в корпоративном сегменте:

По данным IBM на 2023 год, на платформе IBM i работают тысячи предприятий по всему миру, многие из которых используют программы, написанные в 1990-х годах.

Интересные факты

  • TIMI — одна из первых коммерческих реализаций концепции «виртуальной машины» для бизнес-приложений, появившаяся за несколько лет до JVM (1995) и .NET (2002).
  • В IBM i существует понятие «релиз-независимости»: программы, скомпилированные под одну версию ОС, могут работать под более поздними версиями без изменений, если они не используют устаревшие API.
  • TIMI не поддерживает прямую работу с указателями (pointers) в прикладном коде — все обращения к памяти контролируются системой, что повышает надёжность.

Источники

  • IBM. «IBM i: Technology Independent Machine Interface (TIMI)». IBM Redbooks, 2020.
  • Soltis, F. G. «Inside the AS/400». Duke Press, 1996.
  • IBM. «IBM i 7.4 — Programming: Machine Interface». IBM Knowledge Center, 2023.
  • «AS/400: A Technical Introduction». IBM Systems Journal, Vol. 28, No. 3, 1989.

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →