Articulo de referencia

Arquitectura IBM System/360

Register-Memory Memory-Memory"},"encoding":{"wt":"Variable (2, 4 or 6 bytes long) "},"branching":{"wt":"[[Status register|Condition code]], indexing, counting"},"endianness":{"w...

La arquitectura IBM System/360 es la arquitectura independiente del modelo para toda la línea de computadoras centrales S/360 , incluyendo, entre otros, la arquitectura del conjunto de instrucciones . Los elementos de la arquitectura están documentados en los manuales IBM System/360 Principles of Operation [ 1 ] [ 2 ] y IBM System/360 I/O Interface Channel to Control Unit Original Equipment Manufacturers' Information . [ 3 ]

Características

La arquitectura System/360 ofrece las siguientes características:

  • 16 registros de propósito general de 32 bits
  • 4 registros de punto flotante de 64 bits
  • Registro de estado del procesador (PSW) de 64 bits, que incluye una dirección de instrucción de 24 bits.
  •  Espacio de memoria direccionable por bytes de 24 bits (16 MB)
  • Orden de bytes/palabras big-endian
  • Todos los modelos System/360 (excepto el Modelo 20 , véase más abajo) incluyen un conjunto de instrucciones estándar , que comprende instrucciones lógicas y aritméticas binarias de punto fijo.
    • En algunos modelos, es opcional un conjunto de instrucciones comerciales que incluye instrucciones de aritmética decimal, al igual que un conjunto de instrucciones científicas que añade instrucciones de coma flotante. El conjunto de instrucciones universal incluye todas las anteriores, además de las instrucciones de protección de almacenamiento, y viene de serie en algunos modelos.
    • El modelo 44 proporciona algunas instrucciones únicas para la adquisición de datos y el procesamiento en tiempo real, pero carece de las instrucciones de transferencia de datos entre memorias. Sin embargo, IBM ofreció una función de " Conjunto de Instrucciones Comerciales" que se ejecutaba en memoria de acceso rápido y simulaba las instrucciones faltantes.
    • El modelo 20 ofrece una versión simplificada del conjunto de instrucciones estándar, limitada a ocho registros generales con instrucciones de media palabra (16 bits) únicamente, además del conjunto de instrucciones comerciales e instrucciones únicas para entrada/salida.
    • El modelo 67 incluye algunas instrucciones para manejar direcciones de 32 bits y "traducción dinámica de direcciones", con instrucciones privilegiadas adicionales para proporcionar memoria virtual. [ 7 ]

Memoria

La memoria ( almacenamiento ) en System/360 se direcciona en términos de bytes de 8 bits . Varias instrucciones operan en unidades más grandes llamadas media palabra (2 bytes), palabra completa (4 bytes), doble palabra (8 bytes), palabra cuádruple (16 bytes) y bloque de almacenamiento de 2048 bytes, especificando la dirección más a la izquierda (dirección más baja) de la unidad. Dentro de una media palabra, palabra completa, doble palabra o palabra cuádruple, los bytes de menor numeración son más significativos que los de mayor numeración; esto a veces se denomina big-endian . Muchos usos de estas unidades requieren alinearlas en los límites correspondientes. En este artículo, el término palabra sin calificar se refiere a una palabra completa .

La arquitectura original del System/360 proporcionaba hasta 2²⁴  = 16.777.216 bytes de memoria. El modelo 67 posterior extendió la arquitectura para permitir hasta 2³²  = 4.294.967.296 [ a ] bytes de memoria virtual.

Direccionamiento

System/360 utiliza un direccionamiento truncado similar al de UNIVAC III . [ 8 ] Esto significa que las instrucciones no contienen direcciones completas, sino que especifican un registro base y un desplazamiento positivo desde las direcciones en los registros base. En el caso de System/360, la dirección base está contenida en uno de los 15 [ b ] registros generales. En algunas instrucciones, por ejemplo, los desplazamientos, se realizan los mismos cálculos para cantidades de 32 bits que no son direcciones.

Formatos de datos

La arquitectura S/360 define formatos para caracteres, números enteros, enteros decimales y números de coma flotante hexadecimales. Las instrucciones para caracteres y enteros son obligatorias, pero las instrucciones para decimales y coma flotante forman parte de las funciones de aritmética decimal y de coma flotante .

  • Los caracteres se almacenan como bytes de 8 bits.
  • Los números enteros se almacenan como valores binarios de media palabra o palabra completa en complemento a dos.
  • Los números decimales empaquetados se almacenan como bytes de 8 bits del 1 al 16, que contienen un número impar de dígitos decimales seguidos de un signo de 4 bits. Los signos hexadecimales A, C, E y F son positivos, mientras que los signos hexadecimales B y D son negativos. Los dígitos hexadecimales AF y los signos del 0 al 9 no son válidos, pero las instrucciones PACK y UNPK no verifican su validez.
  • Los números decimales con zona se almacenan como bytes de 8 bits del 1 al 16, cada uno con una zona en los bits 0-3 y un dígito en los bits 4-7. La zona del byte situado más a la derecha se interpreta como un signo.
  • En los modelos más antiguos, los números de coma flotante solo se almacenan como palabras completas o dobles. En los modelos 360/85 [ 9 ] y 360/195 [ 10 ] también se almacenan números de coma flotante de precisión extendida como palabras cuádruples. Para los tres formatos, el bit 0 es el signo y los bits 0-7 son una característica (exponente, con un sesgo de 64). Los bits 8-31 (8-63) son una fracción hexadecimal. Para la precisión extendida, la palabra doble de orden inferior tiene su propio signo y característica, que se ignoran en la entrada y se generan en la salida.

Formatos de instrucciones

Las instrucciones en el S/360 tienen una longitud de dos, cuatro o seis bytes, con el código de operación en el byte 0. Las instrucciones tienen uno de los siguientes formatos:

  • RR (dos bytes). Generalmente, el byte 1 especifica dos números de registro de 4 bits, pero en algunos casos, por ejemplo, SVC, el byte 1 es un único campo inmediato de 8 bits.
  • RS (cuatro bytes). El byte 1 especifica dos números de registro; los bytes 2 y 3 especifican una base y un desplazamiento.
  • RX (cuatro bytes). Los bits 0-3 del byte 1 especifican un número de registro o un modificador; los bits 4-7 del byte 1 especifican el número del registro general que se utilizará como índice; los bytes 2-3 especifican una base y un desplazamiento.
  • SI (cuatro bytes). El byte 1 especifica un campo inmediato; los bytes 2 y 3 especifican una base y un desplazamiento.
  • SS (seis bytes). El byte 1 especifica dos campos de longitud de 4 bits o un campo de longitud de 8 bits; los bytes 2-3 y 4-5 especifican cada uno una base y un desplazamiento. La codificación de los campos de longitud es longitud-1.

Las instrucciones deben estar en un límite de dos bytes en la memoria; por lo tanto, el bit de orden inferior de la dirección de la instrucción siempre es 0.

Palabra de estado del programa (PSW)

La palabra de estado del programa ( PSW) [ 2 ] : 71–72 contiene una variedad de controles para el programa que se está ejecutando actualmente. La PSW de 64 bits describe (entre otras cosas) la dirección de la instrucción que se está ejecutando, el código de condición y las máscaras de interrupción.

La instrucción Load Program Status Word ( ) es una instrucciónLPSW privilegiada que carga la palabra de estado del programa (PSW), incluyendo el modo del programa, la clave de protección y la dirección de la siguiente instrucción a ejecutar. LPSW se usa a menudo para regresar de una interrupción cargando la PSW anterior asociada con la clase de interrupción. Hay una instrucción privilegiada ( ) y una instrucción no privilegiada ( ) disponibles para manipular subconjuntos de la PSW sin causar una interrupción ni cargar una PSW. [ e ]SSMSPM

Sistema de interrupción

La arquitectura [ 2 ] : 77–83 define 5 clases de interrupción . Una interrupción es un mecanismo para cambiar automáticamente el estado del programa; se utiliza tanto para eventos síncronos [ f ] como asíncronos .

En el S/360, cada clase de interrupción tiene asignados dos campos de almacenamiento: una palabra doble PSW antigua y una palabra doble PSW nueva. El procesador almacena la PSW, con un código de interrupción insertado, en la ubicación de la PSW antigua y luego carga la PSW desde la ubicación de la PSW nueva. Esto generalmente reemplaza la dirección de la instrucción, lo que produce un salto, y (opcionalmente) establece o restablece otros campos dentro de la PSW, lo que produce un cambio de modo.

La arquitectura S/360 define una prioridad para cada clase de interrupción, pero esta solo es relevante cuando se producen dos interrupciones simultáneamente; una rutina de interrupción puede ser interrumpida por cualquier otra interrupción habilitada, incluida otra ocurrencia de la interrupción inicial. Por este motivo, es práctica habitual especificar todos los bits de máscara, con la excepción del bit de máscara de verificación de máquina, como 0 para los manejadores de interrupciones de "primer nivel". Los manejadores de interrupciones de "segundo nivel" están generalmente diseñados para interrupciones encadenadas (múltiples ocurrencias de interrupciones de la misma clase).

Interrupción de entrada/salida

Una interrupción de E/S [ 15 ] ocurre al finalizar un programa de canal, después de obtener un CCW con el bit PCI activado y también para eventos asíncronos detectados por el dispositivo, la unidad de control o el canal, por ejemplo, la finalización de un movimiento mecánico. El sistema almacena la dirección del dispositivo en el código de interrupción y el estado del canal en el CSW en la ubicación 64 ('40'X).

Interrupción del programa

Una interrupción del programa [ 2 ] : 16, 79–80.1 ocurre cuando una instrucción encuentra una [ g ] de 15 [ h ] excepciones; sin embargo, si el bit de máscara del programa correspondiente a una excepción es 0, entonces no hay interrupción para esa excepción. En 360/65, [ 21 ] : 12 360/67 [ 11 ] : 46 y 360/85 [ 9 ] : 12 las interrupciones de excepción de protección y excepción de direccionamiento pueden ser imprecisas, en cuyo caso almacenan un código de longitud de instrucción de 0. El código de interrupción puede ser cualquiera de

  • An operation exception[22] is recognized when a program attempts to execute an instruction with an opcode that the computer does not implement. In particular, an operation exception is recognized when a program is written for an optional feature, e.g., floating point, that is not installed.
  • A privileged operation exception[22] is recognized when a program attempts to execute a privileged instruction when the problem state bit in the PSW is 1.
  • An execute exception[22] is recognized when the operand of an EXECUTE instruction (EX) is another EXECUTE instruction.
  • A protection exception[22] is recognized when a program attempts to store into a location whose storage protect key does not match[k] the PSW key, or to fetch from a fetch protected location whose storage protect key does not match the PSW key.
  • An addressing exception[23] is recognized when a program attempts to access a storage location that is not currently available. This normally occurs with an address beyond the capacity of the machine, but it may also occur on machines that allow blocks of storage to be taken offline.
  • Se reconoce una excepción de especificación [ 24 ] cuando una instrucción tiene una longitud o un campo de registro con valores no permitidos por la operación, o cuando tiene una dirección de operando que no satisface los requisitos de alineación del código de operación, por ejemplo, una instrucción LH con una dirección de operando impar en una máquina sin la función de alineación de bytes.
  • Se reconoce una excepción de datos [ 24 ] cuando una instrucción decimal especifica operandos no válidos, por ejemplo, datos no válidos, superposición no válida.
  • Se reconoce una excepción de desbordamiento de punto fijo [ 24 ] cuando se pierden bits significativos en una instrucción aritmética o de desplazamiento de punto fijo, que no sea la división.
  • Se reconoce una excepción de división de punto fijo [ 24 ] cuando se pierden bits significativos en una división de punto fijo o en una instrucción de conversión a binario.
  • Se reconoce una excepción de desbordamiento decimal [ 24 ] cuando se pierden dígitos significativos en una instrucción aritmética decimal, que no sea la división.
  • Se reconoce una excepción de división decimal [ 24 ] cuando se pierden bits significativos en una instrucción de división decimal. El destino no se altera.
  • Se reconoce una excepción de desbordamiento de exponente [ 24 ] cuando la característica en una operación aritmética de punto flotante excede 127 y la fracción no es cero.
  • Se reconoce una excepción de subdesbordamiento del exponente [ 24 ] cuando la característica en una operación aritmética de punto flotante es negativa y la fracción no es cero.
  • Se reconoce una excepción de significancia [ 24 ] cuando la fracción en una operación de suma o resta de punto flotante es cero.
  • Se reconoce una excepción de división de punto flotante [ 25 ] cuando la fracción en el divisor de una operación de división de punto flotante es cero.

Los códigos ABEND de OS/360 para excepciones de hardware son 'S0Cx', donde 'x' es el valor hexadecimal del código anterior. Por ejemplo, el ABEND S0C7 es una interrupción causada por una excepción de datos.

Interrupción de llamada del supervisor

Una interrupción de llamada de supervisor [ 17 ] ocurre como resultado de una instrucción de llamada de supervisor ; el sistema almacena los bits 8-15 de la instrucción SVC como el código de interrupción.

Interrupción externa

Se produce una interrupción externa [ 26 ] [ l ] como resultado de ciertos eventos asíncronos. Los bits 16-24 del PSW antiguo externo se establecen en 0 y uno o más de los bits 24-31 se establecen en 1.

Interrupción de la comprobación de la máquina

Una interrupción de comprobación de máquina [ 19 ] se produce para informar de condiciones inusuales asociadas al canal o a la CPU que no pueden ser notificadas por otro tipo de interrupción. El tipo de condición más importante que provoca una comprobación de máquina es un error de hardware, como un error de paridad en los registros o en la memoria, pero algunos modelos pueden utilizarla para informar de condiciones menos graves. Tanto el código de interrupción como los datos almacenados en el área de escaneo en '80'x (128 decimal) dependen del modelo.

Entrada/Salida

Este artículo describe la E/S desde la perspectiva de la CPU. No trata sobre el cable de canal ni los conectores, que se abordan en un artículo aparte ; existe un resumen en otro lugar y se pueden encontrar detalles en la documentación de IBM [ 3 ] y en FIPS PUB 60-2. [ 27 ]

La E/S la lleva a cabo un procesador conceptualmente independiente llamado canal. Los canales tienen su propio conjunto de instrucciones y acceden a la memoria independientemente del programa que se ejecuta en la CPU. En los modelos más pequeños (hasta 360/50 ), un único motor de microcódigo ejecuta tanto el programa de la CPU como el programa del canal. En los modelos más grandes, los canales están en gabinetes separados y tienen sus propias interfaces de memoria. Un canal puede contener varios subcanales , cada uno con el estado de un programa de canal individual. Un subcanal asociado a varios dispositivos que no pueden tener programas de canal simultáneamente se denomina compartido ; un subcanal que representa un solo dispositivo se denomina no compartido .

En el S/360 existen tres tipos de canales:

  • Un canal multiplexor de bytes es capaz de ejecutar múltiples CCW simultáneamente; normalmente se utiliza para conectar dispositivos lentos como lectores de tarjetas y líneas de telecomunicaciones. Un canal multiplexor de bytes puede tener varios subcanales selectores, cada uno con un único subcanal, que se comportan como canales selectores de baja velocidad.
  • Un canal selector tiene un único subcanal y, por lo tanto, solo puede ejecutar un comando de canal a la vez. Normalmente se utiliza para conectar dispositivos rápidos que no pueden aprovechar un canal multiplexor de bloques para suspender la conexión, como las unidades de cinta magnética.
  • Un canal multiplexor de bloques puede ejecutar simultáneamente varios programas de canal, pero solo uno puede estar activo a la vez. La unidad de control puede solicitar la suspensión al finalizar un comando de canal y, posteriormente, su reanudación. Esto está pensado para dispositivos con retardo mecánico tras la finalización de la transferencia de datos, por ejemplo, para búsquedas en DASD de cabezal móvil. El canal multiplexor de bloques se incorporó posteriormente a la arquitectura System/360; las primeras máquinas solo disponían de canales multiplexores de bytes y canales selectores. El canal multiplexor de bloques es una función opcional únicamente en los modelos 85 y 195. También está disponible en los ordenadores System/370 posteriores .

Conceptualmente, los periféricos se conectan a un S/360 mediante unidades de control , que a su vez se conectan mediante canales. Sin embargo, la arquitectura no exige que las unidades de control sean físicamente independientes, y en la práctica a veces se integran con los dispositivos que controlan. Del mismo modo, la arquitectura no exige que los canales sean físicamente independientes del procesador, y los modelos S/360 más pequeños (hasta el 360/50) tienen canales integrados que consumen recursos del procesador.

Los dispositivos periféricos se direccionan con direcciones de 16 bits [ m ] , [ 2 ] : 89 denominadas cua o cuu ; en este artículo se utilizará el término cuu . Los 8 bits superiores identifican un canal, numerado del 0 al 6, [ c ] mientras que los 8 bits inferiores identifican un dispositivo en ese canal. Un dispositivo puede tener varias direcciones cuu .

A las unidades de control se les asigna un rango de direcciones de captura. Por ejemplo, a una CU se le podría asignar el rango 20-2F o 40-7F. Esto facilita la conexión y priorización de varias unidades de control en un canal. Por ejemplo, un canal podría tener tres unidades de control de disco en las direcciones 20-2F, 50-5F y 80-8F. No todas las direcciones capturadas necesitan tener un dispositivo físico asignado. Cada unidad de control también se marca como de alta o baja prioridad en el canal.

La selección del dispositivo progresa desde el canal a cada unidad de control en el orden en que están conectadas físicamente a su canal. Al final de la cadena, el proceso de selección continúa en sentido inverso hacia el canal. Si la selección regresa al canal, ninguna unidad de control aceptó el comando y SIO devuelve el Código de Condición 3. Las unidades de control marcadas como de Alta Prioridad verifican que la CUU de salida esté dentro de su rango. Si es así, se procesa la E/S. Si no, la selección se pasa a la siguiente CU de salida. Las unidades de control marcadas como de Baja Prioridad verifican que la CUU de entrada (que regresa) esté dentro de su rango. Si es así, se procesa la E/S. Si no, la selección se pasa a la siguiente CU de entrada (o al canal). La conexión de tres unidades de control a un canal podría ser físicamente -ABC y, si todas están marcadas como Alta, la prioridad sería ABC. Si todas están marcadas como Baja, la prioridad sería CBA. Si B estuviera marcada como Alta y AC como Baja, el orden sería BCA. Siguiendo este razonamiento, el primero de los N controladores tendría prioridad 1 (Alta) o 2N-1 (Baja), el segundo prioridad 2 o 2N-2, el tercero prioridad 3 o 2N-3, etc. El último conectado físicamente siempre tendría prioridad N.

Hay tres campos de almacenamiento reservados para E/S: una PSW antigua de E/S de doble palabra, una PSW nueva de E/S de doble palabra y una palabra completa de dirección de canal ( CAW ). Para realizar una operación de E/S normalmente se requiere lo siguiente:

  • Inicializando el CAW con la clave de almacenamiento y la dirección del primer CCW.
  • emitir una instrucción de E/S de inicio ( SIO ) que especifique la CU para la operación
  • esperando [ n ] una interrupción de E/S
  • manejar cualquier condición inusual indicada en la Palabra de estado del canal ( CSW )

Un programa de canal consiste en una secuencia de palabras de control de canal ( CCW ) encadenadas (ver más abajo). Normalmente, el canal obtiene las CCW de palabras dobles consecutivas, pero una unidad de control puede indicarle al canal que omita una CCW y una CCW de transferencia de canal ( TIC ) puede indicarle al canal que comience a obtener las CCW desde una nueva ubicación.

Existen varias formas definidas para que un comando de canal se complete. Algunas permiten que el canal continúe obteniendo CCW, mientras que otras finalizan el programa del canal. En general, si el CCW no tiene el bit de comando de cadena activado y no es un TIC, el canal finalizará la operación de E/S y provocará una interrupción de E/S cuando el comando se complete. Ciertos bits de estado de la unidad de control suprimen el encadenamiento.

Las formas más comunes de que un comando se complete son que se agote el contador cuando no se establece chain-data y que la unidad de control indique que no se deben realizar más transferencias de datos. Si Suppress-Length-Indication (SLI) no está configurado y ocurre una de estas situaciones sin la otra, no se permite el encadenamiento. Las situaciones más comunes que suprimen el encadenamiento son unit-exception y unit-check. Sin embargo, la combinación de unit-check y status-modifier no suprime el encadenamiento; en cambio, provoca que el canal realice un reintento de comando, reprocesando el mismo CCW.

Además de la señal de interrupción que se envía a la CPU cuando finaliza una operación de E/S, un canal también puede enviar una interrupción controlada por programa (PCI) a la CPU mientras se ejecuta el programa del canal, sin finalizar la operación, y una interrupción retardada de fin de dispositivo después de la interrupción por finalización de la E/S.

Estado del canal

Estas condiciones son detectadas por el canal e indicadas en el CSW . [ 28 ]

  • La interrupción controlada por programa [ 29 ] indica que el canal ha obtenido un CCW con el bit PCI activado. El canal continúa su procesamiento; esta interrupción simplemente informa a la CPU del progreso del canal. Un ejemplo del uso de la interrupción controlada por programa se encuentra en la función "Obtención de programa" de la Supervisión de contenido, donde se notifica al programa de control que se ha leído un registro de control/reubicación. Para asegurar que este registro se haya leído completamente en la memoria principal, se inicia un "giro de bit deshabilitado", uno de los pocos que quedan en el programa de control. La satisfacción del giro indica que el registro de control/reubicación está completamente en la memoria principal y que el registro de texto inmediatamente anterior puede reubicarse. Después de la reubicación, un CCW NOP se cambia a un TIC y el programa del canal continúa. De esta manera, se puede leer y reubicar un módulo de carga completo utilizando solo un EXCP y, posiblemente, solo una revolución de la unidad de disco. PCI también tiene aplicaciones en la gestión del búfer del método de acceso de teleprocesamiento.
  • La longitud incorrecta [ 30 ] indica que la transferencia de datos de un comando se completó antes de que se agotara el contador. Esta indicación se suprime si el bit Suppress-Length-Indication en el CCW está activado.
  • La comprobación del programa [ 30 ] indica uno de los siguientes errores.
    • Bits distintos de cero donde se requieren ceros
    • Datos no válidos o dirección CCW
    • El CAW o un TIC se refiere a un TIC
  • La comprobación de protección [ 31 ] indica que la clave de protección en el CAW no es cero y no coincide con la clave de protección de almacenamiento.
  • La comprobación de datos del canal [ 32 ] indica un error de paridad durante una transferencia de datos.
  • La comprobación de control del canal [ 32 ] indica un mal funcionamiento del canal distinto de la comprobación de datos del canal o la comprobación de control de la interfaz .
  • La comprobación de control de interfaz [ 32 ] indica una señal no válida en el canal a la interfaz de la unidad de control.
  • La comprobación de encadenamiento [ 32 ] indica la pérdida de datos durante el encadenamiento de datos.

Estado de la unidad

Estas condiciones son presentadas al canal por la unidad de control o el dispositivo. [ 33 ] En algunos casos, son gestionadas por el canal y en otros, se indican en el CSW . No existe distinción entre las condiciones detectadas por la unidad de control y las detectadas por el dispositivo.

  • La atención [ 34 ] indica una condición inusual no asociada con un programa de canal en ejecución. A menudo indica algún tipo de acción del operador, como solicitar una entrada, en cuyo caso la CPU respondería emitiendo un comando de lectura, generalmente un comando de detección (04h) a partir del cual se podría deducir información adicional. La atención es una condición especial y requiere soporte específico del sistema operativo, para la cual el sistema operativo dispone de una tabla de atención especial [ o ] con un número necesariamente limitado de entradas.
  • El modificador de estado [ 35 ] (SM) indica una de tres condiciones inusuales.
    • Se emitió una instrucción de E/S de prueba a un dispositivo que no la admite.
    • El estado "Ocupado" se refiere a la unidad de control, no al dispositivo.
    • Un dispositivo ha detectado una condición que requiere omitir un CCW. Un CCW con un comando para el cual es posible el modificador de estado normalmente especificará el encadenamiento de comandos, en cuyo caso el SM es procesado por el canal y no causa una interrupción.
Un programa de canal típico donde ocurre SM es
 ... ID de búsqueda igual TIC *-8 Leer datos
donde el TIC hace que el canal vuelva a buscar hasta que el dispositivo indique una búsqueda exitosa al levantar SM.

Palabra de dirección de canal

La palabra completa Channel Address Word [ 2 ] : 99 (CAW) contiene una clave de protección de almacenamiento de 4 bits y una dirección de 24 bits del programa de canal que se va a iniciar.

Palabra de comando del canal

Una palabra de comando de canal es una palabra doble que contiene lo siguiente:

Códigos de comando CCW

Los bits de orden bajo 2 o 4 determinan los seis tipos de operaciones que realiza el canal;. [ 2 ] : 100, 105 La codificación es

El significado de los seis o cuatro bits de orden superior, los bits modificadores M en la tabla anterior, depende del tipo de dispositivo de E/S conectado; véase, por ejemplo, DASD CKD CCW . Los ocho bits se envían a la unidad de control asociada (o su equivalente funcional) y se interpretan en ella.

El control se utiliza para provocar un cambio de estado en un dispositivo o unidad de control, a menudo asociado con un movimiento mecánico, por ejemplo, rebobinar, buscar.

La función Sense se utiliza para leer datos que describen el estado del dispositivo. El caso más importante es cuando un comando finaliza con una comprobación de unidad; la causa específica solo se puede determinar ejecutando una operación Sense y examinando los datos devueltos. Un comando Sense con los bits modificadores en cero siempre es válido.

Una desviación destacable de la arquitectura es que DASD utiliza códigos de comando Sense para Reservar y Liberar, en lugar de utilizar Control.

Banderas de armas de fuego ocultas

Las banderas en un CCW afectan cómo se ejecuta y finaliza.

Palabra de estado del canal

La palabra de estado del canal (CSW) [ 2 ] : 113–121 proporciona datos asociados con una interrupción de E/S.

  • El campo Clave de protección contiene la clave de protección del CAW en el momento en que se inició la operación de E/S para E/S completa o interrupciones PCI. [ 53 ]
  • El campo Dirección de comando contiene la dirección + 8 de la última CCW obtenida para una E/S completa o una interrupción PCI. Sin embargo, hay 9 excepciones [ 53 ].
  • El campo Estado contiene un byte de bits de estado del canal , que indican las condiciones detectadas por el canal [ 28 ] y un byte de bits de estado de la unidad , que indican las condiciones detectadas por la unidad de E/S [ 33 ]. No hay distinción entre las condiciones detectadas por la unidad de control y las condiciones detectadas por el dispositivo.
  • El recuento residual es media palabra que indica el número de bytes en el área descrita por el CCW que no se han transferido hacia o desde el canal [ 55 ]. La diferencia entre el recuento en el CCW y el recuento residual da el número de bytes transferidos.

Instrucciones de E/S

El S/360 tiene cuatro [ 56 ] instrucciones de E/S: Iniciar E/S (SIO), Probar E/S (TIO), Detener E/S (HIO) y Probar Canal (TCH). Las cuatro son privilegiadas y, por lo tanto, causarán una interrupción del programa de operación privilegiada si se usan en estado de problema. Los campos B1 (base) y D1 ( desplazamiento) se usan para calcular el cuu (número de canal y dispositivo); los bits 8-15 de las instrucciones no se usan y deben ser cero para compatibilidad con el S/370.

Inicio de E/S (SIO)

SIO [ 57 ] intenta iniciar el programa de canal al que apunta el CAW , utilizando la clave de protección de almacenamiento en el CAW.

E/S de prueba (TIO)

TIO [ 58 ] comprueba el estado de un canal y un dispositivo. También puede almacenar un CSW , en cuyo caso finaliza con el código de condición 1.

Detener E/S (HIO)

HIO [ 59 ] intenta terminar un programa de canal activo. También puede almacenar un CSW , en cuyo caso finaliza con el código de condición 1.

Canal de prueba (TCH)

TCH [ 60 ] prueba el estado de un canal. No afecta el estado de un programa de canal activo y no almacena un CSW ,

Controles del operador

controles del operador

La arquitectura del System/360 especificaba la existencia de varias funciones comunes, pero no su método de implementación. Esto permitía a IBM utilizar distintos medios físicos (por ejemplo, dial, teclado, botón, rodillo, imagen o texto en un monitor CRT) para seleccionar las funciones y los valores en diferentes procesadores. Cualquier referencia a una tecla o interruptor debe interpretarse como referida, por ejemplo, a la selección mediante lápiz óptico, o a una secuencia de teclado equivalente.

  • El reinicio del sistema envía una señal de reinicio a cada canal de E/S y borra el estado del procesador; se cancelan todas las interrupciones pendientes. No se garantiza que el reinicio del sistema corrija los errores de paridad en los registros generales, los registros de punto flotante ni la memoria. El reinicio del sistema no restablece el estado de los dispositivos de E/S compartidos.
  • La carga inicial del programa (IPL) [ 61 ] es un proceso para cargar un programa cuando no hay un cargador disponible en el almacenamiento, generalmente porque la máquina acaba de encenderse o para cargar un sistema operativo alternativo. [ 2 ] : 123 Este proceso a veces se conoce como arranque .
Como parte de la función IPL, el operador dispone de un medio para especificar una dirección de dispositivo de 12 bits [ c ] , normalmente con tres diales como se muestra en el diagrama de controles del operador. Cuando el operador [ q ] selecciona la función Cargar , el sistema realiza un Reinicio del Sistema , envía un comando de canal Read IPL [ r ] al dispositivo seleccionado para leer 24 bytes en las ubicaciones 0-23 y hace que el canal comience a buscar CCW en la ubicación 8; el efecto es como si el canal hubiera buscado un CCW de la ubicación 0 con una longitud de 24, una dirección de 0 y los indicadores que contienen Command Chaining + Suppress Length Indication. Al finalizar la operación, el sistema almacena la dirección de E/S en la media palabra en la ubicación 2 y carga el PSW desde la ubicación 0.
La carga inicial del programa se realiza normalmente desde una cinta, un lector de tarjetas o una unidad de disco. Generalmente, el sistema operativo se cargaba desde una unidad de disco; el arranque inicial desde cinta o tarjetas se utilizaba únicamente para diagnósticos o para instalar un sistema operativo en un ordenador nuevo.
  • El interruptor de emergencia [ 62 ] (apagado de emergencia, EPO) envía una señal EPO a cada canal de E/S y, a continuación, apaga el procesador. Dado que el EPO omite la secuencia normal de apagado, puede provocar daños. Por ello, el control EPO dispone de un pestillo mecánico para garantizar que un técnico del cliente inspeccione el equipo antes de intentar volver a encenderlo.
  • El encendido [ 62 ] enciende todos los componentes del complejo del procesador y realiza un reinicio del sistema.
  • El apagado [ 62 ] inicia una secuencia de apagado ordenada. Aunque el contenido del almacenamiento se conserva, las claves de almacenamiento asociadas pueden perderse.
  • La tecla de interrupción [ 62 ] provoca una interrupción externa con el bit 25 activado en el PSW antiguo externo.
  • La luz de espera [ 62 ] indica que el PSW tiene el bit 14 (espera) activado; el procesador se detiene temporalmente pero reanuda su funcionamiento cuando se produce una condición de interrupción.
  • La luz Manual [ 62 ] indica que la CPU está en estado detenido.
  • La luz del sistema [ 62 ] indica que un medidor está funcionando, ya sea debido a la actividad de la CPU o a la actividad del canal de E/S.
  • La luz de prueba [ 62 ] indica que ciertos controles del operador están activos cuando se han utilizado ciertas funciones, por ejemplo, el PASO DE INSTRUCCIÓN, mediante una instrucción de diagnóstico o cuando existen condiciones térmicas anormales. Los detalles dependen del modelo.
  • La luz de carga [ 62 ] se enciende mediante el IPL y el arranque externo. Se apaga al cargar el PSW desde la ubicación 0 al finalizar el proceso de carga.
  • La unidad de carga [ 63 ] controla los 11 bits [ s ] más a la derecha del dispositivo desde los cuales realizar un IPL.
  • La tecla de carga [ 64 ] inicia la secuencia IPL .
  • El interruptor de tecla de selección de prefijo [ 64 ] selecciona si IPL utilizará el prefijo principal o el prefijo alternativo.
  • La tecla de reinicio del sistema [ 64 ] inicia un reinicio del sistema .
  • La tecla Stop [ 64 ] pone la CPU en un estado detenido; los programas de canal continúan ejecutándose y las condiciones de interrupción permanecen pendientes.
  • El conmutador de velocidad [ 64 ] determina el modo en que el procesador obtiene las instrucciones. La arquitectura define dos modos:
    • PROCESO
    • PASO DE INSTRUCCIÓN
  • La tecla de inicio [ 64 ] inicia la obtención de instrucciones de acuerdo con la configuración del interruptor de velocidad .
  • El interruptor de selección de almacenamiento [ 65 ] determina el tipo de recurso al que acceden la clave de almacenamiento y la clave de visualización . La arquitectura define tres selecciones:
    • Almacenamiento principal
    • Registros generales
    • Registros de punto flotante
  • Los interruptores de dirección [ 65 ] especifican la dirección o el número de registro para la tecla de almacenamiento , la tecla de visualización y, en algunos modelos, la tecla de ajuste del IC .
  • Los conmutadores de datos [ 65 ] especifican los datos para la clave de almacenamiento y, en algunos modelos, la clave de ajuste IC .
  • La clave de almacenamiento [ 65 ] almacena el valor en los conmutadores de datos según lo especificado por el conmutador de selección de almacenamiento y los conmutadores de direcciones .
  • La tecla de visualización [ 65 ] muestra el valor especificado por el interruptor de selección de almacenamiento y los interruptores de dirección .
  • El Set IC= [ 65 ] establece la parte de la dirección de instrucción del PSW desde los conmutadores de datos o los conmutadores de direcciones , según el modelo.
  • Los interruptores de comparación de direcciones [ 65 ] seleccionan el modo de comparación y qué se compara. La parada en la comparación de direcciones de instrucción está presente en todos los modelos, pero la parada en la comparación de direcciones de datos solo está presente en algunos modelos.
  • La luz de prefijo alternativo [ 65 ] se enciende cuando el disparador de prefijo está en el estado alternativo.

Características opcionales

Operandos alineados por bytes

En algunos modelos, por ejemplo, el S/360-85 , [ 9 ] se relajaron los requisitos de alineación para algunas instrucciones de estado del problema. No existe ningún mecanismo para desactivar esta función, y los programas que dependen de recibir una verificación de programa de tipo 6 (alineación) en esas instrucciones deben modificarse.

aritmética decimal

La función de aritmética decimal proporciona instrucciones que operan con datos decimales empaquetados. Un número decimal empaquetado tiene entre 1 y 31 dígitos decimales seguidos de un signo de 4 bits. Todas las instrucciones de aritmética decimal, excepto PACK y UNPACK, generan una excepción de datos si un dígito no está en el rango 0-9 o si el signo no está en el rango AF.

Control directo

La función de Control Directo [ 66 ] proporciona seis líneas de señal externas y una ruta de datos de 8 bits hacia/desde el almacenamiento. [ 67 ]

Aritmética de punto flotante

La función de aritmética de punto flotante proporciona 4 registros de punto flotante de 64 bits e instrucciones para operar con números de punto flotante hexadecimales de 32 y 64 bits. Los modelos 360/85 y 360/195 también admiten números de punto flotante de precisión extendida de 128 bits.

Temporizador de intervalos

Si la función de temporizador de intervalo [ 2 ] : 17.1 está instalada, el procesador decrementa la palabra en la ubicación 80 ('50'X) a intervalos regulares; la arquitectura no especifica el intervalo, pero sí requiere que el valor restado haga que parezca que se restó 1 del bit 23 300 veces por segundo. Los modelos más pequeños decrementaban a la misma frecuencia (50  Hz o 60  Hz) que la fuente de alimentación de CA, pero los modelos más grandes tenían una función de temporizador de alta resolución. El procesador provoca una interrupción externa cuando el temporizador llega a cero.

Operación multisistema

La operación multisistema [ 68 ] es un conjunto de características para admitir sistemas multiprocesador, por ejemplo, control directo , reubicación directa de direcciones (prefijado).

Protección de almacenamiento

Si la función de protección de almacenamiento [ 2 ] : 17-17.1 está instalada, existe una clave de almacenamiento de 4 bits asociada a cada bloque de almacenamiento de 2048 bytes, y dicha clave se verifica al almacenar datos en cualquier dirección de ese bloque, ya sea por una CPU o un canal de E/S. Una clave de CPU o canal de 0 desactiva la verificación; una clave de CPU o canal distinta de cero permite que los datos se almacenen únicamente en un bloque con la clave correspondiente.

La protección de almacenamiento se utilizaba para evitar que una aplicación defectuosa sobrescribiera el almacenamiento del sistema operativo o de otra aplicación. Esto permitía realizar pruebas simultáneamente con la producción. Dado que la clave tenía solo cuatro bits de longitud, el número máximo de aplicaciones diferentes que podían ejecutarse simultáneamente era de 15.

Una opción adicional disponible en algunos modelos era la protección contra la lectura de datos. Esta permitía al sistema operativo especificar que los bloques estaban protegidos tanto para su lectura como para su almacenamiento.

Desviaciones y extensiones

El modelo System/360 20 es radicalmente diferente y no debe considerarse un S/360.

Al modelo 44 del System/360 le faltan ciertas instrucciones, pero una función permitía simular las instrucciones faltantes en memoria oculta, lo que posibilitaba el uso de sistemas operativos y aplicaciones estándar del S/360.

Algunos modelos tienen características que extienden la arquitectura, por ejemplo, instrucciones de emulación, paginación, y otros modelos hacen pequeñas desviaciones de la arquitectura. Algunos ejemplos son:

  • La función multisistema del S/360-65 modifica el comportamiento de la función de control directo y de la instrucción Set System Mask (SSM). [ 21 ]
  • El modelo System/360 67-2 tenía cambios similares, pero incompatibles. [ 11 ]

Algunas desviaciones sirvieron como prototipos para características de la arquitectura S/370 .

Véase también

Notas

  1. El doble de tamaño que el System/370 posterior
  2. Una especificación del registro general 0 produce una dirección base de cero en lugar del contenido del registro.
  3. 1 2 3 En un procesador que cumple con la arquitectura S/360, el número de canal más alto es 6. Once bits son suficientes para identificar la cuu, y siete bits son suficientes para proporcionar enmascaramiento de interrupciones de E/S. Sin embargo, en un 360/67-2 con dos controladores de canal 2846, los canales están numerados del 0 al 6 y del 8 al 14; [ 11 ] : 15 de manera similar, el 360/195 tenía una función de canal extendida [ 10 ] : 21 pero numeraba los canales del 0 al 13. [ 10 ] : 25 Las interrupciones de E/S para el controlador de canal 1 en el 360/67-2 se enmascaraban usando registros de control, y el 360/195 usaba el bit 7 (canal 6) de la máscara del sistema como un bit de máscara de resumen para los canales 6 y superiores. Interrupciones de más de siete canales [ 12 ] describe el enmascaramiento de resumen para canales adicionales, pero otro texto en Principios de funcionamiento todavía se refiere a un límite de 7 canales. El software estándar admitía los canales 0-F.
  4. Debido a que el diseño del S/360 se produjo simultáneamente con el desarrollo del ASCII, la compatibilidad de IBM con este estándar no coincidía con el estándar que finalmente se adoptó.
  5. Los sucesores del S/360 añadieron instrucciones adicionales.
  6. La documentación del S/360 no utiliza los términos fallo o trampa.
  7. 1 2 En el 360/91, [ 20 ] : 15 360/95 y 360/195 [ 10 ] : 14 a Puede ocurrir una interrupción del programa por múltiples excepciones imprecisas. El ILC en el Programa Old PSW es ​​0, los bits 26-31 son 0 y los bits 16-27 son una máscara que indica qué excepciones ocurrieron; no hay provisión para informar múltiples ocurrencias de la misma excepción. El informe de múltiples excepciones imprecisas no es parte de la arquitectura S/360.
  8. 1 2 3 4 Hay 17 excepciones posibles en el 360/67, [ 11 ] : 17 pero la excepción de página y la excepción de segmento no forman parte de la arquitectura S/360; de manera similar, el código de interrupción 18 ('0012'X) en un multiprocesador 360/65 no forma parte de la arquitectura S/360.
  9. El bit de especificación no se utiliza para interrupciones imprecisas en el 360/195
  10. 1 2 No se utiliza en 360/91
  11. Una clave PSW de 0 coincide con cualquier clave de almacenamiento.
  12. Si bien la expiración de un temporizador es un evento interno, provoca una interrupción externa y, por esta razón, esta interrupción se suele denominar interrupción de temporizador/externa.
  13. Debido a las limitaciones en el número de canales, el software S/360 y los primeros S/370 solo utilizaban 12 bits para almacenar las direcciones de los dispositivos.
  14. Pero continuamos con un trabajo no relacionado.
  15. El sistema operativo utiliza el índice de atención en un bloque de control de unidad (UCB) como índice en la tabla de atención.
  16. También conocido como Suprimir Indicación de Longitud Incorrecta (SILI)
  17. O una instalación automatizada equivalente.
  18. Leer con todos los bits modificadores a cero.
  19. Existe una inconsistencia, ya que Interrupciones de más de siete canales [ 12 ] permite más canales.

Referencias

S360
Principios de funcionamiento del IBM System/360 . Biblioteca de referencia de sistemas (octava  edición). IBM. Septiembre de 1968. A22-6821-7.
  1. IBM (1964), Principios de funcionamiento del sistema IBM/360 (PDF) , Primera edición, A22-6821-0
  2. 1 2 3 4 5 6 7 8 9 10 11 IBM (septiembre de 1968), Principios de funcionamiento del sistema IBM/360 (PDF) , octava edición, A22-6821-7Revisado por IBM (12 de mayo de 1970), ibíd. , GN22-0354e IBM (8 de junio de 1970), ibíd. , GN22-0361
  3. 1 2 IBM, IBM System/360 I/O Interface Channel to Control Unit Original Equipment Manufacturers' Information (PDF) , Quinta edición, A22-6843-3
  4. S360 , pág. 15, Palabra de estado del programa .
  5. S360 , págs. 15-32, 16, Interrupción .
  6. S360 , pág. 77, Interrupciones .
  7. IBM Corporation (1974). Resumen del sistema IBM System/360 (PDF) . pág. 3-3 . Consultado el 16 de julio de 2017 . 
  8. Manual de referencia del sistema de procesamiento de datos UNIVAC III (PDF) , Sperry Rand Corporation, 1962, UT-2488
  9. 1 2 3 IBM (junio de 1968), Características funcionales del IBM System/360 Modelo 85 (PDF) , SEGUNDA EDICIÓN, A22-6916-1
  10. 1 2 3 4 5 IBM (agosto de 1970), Características funcionales del modelo 195 del IBM System/360 (PDF) , Segunda edición, GA22-6943-1
  11. 1 2 3 4 5 6 IBM (febrero de 1972), Características funcionales del modelo 67 del IBM System/360 (PDF) , Tercera edición, GA27-2719-2
  12. 1 2 PoOps , pág. 121.4.
  13. 1 2 PoOps , pág. 71.
  14. PoOps , pág. 77.
  15. 1 2 PoOps , págs. 78–79.
  16. PoOps , págs. 79–80.1.
  17. 1 2 PoOps , págs. 80.1–81.
  18. PoOps , págs. 81–82.
  19. 1 2 PoOps , págs. 82–83.
  20. 1 2 IBM (18-03-1968), Características funcionales del IBM System/360 Modelo 91 (PDF) , Tercera edición, A22-6907-2
  21. 1 2 3 4 5 IBM (septiembre de 1968), "Apéndice A. Sistema de multiprocesamiento", Características funcionales del modelo 65 del IBM System/360 (PDF) , cuarta edición, págs. 30–34 , A22-6884-3 
  22. 1 2 3 4 5 6 7 8 PoOps , pág. 79.
  23. 1 2 PoOps , págs. 79–80.
  24. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 PoOps , pág. 80.
  25. 1 2 PoOps , pág. 80.1.
  26. PoOps , pág. 81.
  27. Interfaz de canal de E/S (PDF) (Informe). Servicio Nacional de Información Técnica . 29 de julio de 1983. FIPS PUB 60-2 . Consultado el 18 de mayo de 2023 .
  28. 1 2 3 PoOps , págs. 116–118.
  29. 1 2 PoOps , págs. 116–117.
  30. 1 2 3 4 PoOps , pág. 117.
  31. 1 2 PoOps , págs. 117–118.
  32. 1 2 3 4 5 6 7 8 PoOps , pág. 118.
  33. 1 2 3 PoOps , págs. 113–116.
  34. 1 2 PoOps , pág. 113.
  35. 1 2 PoOps , págs. 113–114.
  36. 1 2 PoOps , pág. 114.
  37. 1 2 PoOps , págs. 114–115.
  38. 1 2 3 4 PoOps , pág. 115.
  39. 1 2 PoOps , págs. 115–116.
  40. 1 2 PoOps , pág. 116.
  41. PoOps , pág. 100.
  42. 1 2 PoOps , págs. 100–101.
  43. PoOps , págs. 99–100, 101–105.
  44. 1 2 PoOps , págs. 106–107.
  45. PoOps , págs. 107–108.
  46. PoOps , págs. 105–106.
  47. 1 2 PoOps , pág. 105.
  48. PoOps , págs. 101–103.
  49. PoOps , págs. 101, 103.
  50. PoOps , págs. 99–100.
  51. PoOps , págs. 103–104.
  52. PoOps , págs. 104–105.
  53. 1 2 3 4 CacaOps , pág. 119.
  54. PoOps , págs. 113–118.
  55. 1 2 PoOps , pág. 120.
  56. S360 , págs. 93–98, Control de dispositivos de entrada/salida .
  57. S360 , págs. 94–95, Inicio de E/S .
  58. S360 , págs. 95–96, E/S de prueba .
  59. ^ S360 , págs. 96–98, Detener E/S .
  60. S360 , pág. 98, Canal de prueba .
  61. PoOps , pág. 123.
  62. 1 2 3 4 5 6 7 8 9 PoOps , pág. 124.
  63. PoOps , págs. 124–125.
  64. 1 2 3 4 5 6 PoOps , pág. 125.
  65. 1 2 3 4 5 6 7 8 PoOps , pág. 126.
  66. PoOps , pág. 17.1.
  67. IBM, Información para fabricantes de equipos originales sobre las funciones de control directo e interrupción externa del IBM System/360 (PDF) , tercera edición, A22-6845-2
  68. PoOps , págs. 17.1–18.

Lecturas adicionales

  • Prasad, NS (1989). IBM Mainframes . McGraw-Hill. ISBN 0070506868. El capítulo 3 (págs.  41-110 ) describe la arquitectura del sistema 360.
  • Greiner, Dan (10 de agosto de 2011). "Características de la CPU de la arquitectura IBM z: una perspectiva histórica" ​​(PDF) . Evolución de la arquitectura de mainframe de IBM . SHARE 117 en Orlando . SHARE . Sesión 9220. Recuperado el 7 de febrero de 2023 .
  • Introducción a la arquitectura del sistema IBM System/360 (Libro de texto para estudiantes)