# IBM System/38

El System/38 fue una minicomputadora y computadora de gama media fabricada y vendida por IBM. El sistema fue anunciado en 1978. El System/38 tiene direccionamiento de 48 bits, que era único en ese momento, y un sistema novedoso de base de datos integrada. Estaba orientado hacia un entorno de sistema multiusuario. En ese momento, el sistema típico manejaba de una docena a varias docenas de terminales. Aunque System/38 no logró desplazar a los sistemas que pretendía reemplazar, su arquitectura sirvió como base para el mucho más exitoso AS/400.

## Historia

El System/38 se presentó el 24 de octubre de 1978 y se entregó en 1980. Desarrollado con el nombre en clave «Pacífico», estuvo disponible comercialmente en agosto de 1979. El sistema ofrecía una serie de características innovadoras y fue diseñado por varios de ingenieros, incluidos Frank Soltis y Glenn Henry. La arquitectura compartía muchas similitudes con el diseño del fallido proyecto IBM Future Systems, incluido el almacenamiento de un solo nivel, el uso de microcódigo para implementar la funcionalidad del sistema operativo y la abstracción de la interfaz de la máquina. Fue desarrollado durante ocho años por el laboratorio de IBM en Rochester, Minnesota. El presidente de la División de Sistemas Generales (GSD) de IBM dijo en ese momento: «El System/38 es el programa más grande que hemos introducido en GSD y es uno de los tres o cuatro programas principales más grandes jamás presentados en IBM».
El sistema fue diseñado como una continuación del System/3, pero no es compatible con esas computadoras. Los predecesores del System/38 incluyen System/3 (1969), System/32 (1975) y System/34 (1977). En 1983, se lanzó el System/36 como una computadora comercial de gama baja para usuarios que consideraban que el System/38 era demasiado caro para sus necesidades. El System/38 fue sucedido por la familia de computadoras de rango medio IBM AS/400 en 1988, que originalmente usaba una arquitectura de procesador similar al System/38, antes de adoptar procesadores basados en PowerPC en 1995.

## Características del hardware

La unidad del sistema IBM 5381 contiene el procesador, la memoria principal, el almacenamiento en disco, una unidad de cargador de disquetes y una consola del sistema con teclado y pantalla. El 5381 estaba disponible en el modelo 100 y el modelo 200.
La unidad del sistema IBM 5382 es físicamente idéntica al 5381, pero con procesadores más potentes, más memoria y más almacenamiento en disco. El 5382 estaba disponible en los modelos 300, 400, 500, 600 y 700.
Los usuarios normalmente interactuaban con el sistema a través de terminales de la serie IBM 5250. En 1984, IBM agregó la capacidad de conectar terminales orientadas a gráficos que antes requerían un mainframe.

### Unidad de procesamiento

El sistema incluye una unidad central de proceso con 512 Kb, 768 Kb, 1024 Kb, 1280 Kb o 1536 Kbytes de almacenamiento principal. El procesador se implementa en veintinueve chips Schottky TTL LSI montados en una placa de circuito de 25x38 cm. Incluye una unidad de gestión de memoria compatible con paginación por demanda, utilizada por el software del sistema para implementar una arquitectura de almacenamiento de un solo nivel.
La CPU System/38 presenta un espacio de direcciones de 48 bits, que se seleccionó como un compromiso entre el direccionamiento de 64 bits, que ciertos ingenieros de IBM querían usar para pruebas futuras, y el direccionamiento de 32 bits, que otros ingenieros querían para ahorrar costos.

### Teclado/pantalla de la consola del sistema

La consola System/38 incorpora un teclado y una pantalla con 16 líneas de 64 caracteres, incompatible con los terminales 5250 conectados localmente, que son 12x80 o 24x80, según modelo. El teclado está disponible para que el operador del sistema ingrese los comandos del lenguaje de control.

### Unidad del cargador de disquetes

La unidad de cargador de disquetes es estándar en todos los modelos.

## Arquitectura del software
### Interfaz de máquina

El System/38 y sus descendientes utilizan una arquitectura de interfaz de máquina para aislar el software de aplicación y la mayor parte del sistema operativo de las dependencias del hardware, incluidos detalles como el tamaño de la dirección y el tamaño del registro.
Los compiladores para System/38 y sus sucesores generan código en un conjunto de instrucciones de alto nivel conocido como «Interfaz de máquina» o MI. El MI es un conjunto de instrucciones virtuales; no es el conjunto de instrucciones de la CPU subyacente. El MI opera sobre objetos en lugar de direcciones de memoria o registros tradicionales.
A diferencia de otras arquitecturas de máquinas virtuales en las que las instrucciones virtuales se interpretan en tiempo de ejecución (consulte máquina de código P), las instrucciones MI nunca se interpretan. Constituyen un paso de compilación intermedio y es traducido al conjunto de instrucciones del procesador como el paso de compilación final. Las instrucciones MI se almacenan dentro del objeto de programa final, además de las instrucciones de máquina ejecutables. Si un programa se mueve de un procesador con un conjunto de instrucciones nativas a un procesador con otro conjunto de instrucciones nativas, las instrucciones MI se volverán a traducir al conjunto de instrucciones nativas de la nueva máquina antes de que el programa se ejecute por primera vez en la nueva computadora.
El TIMI (Interfaz de Máquina Independiente de la Tecnología) del OS/400 es una extensión compatible con versiones anteriores del MI System/38. Como resultado, es posible que un programa desarrollado originalmente en un System/38 se ejecute en el hardware IBM i actual sin tener que volver a compilarlo nunca.

### Microcódigo

IBM se refirió a todo el código por debajo de la capa de interfaz de máquina de la arquitectura System/38 como microcódigo y lo trató como parte del hardware. El término microcódigo se usó para cubrir una amplia gama de código de bajo nivel, que van desde el microcódigo tradicional hasta la funcionalidad típicamente asociada con el núcleo de otros sistemas operativos, así como la implementación de la base de datos integrada. Había dos niveles de microcódigo en System/38:
* Microcódigo Horizontal (HMC), que implementó una arquitectura del conjunto de instrucciones registro-memoria/memoria-memoria conocido como conjunto de instrucciones de microprogramación interna (IMP) o Interfaz Microprogramada Interna (IMPI) usando el microcódigo nativo del procesador del System/38. Ciertas funciones sensibles al rendimiento y de bajo nivel, como la programación de tareas (es decir, procesos) y el paso de mensajes, se implementaron directamente en el microcódigo como parte del Microcódigo Horizontal. El Microcódigo Horizontal residía en el almacén de control; correspondía al microcódigo tradicional.
* Microcódigo Vertical (VMC), que implementó la Interfaz Máquina en términos de la arquitectura IMPI; esto se implementó traduciendo el código MI a código IMPI y ejecutándolo. También implementó la base de datos integrada y otros componentes del sistema operativo que no se pudieron implementar en términos de instrucciones MI. Esto se implementó usando una combinación de PL/MP y ensamblador IMPI. El Microcódigo Vertical residía en la memoria principal.
El uso del término microcódigo se originó en una demanda por antimonopolio de 1969 contra IBM que obligó a IBM a separar el software de sus productos de hardware (es decir, requirió que el software se comprara por separado del hardware). Al tratar el código de bajo nivel del Sistema/38 como parte del hardware, IBM pudo tratar el MI como el conjunto de instrucciones nativas del SYstem/38 y, por lo tanto, tener la libertad de cambiar el IMPI y el microcódigo mientras el hardware subyacente evolucionaba. Los primeros sistemas AS/400 heredaron la estructura de microcódigo System/38, pero el término microcódigo se eliminó, lo que llevó a IBM a cambiar el nombre de las capas al Código Interno Licenciado Vertical y el Código Interno Licenciado Horizontal.

### Control Program Facility

El sistema operativo del System/38 es el Control Program Facility (CPF), el cual no está relacionado con el sistema operativo System Support Program de los System/34 y System/36. Los objetos CPF son archivos, programas, colas de mensajes, perfiles de usuario y bibliotecas. Si bien se considera que CPF es el sistema operativo del System/38, se asienta sobre la capa de interfaz de máquina System/38 y, en consecuencia, gran parte de la funcionalidad del sistema operativo tradicional de la plataforma se implementa en el microcódigo horizontal y vertical.
El System/38 también tiene la distinción de ser la primera computadora de gama media comercialmente disponible de IBM en tener un sistema de administración de base de datos (DBMS) integrado en el sistema operativo.
El lenguaje de control operativo del System/38 se llama CL, por Control Language. Los programas CL, similares en concepto a los script de shell, pueden ser compilados y ejecutados nativamente.
El System/38 fue diseñado con seguridad integrada como parte de su arquitectura. Cada objeto o biblioteca puede tener acceso controlado usuario por usuario. Esto se ha continuado y ampliado en todas las líneas de computadoras AS/400 e iSeries.

## Sistema sucesor

El System/38 fue reemplazado por el AS/400, que también proporcionó compatibilidad con los datos y el software del System/36. Los programas S/38 con 'observabilidad' intacta, es decir, el código fuente incrustado en el binario ejecutable compilado a expensas de tamaños de objetos compilados más grandes, aún pueden ejecutarse en el AS/400 y sistemas sucesores como opción de restauración incorpora una recompilación para los códigos fuente de la versión anterior. Sin embargo, la mayoría de las bibliotecas de objetos de aplicaciones de proveedores propietarios se compilaron sin tal 'observabilidad' y requieren el reemplazo del proveedor original y los gastos consiguientes al actualizar a un AS/400. El precio en ese momento era escalonado, exactamente el mismo software, pero el precio se basaba en el modelo, su velocidad y capacidad del sistema en el que se instalaría.

## Ventas

IBM vendió aproximadamente 20.000 System/38 en los primeros cinco años de disponibilidad, según artículos publicados en las revistas de la industria NEWS 34/38 y Midrange Computing. Aunque anunciado como una minicomputadora, el S/38 era mucho más caro que el más vendido System/34 de IBM y su reemplazo, el System/36. De igual importancia fue la dificultad de actualizar de un System/34 a un S/38. IBM lo reconoció tácitamente al presentar el System/36, un System/34 actualizado, después del lanzamiento del S/38. Aunque el System/38 no se vendió en grandes cantidades, obtuvo un margen de beneficio más alto que los otros sistemas de rango medio de IBM y, por lo tanto, fue una línea de productos rentable para IBM.
En el mercado, IBM se encontró así con tres rangos superpuestos, pero incompatibles. La arquitectura System/34, System/38 y el mainframe System/370. Digital Equipment Corporation, en ese momento uno de los principales competidores de IBM, pudo explotar esto al ofrecer una amplia gama de productos basados en una sola arquitectura, específicamente la arquitectura VAX. La respuesta de IBM a esto, la 9370, fue un fracaso comercial y en su momento el The New York Times escribió que las ventas de System/36 y System/38 estaban «retrasadas».