Подсчитайте ключевые данные - Count key data
Подсчет ключевых данных ( CKD ) - это формат записи данных устройства хранения с прямым доступом (DASD), представленный в 1964 году компанией IBM с ее IBM System / 360 и все еще эмулируемый на мэйнфреймах IBM. Это самоопределяющийся формат, в котором каждая запись данных представлена областью подсчета, которая идентифицирует запись и предоставляет количество байтов в необязательной области ключа и необязательной области данных. В этом отличие от устройств, использующих фиксированный размер сектора или дорожку отдельного формата.
Данные ключа подсчета (CKD) также относятся к набору команд канала (вместе они составляют командные слова канала, CCW), которые генерируются мэйнфреймом IBM для выполнения подсистемой DASD, использующей формат записи CKD. Первоначальный набор CKD CCW, представленный в 1964 году, был существенно расширен и улучшен в 1990-е годы.
Формат трека CKD
«Начало трека сигнализируется при обнаружении индексного маркера (индексной точки).… Маркер автоматически распознается специальным датчиком». За индексным маркером следует домашний адрес , который указывает расположение этой дорожки на диске и содержит другую управляющую информацию, внутреннюю для блока управления. После домашнего адреса следует разрыв фиксированной длины . Затем каждая дорожка содержит запись 0 (R0), запись дескриптора дорожки, которая «предназначена для того, чтобы все содержимое дорожки могло быть перемещено на альтернативные дорожки, если часть первичной дорожки становится дефектной». После R0 идут блоки данных, разделенные пробелами.
Принцип записи CKD заключается в том, что, поскольку длина блока данных может варьироваться, каждый блок имеет связанное поле счетчика, которое идентифицирует блок и указывает размер ключа, если он используется (определяемый пользователем до 255 байт), и размер область данных, если используется. Поле счетчика содержит идентификацию записи в формате записи головки блока цилиндров, длину ключа и длину данных. Ключ может быть опущен или состоять из строки символов.
Каждая запись CKD состоит из поля счетчика, необязательного ключевого поля и необязательного поля «пользовательских» данных с информацией об исправлении / обнаружении ошибок, добавленной к каждому полю, и пробелов, разделяющих каждое поле. Из-за пропусков и другой информации записанное пространство больше, чем требуется только для данных подсчета, ключевых данных или пользовательских данных. IBM предоставляет «эталонную карту» для каждого устройства, которую можно использовать для вычисления количества блоков на дорожку для различных размеров блоков, а также для оптимизации размера блока для устройства. Позже для этих расчетов были написаны программы. Поскольку блоки обычно не разделяются между дорожками, указание неправильного размера блока может привести к потере до половины каждой дорожки.
Чаще всего ключ опускается, и запись размещается последовательно или путем прямой адресации записи головки блока цилиндров. Если он присутствует, ключ обычно является копией первых n байтов записи данных (для «разблокированных» записей или копией самого высокого ключа в блоке для «заблокированных» записей), но может быть любыми данными который будет использоваться для поиска записи, обычно с использованием ключа поиска равно или ключа поиска высокого или равно против часовой стрелки. Ключ (и, следовательно, запись) можно найти с помощью аппаратных команд. С момента введения System / 360 компании IBM в 1964 году, почти все IBM большие и промежуточные системы устройств DASD использовали счета ключевой формат записи данных.
Преимуществами формата записи данных счетного ключа являются:
- Размер записи может быть точно согласован с размером блока приложения
- Требования к процессору и памяти можно снизить, используя команды с ключом поиска.
- Подсистемы IBM CKD изначально работали синхронно с системным каналом и могут обрабатывать информацию в промежутках между различными полями, тем самым достигая более высокой производительности, избегая избыточной передачи информации на хост. И синхронные, и асинхронные операции поддерживаются в более поздних подсистемах.
Снижение цен на ЦП и память, а также более высокие скорости устройств и интерфейсов в некоторой степени свели на нет преимущества CKD, и они сохраняются только потому, что флагманская операционная система IBM z / OS не поддерживает секторно-ориентированные интерфейсы.
Первоначально записи CKD имели однозначное соответствие физической дорожке устройства DASD; однако со временем записи становятся все более и более виртуализированными, так что в современных мэйнфреймах IBM больше нет прямого соответствия между идентификатором записи CKD и физическим расположением дорожки.
Подсистемы IBM CKD DASD
Программирование
Доступ к определенным классам устройств ввода-вывода со стороны мэйнфрейма IBM находится под управлением командных слов канала (CCW), некоторые из которых являются общими (например, нет операции), но многие из которых относятся к типу устройства ввода-вывода ( например, «Читать в обратном направлении» для стримера). Группа CCW, определенная IBM для DASD, делится на пять широких категорий:
- Контроль - контроль DASD, включая путь к нему
- Sense - определение статуса DASD, включая путь к нему; некоторые управляющие команды влияют на состояние контроллера и DASD способом, более соответствующим управляющей команде, например, RESERVE, RELEASE
- Запись - запись информации в контроллер или DASD (которая может быть буферизована или кэширована в пути)
- Поиск - сравнение информации от CPU с информацией, хранящейся в DASD; Канал работает в режиме записи, в то время как блок памяти работает в режиме чтения.
- Чтение - чтение информации из DASD (которая может быть буферизована или кэширована в пути)
CKD CCW - это особый набор CCW, используемый для доступа к подсистемам CKD DASD. Это отличается от CCW с фиксированной блочной архитектурой (FBA), которые используются для доступа к подсистемам FBA DASD.
CKD DASD адресуются как другие устройства ввода / вывода; для System / 360 и System / 370 DASD адресуются напрямую, через каналы и связанные с ними блоки управления (SCU или Storage Control Unit), первоначально с использованием трех шестнадцатеричных цифр, одной для канала и двух для блока управления и устройства, обеспечивая адресацию до 16 каналов, до 256 механизмов доступа DASD на канал и всего 4096 адресов DASD. Современные мэйнфреймы IBM используют четыре шестнадцатеричных цифры в качестве произвольного номера подканала в подсистеме канальной подсистемы, определение которой включает фактические каналы, блоки управления и устройство, обеспечивая адресацию до 65 536 DASD на каждую подсистему подсистемы канала. На практике физические и конструктивные ограничения канала и контроллеров ограничивают максимальное количество подключенных DASD, подключаемых к системе, меньшим количеством, чем количество, которое можно адресовать.
Упаковка
Первоначально существовала высокая степень соответствия между логическим представлением доступа к DASD и реальным оборудованием, как показано на иллюстрации выше. Для идентификации адреса канала, блока управления и устройства обычно прикреплялись трехзначные метки.
В младших системах канал и блок управления часто были физически интегрированы, но оставались логически разделенными. Новая стратегия присоединения IBM, начатая с модели 3830 Model 2 в 1972 году, физически разделила SCU на два физических объекта, директора и контроллера, сохранив их логически одинаковыми. Контроллер обрабатывает форматирование дорожки CKD и упакован с первым диском или дисками в цепочке дисков и имеет номер модели с буквой «A» в качестве префикса, «A-Unit» (или «A-Box») как в модели 3350 A2, содержащей контроллер и два DASD. DASD без контроллера, то есть блоки B, имеют префикс "B" в номере модели.
Подсистемы и устройства управления CKD предлагались IBM и поддерживали совместимые конкуренты до 1996 года (с 2301 по 3390 Model 9); всего 22 уникальных DASD, предлагаемых IBM, сконфигурированных как минимум в 35 различных конфигурациях подсистем . Совместимость с плагинами предлагала многие из тех же DASD, включая 4 подсистемы CKD с уникальным DASD.
Первоначальный набор функций ХБП
Первоначальный набор функций, предоставленный IBM с ее введением в 1964 году формата дорожек CKD и связанных CCW, включал:.
- Дефектный / альтернативный трек - включает альтернативный трек для замены дефектного трека, прозрачного для используемого метода доступа.
- Переполнение записи - записи могут превышать максимальную длину трека DASD
- Многодорожечные операции - определенные CCW могут продолжаться на следующей последовательной головке
- Командная цепочка - CCW могут быть объединены в цепочку для создания сложных программ канала. Промежутки в формате дорожки CKD обеспечивали достаточное время между командами, так что все действия канала и SCU, необходимые для выполнения команды, могли быть выполнены в промежутке между соответствующими полями. Такие программы могут искать большой объем информации, хранящейся на DASD, после успешного завершения возвращая только желаемые данные и тем самым освобождая ресурсы ЦП для другой деятельности. Этот режим работы, синхронный с зазором, позже был расширен дополнительными CCW, позволяющими работать в несинхронном режиме .
- Переключение каналов - SCU может использоваться совместно между каналами - изначально было предусмотрено двухканальное переключение, а в более поздних SCU оно было расширено до восьми каналов. Каналы могут быть на одном или разных CPUS.
Набор функций сканирования также был предоставлен, но не продолжен в будущих подсистемах CKD, помимо 2314.
Сорок одна CCW реализовала набор функций:
| Командный класс | Команда ‡ | 2301 | 2302 | 2303 7320 |
2311 | 2321 | 2314 2319 |
MT Выкл. |
MT Вкл † |
Длина счета |
|---|---|---|---|---|---|---|---|---|---|---|
| Контроль | Нет Op | S | S | S | S | S | S | 03 | ||
| Стремиться | S | S | S | S | S | S | 07 | 6 | ||
| Искать цилиндр | S | S | S | S | S | S | 0B | 6 | ||
| Искать голову | S | S | S | S | S | S | 1B | 6 | ||
| Установить маску файла | S | S | S | S | S | S | 1F | 1 | ||
| Количество мест | S | S | S | S | S | S | 0F | 3 | ||
| Перекалибровать | S | S | 13 | Не ноль | ||||||
| Восстановить | S | 17 | Не ноль | |||||||
| Смысл | Смысловой ввод / вывод | S | S | S | S | S | S | 04 | 6 | |
| Выпуск устройства | О | О | О | О | О | О | 94 | 6 | ||
| Резервное устройство | О | О | О | О | О | О | B4 | 6 | ||
| Поиск | EQ домашнего адреса | S | S | S | S | S | S | 39 | B9 | 4 (обычно) |
| Идентификатор EQ | S | S | S | S | S | S | 31 год | B1 | 5 (обычно) | |
| Идентификатор HI | S | S | S | S | S | S | 51 | D1 | 5 (обычно) | |
| Идентификатор EQ или HI | S | S | S | S | S | S | 71 | FI | 5 (обычно) | |
| Ключевой эквалайзер | S | S | S | S | S | S | 29 | A9 | От 1 до 255 | |
| Ключ HI | S | S | S | S | S | S | 49 | C9 | От 1 до 255 | |
| Key EQ или HI | S | S | S | S | S | S | 69 | E9 | От 1 до 255 | |
| Ключ и данные EQ | О | О | О | S | 2D | ОБЪЯВЛЕНИЕ | См. Примечание 2 | |||
| Ключ и данные HI | О | О | О | S | 4D | CD | См. Примечание 2 | |||
| Key & Data EQ или HI | О | О | О | S | 6D | ED | См. Примечание 2 | |||
| Продолжить сканирование (см. Примечание 1) |
Поиск EQ | О | О | О | S | 25 | A5 | См. Примечание 2 | ||
| Поиск HI | О | О | О | S | 45 | C5 | См. Примечание 2 | |||
| Поиск HI или EQ | О | О | О | S | 65 | E5 | См. Примечание 2 | |||
| Установить сравнение | О | О | О | S | 35 год | B5 | См. Примечание 2 | |||
| Установить сравнение | О | О | О | S | 75 | F5 | См. Примечание 2 | |||
| Нет сравнения | О | О | О | S | 55 | D5 | См. Примечание 2 | |||
| Читать | Домашний адрес | S | S | S | S | S | S | 1А | 9А | 5 |
| Считать | S | S | S | S | S | S | 12 | 92 | 8 | |
| Запись 0 | S | S | S | S | S | S | 16 | 96 | Количество переданных байтов | |
| Данные | S | S | S | S | S | S | 06 | 86 | ||
| Ключевые данные | S | S | S | S | S | S | 0E | 8E | ||
| Граф. Ключевые данные | S | S | S | S | S | S | 1E | 9E | ||
| IPL | S | S | S | S | S | S | 02 | |||
| Написать | Домашний адрес | S | S | S | S | S | S | 19 | 5 (обычно) | |
| Запись 0 | S | S | S | S | S | S | 15 | 8 * КЛ * ДЛ РО | ||
| Счетчик, ключ и данные | S | S | S | S | S | S | 1D | 8 + KL + DL | ||
| Специальный счетчик, ключ и данные | S | S | S | S | S | S | 01 | 8 + KL + DL | ||
| Данные | S | S | S | S | S | S | 05 | DL | ||
| Ключевые данные | S | S | S | S | S | S | 0D | KL * DL | ||
| Стереть | S | S | S | S | S | S | 11 | 8 * КЛ * ДЛ | ||
| Всего CCW | 41 год | 30 | 39 | 30 | 40 | 40 | 40 |
Ноты:
- O = дополнительная функция
- S = стандартная функция
- MT = многодорожечный: при поддержке против часовой стрелки будет продолжать работать на следующих головках в последовательности до конца цилиндра
- ‡ = TIC (Transfer In Channel) и другие стандартные команды не показаны.
- † = код такой же, как MT Off, за исключением перечисленных
- 1. Функция сканирования файлов (9 против часовой стрелки) доступна только на 2841 для 2302, 2311 и 2321; они не были доступны на последующих контроллерах DASD для DASD после 2314 года.
- 2. Счетчик - это количество байтов в аргументе поиска, включая байты маски.
Первоначально CCW выполнялись двумя типами SCU, подключенными к высокоскоростным селекторным каналам системы . 2820 SCU контролировала 2301 Drum в то время как 2841 SCU контролируемые комбинации в 2302 Disk Storage , 2311 Disk Drive, 2321 Cell данных и / или 7320 Drum Storage. IBM быстро заменила 7320 более быстрым и большим 2303.
Впоследствии набор функций был реализован в семействе элементов управления хранилищем 2314 и интегрированном приспособлении System 370 Model 25 .
В следующем примере канальной программы считывается запись с диска, идентифицированная полем Key. Трек, содержащий запись и желаемое значение ключа, известен. SCU выполнит поиск трека, чтобы найти запрошенную запись. В этом примере <> указывают, что программа канала содержит адрес хранения указанного поля.
SEEK <cylinder/head number> SEARCH KEY EQUAL <key value> TIC *-8 Back to search if not equal READ DATA <buffer>
- TIC (передача в канале) заставит программу канала перейти к команде SEARCH, пока не встретится запись с совпадающим ключом (или конец дорожки). Когда будет найдена запись с совпадающим ключом, SCU включит модификатор состояния в статус канала, заставляя канал пропускать TIC CCW; таким образом, программа канала не будет разветвляться, и канал выполнит команду READ.
Улучшения каналов блочного мультиплексора
Канал блочного мультиплексора был введен в 1971 году в некоторых высокопроизводительных системах System / 360 вместе с блоком управления 2835 и связанным с ним 2305 DASD. Этот канал был тогда стандартным для IBM System / 370 и последующих мэйнфреймов; по сравнению с предыдущим каналом Selector он предлагал улучшения производительности для высокоскоростных устройств, таких как DASD, в том числе:
Множественный запрос
Разрешено одновременное использование нескольких программ каналов на объекте, в отличие от только одной программы с селекторным каналом. Фактическое количество предоставляемых подканалов зависит от модели системы и ее конфигурации. Иногда описываемое как объединение команд с отключением, блок управления может отключаться в разное время в течение связанного набора CCW, например, отключение для Seek CCW, освобождая канал для другого подканала.
Повторить попытку
Управление каналом и хранилищем при определенных условиях может взаимодействовать, чтобы вызвать повторную попытку CCW без прерывания ввода-вывода. Эта процедура инициируется системой управления хранилищем и используется для восстановления после исправимых ошибок.
Определение вращательного положения
Определение положения вращения (RPS) было реализовано с помощью двух новых CCW, SET SECTOR и READ SECTOR, позволяющих каналу задерживать цепочку команд до тех пор, пока диск не повернется в заданное угловое положение трека. RPS позволяет отключать канал в течение большей части периода задержки вращения и, таким образом, способствует увеличению использования канала. Блок управления реализует RPS, разделяя каждую дорожку на равные угловые сегменты.
Пример программы канала
Следующий пример программы канала отформатирует дорожку с R0 и тремя записями 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>
В этом примере Запись 0 соответствует стандартам программирования IBM. С каналом блочного мультиплексора канал свободен во время поиска DASD и снова, пока диск вращается к началу дорожки. Селекторный канал будет занят на всем протяжении этой демонстрационной программы.
Пропуск дефекта
Пропуск дефектов позволяет записывать данные до и после одного или нескольких дефектов поверхности, что позволяет использовать всю дорожку, кроме той части, которая имеет дефект. Это также устраняет время, которое раньше требовалось для поиска альтернативного пути. Можно было пропустить только ограниченное количество дефектов, поэтому для треков с избыточными дефектами оставалась поддержка альтернативных дорожек.
Пропуск дефектов был введен в 1974 году с 3340, подключенным через блок управления хранилищем 3830 Model 2 или встроенными приспособлениями на небольших системах. Пропуск дефектов был в основном заводской функцией до 1981 года, когда были выпущены CCW для управления вместе с соответствующими утилитами.
Динамические пути
Впервые представленная с 3380 DASD на блоке управления хранилищем 3880 в 1981 году, эта функция была включена в более поздние подсистемы CKD DASD. Функция динамического выбора пути контролирует работу двух контроллеров, включая одновременную передачу данных по двум путям. При поддержке операционной системы каждый контроллер может служить альтернативным путем в случае, если другой контроллер недоступен.
Три дополнительные команды, Set Path Group ID, Sense Path Group ID и Suspend Multipath Reconnection, используются для поддержки подключения моделей 3380, имеющих два контроллера в начале строки.
Команда Set Path Group ID с функцией динамического выбора пути (DPS) обеспечивает большую гибкость в операциях с зарезервированными устройствами. После того, как группа путей для устройства создана, к ней можно получить доступ по любому пути, который является членом группы, для которой оно зарезервировано. Кроме того, в системах 370-XA, которые устанавливают бит режима многолучевого распространения в байте управления функцией (байт 0) в 1, переподключение блочного мультиплексирования будет происходить на первом доступном пути, который является членом группы, по которой была выполнена программа канала. инициирован (независимо от состояния резервирования устройства).
Если контроллер, указанный в адресе ввода-вывода, занят или отключен, выбор динамического пути позволяет установить альтернативный путь к устройству через другой директор хранилища и другой контроллер в модели AA.
Несинхронная работа
До введения в 1981 году директора 3880, записи CKD были синхронно доступны, все действия требовали, чтобы одна CCW была завершена, а следующая инициирована в промежутках между полями CKD. Размер зазора накладывает ограничения на длину кабеля, но обеспечивает очень высокую производительность, поскольку сложные цепочки CCW могут выполняться подсистемой в реальном времени без использования памяти ЦП или циклов.
Несинхронная операция, обеспечиваемая расширенным набором CCW CKD («ECKD»), устраняет ограничение по времени перерыва. Пять дополнительных CCW ECKD - это определить экстент, найти запись, записать данные обновления, записать ключ и данные обновления и записать следующую дорожку CKD.
При несинхронной работе передача данных между каналом и управлением хранилищем не синхронизирована с передачей данных между элементом управления хранилищем и устройством. Программы канала могут выполняться так, что действия по управлению каналом и хранилищем, необходимые для завершения выполнения одной команды и перехода к следующей, не должны происходить во время промежутка между записями между двумя соседними полями. Промежуточный буфер в системе управления хранилищем позволяет выполнять независимые операции между каналом и устройством. Основное преимущество ECKD - это гораздо более длинные кабели; в зависимости от приложения это может улучшить производительность.
CCW ECKD поддерживаются во всех последующих подсистемах CKD.
В этом примере программа несинхронного канала считывает записи R1 и R2 с дорожки X'0E 'в цилиндре X'007F'. Обе записи имеют длину ключа 8 и длину данных X'64 '(100 10 ) байтов.
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'>
Кеширование
Кэширование, впервые представленное в подсистемах DASD CKD компанией Memorex (1978) и StorageTek (1981), было впоследствии введено в конце 1981 года компанией IBM на модели 3880 Model 13 для моделей 3380 с динамической маршрутизацией.
Кэш динамически управляется алгоритмом; доступ к данным с высокой активностью осуществляется из высокопроизводительного кэша, а к данным с низкой активностью - из менее дорогого хранилища DASD. Большая память в Директоре, кэш, разделена на слоты треков, в которых хранятся данные с 3380 треков. Меньшая область - это каталог, содержащий записи, которые позволяют размещать данные в кэше.
Кеши были также предоставлены для введенных впоследствии средств управления хранением.
Прочие расширения
Со временем ряд CCW управления маршрутом, диагностики и / или исправления ошибок был реализован на одном или нескольких элементах управления хранилищем. Например:
- Безусловное резервирование позволило освободить устройство, зарезервированное для другого канала, и зарезервировать устройство для канала, выдающего команду.
- Чтение данных ключа с несколькими счетчиками может более эффективно читать полные дорожки, что обеспечивает более эффективное резервное копирование.
За пределами системы / 370
Снижение цен на ЦП и память, а также более высокая скорость устройств и интерфейсов в некоторой степени свели на нет преимущества CKD, и поддержка IBM продолжается до сих пор, поскольку ее флагманская операционная система z / OS продолжает использовать CKD CCW для многих функций.
Первоначально записи CKD имели однозначное соответствие физической дорожке устройства DASD; однако со временем записи становились все более и более виртуализированными, так что в современном мэйнфрейме IBM больше нет прямого соответствия между идентификатором записи CKD и физическим расположением дорожки. Мэйнфрейм IBM создает образы дорожек CKD в памяти и выполняет программы каналов ECKD и CKD для изображения. Чтобы соединить собственные диски с фиксированным размером блока и формат записи ECKD / CKD переменной длины, образы дорожек CKD в памяти отображаются на серию фиксированных блоков, подходящих для передачи в дисковую подсистему FBA и из нее.
Из 83 CKD CCW, реализованных для каналов System / 360 и System / 370, 56 эмулируются в системах System / 390 и более поздних версиях.
Смотрите также
- Блок (хранилище данных)
- Набор данных (мэйнфрейм IBM)
- Архитектура с фиксированным блоком (FBA)
- Запись (информатика)
- Трек (диск)
- Объемная таблица содержания (VTOC)
Ноты
Рекомендации
дальнейшее чтение
- Отдел обработки данных IBM (февраль 1974 г.). Введение в устройства хранения с прямым доступом IBM и методы организации (PDF) (десятое изд.). Уайт-Плейнс: машины международного бизнеса. OCLC 8063006 . GC20-1649-9 . Проверено 6 августа 2014 .
- Разработка архитектуры 360/370 - взгляд простого человека П. Дж. Гриббин, 10 февраля 1989 г., главы 8–10.