Contare i dati chiave - Count key data

Count key data ( CKD ) è un formato di registrazione dei dati DASD ( direct-access storage device ) introdotto nel 1964 da IBM con il suo IBM System / 360 e ancora emulato sui mainframe IBM. È un formato che si definisce automaticamente con ogni record di dati rappresentato da un'area di conteggio che identifica il record e fornisce il numero di byte in un'area chiave opzionale e un'area dati opzionale. Ciò è in contrasto con i dispositivi che utilizzano dimensioni di settore fisse o una traccia di formato separata.

Count key data (CKD) si riferisce anche al set di comandi di canale (collettivamente Channel Command Words, CCW) che vengono generati da un mainframe IBM per l'esecuzione da un sottosistema DASD che utilizza il formato di registrazione CKD. La serie iniziale di CCW CKD, introdotta nel 1964, è stata sostanzialmente migliorata e migliorata negli anni '90.

Formato traccia CKD

Image
Diagramma a blocchi del formato della traccia dei dati chiave di conteggio utilizzato sui computer mainframe IBM a partire dalla spedizione di S / 360 nel 1965

"L'inizio di una traccia viene segnalato quando viene rilevato il marker dell'indice (punto indice).… Il marker viene riconosciuto automaticamente da uno speciale dispositivo di rilevamento." Dopo l'indice di indice c'è l' indirizzo di casa , che indica la posizione di questa traccia sul disco e contiene altre informazioni di controllo interne all'unità di controllo. Una distanza di lunghezza fissa segue l'indirizzo di casa. Successivamente, ogni traccia contiene un record 0 (R0), il record descrittore della traccia, che è "progettato per consentire lo spostamento dell'intero contenuto di una traccia su tracce alternative se una parte della traccia principale diventa difettosa". Dopo R0 ci sono i blocchi di dati, separati da spazi.

Il principio dei record CKD è che, poiché le lunghezze dei blocchi di dati possono variare, ogni blocco ha un campo di conteggio associato che identifica il blocco e indica la dimensione della chiave, se utilizzata (definita dall'utente fino a 255 byte), e la dimensione del area dati, se utilizzata. Il campo conteggio contiene l'identificazione del record in formato record testata, la lunghezza della chiave e la lunghezza dei dati. La chiave può essere omessa o essere costituita da una stringa di caratteri.

Ogni record CKD è costituito da un campo conteggio, un campo chiave opzionale e un campo dati "utente" opzionale con informazioni sulla correzione / rilevamento degli errori aggiunte a ciascun campo e spazi che separano ogni campo. A causa delle lacune e di altre informazioni, lo spazio registrato è maggiore di quello richiesto solo per i dati di conteggio, i dati chiave o i dati utente. IBM fornisce una "scheda di riferimento" per ogni dispositivo, che può essere utilizzata per calcolare il numero di blocchi per traccia per varie dimensioni di blocco e per ottimizzare la dimensione del blocco per il dispositivo. Successivamente, furono scritti programmi per eseguire questi calcoli. Poiché i blocchi normalmente non vengono suddivisi tra le tracce, la specifica di una dimensione di blocco errata può sprecare fino alla metà di ciascuna traccia.

Molto spesso, la chiave viene omessa e il record viene localizzato in sequenza o mediante indirizzamento diretto del record della testata del cilindro. Se è presente, la chiave è tipicamente una copia dei primi n byte del record di dati (per i record "sbloccati", o una copia della chiave più alta nel blocco, per i record "bloccati"), ma può essere qualsiasi dato che verrà utilizzato per trovare il record, di solito utilizzando la chiave di ricerca uguale o la chiave di ricerca alta o uguale in senso antiorario. La chiave (e quindi il record) è individuabile tramite comandi hardware. Dall'introduzione di System / 360 di IBM nel 1964, quasi tutti i DASD di sistemi IBM di grandi dimensioni e intermedi hanno utilizzato il formato di registrazione dei dati della chiave di conteggio.

I vantaggi del formato record di dati chiave di conteggio sono:

  • La dimensione del record può essere abbinata esattamente alla dimensione del blocco dell'applicazione
  • I requisiti di CPU e memoria possono essere ridotti sfruttando i comandi dei tasti di ricerca.
  • I sottosistemi IBM CKD operavano inizialmente in modo sincrono con il canale del sistema e possono elaborare le informazioni negli spazi tra i vari campi, ottenendo così prestazioni più elevate evitando il trasferimento ridondante di informazioni all'host. Sia le operazioni sincrone che quelle asincrone sono supportate nei sottosistemi successivi.

I prezzi ridotti di CPU e memoria e velocità di interfaccia e dispositivo più elevate hanno in qualche modo annullato i vantaggi di CKD, e vengono mantenuti solo perché il sistema operativo z / OS di punta di IBM non supporta le interfacce orientate al settore.

In origine i record CKD avevano una corrispondenza uno a uno con una traccia fisica di un dispositivo DASD; tuttavia nel tempo i record sono diventati sempre più virtualizzati in modo tale che nei moderni mainframe IBM non c'è più una corrispondenza diretta tra l'ID di un record CKD e un layout fisico di una traccia.

Sottosistemi CKD DASD di IBM

Image
IBM S / 360 e S / 370 Operazioni di input / output per CKD DASD che mostrano il canale, l'unità di controllo della memoria e il dispositivo DASD

Programmazione

L'accesso a classi specifiche di dispositivi I / O da parte di un mainframe IBM è sotto il controllo di CCW ( Channel Command Words ), alcune delle quali sono generiche (es. Nessuna operazione) ma molte delle quali sono specifiche per il tipo di dispositivo I / O ( es. Leggi all'indietro per un'unità a nastro). Il gruppo di CCW definito da IBM per DASD rientra in cinque grandi categorie:

  • Controllo  - controllo del DASD compreso il percorso ad esso
  • Sense  - stato dei sensi del DASD compreso il percorso ad esso; alcuni comandi di rilevamento influenzano lo stato del controller e del DASD in un modo più in linea con un comando di controllo, ad esempio RISERVA, RILASCIO
  • Scrivi  : scrive le informazioni sul controller o DASD (che può essere memorizzato nel buffer o memorizzato nella cache nel percorso)
  • Cerca  : confronta le informazioni dalla CPU con le informazioni memorizzate nel DASD; il canale funziona in modalità di scrittura mentre l'unità di memorizzazione opera in modalità di lettura.
  • Leggi  : leggi le informazioni dal DASD (che può essere memorizzato nel buffer o memorizzato nella cache nel percorso)

I CCW CKD sono l'insieme specifico di CCW utilizzati per accedere ai sottosistemi DASD CKD. Ciò è in contrasto con i CCW FBA ( fixed block architecture ) utilizzati per accedere ai sottosistemi DASD di FBA.

I DASD CKD sono indirizzati come altri dispositivi di Input / Output; per System / 360 e System / 370 DASD vengono indirizzati direttamente, attraverso i canali e le unità di controllo associate (SCU o Storage Control Unit), utilizzando inizialmente tre cifre esadecimali, una per canale e due per unità di controllo e dispositivo, fornendo l'indirizzamento fino a 16 canali, per un massimo di 256 meccanismi di accesso DASD / canale e 4.096 indirizzi DASD in totale. I moderni mainframe IBM utilizzano quattro cifre esadecimali come un numero di sottocanale arbitrario all'interno di un sottoinsieme di sottosistemi di canali, la cui definizione include i canali, le unità di controllo e il dispositivo effettivi, fornendo l'indirizzamento fino a 65.536 DASD per sottosistema di sottosistema di canale. In pratica, i vincoli fisici e di progettazione del canale e dei controller limitavano il numero massimo di DASD collegati collegabili a un sistema a un numero inferiore al numero che poteva essere indirizzato.

Confezione

Inizialmente c'era un alto grado di corrispondenza tra la vista logica degli accessi DASD e l'hardware effettivo, come mostrato nell'illustrazione sopra. Tipicamente venivano apposte etichette a tre cifre per identificare l'indirizzo del canale, dell'unità di controllo e del dispositivo.

Sui sistemi di fascia bassa, il canale e l'unità di controllo erano spesso fisicamente integrati ma rimanevano logicamente separati. La New Attachment Strategy di IBM, iniziata con il 3830 Model 2 nel 1972, separava fisicamente la SCU in due entità fisiche, un director e un controller, mantenendole logicamente uguali. Il controller gestisce la formattazione della traccia CKD ed è fornito con la prima o più unità in una stringa di unità e ha un numero di modello con la lettera "A" come prefisso, una "A-Unit" (o "A-Box") come nel modello A2 3350 contenente un controller e due DASD. I DASD senza controller, ovvero le unità B, hanno un prefisso "B" nel numero di modello.

I sottosistemi e direttori CKD sono stati offerti da IBM e concorrenti compatibili con plug-in almeno fino al 1996 (da 2301 a 3390 Modello 9); in totale 22 DASD univoci offerti da IBM configurati in almeno 35 diverse configurazioni di sottosistema . Plug-compatibile offriva molti degli stessi DASD inclusi 4 sottosistemi CKD con DASD unico.

Set di funzionalità CKD iniziale

Il set di funzionalità iniziale fornito da IBM con la sua introduzione nel 1964 del formato di traccia CKD e CCW associati includeva:.

  • Traccia difettosa / alternativa  : consente a una traccia alternativa di sostituire una traccia difettosa trasparente al metodo di accesso in uso.
  • Record overflow  : i record possono superare la lunghezza massima della traccia di un DASD
  • Operazioni multitraccia  - CCW specifici possono continuare sulla successiva testata sequenziale
  •  Concatenamento di comandi : i CCW potrebbero essere concatenati insieme per costruire programmi di canale complessi. Gli intervalli in un formato di traccia CKD fornivano tempo sufficiente tra i comandi in modo che tutta l'attività del canale e della SCU necessaria per completare un comando potesse essere eseguita nell'intervallo tra i campi appropriati. Tali programmi possono cercare una grande quantità di informazioni memorizzate su un DASD, al completamento con successo restituendo solo i dati desiderati e liberando così risorse della CPU per altre attività. Questa modalità di funzionamento sincrono al divario è stata successivamente migliorata da CCW aggiuntivi che abilitavano una modalità di funzionamento non sincrona .
  • Cambio di canale  - una SCU può essere condivisa tra i canali - inizialmente è stata fornita la commutazione di due canali ed è stata estesa fino a otto canali nelle SCU successive. I canali possono essere sullo stesso o su un diverso CPUS.

È stato anche fornito un set di funzionalità di scansione, ma non è stato continuato nei futuri sottosistemi CKD oltre il 2314.

Quarantuno CCW hanno implementato il set di funzionalità:

Comandi del canale IBM S / 360 DASD
Classe di comando Comando‡ 2301 2302 2303
7320
2311 2321 2314
2319
MT
Off
MT
On †
Count Length
Controllo No Op S S S S S S 03
Cerca S S S S S S 07 6
Cerca cilindro S S S S S S 0B 6
Cerca la testa S S S S S S 1B 6
Imposta maschera file S S S S S S 1F 1
Conteggio spazio S S S S S S 0F 3
Ricalibrare S S 13 Non zero
Ristabilire S 17 Non zero
Senso Sense I / O S S S S S S 04 6
Dispositivo di rilascio O O O O O O 94 6
Prenota dispositivo O O O O O O B4 6
Ricerca Indirizzo di casa EQ S S S S S S 39 B9 4 (di solito)
Identificatore EQ S S S S S S 31 B1 5 (di solito)
Identificatore HI S S S S S S 51 D1 5 (di solito)
Identificatore EQ o HI S S S S S S 71 FI 5 (di solito)
EQ chiave S S S S S S 29 A9 Da 1 a 255
Chiave HI S S S S S S 49 C9 Da 1 a 255
Key EQ o HI S S S S S S 69 E9 Da 1 a 255
EQ chiave e dati O O O S 2D ANNO DOMINI Vedi nota 2
Chiave e dati HI O O O S 4D CD Vedi nota 2
Key & Data EQ o HI O O O S 6D ED Vedi nota 2
Continua scansione
(vedi nota 1)  
Cerca EQ O O O S 25 A5 Vedi nota 2
Cerca HI O O O S 45 C5 Vedi nota 2
Cerca HI ​​o EQ O O O S 65 E5 Vedi nota 2
Imposta Confronta O O O S 35 B5 Vedi nota 2
Imposta Confronta O O O S 75 F5 Vedi nota 2
Nessun confronto O O O S 55 D5 Vedi nota 2
Leggere Indirizzo di casa S S S S S S 1A 9A 5
Contare S S S S S S 12 92 8
Registra 0 S S S S S S 16 96 Numero di byte trasferiti
Dati S S S S S S 06 86
Dati chiave S S S S S S 0E 8E
Contare. Dati chiave S S S S S S 1E 9E
IPL S S S S S S 02
Scrivi Indirizzo di casa S S S S S S 19 5 (di solito)
Registra 0 S S S S S S 15 8 * KL * DL di RO
Conteggio, chiave e dati S S S S S S 1D 8 + KL + DL
Conteggio speciale, chiave e dati S S S S S S 01 8 + KL + DL
Dati S S S S S S 05 DL
Dati chiave S S S S S S 0D KL * DL
Cancellare S S S S S S 11 8 * KL * DL
CCW totali 41 30 39 30 40 40 40

Appunti:

O = caratteristica opzionale
S = caratteristica standard
MT = multitraccia: quando supportato, CCW continuerà ad operare sulle teste successive in sequenza fino alla fine del cilindro
‡ = TIC (Transfer In Channel) e altri comandi standard non mostrati.
† = codice uguale a MT Off tranne per quanto elencato
1. Funzione di scansione file (9 CCW) disponibile solo su 2841 per 2302, 2311 e 2321; non erano disponibili sui controller DASD successivi per DASD dopo il 2314.
2. Count è il numero di byte nell'argomento di ricerca, inclusi i byte della maschera

I CCW sono stati inizialmente eseguiti da due tipi di SCU collegati ai canali selettori ad alta velocità del sistema . La SCU 2820 controllava il tamburo 2301 mentre la SCU 2841 controllava le combinazioni di 2302 Disk Storage , 2311 Disk Drive, 2321 Data Cell e / o 7320 Drum Storage. IBM sostituì rapidamente il 7320 con il 2303 più veloce e più grande.

Successivamente, il set di funzionalità è stato implementato sulla famiglia 2314 di controlli di archiviazione e un collegamento integrato del System 370 Modello 25 .

Il seguente esempio di un programma di canale legge un record su disco identificato da un campo Chiave. La traccia contenente il record e il valore desiderato della chiave è noto. La SCU cercherà la traccia per trovare il record richiesto. In questo esempio <> indica che il programma del canale contiene l'indirizzo di memorizzazione del campo specificato.

  SEEK             <cylinder/head number>
  SEARCH KEY EQUAL <key value>
  TIC              *-8 Back to search if not equal
  READ DATA        <buffer> 
Il TIC (trasferimento nel canale) farà sì che il programma del canale salti al comando SEARCH fino a quando non si incontra un record con una chiave corrispondente (o la fine della traccia). Quando viene trovato un record con una chiave corrispondente, la SCU includerà il Modificatore di stato nello stato del canale, facendo sì che il canale salti il ​​TIC CCW; quindi il programma del canale non si ramificherà e il canale eseguirà il comando READ.

Block Multiplexer Channel Enhancements

Il canale multiplexor a blocchi è stato introdotto a partire dal 1971 su alcuni sistemi System / 360 di fascia alta insieme all'unità di controllo 2835 e 2305 DASD associato. Questo canale era quindi standard su IBM System / 370 e successivi mainframe; rispetto al canale Selector precedente offriva miglioramenti delle prestazioni per dispositivi ad alta velocità come DASD, tra cui:

Richiesta multipla

Consentito che i programmi di più canali siano attivi simultaneamente nella struttura rispetto a uno solo con un canale Selector. Il numero effettivo di sottocanali forniti dipende dal modello di sistema e dalla sua configurazione. A volte descritto come concatenamento di comandi scollegato, l'unità di controllo potrebbe disconnettersi in diversi momenti durante un insieme concatenato di CCW, ad esempio, scollegamento per un Seek CCW, liberando il canale per un altro sottocanale.

Riprova comando

Il controllo del canale e della memoria in determinate condizioni può interagire per far sì che un CCW venga ritentato senza un'interruzione di I / O. Questa procedura viene avviata dal controllo di archiviazione e utilizzata per il ripristino da errori correggibili.

Rilevamento della posizione rotazionale

Il rilevamento della posizione rotazionale (RPS) è stato implementato con due nuovi CCW, SET SECTOR e READ SECTOR ha consentito al canale di ritardare il concatenamento dei comandi fino a quando il disco non ha ruotato in una posizione angolare specificata della traccia. RPS consente la disconnessione del canale durante la maggior parte del periodo di ritardo rotazionale e contribuisce quindi a un maggiore utilizzo del canale. L'unità di controllo implementa RPS dividendo ogni traccia in segmenti angolari uguali.

Programma di canale di esempio

Il seguente programma di canale di esempio formatterà una traccia con un R0 e tre record CKD.

  SEEK             <cylinder/head number>
  SET FILE MASK    <allow write operations>
  SET SECTOR       <sector number=0>
  WRITE R0         <cylinder/head/R0, key length=0, data length=6>
  WRITE CKD        <cylinder/head/R1, key length, data length>
  WRITE CKD        <cylinder/head/R2, key length, data length>
  WRITE CKD        <cylinder/head/R3, key length, data length>  

In questo esempio il record 0 è conforme agli standard di programmazione IBM. Con un canale multiplexer a blocchi il canale è libero durante il tempo in cui il DASD sta cercando e di nuovo mentre il disco ruota all'inizio della traccia. Un canale di selezione sarebbe occupato per l'intera durata di questo programma di esempio.

Difetto che salta

Il salto dei difetti consente di scrivere i dati prima e dopo uno o più difetti superficiali, consentendo l'utilizzo di tutta una traccia eccetto quella parte che presenta il difetto. Ciò elimina anche il tempo precedentemente richiesto per cercare una traccia alternativa. È stato possibile ignorare solo un numero limitato di difetti, quindi le tracce alternative sono rimaste supportate per quelle tracce con difetti in eccesso.

L'eliminazione dei difetti è stata introdotta nel 1974 con il 3340 collegato tramite l'unità di controllo dello stoccaggio modello 2 3830 o gli accessori integrati su piccoli sistemi. Il salto dei difetti era essenzialmente una caratteristica solo di fabbrica fino al 1981, quando furono rilasciati CCW per la gestione insieme alle utilità associate.

Percorsi dinamici

Introdotta per la prima volta con il DASD 3380 sull'unità di controllo della memoria 3880 nel 1981, la funzione è stata inclusa con i successivi sottosistemi DASD CKD. La funzione di selezione dinamica del percorso controlla il funzionamento dei due controller, compreso il trasferimento simultaneo dei dati sui due percorsi. Se supportato dal sistema operativo, ogni controller può fungere da percorso alternativo nel caso in cui l'altro controller non sia disponibile.

Tre comandi aggiuntivi, Set Path Group ID, Sense Path Group ID e Suspend Multipath Reconnection, vengono utilizzati per supportare il collegamento dei modelli 3380 con due controller all'inizio di una stringa.

Il comando Set Path Group ID, con la funzione di selezione dinamica del percorso (DPS), fornisce una maggiore flessibilità nelle operazioni sui dispositivi riservati. Una volta stabilito un gruppo di percorsi per un dispositivo, è possibile accedervi tramite qualsiasi percorso che sia un membro del gruppo a cui è riservato. Inoltre, sui sistemi 370-XA che impostano il bit della modalità multipath nel byte di controllo della funzione (byte 0) su 1, le riconnessioni multiplex a blocchi si verificheranno sul primo percorso disponibile che è un membro del gruppo su cui era il programma del canale avviato (indipendentemente dallo stato di prenotazione del dispositivo).

Se il controller designato nell'indirizzo I / O è occupato o disabilitato, la selezione del percorso dinamico consente di stabilire un percorso alternativo al dispositivo tramite un altro direttore di archiviazione e l'altro controller nel modello AA.

Operazione non sincrona

Prima dell'introduzione del direttore 3880 nel 1981, si accedeva ai record CKD in modo sincrono, tutte le attività richiedevano la fine di un CCW e l'inizio del successivo negli spazi tra i campi CKD. La dimensione del gap poneva limitazioni sulla lunghezza del cavo, ma forniva prestazioni molto elevate poiché catene complesse di CCW potevano essere eseguite dal sottosistema in tempo reale senza l'uso di memoria o cicli della CPU.

Il funzionamento non sincrono fornito dall'insieme di CCW Extended CKD ("ECKD") ha rimosso il vincolo temporale dell'intervallo. I cinque CCW ECKD aggiuntivi sono Define Extent, Locate Record, Write Update Data, Write Update Key and Data e Write CKD Next Track.

Nel funzionamento non sincrono, il trasferimento di dati tra il canale e il controllo della memoria non è sincronizzato con il trasferimento dei dati tra il controllo della memoria e il dispositivo. I programmi di canale possono essere eseguiti in modo tale che le attività di controllo del canale e della memoria richieste per terminare l'esecuzione di un comando e avanzare al successivo non debbano verificarsi durante l'intervallo tra le registrazioni tra due campi adiacenti. Un buffer intermedio nel controllo della memorizzazione consente operazioni indipendenti tra il canale e il dispositivo. Uno dei principali vantaggi degli ECKD sono i cavi molto più lunghi; a seconda dell'applicazione può migliorare le prestazioni.

Gli ECKD CCW sono supportati su tutti i successivi sottosistemi CKD.

Questo programma di canale non sincrono di esempio legge i record R1 e R2 dalla traccia X'0E 'nel cilindro X'007F'. Entrambi i record hanno una lunghezza della chiave di 8 e una lunghezza dei dati di X'64 '(100 10 ) byte.

  Define Extent       <extent= X'007F 0000' through track X'0081 000E'>
  Locate Record       <cylinder = X'007F', head = X'000E'
  Read Key and Data   <key record = X'001038'>
  Read Data           <record = X'001108'>

Caching

Il caching introdotto per la prima volta nei sottosistemi DASD CKD da Memorex (1978) e StorageTek (1981) è stato successivamente introdotto alla fine del 1981 da IBM sul 3880 Model 13 per i modelli del 3380 con pathing dinamico.

La cache è gestita dinamicamente da un algoritmo; ai dati ad alta attività si accede dalla cache ad alte prestazioni e ai dati a bassa attività si accede dallo storage DASD meno costoso. Una grande memoria nel Director, la cache, è suddivisa in slot di traccia che memorizzano i dati dalle 3380 tracce. Un'area più piccola è una directory che contiene voci che consentono di individuare i dati nella cache.

Le cache sono state fornite anche sui controlli di archiviazione introdotti successivamente.

Altre estensioni

Nel tempo una serie di CCW di controllo del percorso, diagnostica e / o ripristino degli errori è stata implementata su uno o più controlli di archiviazione. Per esempio:

  • La riserva incondizionata consentiva il rilascio di un dispositivo riservato a un altro canale e la prenotazione del dispositivo al canale che ha emesso il comando.
  • La lettura di più dati chiave di conteggio potrebbe leggere in modo più efficiente le tracce complete consentendo backup più efficienti.

Oltre il sistema / 370

I prezzi ridotti della CPU e della memoria e le velocità più elevate dei dispositivi e dell'interfaccia hanno in qualche modo annullato i vantaggi di CKD e il supporto continua da parte di IBM fino ad oggi perché il suo sistema operativo di punta z / OS continua a utilizzare CCW CKD per molte funzioni.

In origine i record CKD avevano una corrispondenza uno a uno con una traccia fisica di un dispositivo DASD; tuttavia nel tempo i record sono diventati sempre più virtualizzati in modo tale che in un moderno mainframe IBM non c'è più una corrispondenza diretta tra l'ID di un record CKD e un layout fisico di una traccia. Un mainframe IBM costruisce le immagini della traccia CKD in memoria ed esegue i programmi di canale ECKD e CKD sull'immagine. Per fare da ponte tra i dischi di dimensioni a blocchi fissi nativi e il formato di registrazione ECKD / CKD a lunghezza variabile, le immagini delle tracce CKD in memoria vengono mappate su una serie di blocchi fissi adatti per il trasferimento da e verso un sottosistema di dischi FBA.

Degli 83 CCW CKD implementati per i canali System / 360 e System / 370, 56 sono emulati sui sistemi System / 390 e successivi.

Guarda anche

Appunti

Riferimenti

Ulteriore lettura