Una breve mirada a la PDP-11, la minicomputadora más influyente de todos los tiempos
La historia de la tecnología informática se puede dividir aproximadamente en tres eras: la era de los mainframes, las minicomputadoras y las microcomputadoras. Las minicomputadoras se convirtieron en un vínculo importante entre los primeros mainframes y las omnipresentes microcomputadoras de la actualidad. Esta es la historia de la PDP-11, la minicomputadora más influyente y exitosa.
Hubo un tiempo en que las minicomputadoras se usaban en una variedad de aplicaciones. Sirvieron como controladores de comunicaciones, controladores de instrumentos, preprocesadores de sistemas grandes, calculadoras de escritorio y procesadores de adquisición de datos en tiempo real. Pero también sentaron las bases para avances significativos en la arquitectura de hardware e hicieron importantes contribuciones a los sistemas operativos modernos, los lenguajes de programación y la computación interactiva tal como los conocemos hoy.
En el mundo actual de la informática, en el que cada computadora ejecuta alguna versión de Windows, Mac o Linux, es difícil distinguir las CPU que subyacen en el sistema operativo. Pero hubo un momento en que las diferencias en la arquitectura de la CPU importaban mucho. El PDP-11 ayuda a explicar por qué esto es así.
El PDP-11 se introdujo en 1970 cuando la mayor parte de la informática se realizaba en costosos mainframes de GE, CDC e IBM a los que pocos tenían acceso. No había computadoras portátiles, ni computadoras de escritorio, ni computadoras personales. Solo unas pocas empresas estaban involucradas en la programación, principalmente en lenguaje ensamblador, COBOL y FORTRAN. La entrada se realizó con tarjetas perforadas y los programas se iniciaron mediante ejecuciones por lotes no interactivas.
Aunque el primer PDP-11 fue modesto, sentó las bases para la invasión de las minicomputadoras que hizo que las computadoras de próxima generación fueran más asequibles, esencialmente revolucionando la informática. El PDP-11 ayudó a crear el sistema operativo UNIX y el lenguaje de programación C. También influiría en gran medida en la próxima generación de arquitecturas informáticas. En los 22 años de vida de la PDP-11, una cantidad de tiempo sin precedentes según los estándares actuales, se han vendido más de 600 000 PDP-11.
Los primeros PDP-11 no eran tan impresionantes. El primer 11/20 PDP-11 costó $20,000 pero solo vino con 4 KB de RAM. Usaba cinta de papel como almacenamiento y tenía una consola de teletipo ASR-33 que imprimía 10 caracteres por segundo. Pero también tenía una asombrosa arquitectura ortogonal de 16 bits, ocho registros, 65 KB de espacio de direcciones, un tiempo de ciclo de 1,25 MHz y un bus de hardware UNIBUS flexible que admitía futuros periféricos de hardware. Fue una combinación ganadora para su creador, Digital Equipment Corporation.
La aplicación inicial del PDP-11 incluía control de hardware en tiempo real, automatización de fábrica y procesamiento de datos. A medida que el PDP-11 ganó reputación por su flexibilidad, programabilidad y asequibilidad, encontró uso en los sistemas de control de semáforos, el sistema de defensa antimisiles de Nike, el control del tráfico aéreo, las plantas de energía nuclear, los sistemas de entrenamiento de pilotos de la Armada y las telecomunicaciones. También fue pionero en el procesamiento de textos y datos que ahora damos por sentado.
Y la influencia del PDP-11 es más evidente en la programación del montaje del dispositivo.
Conceptos básicos de programación de ensamblaje
Antes de la invención de lenguajes de alto nivel como Python, Java y Fortran, la programación se hacía en lenguaje ensamblador. La programación en lenguaje ensamblador se puede realizar con muy poca memoria RAM y espacio en disco, ideal para los primeros días de la informática.
El lenguaje ensamblador es un formato intermedio de bajo nivel que se convierte a lenguaje de máquina, que luego puede ejecutarse directamente en la computadora. Es de bajo nivel porque controlas directamente aspectos de la arquitectura de la computadora. En pocas palabras, la programación en lenguaje ensamblador mueve sus datos byte a byte a través de registros de hardware y memoria. Lo que diferenció a la programación PDP-11 fue el elegante diseño de la minicomputadora. Cada instrucción tenía su lugar, y cada instrucción tenía un significado.
El espacio de direcciones de 16 bits significaba que cada registro podía direccionar directamente hasta 64 KB de RAM, con los 4 KB superiores reservados para entrada y salida mapeada en memoria. Los PDP-11 podrían abordar un total de 128 KB de RAM usando segmentos de registro (más sobre eso en un momento). Entonces, aunque los sistemas PDP-11 solo se enviaron con 4 KB de RAM, aún eran productivos debido al uso inteligente de las primeras técnicas de programación.
programa de montaje
La forma más fácil de entender este concepto es con un programa de lenguaje ensamblador PDP-11 simple, que veremos a continuación. Las palabras clave que comienzan con «.» son directivas para el ensamblador. .globl
exporta la etiqueta como un símbolo al enlazador para que la use el sistema operativo. .text
define el inicio de un segmento de código. .data
define el inicio de un único segmento de datos. Las palabras clave que terminan en “:” son etiquetas. La programación en lenguaje ensamblador usa etiquetas para direccionar simbólicamente la memoria. (Nota: con la llegada de la jerga y la codificación PDP-11, cualquier texto después de / es un comentario).
Palabras clave | Traducción |
.globl_main | Exporte la etiqueta _main como punto de entrada para que la use el sistema operativo. |
.texto | Comienzo del segmento de instrucción que contiene código de solo lectura |
_principal: VALOR DEL MOTOR1, R0 | Copie el valor de la palabra de la ubicación de memoria VAL1 al registro 0. |
AGREGAR $ 10, R0 | Suma 10 al valor en el registro 0 |
MOTOR R0 VALOR1 | Copie el valor del registro 0 a la ubicación de memoria VAL1. |
_.datos | El comienzo de un segmento de datos que contiene datos de lectura/escritura. |
VAL1:. palabra $100 | Reserve 2 bytes de memoria para mantener Val1 inicializado a 100. |
Aunque puede usar valores numéricos para las direcciones de memoria, el uso de etiquetas en lugar de direcciones codificadas simplifica la programación y le permite mover el código en la memoria. Esto le da al sistema operativo la flexibilidad para ejecutar código, haciendo que cada programa sea rápido y eficiente.
directiva del ensamblador. data coloca los datos en un segmento de memoria que se puede leer y escribir. El segmento de memoria de código es de solo lectura para evitar que los errores de programación dañen el programa y provoquen fallas. Esta separación de instrucciones de datos en el PDP-11 se denomina «separación de instrucciones y datos». Además de mejorar la estabilidad, esta función también duplica el espacio de direcciones, proporcionando 64 KB para código y 64 KB para datos, lo que se consideró una innovación en ese momento. En consecuencia, las microcomputadoras Intel X86 más tarde hicieron un uso extensivo de los segmentos.
Deja una respuesta