Сегодня я хотел бы сказать несколько слов о такой малоизвестной у нас системе (компьютере и ОС) как IBM AS/400. Архитектура AS/400 интересна в первую очередь своей оригинальностью - по сути, она не имеет ничего общего с другими разработками IBM - System/3xx, PC и т.д. Начало AS/400 было положено в конце 70-х годов, когда появилась System/38 (System/36). В чем же основная идея архитектуры AS/400?
В первую очередь это отказ от ориентации на конкретную аппаратную платформу, что роднит эту систему с Java, хотя это сходство поверхностно. В отличие от Java, где основой являлась виртуальная машина - интерпретатор байткода, в AS/400 изначально был принят более эффективный подход - между железкой и программами находится прослойка, представляющая собой транслятор который перед выполнением программы переводит ее из промежуточного представления (SLIC - System Licensed Internal Code) в native код физического процессора (в современных моделях AS/400 это PowerPC, в старых - CISC процессоры). Мне могут возразить, что любая Java VM в наше время содержит JIT компилятор который на лету занимается примерно тем же, что и транслятор в AS/400. На это можно ответить вот что:
При создании Java VM набор инструкций разрабатывался исходя из расчета на интерпретацию. JIT компиляторы появились позднее, когда стало ясно что производительность интерпретатора не удовлетворяет запросам, что понятно - в шитом коде дополнительно на каждую инструкцию VM приходится как минимум ее выборка (эти проблемы можно легко наблюдать на примере языка Forth), не говоря уже о необходимости осуществлять на лету все проверки типа чтения/записи за границами переменных. Кроме того, часть функций которые принято считать высокоуровневыми (некоторые элементы обработки данных) в AS/400 реализованы на уровне SLIC (реализация SLIC по утверждению IBM - 3 млн строк кода, что говорит о его сложности). В Java VM же, виртуальные инструкции носят "элементарный" характер.
Сравнительно недавно IBM заявила о реализации Java на AS/400, подчеркивая эффективность этой реализации. Легко понять почему это так - по-видимому, JIT компилятор Java байткода в этом случае преобразует инструкции Java не в SLIC AS/400, а на прямую в код физического процессора. Таким образом (в теории) производительность Java приложений запускаемых на AS/400 не должна сильно отличаться от производительности "родных" приложений.
Другой интересной стороной архитектуры
AS/400 является одноуровневая память (все
устройства хранения адресуются одинаково,
разницы между диском и ОЗУ нет). При этом адрес
определяется 16-ю байтами.
Разумеется, как у всякой идеи, здесь есть свои
недостатки. Производительность AS/400 на чисто
вычислительных задачах (к которым сейчас
относятся очень и очень многое) проигрывает
чисто аппаратным решениям. В частности, я ни разу
не видел сколько-нибудь внятных оценок
производительности AS/400 по сравнению с другими
системами. В то же время, архитектура позволяет
организовывать многопроцессорные системы - как
SMP так и MPP/кластеры. Применение AS/400 по большей
части ограничено приложениями связанными с
хранением и обработкой данных а также
"коммерческими" расчетами.
Часть того о чем я сказал - результат
анализа весьма отрывочных сведений по
архитектуре AS/400. Фирма IBM открыто не
распространяет никаких данных ни по устройству
системы на низком уровне, ни по SLIC. В этой связи,
мне интересны любые сведения и документация по
этому вопросу.
В 1998 году в России вышла книга - Фрэнк Дж. Солтис
"Основы AS/400", которая является
переводом книги "Inside the AS/400", 2nd edition.
Книга интересна, хотя и представляет собой
жуткую смесь с резкими переходами от описания
битов в заголовках объектов к пространным
рассуждениям о работе подразделения IBM в
Рочестере и архитектуре PowerPC. При этом некоторые
интересные и значимые особенности архитектуры
самой AS/400 тщательно обходятся стороной. Впрочем,
это единственная книга которую я встречал по
этой тематике в бумажном виде.
Полезные ссылки:
http://www.as400.ibm.com - Официальный сайт IBM AS/400
http://www.as400.ibm.com/WHPAPR/64simple.htm - Обоснование преимуществ архитектуры AS/400 при переходе на 64 bit платформы.
http://www.as400.ibm.com/beyondtech/arch_nstar_perf.htm - Общая информация по AS/400 V4R4, на базе PowerPC.
http://www.dremel.net/as400/java_jvm.htm - AS/400 Java VM на V4R2
http://www.ieighty.net/~legacy/as400.html - Краткий обзор AS/400
http://www.isl.net/~dlambert/work/OX_Team.html - Фото разработчиков AS/400
http://www.stins.msk.su/products/ibm/as400.htm - Stins Corp. продающая AS/400 в России.