Los datos de clave de conteo ( CKD ) son un formato de registro de datos de dispositivo de almacenamiento de acceso directo (DASD) [a] introducido en 1964 por IBM con su IBM System/360 y que aún se emula en los mainframes de IBM. Es un formato autodefinido en el que cada registro de datos está representado por un área de conteo que identifica el registro y proporciona la cantidad de bytes en un área de clave opcional y un área de datos opcional. Esto contrasta con los dispositivos que utilizan un tamaño de sector fijo o una pista de formato independiente.
Los datos de clave de conteo (CKD) también se refieren al conjunto de comandos de canal (colectivamente, palabras de comando de canal, CCW) que genera un mainframe IBM para su ejecución por un subsistema DASD que emplea el formato de registro CKD. [1] El conjunto inicial de CCW de CKD, introducido en 1964, se mejoró y mejoró sustancialmente en la década de 1990.
La razón del formato de pista CKD es permitir que varíen las longitudes de los campos de datos; cada bloque de datos registrado en una pista DASD, llamado registro , tiene un campo de conteo asociado que identifica el registro e indica el tamaño de la clave, si se usa (definida por el usuario hasta 255 bytes), y el tamaño del área de datos, si se usa. [2] [b] El campo de conteo tiene la identificación del registro [c] en formato de registro de cabeza de cilindro, la longitud de la clave y la longitud de los datos. La clave puede omitirse o consistir en una cadena de caracteres.
"El comienzo de una pista se señala cuando se detecta el marcador de índice (punto de índice). ... El marcador es reconocido automáticamente por un dispositivo de detección especial". [3] : 5 Después del marcador de índice se encuentra la dirección de inicio , que indica la ubicación de esta pista en el disco y contiene otra información de control interna a la unidad de control. Un espacio de longitud fija sigue a la dirección de inicio. A continuación, cada pista contiene un Registro 0 (R0), el registro descriptor de pista, que está "diseñado para permitir que todo el contenido de una pista se mueva a pistas alternativas si una parte de la pista principal se vuelve defectuosa". [3] : 7 Después de R0 se encuentran los registros de datos, separados por espacios. [3] : 9
Debido a los espacios vacíos y a otra información, el espacio registrado es mayor que el necesario para los datos de recuento, los datos clave o los datos de usuario. IBM proporciona una "tarjeta de referencia" para cada dispositivo, que se puede utilizar para calcular la cantidad de registros por pista para varios tamaños de campos de datos y claves, y para optimizar la capacidad del dispositivo. [4] Más tarde, se escribieron programas para realizar estos cálculos. Debido a que los registros normalmente no se dividen entre pistas, la especificación de un tamaño de registro incorrecto crea problemas.
En la mayoría de los casos, se omite la clave y el registro se localiza de forma secuencial o mediante direccionamiento directo de registro de cabezal cilíndrico. Si está presente, la clave es cualquier dato utilizado para encontrar el registro, normalmente utilizando la clave de búsqueda igual o la clave de búsqueda alta o igual en sentido antihorario. La clave (y, por lo tanto, el registro) se puede localizar mediante comandos de hardware. [5] [ página necesaria ] Desde la introducción del System/360 de IBM en 1964, casi todos los DASD de sistemas grandes e intermedios de IBM han utilizado el formato de registro de datos de clave de conteo. [6] [ página necesaria ]
Las ventajas del formato de registro de datos de clave de conteo son:
Los precios reducidos de CPU y memoria y las mayores velocidades de dispositivos e interfaces han anulado en cierta medida las ventajas de CKD, y se mantiene sólo porque el sistema operativo insignia de IBM, z/OS, no admite interfaces orientadas a sectores.
Originalmente, los registros CKD tenían una correspondencia uno a uno con una pista física de un dispositivo DASD; sin embargo, con el tiempo los registros se han vuelto cada vez más virtualizados, de modo que en los mainframes IBM modernos ya no existe una correspondencia directa entre un ID de registro CKD y el diseño físico de una pista.
Inicialmente, había un alto grado de correspondencia entre la vista lógica de los accesos DASD y el hardware real, como se muestra en la ilustración. Se colocaban etiquetas de tres dígitos [d] para identificar la dirección del canal, la unidad de control y el dispositivo.
En los sistemas de gama baja, el canal y la unidad de control se integraban físicamente con frecuencia, pero permanecían separados lógicamente. La nueva estrategia de conexión de IBM [7], que comenzó con el modelo 3830 2 en 1972, separó físicamente la SCU en dos entidades físicas, un director y un controlador, pero las mantuvo lógicamente iguales. El controlador maneja el formato de la pista CKD y se empaqueta con la primera unidad o unidades de una cadena de unidades y tiene un número de modelo con la letra "A" como prefijo, una "Unidad A" (o "Caja A") como en el modelo 3350 A2 que contiene un controlador y dos DASD. Los DASD sin un controlador, es decir, las Unidades B, tienen un prefijo "B" en su número de modelo.
Los subsistemas CKD [e] y directores fueron ofrecidos por IBM y competidores compatibles con plug-in hasta al menos 1996 (2301 a 3390 Modelo 9); [8] en total 22 DASD únicos [f] ofrecidos por IBM configurados en al menos 35 configuraciones de subsistemas diferentes . Los compatibles con plug-in ofrecían muchos de los mismos DASD, incluidos 4 subsistemas CKD con DASD únicos. [g]
El acceso a clases específicas de dispositivos de E/S por parte de un mainframe IBM está bajo el control de palabras de comando de canal (CCW), algunas de las cuales son genéricas (por ejemplo, Sin operación) pero muchas de las cuales son específicas del tipo de dispositivo de E/S (por ejemplo, Lectura hacia atrás para una unidad de cinta). El grupo de CCW definido por IBM para DASD se divide en cinco categorías amplias:
Las CCW de CKD son el conjunto específico de CCW que se utilizan para acceder a los subsistemas DASD de CKD. Esto contrasta con las CCW de arquitectura de bloque fijo (FBA) que se utilizan para acceder a los subsistemas DASD de FBA.
Los DASD de CKD se direccionan como otros dispositivos de entrada/salida; para System/360 y System/370 los DASD se direccionan directamente, a través de canales y las unidades de control asociadas [9] [10] [11] (SCU o Storage Control Unit), inicialmente utilizando tres dígitos hexadecimales, uno para canal y dos para unidad de control y dispositivo, proporcionando direccionamiento para hasta 16 canales, para hasta 256 mecanismos de acceso DASD/canal y 4.096 direcciones DASD en total. Los mainframes IBM modernos utilizan cuatro dígitos hexadecimales como un número de subcanal arbitrario dentro de un subconjunto de subsistema de canal, cuya definición incluye los canales reales, las unidades de control y el dispositivo, proporcionando direccionamiento para hasta 65.536 DASD por subconjunto de subsistema de canal. En la práctica, las restricciones físicas y de diseño del canal y de los controladores limitaron el número máximo de DASD adjuntos que se pueden conectar a un sistema a una cantidad menor que la cantidad que se puede direccionar.
El conjunto de características iniciales proporcionadas por IBM con la introducción en 1964 del formato de pista CKD y los CCW asociados incluía: .
También se proporcionó un conjunto de funciones de escaneo, pero no se continuó con los subsistemas CKD futuros más allá del 2314.
Cuarenta y un CCW implementaron el conjunto de características:
Notas:
Las CCW se ejecutaban inicialmente mediante dos tipos de SCU conectados a los canales selectores de alta velocidad del sistema . La SCU 2820 [16] controlaba el tambor 2301, mientras que la SCU 2841 [12] controlaba combinaciones del almacenamiento en disco 2302 , la unidad de disco 2311 , la celda de datos 2321 y/o el almacenamiento en tambor 7320. IBM reemplazó rápidamente el 7320 por el 2303, más rápido y de mayor tamaño.
Posteriormente, el conjunto de características se implementó en la familia de controles de almacenamiento 2314 y en un accesorio integrado del Sistema 370 Modelo 25 .
El siguiente ejemplo de un programa de canal [18] lee un registro de disco identificado por un campo de clave. Se conoce la pista que contiene el registro y el valor deseado de la clave. La SCU buscará en la pista para encontrar el registro solicitado. En este ejemplo, <> indica que el programa de canal contiene la dirección de almacenamiento del campo especificado.
BUSCAR <número de cilindro/cabeza> CLAVE DE BUSQUEDA IGUAL <valor de clave> TIC *-8 Volver a la búsqueda si no es igual LEER DATOS <buffer>
El canal multiplexor de bloques se introdujo a principios de 1971 en algunos sistemas System/360 de alta gama junto con la unidad de control 2835 y el DASD 2305 asociado, [19] Este canal era entonces estándar en IBM System/370 y mainframes posteriores; en contraste con el canal Selector anterior, ofrecía mejoras de rendimiento para dispositivos de alta velocidad como DASD, incluyendo:
Se permitió que varios programas de canal [j] estuvieran activos simultáneamente en la instalación [19] en lugar de solo uno con un canal selector. La cantidad real de subcanales proporcionados depende del modelo del sistema y su configuración. [20] A veces se describe como encadenamiento de comandos desconectado; la unidad de control podría desconectarse en varios momentos durante un conjunto encadenado de CCW, por ejemplo, la desconexión para un CCW de búsqueda, liberando el canal para otro subcanal.
El control de canal y almacenamiento bajo ciertas condiciones pueden interoperar para provocar que se vuelva a intentar una CCW sin una interrupción de E/S. [19] Este procedimiento es iniciado por el control de almacenamiento y se utiliza para recuperarse de errores corregibles.
La detección de posición rotacional (RPS) se implementó con dos nuevas CCW, SET SECTOR y READ SECTOR, lo que permitió que el canal retrasara el encadenamiento de comandos hasta que el disco girara a una posición de pista angular específica. RPS permite la desconexión del canal durante la mayor parte del período de retardo rotacional y, por lo tanto, contribuye a una mayor utilización del canal. La unidad de control implementa RPS dividiendo cada pista en segmentos angulares iguales. [19]
El siguiente programa de canal de ejemplo formateará una pista con un R0 y tres registros CKD. [19]
BUSCAR <número de cilindro/cabeza> ESTABLECER MÁSCARA DE ARCHIVO <permitir operaciones de escritura> ESTABLECER SECTOR <número de sector=0> ESCRIBIR R0 <cilindro/cabeza/R0, longitud de clave=0, longitud de datos=6> ESCRIBIR CKD <cilindro/cabezal/R1, longitud de clave, longitud de datos> ESCRIBIR CKD <cilindro/cabeza/R2, longitud de clave, longitud de datos> ESCRIBIR CKD <cilindro/cabeza/R3, longitud de clave, longitud de datos>
En este ejemplo, el registro 0 cumple con los estándares de programación de IBM. Con un canal multiplexor de bloques, el canal está libre durante el tiempo que el DASD está buscando y nuevamente mientras el disco gira hasta el comienzo de la pista. Un canal selector estaría ocupado durante toda la duración de este programa de muestra.
La omisión de defectos permite escribir datos antes y después de uno o más defectos de superficie [k], lo que permite utilizar toda la pista, excepto la parte que tiene el defecto. Esto también elimina el tiempo que antes se necesitaba para buscar una pista alternativa. [21] Solo se podía omitir una cantidad limitada de defectos, por lo que las pistas alternativas seguían siendo compatibles para aquellas pistas con defectos en exceso.
La omisión de defectos se introdujo en 1974 con el 3340 conectado a través de la Unidad de control de almacenamiento 3830 Modelo 2 [21] o con accesorios integrados en sistemas pequeños. La omisión de defectos era esencialmente una característica exclusiva de la fábrica hasta 1981, cuando se lanzaron las CCW para la gestión junto con las utilidades asociadas. [22]
Esta función , que se introdujo por primera vez con el DASD 3380 en la unidad de control de almacenamiento 3880 [23] en 1981, se incluyó en los subsistemas DASD CKD posteriores. La función de selección de ruta dinámica controla el funcionamiento de los dos controladores, incluida la transferencia simultánea de datos a través de las dos rutas. Cuando el sistema operativo lo admite, cada controlador puede servir como ruta alternativa en caso de que el otro controlador no esté disponible. [24]
Se utilizan tres comandos adicionales, Establecer ID de grupo de rutas, Detectar ID de grupo de rutas y Suspender reconexión de rutas múltiples, para admitir la conexión de los modelos 3380 que tienen dos controladores al principio de una cadena. [23]
El comando Establecer ID de grupo de rutas, con la función de selección de ruta dinámica (DPS), proporciona una mayor flexibilidad en las operaciones en dispositivos reservados. Una vez que se ha establecido un grupo de rutas para un dispositivo, se puede acceder a él a través de cualquier ruta que sea miembro del grupo al que está reservado. Además, en los sistemas 370-XA que establecen el bit de modo de rutas múltiples en el byte de control de función (byte 0) en 1, las reconexiones de multiplexación de bloques se producirán en la primera ruta disponible que sea miembro del grupo sobre el que se inició el programa de canal (independientemente del estado de reserva del dispositivo). [23]
Si el controlador designado en la dirección de E/S está ocupado o deshabilitado, la selección de ruta dinámica permite establecer una ruta alternativa al dispositivo a través de otro director de almacenamiento y el otro controlador en el modelo AA. [24]
Antes de la introducción del director 3880 en 1981, los registros CKD se accedían de forma sincrónica y todas las actividades requerían que se finalizara un CCW y se iniciara el siguiente en los espacios entre los campos CKD. [13] El tamaño del espacio imponía limitaciones a la longitud del cable, pero proporcionaba un rendimiento muy alto, ya que el subsistema podía realizar cadenas complejas de CCW en tiempo real sin utilizar la memoria de la CPU ni los ciclos.
La operación no sincrónica proporcionada por el conjunto de CCW de CKD extendido ("ECKD") eliminó la restricción de tiempo de brecha. [13] Los cinco CCW de ECKD adicionales son Definir extensión, Localizar registro, Escribir datos de actualización, Escribir clave y datos de actualización y Escribir siguiente pista de CKD. [23]
En el funcionamiento no sincrónico, la transferencia de datos entre el canal y el control de almacenamiento no está sincronizada con la transferencia de datos entre el control de almacenamiento y el dispositivo. Los programas de canal se pueden ejecutar de manera que las actividades de control de canal y almacenamiento requeridas para finalizar la ejecución de un comando y avanzar al siguiente no tengan que ocurrir durante el espacio entre registros entre dos campos adyacentes. Un búfer intermedio en el control de almacenamiento permite operaciones independientes entre el canal y el dispositivo. Una ventaja importante de los ECKD es que los cables son mucho más largos; dependiendo de la aplicación, esto puede mejorar el rendimiento. [13]
Los CCW ECKD son compatibles con todos los subsistemas CKD posteriores.
Este programa de canal no sincrónico de ejemplo lee los registros R1 y R2 de la pista X'0E' en el cilindro X'007F'. Ambos registros tienen una longitud de clave de 8 y una longitud de datos de X'64' (100 10 ) bytes. [23]
Definir extensión <extent= X'007F 0000' hasta la pista X'0081 000E'> Localizar registro <cilindro = X'007F', cabezal = X'000E' Leer clave y datos <registro clave = X'001038'> Leer datos <record = X'001108'>
El almacenamiento en caché introducido por primera vez en los subsistemas DASD CKD por Memorex [25] (1978) y StorageTek [l] (1981) fue introducido posteriormente a fines de 1981 por IBM en el modelo 3880 13 para los modelos del 3380 con rutas dinámicas. [m]
La caché se gestiona dinámicamente mediante un algoritmo; a los datos de alta actividad se accede desde la caché de alto rendimiento y a los de baja actividad desde el almacenamiento DASD menos costoso. Una gran memoria en el Director, la caché, se divide en ranuras de pista que almacenan datos de las 3380 pistas. Un área más pequeña es un directorio que contiene entradas que permiten ubicar los datos en la caché. [26]
También se proporcionaron cachés en los controles de almacenamiento introducidos posteriormente.
Con el tiempo, se implementaron varios CCW de control de ruta, diagnóstico y/o recuperación de errores en uno o más controles de almacenamiento. Por ejemplo:
Los precios reducidos de CPU y memoria y las velocidades mayores de dispositivos e interfaces han anulado en cierta medida las ventajas de CKD, y IBM continúa brindándole soporte hasta la fecha porque su sistema operativo insignia z/OS continúa utilizando CCW de CKD para muchas funciones.
Originalmente, los registros CKD tenían una correspondencia uno a uno con una pista física de un dispositivo DASD; sin embargo, con el tiempo, los registros se han vuelto cada vez más virtualizados, de modo que en un mainframe IBM moderno ya no existe una correspondencia directa entre el ID de un registro CKD y un diseño físico de una pista. Un mainframe IBM construye imágenes de pista CKD en la memoria y ejecuta los programas de canal ECKD y CKD contra la imagen. Para hacer de puente entre los discos nativos de tamaño de bloque fijo y el formato de registro ECKD/CKD de longitud variable, las imágenes de pista CKD en la memoria se asignan a una serie de bloques fijos adecuados para la transferencia hacia y desde un subsistema de disco FBA. [27]
De los 83 CCW CKD implementados para los canales System/360 y System/370, 56 están emuladas en sistemas System/390 y posteriores. [27]