PT94055A - Memoria principal fisica unica compartilhada por dois ou mais processadores que execytam sistemas operativos respectivos - Google Patents
Memoria principal fisica unica compartilhada por dois ou mais processadores que execytam sistemas operativos respectivos Download PDFInfo
- Publication number
- PT94055A PT94055A PT94055A PT9405590A PT94055A PT 94055 A PT94055 A PT 94055A PT 94055 A PT94055 A PT 94055A PT 9405590 A PT9405590 A PT 9405590A PT 94055 A PT94055 A PT 94055A
- Authority
- PT
- Portugal
- Prior art keywords
- memory
- data
- bus
- quot
- main memory
- Prior art date
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
- G06F9/5016—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/16—Error detection or correction of the data by redundancy in hardware
- G06F11/1629—Error detection by comparing the output of redundant processing systems
- G06F11/1641—Error detection by comparing the output of redundant processing systems where the comparison is not performed by the redundant processing components
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/16—Error detection or correction of the data by redundancy in hardware
- G06F11/1658—Data re-synchronization of a redundant component, or initial sync of replacement, additional or spare unit
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/16—Error detection or correction of the data by redundancy in hardware
- G06F11/1675—Temporal synchronisation or re-synchronisation of redundant processing components
- G06F11/1679—Temporal synchronisation or re-synchronisation of redundant processing components at clock signal level
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/16—Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
- G06F15/161—Computing infrastructure, e.g. computer clusters, blade chassis or hardware partitioning
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Software Systems (AREA)
- Quality & Reliability (AREA)
- Mathematical Physics (AREA)
- Hardware Redundancy (AREA)
- Multi Processors (AREA)
- Memory System (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Description
Descrição referente à patente de invenção de INTERNATIONAL BUSINESS MACHINES CORPORATION, norte--americana, (estado: New York) in dustrial e comercial, com sede em Armonk, N.Y. 10504, Estados Unidos da América, (inventores: Er-nest D. Baker, John M. Dinwiddie, Lonnie E. Grice, John M. Loffredo Kenneth R. Sanderson e Gustavo A. Suarez, residentes nos E.U.A.), para "MEMÕRIA PRINCIPAL FÍSICA ONICA COMPARTILHADA POR DOIS OU MAIS PROCESSADORES QUE EXECUTAM SISTEMAS OPERATIVOS RESPECTIVOS".
DESCRIÇÃO O presente pedido de patente relaciona--se com outros pedidos de patente do mesmo proprietário depositados no mesmo dia.
Esses outros pedidos de patente são: N. 1 NQ. de Série Título 07/353116 07/353114 07/353117 07/353111 07/353115 07/353112
Fault Tolerant Data Processor System
Inventores E.D. Baker J.M. Dinwiddie L.E. Grice J.M. Joyce J.M. Loffredo K.R. G.A. Uncoupling A Central Proces- E.D. sing Unit From Its Associated J.M. Hardware for Interaction With L.E. Data Handling Apparatus Alien J.M. To The Operating System Con- J.M. trolling Said Unit and Hartware K.R. Servicing Interruptor Requests J.M. In A Data Processing System L.E. Without Using The Services Of J.M. An Operating System K.R. Providing Additional System E.D. Characteristicss To A Data J.M. Processing System L.E. J.M. J. M. K. R.
Method And Apparatus For The E.D. Direct Transfer of Information J.M. Between Application Programs L.E. Running On Distinct Processors J.M. Without Utilizing The Services J.M.
Of One Or Both Operationg Systems K.R. Data Processing System With J.M. System Resource Management For B.J. An Associated Alien Processor L.E. J. M. K. R. G.A.
Sanderson Suarez Baker Dinwiddie Grice Joyce Loffredo Sanderson Dinwiddie Grice Loffredo Sanderson Baker Dinwiddie Grice Joyce Loffredo Sanderson Baker Dinwiddie Grice Joyce Loffredo Sanderson Dinwiddie Freeman Grice Loffredo Sanderson Suarez 2
·*^***«*——'
Fundamento da invenção O aperfeiçoamento a que se refere a pre sente invenção diz respeito a um processo e aos meios pelos quais duas unidades de processamento central (CPU), cada uma de las operando com o seu sistema operativo respectivo, compartilham uma unidade de memória principal física única, caracteriza dos por cada um dos sistemas operativos funcionar como se ele controlasse toda a memória do seu sistema configurado e como se não tivesse conhecimento do outro sistema operativo.
Introdução São conhecidos muitos sistemas de processamento de dados usando uma memória principal física, uma parte da qual é compartilhada por duas CPU. Porém, tanto quanto é conhecido, estes sistemas têm um sistema operativo usado pelas duas CPU ou têm CPU com sistemas operativos respectivos que não ignoram a existência das duas CPU e dos dois sistemas operativos, por exemplo, através das suas tabelas de configuração. Quando necessário, usa-se a arbitragem das linhas omnibus para permitir o acesso ã memória comum.
Sumário da invenção
Proporciona-se um processo e meios aper feiçoados para capturar uma secção ou zona da memória principal a partir de um primeiro sistema de processamento de dados, incluindo vim primeiro elemento de processamento, a memória prinqi pal e aparelhos de entrada/saída (1/0) operados sob controlo de um primeiro sistema operativo, para utilização por um segundo elemento de processamento que possui meios que acoplam o segundo elemento de processamento à memória principal e operando sob o controlo de um segundo sistema operativo, de uma maneira in-discernível para os dois sistemas operativos. • Numa forma de realização preferida, um 3
1«*s*»*íMnwwfçe gestor da memória no primeiro sistema operativo cria uma lista de entradas correspondentes a blocos de memória não usados, para distribuir memória aos processos. Um programa de aplicação, que é passado no modo de supervisão no primeiro elemento de pro cessamento, retira da lista um grupo de entradas correspondente a uma área contígua de memória com uma dimensão pré-determinada. Os dados de endereço correspondentes â referida área contígua da memória são transferidos para os referidos meios de acoplamento para permitir o acesso à área contígua pelo referido segundo elemento de processamento.
Durante a execução normal das instruções, é dado acesso ao segundo elemento de processamento à refe rida área de memória contígua e dá-se acesso do primeiro elemen to de processamento ã área restante da memória. Porém, a um pro grama de aplicação especial que é passado no primeiro elemento de processamento (mas não ao primeiro sistema operativo) é dado acesso à referida área de memória contígua.
Breve descrição dos desenhos
Nos desenhos anexos, as figuras repre- sentam: A fig. 1, esquematicamente, os sistemas normalizados de computadores de interligação utilizando uma linha de telecomunicações; A fig. 2, esquematicamente a interligação de processadores S/88 num ambiente que tolera avarias; A fig. 3, esquematicamente, a interliga ção de processadores S/370 com processadores S/88 na forma de realização preferida; A fig. 4, esquematicamente, um sistema S/370 acoplado a um sistema S/38 de acordo com a forma de realjL zação preferida; A fig. 5, esquematicamente, o desacopla mento de um processador S/88 para proporcionar a permuta de da-] dos entre o S/370 e o S/88 da forma de realização preferida; í As fig. 6A, 6B e 6C, esquematicamente, 4
o módulo da técnica anterior IBM System/88, vários módulos interligados por interligações de dados de alta velocidade (HSDI) e vários módulos interligados através de uma rede, num ambiente que tolera avarias, com uma imagem de sistema único; A fig. 7, esquematicamente, uma forma do módulo aperfeiçoado segundo a presente invenção que proporciona processadores S/37Q que executam programas de aplicação S/370 sob o controlo de um sistema operativo S/370, que se tornam tolerantes para avarias em virtude da maneira como os processadores estão ligados uns aos outros e a processadores S/88, âs 1/0 e à memória principal; A fig. 8, esquematicamente, com mais pormenor, a interligação de unidades S/370 e S/88 emparelhadas uma com as outras para formar uma unidade de processador e a sua ligação a uma unidade de processador idêntica cooperante pa ra o funcionamento com tolerância de avarias;
As fig. 9A e 9B, uma forma de acondicio namento de unidades S/370 e S/88 emparelhadas em dois cartões para inserção no painel traseiro de um invólucro de um sistema de processamento; A fig. 10, teoricamente, a memória prin cipal S/88 e secções dessa memória dedicadas a unidades de processador S/370 sem conhecimento por parte do sistema operativo S/88; A fig. 11, esquematicamente, certos com ponentes da forma preferida de um processador S/370 e meios que o ligam a um processador e memória S/88; A fig. 12, os componentes da fig. 11 com mais pormenor e vários componentes de uma forma de realização de um processador S/88; A fig. 13, esquematicamente, o adaptador de linhas omnibus S/370;
As fig. 14A, 14B e 15A-C, teoricamente, a distribuição de tempos e o movimento de dados através dos canais de saída do adaptador de linhas omnibus S/370; A fig. 16, esquematicamente, a interligação directa entre um processador S/370 e um S/88, com mais por 5
menor; A fig. 17, teoricamente, o fluxo de dados entre um adaptador de linhas omnibus S/370 e um controlador do DMA (acesso directo à memória) da interligação da fig. 16; A fig. 18, registadores DMAC para um dos seus quatro canais;
As fig. 19A, 19B e 19C (com a implantação da fig. 19), numa representação esquemática, a ilustração que mostra, com mais pormenor que a fig. 16, uma forma preferida da unidade de controlo das linhas omnibus que interliga um processador S/370 com um processador S/88 e a memória principal; A fig. 20, um diagrama esquemático de uma forma preferida do desacoplamento lógico do processador S/88 do seu equipamento material do sistema associado e da lõgjL ca para tratar pedidos de interrupção provenientes do processador S/370 estranho para o processador S/88; A fig. 21, teoricamente, a modificação da estrutura de interrupções do S/88 existente para um módulo que tem um certo número de processadores interligados S/370--S/88 de acordo com os ensinamentos da presente invenção;
As fig. 22, 23 e 24, diagramas de dis-tribuição de tempos de ciclos de leitura, de escrita e confirma ção de interrupção da forma preferida dos processadores S/88;
As fig. 25 e 26, diagramas de distribui^ ção de tempos para estabelecimento de sincronização por permuta de informações ("handshaking") para os canais 0,1 da linha omni bus do adaptador, durante comandos de leitura da caixa de correio ("mailbox"), comandos de selecção Q, comandos de leitura e comandos de escrita BSM; A fig. 27, uma esquema de blocos de uma forma preferida de um elemento central de processamento S/370;
As fig. 28 e 29, determinadas áreas da memória central e da memória de controlo S/370; A fig. 30, uma forma preferida das linhas omnibus de interface entre o elemento central de processamento S/370, o adaptador de I/O, o controlador da memória tempo • rãria rápida (memória "cache”), da interface de controlo da me- 6 ç^SSaeeratmw·"·»,., '•N,
l.-MflT
mória e linhas omnibus do sistema S/88 e o processador; A fig. 31, um diagrama de blocos de uma forma preferida de um controlador da memória "cache" S/370;
As fig. 32A e 32B (com a implantação na fig. 32), esquematicamente, uma forma preferida da interface de controlo da memória, com mais pormenor; A fig. 33, um diagrama de distribuição de tempos, ilustrando as fases da linha omnibus do sistema S/88 para a transferência de dados entre unidades pelas linhas omnibus; A fig. 34, um esquema parcial que mostra os registadores "data in" (de entrada de dados) de uma interface de um controlo de memória emparelhado; A fig. 35, formatos das palavras de comando e armazenamento armazenadas no FIFO (primeira entrada, primeira saída) da fig. 32B;
As fig. 36A-D comandos de armazenamento e busca provenientes do processador e adaptador S/370, que são executados na interface do controlo da memória? A fig. 37, teoricamente, a forma de rea lização preferida do sistema global segunda a presente invenção, do ponto de vista do programador;
As fig. 38, 39 e 40, esquematicamente, formas preferidas da concepção dos microcódigos para a interface S/370 e S/88, da execução do comando de I/O S/370 e da parti lha da interface entre os meios de programação EXEC 370 e o ac-tuador de I/O S/370 (isto é o microcõdigo ETIO + BCU + S/370), respectivamente;
As fig. 41A e 4lB, teoricamente, interfaces e protocolos entre os meios de programação EXEC 370 e o microcódigo S/370 e entre o microcódigo CTIO e os meios de programação EXEC 370;
As fig. 41C-H o conteúdo da memória local BCU, incluindo memórias tampão de dados, memórias tampão de filas de espera de trabalho, filas de espera, áreas de comunica ção de filas de espera e áreas de comunicação de equipamentos materiais, incluindo a lista de elos de ligação e o movimento 7
das memórias tampão de filas de espera através das filas de espera , elementos que compreendem o protocolo através do qual o microcódigo S/370 e os meios de programação EXEC 370 comunicam entre si; A fig. 42, teoricamente, o movimento das memórias tampão das filas de espera de trabalho através da lista de elos de ligação e das filas de espera, em conjunção com os protocolos entre EXEC 370, ETIO, microcódigo S/370 e o equipamento material de acoplamento S/370-S/88; A fig. 43, teoricamente, e execução de uma instrução S/370 Start I/O típica;
As fig. 44S-L, esquematicamente, os flu xos de dados de controlo para o microcódigo S/370 e EXEC 370 quando eles comunicam um com o outro para executar cada tipo de instrução S/370 I/O;
As fig. 45A-AG, informação de dados, de comandos e de estados sobre o endereço local e as linhas omni-bus de dados na BCU durante as operações de transferência de da dos dentro da BCU;
As fig. 46A-K, teoricamente, uma forma preferida do processo de emulação em disco por meio do qual o S/88 (através de BCU, ETIO e EXEC 370) armazena e busca informa ção num disco S/88 em formato S/370 em resposta a instrução S/370 I/O; A fig. 47, teoricamente, o mapa da memõ ria da fig, 10 juntamente com uma vista das entradas do mapa da memória S/88, algumas das quais são retiradas para se adaptar a uma área da memória S/370;
As fig. 48A-K, uma forma preferida da gestão das memórias virtual/física para o S/88 que podem intera gir com sub-rotinas proporcionadas de novo durante o arranque do sistema e rotinas de reconfiguração para criar áreas de memó ria S/370 no interior da memória física S/88;
As fig. 49 e 50, esquemas parciais que ilustram uma certa parte da lógica usada para sincronizar pares . de processadores S/370-S/99 e unidas associadas; e
As fig. 51 e 52, formas de realização 8
«wwtpgvggjW
'iAbntLi í‘» -1^ alternativas do aperfeiçoamento segundo a presente invenção.
Descrição da forma de realização preferida Introdução A forma de realização preferida para realizar praticamente a presente invenção compreende um sistema que tolera avarias. Os sistemas que toleram avarias tem tipicamente sido concebidos de alto a baixo para o funcionamento tole rante para as avarias. Os processadores, as memórias, os aparelhos de entrada/saída 1/0 e os sistemas operativos têm sido es-pecificamente feitos por medida para proporcionar um ambiente tolerante para as avarias. Porém, a amplitude da sua base de clientes, a maturidade dos seus sistemas operativos, o número e a extensão dos programas de utilização disponíveis não são tão grandes como os dos sistemas de unidades centrais de processamento significativamente mais antigos de vários fabricantes, tais como o sistema 370 (S/370) comercializado pela International Business Machines.
Os sistemas de processamento de dados tolerantes para as avarias actuais oferecem muitas característi cas avançadas que não estão normalmente disponíveis nos sistemas de unidades centrais de processamento tolerantes para as avarias mais antigas ou que não são suportadas pelos sistemas de unidades centrais de processamento. Algumas dessas caracte-risticas incluem: uma imagem única do sistema apresentada através de uma rede de computadores distribuída; a capacidade de processadores e controladores de I/O com fichas sob tensão (remoção e instalação de cartões com a energia ligada); detecção instantânea de erros, isolamento de avarias e remoção eléctrica para retirar de serviço componentes avariados sem interrupção da utilização do computador; unidades substituíveis pelo cliente identificadas por suporte de um serviço remoto; e reconfigure ção dinâmica resultante de avaria de componentes ou adição de dispositivos complementares ao sistema, mantendo o sistema con-tinuadamente em funcionamento. Um exemplo de tais sistemas tole 9
jjifessw: h,.a rantes para avarias é o sistema/88 (S/88) comercializado pela International Business Machines Co..
As propostas para incorporar as caracte rísticas atrás referidas no ambiente e na arquitectura S/370 consistiriam tipicamente numa importante alteração da redacção do ou dos sistemas operativos e dos programas de utilização e/ou de novos equipamentos materiais, desde a partida. Porém, a reformulação da escrita de um sistema operativo tal como VM, VSE, 1X370, etc. é considerada por muitas pessoas como uma tare fa monumental, requerendo um grande número de programadores durante um período de tempo considerável. Usualmente, leva mais de cinco anos para amadurecer um sistema operativo complexo, tal como o IBM/S370 VM ou VMS. Até agora, a maioria das catástrofes de sistemas são consequência de erros do sistema operati vo. Também são necessários vários anos para que os utilizadores criem a proficiência na utilização de um sistema operativo. In-felizmente, uma vez que um sistema operativo tenha amadurecido e tenha sido criada uma base de utilizadores ampla, não é uma tarefa simples modificar o código para introduzir novas funções, tais como a tolerância para as avarias, a imagem única do siste ma e outras análogas.
Devido às complexidades e despesas para a migração de um sistema operativo maduro para o interior de uma nova arquitectura de uma máquina, os projectistas usualmente decidirão desenvolver um novo sistema operativo que pode não ser facilmente aceite pela comunidade dos utilizadores. Pode mostrar-se ser impraticável modificar o sistema operativo amadu recido para incorporar as novas características exemplificadas pelo sistema operativo desenvolvido de novo; porém, o novo sistema operativo pode nunca desenvolver uma base substancial de utilizadores e levará muitos anos de utilização de campo antes de estarem resolvidos a maioria dos problemas.
Por conseguinte, pretende-se que o presente aperfeiçoamento proporciona um ambiente e uma arquitectura tolerante para as avarias para um sistema de processamento e um sistema operativo normalmente não tolerante para as avarias, sem uma reformulação importante da escrita do sistema operativo 10
Na forma de realização preferida, um modelo de sistema IBM S/88 é acoplado a um IBM S/370.
Um processo corrente de acoplamento de processadores e sistemas operativos diferentes ê através de um certo tipo de controlador de comunicações adicionado a cada um dos sistemas, anexando actuadores de dispositivos aos sistemas operativos e usando um certo tipo de código de comunicação, tal como SNA (Systems Network Arquitecture) ou OSI para transportar dados. Normalmente, para obter a comunicação de dados entre com putadores de nós terminais numa rede, é necessário que cada um dos nós terminais compreenda e aplique um conjunto consistente de serviços aos dados a permutar.
Para reduzir a complexidade da sua concepção, a maioria das redes são organizadas como uma série de camadas ou níveis, cada um deles construído sobre o seu predecessor. 0 número de camadas, o nome de cada camada e a função de cada camada diferem de rede para rede. Todavia, em todas as redes a finalidade de cada camada consiste em oferecer certos serviços ãs camadas mais elevadas, protegendo essas camadas dos pormenores de saber como são efectivamente realizados os serviços ofereçidos. A camada n numa máquina realiza uma conversação com a camada n numa outra máquina. As regras e convenções usadas nesta conversão são colectivamente conhecidas como o protocolo da camada n. As entidades que compreendem as camadas correspondentes nas diferentes máquinas são designadas por processos emparelhados ("peer processes"), dizendo-se então que são os processos emparelhados que comunicam utilizando o protocolo.
Na realidade, nenhum dado é directamen-te transferido da camada n numa máquina para a camada n numa ou tra máquina (excepto na camada mais baixa, ou camada física). Isto é, pode não haver qualquer acoplamento directo de programas de aplicação que operam nos sistemas distintos ou estranhos. Em vez disso, cada uma das camadas faz passar dados e informação de comando para a camada imediatamente abaixo de si, até ser atingida a camada mais baixa. Na camada mais baixa há comunicação física com a outra máquina, por oposição a comunicação virtual, usada pelas camadas mais elevadas. 11
Têm existido definições destes conjun· tos de serviços num certo número de redes diferentes, como atrás se mencionou, e mais recentemente o interesse centrou-se na criação de protocolos para facilitar a comunicação de sistemas, de fabricantes diferentes. Uma estrutura para o desenvolvimento destes protocolos é a estrutura definida pela ISO (International Standards Organization, modelo OSI (Open Systems Intercon-nect - Interligação de sistemas abertos), de sete camadas. Cada uma destas camadas neste sistema é responsável pelo fornecimento de serviços para a rede âs camadas acima da camada em questão, enquanto requisita serviços à camada situada por baixo da mesma. Os serviços proporcionados em cada camada estão bem defi nidos, de modo que podem ser aplicados consistentemente por todas as estações na rede. Afirma-se que isso permite a interliga ção de equipamentos de fabricantes diferentes. A realização prá tica dos serviços de camada para camada no interior de um nó é específica dessa realização prática e permite a diferenciação dos fabricantes na base de serviços proporcionados no interior da estação. É importante notar que toda a intenção de realizar praticamente um tal conjunto estruturado de protoco los consiste em efectuar a transferência de dados de extremo a extremo. As divisões principais dentro do modelo OSI podem compreender-se melhor se, como atrás se mencionou, compreendermos que o nõ do utilizador está interessado no fornecimento de dados provenientes do programa de aplicação da fonte para o programa de aplicação do colector. Para fornecer estes dados, os protocolos OSI actuam nos dados em cada nível para fornecer tra mas para a rede. As tramas são formadas como dados acoplados com preâmbulos correspondentes aplicados em cada nível OSI. Estas tramas são depois proporcionadas ao meio físico como um con junto de bits que são transmitidos através do meio. Depois elas sofrem um conjunto inverso de procedimentos para proporcionar os dados ao programa de aplicação na estação de recepção.
Um processo corrente para o acoplamento dos processadores distintos e dos sistemas operativos distintos * é através de um certo tipo de controlador de comunicações adicio 12 nado a cada sistema, anexando actuadores de dispositivos aos sistemas operativos e utilizando qualquer tipo de código de comunicações, tal como o SNA (Systems NetWork Architecture ou OSI (Open Systems Interconnect) para transportar os dados. A fig. 1 mostra uma interligação normalizada de dois sistemas computadores por meio de uma LAN (Local Ãrea NetWork - Rede de área local) . Em particular, está representado um sistema com a arqui-tectura IBM S/370 ligado a uma arquitectura do sistema IBM/88. Observar-se-á que em cada arquitectura um programa de aplicação opera através de uma interface com o sistema operativo para con trolar um processador e aceder a um canal de 1/0 ou a uma linha omnibus. Cada dispositivo da arquitectura tem um controlador de comunicações para permuta de dados. Para comunicar, tem de utilizar-se um protocolo em várias camadas para permitir a permuta de dados entre os programas de aplicação correspondentes.
Um processo alternativo para permutar dados seria um processo de coprocessador no qual o coprocessa-dor reside na linha omnibus do sistema, arbitra a linha omnibus do sistema e utiliza as mesmas 1/0 que o processador hospedeiro. 0 inconveniente do processo com coprocessador é a quantidade de remodelação da escrita do código necessária para suportar 1/0 não nativas (estranhas ao hospedeiro). Um outro inconveniente é que o utilizador tem de estar familiarizado com as arquitectu-ras de ambos os sistemas para fazer a comutação entre os sistemas operativos do coprocessador para o hospedeiro - um ambiente incómodo para o utilizador.
Um sistema de computador tolerante para as avarias da técnica anterior tem um módulo processador que contém uma unidade de processamento, uma unidade de memória de acesso aleatório, unidades de comando dos periféricos e uma estrutura única de linhas omnibus do módulo. A estrutura das linhas omnibus do sistema no interior de cada módulo processador inclui linhas omnibus correspondentes em duplicado, e cada unidade funcional no interior de um módulo processador tem também uma unidade correspondente em duplicado. A estrutura das linhas omnibus proporciona energia de operação âs unidades de um módulo e sinais de distribuição de tempos do sistema provenientes 13
de um relógio principal. A fig. 2 mostra, sob a forma de um diagrama funcional, a estrutura da parte da unidade do processador de um módulo processador. Utilizando processadores idênticos em parelhados montados num cartão comum de substituição e executan do operações idênticas em sincronismo, podem fazer-se comparações para detectar erros de processamento. Cada cartão tem normalmente uma unidade correspondente redundante, de estrutura idêntica. 0 sistema de computador proporciona a detecção de erros ao nível de cada unidade funcional no interior de todo o módulo do processador. Os detectores de erros seguem a evolução das operações nos equipamentos materiais no interior de cada unidade e verificam as transferências de informa ção entre unidades. A detecção de um erro faz com que o módulo do processador isole a unidade que provocou o erro e a interdite de transferir informações para outras unidades, continuando o módulo o funcionamento utilizando a unidade parceira da unida de avariada.
Ao detectar-se um erro em qualquer unidade, essa unidade i isolada e colocada fora de linha, de modo que ela não possa transferir informação incorrecta para outras unidades. A parceira da unidade agora fora de linha continua a funcionar, permitindo assim que todo o módulo continue a funcio nar. Um utilizador raramente se apercebe de uma tal detecção de um erro e da transição para o estado de fora de linha, excepto na visualização ou outra representação de um pedido de manutenção da unidade fora de linha. A disposição em cartões permite a desmontagem e a montagem fáceis. Ã unidade de memória está ainda atribaí da a tarefa de verificar as linhas omnibus do sistema. Para isso, a unidade tem controladores de paridade que ensaiam os si_ nais de endereço e ensaiam os sinais de dados na estrutura. Após a determinação de que uma das linhas omnibus está avariada, a unidade de memória sinaliza para as outras unidades do módulo para que obedeçam apenas à linha omnibus não avariada. A unidade de alimentação do módulo processador utiliza duas fontes de 14
alimentação, cada uma das quais proporciona energia de operação a apenas uma unidade em cada par de unidades emparelhadas. Ao detectar-se uma tensão de alimentação errada, todas as linhas de saída vindas da unidade afectada para a estrutura das linhas omnibus são ligadas rigidamente ao potencial de terra para impe dir que a avaria na alimentação provoque a transmissão de infor maçao errada para a estrutura de linhas omnibus. A fig. 3 mostra, sob a forma de diagrama funcional, a interligação de processadores S/370 emparelhados com processadores S/88 emparelhados, à maneira de uma estru tura tolerante para as avarias para permitir a permuta directa de dados. A semelhança com a estrutura S/88 anterior (fig. 2) é intencional mas é a única interligação por meio quer dos equipa mentos físicos, quer pelos meios de programação que estabelece a operação da forma de realização preferida. Observar-se-ã que os processadores S/370 estão acoplados a uma lógica de controlo da memória e a uma interface das linhas omnibus além da lógica de comparação do tipo S/88. Como será descrito, a lógica de com paração funcionará da mesma maneira que a lógica de comparação para os processadores S/88. Além disso, os processadores S/370 estão acoplados directamente e acoplados através das linhas omnibus do sistema a processadores S/88 correspondentes. Como para o processador S/88, os processadores S/370 estão acoplados aos pares, destinando-se os pares a ser montados em cartões de circuitos susceptíveis de ser substituídos no campo e ligados e desligados com a energia de alimentação ligada. As interligações pormenorizadas dos vários actuadores serão descritas com mais pormenor mais adiante. A forma de realização preferida interli^ ga vários processadores S/370 para executar as mesmas instruções S/370 simultaneamente sob o controlo de um sistema operati vo S/370. Estes são acoplados a vários processadores S/88, aparelho de 1/0 e memória principal correspondentes, executando to dos as mesmas instruções S/88, simultaneamente, sob o controlo de um sistema operativo S/88. Como será descrito mais adiante, incluem-se meios para desacoplar assincronamente os processadores S/88 dos seus aparelhos de 1/0 e da memória, para fazer pa£ 15
sar comandos de 1/0 S/370 e dados dos processadores S/370 para os processadores S/88 enquanto estes últimos estão desacoplados e para converter os comandos e os dados para uma forma utilizável pelos S/88 para processamento ulterior por processadores S/88 quando eles forem de novo acoplados aos seus aparelho de 1/0 e â memória principal. 1. Operação de um processador normalmente não tolerante para as avarias num ambiente tolerante às avarias
As características de tolerância âs ava rias atrás listadas são conseguidas numa forma de realização preferida acoplando processadores normalmente não tolerantes para as avarias, tais como processadores S/370 num primeiro par que executa as mesmas instruções S/370 simultaneamente sob o controlo dos sistemas operativos S/370. Proporcionam-se meios para comparar os estados de vários sinais num processador com os no outro processador para detectar erros instantaneamente num dos dois processadores.
Um segundo par de processadores S/370 correspondentes com meios de comparação é proporcionado para executar as mesmas instruções S/370 simultaneamente com o primeiro par e para detectar erros no segundo par. Cada processador S/370 está acoplado a um processador S/88 respectivo de um sistema tolerante às avarias tal como o sistema de processamento de dados S/88 tendo um primeiro e segundo pares de processadores parceiros, aparelhos de 1/0 S/88 e uma memória principal S/88. Cada processador S/88 tem com ele associado equipamento de meios físicos que o ligam com o aparelho de 1/0 e a memória principal.
Cada um dos processadores S/370 e S/88 respectivos tem as suas linhas omnibus dos processadores acopla dos umas âs outras por meios que incluem uma unidade de controlo das linhas omnibus. Cada unidade de controlo das linhas omni bus inclui meios que interagem com um programa de aplicação que é executado no processador S/88 respectivo para desacoplar assincronamente o processador S/88 dos seus equipamentos físicos e para o acoplar â unidade de controlo das linhas omnibus 1) pa 16
Αΐ. «ίί».*(>ν·ΑΛνί-.ο*'· ra a transferência dos comandos S/370 e dados do processador S/370 para o processador S/88 e 2) para a conversão dos comandos e dados S/370 em comandos susceptíveis de ser executados e de dados susceptíveis de ser usados pelo S/88. 0 sistema de processamento de dados S/88 processa depois os comandos e os dados sob o controlo do sistema operativo S/88. 0 sistema de processamento de dados S/88 também responde a sinais de erro em um qualquer dos pares de processadores S/370, ou no seu par de processadores S/88, respectivamente, acoplados para retirar os pares acoplados de serviço e permitir o funcionamento tolerante as avarias com os outros pares S/370, S/88 acoplados. Com esta disposição, executam-se programas S/370 pelos processadores S/370 (com a ajuda do sistema S/88 para as operações de 1/0) num ambiente tolerante ãs avarias (FT) com as características vantajosas do S/88, tudo sem alterações significativas dos sistemas operativos S/370 e S/88.
Além disso, a unidade de gestão da memó ria do S/88 é controlada de modo a atribuir áreas dedicadas na memória principal S/88 a cada um dos pares de processadores du-plexados S/370, e o sistema operativo, sem conhecimento por par te do sistema operativo S/88. Os processadores dos pares de pro cessadores S/370 duplexados são acoplados individualmente à estrutura das linhas omnibus comuns do S/88 através de um aparelho gestor da memória e da interface das linhas omnibus S/68 pa ra a busca e o armazenamento de instruções e dados S/370 a partir das respectivas áreas de memória dedicadas. A forma de realização preferida proporciona um processo e meios para a realização da tolerância das avarias no equipamento físico S/370 sem reelaboração da escrita do sistema operativo S/370 ou das aplicações S/370. Proporciona -se uma redundância completa do equipamento físico CPU S/370 e a sincronização sem que o cliente conceba um processador para suportar a tolerância de avarias. Um sistema operativo S/370 e um sistema operativo tolerante das avarias (ambos sistemas de . memória virtual) são executados simultaneamente sem uma reelabo | ração importante da escrita de qualquer dos sistemas operativos. 17 8SSBS33E1
Proporciona-se uma interface de equipamentos físicos/microcõdi-go, na forma de realização preferida, entre os pares de processadores emparelhados, executando cada processador um sistema operativo diferente. Um processador é uma máquina IBM S/370 con trolada por um microcódigo, que executa um sistema operativo IBM (por exemplo VM, VSE, 1X370, etc.. 0 segundo processador da forma de realização preferida é uma máquina tolerante das avarias do equipamento físico que executa um sistema operativo capaz de controlar um ambiente tolerante das avarias do equipamen to físico (por exemplo o sistema IBM S/88, que executa o S/88 VOS (sistema operativo virtual). A interface do equipamento físico/micro código entre os pares de processadores permite que os dois sistemas operativos coexistam num ambiente observado pelo utilizador como um ambiente de um sistema único. Os recursos de equipa mentos físicos/microcõdigo (memória, linhas omnibus do sistema I/O para disco, fita, terminais I/O de comunicações, alimentação de energia e invólucros) actuam independentemente uns dos outros, enquanto cada sistema operativo trata a sua parte do funcionamento do sistema. Utilizam-se aqui intermudavelmente os termos memória e armazenamento. O ou os processadores tolerantes das avarias (PT) e o sistema operativo gerem a detecção/localização e recuperação das avarias. O ou os processadores não tolerantes das avarias (NFT) executam as instruções nativas sem qualquer conhecimento do processador FT. O processador FT apare ce ao processador NFT como canais de I/O múltiplos. A interface equipamento físico/microcõ-digo permite que ambos os processadores da memória virtual partilhem uma memória tolerante das avarias comum. Um bloco de memória contínuo a partir da tabela de atribuição da memória do processador FT é atribuído a cada processador NFT. A caracteríjs tica da translacção dinâmica de endereços do processador NFT controla o bloco de memória que foi atribuído ao mesmo pelo pro cessador FT. O processador NFT percebe que a sua memória começa no endereço zero através da utilização de um registador de desvios. Efectua-se uma verificação de limites para manter o processador NFT nos seus limites na memória. O processador FT pode 18
aceder à memória NFT e aos blocos DMA 1/0 de dados de entrada ou de saída do espaço de endereços NFT, enquanto que o processa dor NFT está impedido de aceder à memória fora do espaço de endereços que lhe está atribuído. A dimensão da memória NFT pode ser alterada por alteração da tabela de configuração. 2. Desacoplamento de um processador do seu equipamento físico associado para apresentar comandos e dados provenientes de um outro processador a si próprio A adição de um novo dispositivo a um processador e sistema operativo existentes em geral exige a ligação de equipamentos físicos através de uma linha omnibus ou um canal, e a escrita de novos meios de programação de actuação do novo dispositivo ao sistema operativo. 0 "desacoplamento" aperfeiçoado permite que dois processadores distintos comuniquem um com o outro sem ligar um dos processadores a uma linha omnibus ou a um canal e sem arbitragem do controlo da linha omnibus. Os processadores comunicam sem modificação significativa do sistema operativo e sem a exigência do actuador tradicional do dispositivo. Pode dar-se a um utilizador a imagem de um sistema único quando se fundem dois processadores distintos e dife rentes, embora cada processador esteja a executar o seu próprio sistema operativo nativo.
Esta característica proporciona um processo e meios de combinação das características especiais apresentadas por um sistema operativo de desenvolvimento mais recen te com a visão dos utilizadores e a fiabilidade de um sistema operativo maduro. Ele faz o acoplamento dos dois sistemas (equi^ pamentos físicos e meios de programação) entre si para formar um terceiro sistema novo. Será evidente para os entendidos na matéria que, embora a forma de realização preferida apresente um sistema S/370 acoplado a um sistema S/88, poderiam acoplar--se quaisquer outros dois sistemas distintos. Os critérios da concepção desta ideia são: alteração pequena ou nula do sistema operativo maduro, de modo que ele mantenha a sua fiabilidade, e um impacto mínimo no sistema operativo desenvolvido mais recentemente, devido ao tempo de desenvolvimento do código. 19
Esta característica implica um processo de combinação de dois sistemas diferentes, cada um deles com as suas características para obter um terceiro sistema com caracte rísticas de ambos. Uma forma preferida do processo exige uma ló gica de acoplamento entre os sistemas que funcione preponderantemente como um controlador de acesso directo à memória (DMAC). 0 objectivo principal desta característica é o de proporcionar um programa de aplicação que passa num processador tolerante das avarias (por exemplo o S/88, na forma de realização preferi^ da) e assente no sistema operativo tolerante das avarias, um processo de obtenção de dados e comandos provenientes de um pro cessador estranho (por exemplo o S/370 na forma de realização preferida) e o seu sistema operativo. Existem em qualquer dos processadores mecanismos de defesa tanto do equipamento físico como dos meios de programação, para impedir a intrusão (isto é, um supervisor relativamente ao estado do utilizador, verificação do mapa da memória, etc.). Tipicamente, os sistemas operati vos tendem a controlar todos os recursos do sistema, tais como interrupções, canais DMA, e dispositivos de 1/0 e controladores. Por conseguinte, acoplar duas arquitecturas diferentes e transferir comandos e dados entre estas máquinas sem ter projectado esta função desde a base é por muitos considerada uma tarefa mo numental e/ou impraticável. A fig. 4 representa esquematicamente um processador S/370 acoplado a um processador S/88 no ambiente da forma de realização preferida. Em contraste com o processador S/370 representado na fig. 1, a memória foi substituída por uma lógica de interface da linha omnibus S/88 e o processador de ca nais S/370 foi substituído por um adaptador de linhas omnibus e uma unidade de controlo da linha omnibus. Dã-se particular aten ção à interligação entre a unidade de controlo da linha bus S/370 e o processador S/88, representada por uma linha dupla de traços e dois pontos.
Esta característica implica a ligação da lógica de acoplamento dos processadores à linha omnibus de endereços virtuais do processador tolerante das avarias S/88, bem como â linha omnibus de dados, â linha omnibus de controlo 20 >*»*ίνη.··ΉMsíw,. ou ao canal de controlo, visto que estão ligados mais dispositi vos. A linha de transmissão de impulsos que indica que um endereço válido está na linha omnibus de endereços virtuais do processador tolerante das avarias é activada alguns nanossegundos depois de serem activados os sinais de endereço. A lógica de acoplamento compreende o adaptador de linhas omnibus e a unidade de controlo das linhas omnibus determina se uma faixa pré-se leccionada de endereços é apresentada por um programa de aplica ção antes de aparecer o sinal na linha de transmissão de impulsos referida. Se for detectada esta faixa de endereços, o sinal de impulsos do endereço é bloqueado e impedido de ir para os equipamentos físicos do processador tolerante de avarias S/88. Este sinal em falta impede que o equipamento físico e o sistema operativo tolerante de avarias tome conhecimento de um ciclo da máquina. A lógica de verificação tolerante de avarias no equipa mento físico é isolada durante este ciclo e é omitida qualquer actividade que ocorra durante esse tempo. Toda a lógica de atri buição de posições de endereços virtuais na memória "cache" e processadores em vírgula flutuante nas linhas omnibus do procejs sador deixarão de reconhecer que se verificou um ciclo da máqui na. Isto é, são "congeladas" todas as funções da CPU do S/88, aguardando a asserção do sinal ADRESS STROBE pelo processador S/88.
Este sinal ADRESS STROBE ou sinal do im pulso do endereço que foi bloqueado a partir da lógica do processador tolerante de avarias é enviado para a lógica de acopla mento. Isso dá ao processador tolerante de avarias S/88 o controlo completo sobre a lógica de acoplamento que é a interface entre o programa de aplicação especial tolerante de avarias e o processador S/370 associado. 0 sinal do impulso de endereço e o endereço virtual são usados para seleccionar a memória, os registadores e o DMAC locais que são componentes da lógica de aco plamento. A fig. 5 representa esquematicamente o resultado da detecção de uma interrupção proveniente da lógica de controlo das linhas omnibus S/370, que se determina ser um nível apropriado e correspondendo a um endereço apropriado. Portanto, no seu aspecto mais lato, o mecanismo de desacoplamento desliga um
processador dos seus equipamentos físicos associados e liga o processador a uma entidade estranha para a transferência eficiente de dados para essa entidade. A lógica de acoplamento tem uma memória local que ê usada para formar uma fila de espera dos comandos S/370 recebidos e armazenar dados que vão para e vêm do S/370. Os dados e os comandos são transportados para a memória local por vários canais DMA na lógica de acoplamento. 0 programa de aplicação tolerante de avarias inicializa o DMCA e trata as interrupções provenientes do DMAC, o que serve para notificar o programa de utilização quando tiver chegado um comando ou tiver sido recebido ou emitido um bloco de dados. Para completar uma operação, a lógica de acoplamento tem de fazer o retorno de linhas de confirmação dos impulsos de dados antes da frente do im pulso de relógio do processador para garantir que ambos os lados do processador tolerante de avarias se mantêm em sincronismo. 0 programa de aplicação recebe comandos do tipo dos canais S/370, tais como "Start 1/0", "Test 1/0", etc.. 0 programa de aplicação converte depois cada comando de 1/0 S(370 num comando de 1/0 tolerante de avarias e inicia uma sequência de comando de 1/0 tolerante de avarias normal.
Pensa-se ser este um processo novo para fazer um bloco de dados contornar um sistema operativo para uma aplicação. É também uma maneira de permitir que uma aplicação trate uma interrupção, o que i uma função usualmente realizada por um sistema operativo. 0 programa de aplicação pode comutar o processador tolerante de avarias da sua função normal de processador para a função de controlador de 1/0, â vontade, e numa base por ciclo, precisamente pelo endereço virtual que ele se-lecciona.
Assim, dois sistemas de processamento de dados com arquitecturas diferentes de instruções e de endere çamento da memória estão estreitamente acopladas de modo a permitir a um sistema aceder efectivamente a qualquer parte do espaço da memória virtual do outro sistema sem o outro sistema to mar conhecimento da existência do primeiro. 0 código de aplica- 22
ção especial no outro sistema comunica com o primeiro sistema através do equipamento físico, colocando endereços especiais na linha omnibus. 0 equipamento físico determina se o endereço i um endereço especial. Se assim for, os impulsos de relógio são bloqueados para não serem detectados pelos circuitos do outro sistema e re-orientados de modo tal que a CPU do outro sistema possa controlar equipamento físico especial e um espaço de memó ria acessível a ambos os sistemas. 0 outro sistema pode controlar completa mente o primeiro sistema, quando necessário, por exemplo para tarefas de inicialização e de configuração. 0 primeiro sistema não pode, de modo algum, controlar o outro sistema, mas pode apresentar pedidos de serviço ao outro sistema, da maneira seguinte : 0 primeiro sistema apresenta comandos de 1/0 e/ou dados no formato do primeiro sistema num espaço de memória de acesso comum e, utilizando equipamento físico especial, apresenta uma interrupção ao outro sistema a um nível especial, pondo em acção o programa de aplicação especial.
Este último é dirigido para o espaço da memória que contém a informação apresentada e processa a mesma para converter o seu formato para a forma nativa do outro siste ma. Depois o programa de aplicação dirige o sistema operativo nativo do outro sistema para executar operações de 1/0 nativas nos comandos e dados convertidos. Assim, tudo o referido ante-riormente ocorre de maneira completamente transparente para os sistemas operativos nativos dos dois sistemas e sem qualquer al_ teração significativa nesses sistemas operativos. 3. Apresentação de interrupções a um sistema transparentes para o sistema operativo
Os programas mais correntes são executa dos em um de dois (ou mais) estados, o estado supervisor e o es tado utilizador. Os programas de aplicação são passados no esta do do utilizador, e funções tais como as interrupções no estado de supervisor.
Uma aplicação ocupa uma porta de 1/0, 23 çaacawjmtLjÍ j$**uí^fc£jMie*AÍa^.ú^ -«aSaa.{"T '.'.'.:r.iuT||1|T|1t[|
depois abre a porta, envia um pedido de 1/0 sob a forma de uma leitura, de uma escrita ou de um controlo. Nesse instante, o processador ocupará um comutador de tarefa. Quando o sistema operativo receber uma interrupção significando o fim de uma I/0, o sistema operativo colocará esta informação numa fila de espera disponível, ordenada por prioridade, para os recursos do sis tema. 0 sistema operativo reserva todos os vectores de interrupção para o seu próprio uso, não ficando nenhum disponível para novas características tais como uma interrupção exterior significando um pedido de 1/0 de uma outra máquina.
No S/88 da forma de realização preferida, a maioria dos vectores de interrupção disponíveis estão ac-tualmente inutilizados, sendo ajustados para provocar a transfe rincia para um processador de erros comum para interrupções "não inicializados" ou "espúrias", prática comum nos sistemas operativos. A forma de realização preferida do presente aperfejL çoamento substitui um subconjunto destes vectores, de outro modo não utilizados, por vectores apropriados para processadores de interrupções especiais para interrupções da lógica de acopla mento S/370. O sistema operativo S/88 modificado é depois de no vo unido para ser usado com os vectores de novo integrados no seu lugar. 0 sistema/88 da forma de realização pre ferida tem oito níveis de interrupção e usa auto-vectores em to dos os níveis excepto no nível 4. 0 aperfeiçoamento segundo a presente invenção utiliza um destes níveis de auto-vectores, o nível 6, que tem a prioridade a seguir à prioridade mais elevada. Este nível (6) é normalmente usado pelo sistema/88 para interrupções de perturbações da alimentação de corrente alternada. A lógica que faz o acoplamento do S/370 ao S/88 apresenta interrupções ao nível (6) combinando num circuito OU os pedidos de interrupção com os das perturbações da corrente alternada de alimentação. Durante a inicialização do sistema, números apropriados de vectores para os processadores de interrupções especiais para as interrupções da lógica de aco 24
.40 aa Ílí? plamento (alguns, por exemplo, em registadores DMAC) por um pro grama de aplicação, transparente para o sistema operativo S/88.
Quando qualquer interrupção for recebida pelo S/88, ele inicia uma confirmação de interrupção (IACK), utilizando apenas equipamento físico e operações internas do processador S/88 para processar a interrupção e fazer a busca da primeira instrução do processador de interrupções. Não é necessária a execução de qualquer programa. Porém, o número do vector tem também de ser obtido e apresentado de uma maneira transparente. Isso consegue-se na forma de realização preferida desacoplando o processador S/88 do seu equipamento físico associado (incluindo o mecanismo de apresentação de interrupções de perturbações da alimentação de corrente alternada) e acoplando o processador S/88 â lógica de acoplamento S/370-S/88 quando for apresentada uma interrupção do nível 6 pela lógica de acoplamento .
Mais especificamente, o processador S/88 coloca o código da função e o nível de interrupção nas suas saídas e também declara ADRESS STROBE (AS) e DATA STROBE (DS) no início do ciclo IACK. 0 ADRESS STROBE é bloqueado a par tir do equipamento físico S/88, incluindo o mecanismo de interrupção por perturbações da alimentação de corrente alternada, se estiver activo o sinal de apresentação de interrupção da lógica de acoplamento, sendo enviado AS para a lógica de acoplamento para ler o número de vector apropriado, que é encaminhado por uma porta para o processador S/88 pelo DATA STROBE. Devido ao facto de o DATA STROBE estar bloqueado pelo equipamento físi co S/88, o ciclo de máquina (IACK) é transparente para o sistema operativo S/88 relativamente à obtenção no número de vector da interrupção da lógica de acoplamento. Sè o sinal de interrupção da lógica de acoplamento não estivesse activo no início do ciclo IACK teria sido considerada uma interrupção do nível a S/88 normal. 4. Partilha de uma memória real entre dois ou mais processadores que executam sistemas operativos de memória virtual diferente . 25
Esta característica faz o acoplamento de um sistema tolerante das avarias a um processador e o sistema operativo estranhos que não têm código para suportar uma memória tolerante das avarias, isto ê, um código para remover e inserir cartões de memória através de uma ligação com a alimentação ligada, detecção instantânea de dados corrompidos e a sua recuperação se for apropriado, etc..
Esta característica proporciona um processo e meios pelos quais pode fazer-se que dois ou mais proces^ sadores que executam sistemas operativos virtuais diferentes compartilhem uma memória real única, de uma maneira transparente para os dois sistemas operativos e nos quais um processador pode aceder ao espaço de memória do outro processador de modo que possam verificar-se transferências entre estes múltiplos processadores.
Esta característica combina dois ambien tes de sistemas operativos aparentes para o utilizador para dar a aparência ao utilizador de um sistema operativo único. Cada um dos sistemas operativos é um sistema operativo virtual que normalmente controla o seu espaço completo da memória real. A presente invenção tem apenas um único espaço de memória real que é compartilhado pelos dois processadores através de uma linha omnibus dos sistemas comum. Nenhum dos sistemas operativos é substancialmente re-escrito e nenhum dos sistemas operativos sabe que o outro existe. Esta característica utiliza vim programa de aplicação que é executado num primeiro processador para fazer a busca na fila de espera de atribuição de memória do pr:L meiro sistema operativo. Quando se tiver encontrado uma espaço de memória contíguo, suficientemente grande para satisfazer as necessidades do segundo sistema operativo, este espaço de memória é então retirado, por indicadores de manipulação, da tabela de atribuição da memória do primeiro sistema operativo. 0 primeiro sistema operativo deixa de utilizar (por exemplo a capaci dade de sobre-atribuir) esta memória retirada, a menos que a aplicação devolva a memória para o primeiro sistema operativo.
. 0 primeiro sistema operativo é subservjL * ente relativamente ao segundo sistema operativo numa prespecti- 26
va de 1/0 e responde ao segundo sistema operativo como um controlador de 1/0. 0 primeiro sistema operativo é o dono de todos os recursos do sistema e na forma de realização preferida é um sistema operativo tolerante de avarias. 0 primeiro sistema operativo inicialmente atribui e retira a atribuição de memória (excepto a memória que foi "roubada" para o segundo sistema ope rativo) e processa todas as falhas de equipamento físico associadas e a recuperação. 0 objectivo é combinar os dois sistemas operativos sem alterar o código do sistema operativo em grau im portante. Cada um dos sistemas operativos tem de acreditar que está a controlar toda a memória do sistema, visto que é um recurso único que está a ser usada pelos dois processadores.
Quando se liga a energia de alimentação ao sistema, o primeiro sistema operativo e o seu processador ajs sumem o controlo do sistema, mantendo o equipamento físico o se gundo processador numa condição de reposição. O primeiro sistema operativo inicializa o sistema e determina a quantidade de memória que realmente existe. 0 sistema operativo eventualmente organiza toda a memória em blocos de 4KB (4096 octetos) e lista cada bloco disponível numa fila de espera de atribuição de memó ria. Cada bloco de 4KB listado na fila de espera aponta para o bloco 4KB disponível seguinte. Qualquer memória usada pelo primeiro sistema ou é removida ou é adicionada em blocos de 4KB do cimo da fila de espera, ajustando-se adequadamente os indicadores dos blocos. Quando os utilizadores pedirem espaço de memória a partir do sistema operativo, os pedidos são satisfeitos atribuindo, a partir da fila de espera, um número necessário de blocos de 4KB da memória real. Quando a memória deixar de ser necessária, os blocos serão repostos na fila de espera. A seguir, o primeiro sistema operativo executa uma lista de funções denominada arranque dos módulos, que configura o sistema. Uma aplicação que é executada pelo arranque dos módulos é uma nova aplicação usada para capturar memória do primeiro sistema operativo e atribuir a memória ao segundo sistema operativo. Este programa explora a lista comple ta de atribuições da memória e encontra uma cadeia contígua de blocos de memória de 4KB. Então, o programa de aplicação altera 27
os indicadores na parte da fila de espera correspondente à cadeia contígua de blocos, removendo desse modo um bloco contíguo de memória da lista de atribuições de memória do primeiro siste ma operativo. Na forma de realização preferida, o indicador do bloco de 4KB anterior ao primeiro bloco de 4KB retirado é modificado para apontar para o bloco de 4KB imediatamente seguinte â cadeia contígua de blocos retirada.
Nesta altura, o primeiro sistema operativo não tem controlo nem conhecimento deste espaço da memória real, a menos que o sistema seja de novo inicializado ou a apljL cação reponha os indicadores da memória. É como se o primeiro sistema operativo considere um segmento da memória real atribuído a um processo que é executado em si próprio e que não pode ser de novo atribuído porque os blocos foram ratirados da ta bela, não simplesmente atribuídos a um utilizador. 0 espaço de endereços removido ê então transmitido para o segundo sistema operativo. Há uma lógica de desvio de equipamento físico que faz com que o bloco de endereços, roubado do primeiro sistema operativo e dado ao segundo sistema operativo, aparente começar no endereço zero para o segundo sistema operativo. 0 segundo sistema operativo controla então a memória roubada do primeiro sistema operativo como se ele fosse a sua própria memória real, e controla a memória atra vés do seu próprio gestor da memória virtual, isto é, traduz en dereços virtuais emitidos pelo segundo sistema operativo em endereços reais no interior do espaço de endereços da memória real atribuídos.
Um programa de aplicação que é executado no primeiro sistema operativo pode deslocar dados de 1/0 para e do espaço da memória do segundo processador, mas o segundo processador não pode ler nem escrever fora do seu espaço atribuído porque o segundo sistema operativo não tem conhecimento da memória adicional. Se se verificar um mau funcionamento do sistema operativo, no segundo sistema operativo, um dispositivo de rejeição no equipamento físico impedirá o segundo sistema operativo de inadvertidamente escrever no espaço do primeiro sistema operativo. 28 <^^5Κ®8ΒΒ3ΒΒΪ5Β8σ~,τ5ΓΛ!.^
A quantidade de espaço de memória atribuída ao segundo sistema operativo é definida numa tabela no programa de arranque dos módulos pelo utilizador. Se o utilizador desejar que o segundo processador tenha 16 MB, então ele de finirá isso na tabela do programa de arranque de módulos e a aplicação adquirirá esse espaço a partir do primeiro sistema operativo. Um SVC ("service call" - chamada de serviço) permite ao programa de aplicação ter acesso â zona de supervisão do pri meiro sistema operativo, de modo que os indicadores podem ser modificados.
Uma razão importante por que é desejável que os dois sistemas operativos partilhem a mesma memória é que a memória é tolerante de avarias no primeiro processador; e o segundo processador pode utilizar a memória e a 1/0 tolerante de avarias do primeiro processador. 0 segundo processador é fe_i to para ser tolerante de avarias por duplicação de certo equipa mento físico e por comparação de certos endereços, dados e linhas de controlo. Utilizando estas técnicas, o segundo processa dor é de facto uma máquina tolerante de avarias, embora o segun do sistema operativo não tenha capacidade para tolerância de avarias. Podem acoplar-se mais de um processador e um sistema operativo do segundo tipo estranhos ao primeiro sistema operati^ vo com uma área de memória real separada proporcionada para cada processador estranho.
Na forma de realização preferida, o pri^ meiro sistema operativo i o do S/88 tolerante das avarias e o segundo sistema operativo é um dos sistemas operativos S/370 e os primeiro e segundo processadores são, respectivamente o S/88 e o S/370. Esta característica não só permite que um sistema normalmente tolerante de avarias utilize uma memória tolerante de avarias que é mantida por um sistema tolerante de avarias, como também permite que o sistema não tolerante de avarias: 1) partilhe o acesso aos aparelho de 1/0 tolerantes de avarias man tidos pelo sistema tolerante de avarias e 2) permute dados entre os sistemas de uma maneira mais eficiente sem atrasos signi ficativos de um acoplamento canal-a-canal. - 29 5. Imagem de um sistema único A expressão "imagem de um sistema único" é utilizada para caracterizar as redes de comutadores nas quais o acesso a dados e recursos (por exemplo impressores, ficheiros em suporte permanente, etc.) remotos aparece ao utiliza dor como sendo igual ao acesso a dados e recursos no terminal local a que está ligado o teclado do utilizador. Assim, o utili. zador pode aceder a um ficheiro de dados ou a recursos simplesmente pelo nome, sem ter de conhecer a localização física na re de.
Introduz-se aqui o conceito de "imagem derivada de um sistema único" como uma nova expressão, que se pretende que seja aplicada a elementos do computador de uma rede que não têm meios para se ligar directamente a uma rede que tem a imagem de um sistema único, mas utiliza recursos de equipamento físico e de meios de programação dessa rede para se ligar directamente à mesma com uma imagem efectiva de um sistema único,
Para os fins desta discussão, a ligação directa de um sistema de computador para desenvolver efeitos de "imagem derivada de um sistema único" pode ser efectuada com vá rios graus de acoplamento entre esse sistema e elementos da rede. 0 termo "acoplamento frouxo", como aqui é usado, significa um acoplamento efectuado através de canais de 1/0 do computador de derivação e o computador "nativo" que faz parte da rede. "Aco plamento apertado" é um termo aqui usado para descrever uma relação entre os computadores de derivação e nativo estabelecida através de meios físicos especiais que permitem comunicar um com o outro numa base directa (isto é, sem utilizar os canais de 1/0 existentes de qualquer deles).
Um tipo especial de acoplamento apertado aqui contemplado, designado por "acoplamento apertado transparente" implica a adaptação do equipamento físico de acoplamen to para permitir que cada computador (os computadores de deriva ção e nativo) utilize recursos do outro computador de modo tal que o sistema operativo de cada computador não tenha conhecimen to dessa utilização. 0 acoplamento apertado transparente, como 30
- ' W*'**#"*—·«*v>~ - -*"~ »-· se acaba de definir, constitui uma base para conseguir vantagens de custo e eficácia na rede acoplada. O custo dos equipamentos físicos de acoplamento, não obstante a complexidade da sua concepção, devem ser mais que compensados pelas economias feitas por se evitarem modificações extensas dos meios de programação do sistema operativo que de outro modo seriam necessárias. As vantagens de maior eficácia resultam das ligações mais rápidas devido ao acoplamento directo e â interferência reduzida de larguras de banda na interface de acoplamento. 0 termo "rede", como é usado nesta secção, é mais restrito do que o conceito actualmente prevalente de uma rede que ê um esquema de ligações mais alto internacional de teleprocessamento/satélites, ao qual podem ligar-se tipos diferentes de máquinas se estiverem em conformidade com algum protocolo específico. Em vez disso, "rede" utiliza-se nesta secção aplicada a um complexo ligado de processadores S/88 ou, em alternativa, a um complexo ligado de outros processadores com características de imagem de um sistema único.
Utilizar-se-ão vários termos cuidadosamente definidos para explicar mais o conceito de uma imagem de um sistema único, como é aqui considerado, e partir-se-á da hipótese de que a forma de realização preferida específica do aperfeiçoamento será usada como base para a clarificação: a. HSDI ("High Speed Data Interconnection"- Interligação de da dos a alta velocidade) refere-se a um subsistema de equipamentos físicos (e cabos) para a transferência de dados entre unidades de equipamento físico separadas. b. Elo de ligação ("link") refere-se a uma construção ou objec to de meios de programação que consiste inteiramente em indicadores multi-partes para um outro objecto de meios de programação e que tem muito do carácter de um nome suposto.v c. MODULO refere-se a uma unidade de processamento auto-supor-tada constituída pelo menos por um de cada um dos elementos: invólucro, alimentação de energia, CPU, memória e dispositi vo de 1/0. Um MÕDULO pode ser ampliado fixando entre si vários invólucros para alojar dispositivos periféricos adicio nais, criando um módulo único maior. Algumas unidades de 31
^£™?S5g®33SEÍS
.............. J 1/0 (terminais, impressoras) podem ser exteriores e ligadas ao invólucro por cabos; são consideradas como fazendo parte do módulo único. Um MÕDULO pode ter apenas um complexo de CPU. d, COMPLEXO de CPU refere-se a um ou mais cartões simples ou duplos de processadores no interior do mesmo invólucro, gerido e controlado por meios de programação do sistema opera tivo para operar como uma CPU única. Independentemente do número actual de cartões de processador instalados, qualquer programa ou aplicação de utilizador é escrito e executado como se estivesse presente apenas uma CPU. A carga de trabalho de processamento é partilhada grosseiramente entre os cartões CPU disponíveis, podendo executar-se simultaneamente múltiplas tarefas, mas sendo cada programa de aplicação apresentado com uma "IMAGEM DE CPU ÚNICA". e. OBJECTO refere-se a uma colecção de dados (incluindo progra mas executáveis) armazenados no sistema (disco, fita), que pode ser identificada univocamente por um nome hierárquico. Um ELO é um indicador designado de maneira única para algum outro objecto, sendo assim ele próprio um OBJECTO. Uma PORTA de I/O é uma construção de meios de programação designada de maneira única que aponta para um dispositivo I/O espe cífico (uma fonte ou um destino de dados), sendo assim também um OBJECTO. 0 sistema operativo impede efectivamente a duplicação de NOMES DE OBJECTOS.
Visto que a expressão "imagem de sistema único" não é usada consistentemente na literatura, será descrita com mais pormenor para clarificação do presente aperfeiçoamento de uma "imagem de sistema único derivado". Na definição e descrição da expressão IMAGEM DE SISTEMA ÚNICO, a "imagem" refere-se ao ponto de vista, do programa de aplicação, do siste ma e do ambiente. "Sistema", neste contexto, significa os equipamentos físicos (complexo de CPU) e os meios de programação (sistema operativo e os seus serviços) combinados, para os quais o programador da aplicação dirige as suas instruções. "Ambiente" significa todos os dispositivos de 1/0 e outros meios ligados que são susceptíveis de ser enderaçados pelo sistema operativo 32
e desse modo acessíveis ao programador, mediante pedidos de ser viços ao sistema operativo.
Um computador independente verdadeiramente único com o seu sistema operativo tem então de proporcionar uma IMAGEM DE SISTEMA ÚNICO ao programador. É apenas quando ele deseja ligar sistemas múltiplos entre si, a fim de partilhar dispositivo de 1/0 e distribuir processamento, que esta "imagem" vista pelo programador começa a modificar-se; a interligação ordinária de duas máquinas por via de linhas de telepro cessamento (ou mesmo por cabos) força o programador a compreender - e a aprender a lidar com - o ambiente dual, para tirar proveito das facilidades alargadas.
Geralmente, para ter acesso a facilidades no outro ambiente ele tem de pedir o seu sistema operativo local para comunicar os seus requisitos em pormenor. Tem então se poder aceitar os resultados do seu pedido de maneira assíncrona (e na sequência própria) depois de uma demora arbitrariamente longa. 0 tratamento e o controlo das múltiplas mensagens e transferências de dados entre máquinas constituem um dispêndio geral significativo de processamento em ambas as máquinas; pode ser pesado, ineficiente e difícil para o programador num tal ambiente de DUAL-SYSTEM. E quando aumentar o número de máquinas convencionalmente ligadas, pode aumentar rapidamente a complexidade para o programador. 0 projecto original do sistema/88 in-cluia os meios para simplificar esta situação e proporcionar ao programador a IMAGEM DE SISTEMA ÚNICO, isto é, a ligação HSDI entre MÕDULOS, e meios de programação de accionamento HSDI dentro do sistema operativo em cada MÕDULO. Aqui, num sistema de dois MÕDULOS, por exemplo, cada um dos sistemas operativos "tem conhecimento acerca de" todo o ambiente e pode aceder a facilidades através do HSDI sem a intervenção activa do "outro" siste ma operativo. É considerável o dispêndio em comunicações.
Pode interligar-se por via do HDSI um grande número de MÕDULOS de várias dimensões e tipos de modelos . para criar um sistema complexo que aparece ao programador como * um ambiente (expansível). 0 seu produto, um programa de aplica- 33 ção, pode ser armazenado num disco neste sistema complexo, executado em qualquer das CPU no complexo, controlado ou monitorado a partir substancialmente de um qualquer dos terminais do complexo, e pode transferir dados para e de quaisquer dispositi vos de 1/0 do complexo, tudo sem considerações especiais de pro gramação e sem um rendimento de execução melhorado em relação aos processos antigos. 0 sistema operativo e as suas várias ca racterísticas e facilidades são escritos de modo a assumir nat_i vamente o ambiente distribuído e operar dentro desse ambiente sem que o utilizador tenha necessidade de ter em atenção ou ter controlo sobre onde residem as várias entidades (serviços, apli^ cações, dados, linguagem, processadores, etc.). A chave para tornar tudo isto possível é a regra reforçada de que cada OBJEC TO tem de ter um nome único; e esta regra estende-se facilmente a todo o sistema complexo visto que o qualificador de nomes é o nome dos MÕDULOS, que por sua vez tem de ser único no interior do complexo. Por conseguinte, a localização de qualquer OBJECTO em todo o complexo é tão simples como dar nomes correctos no mesmo. A nomeação de um OBJECTO é por sua vez simplificada para o programador pela provisão de ELOS DE LIGAÇÃO ("LINKS"), que permitem a utilização de indicadores aleatórios muito curtos pa ra (substituir nomes de) OBJECTOS com nomes muito compridos e complicados.
Para conseguir realizar o conceito de uma "imagem de um sistema único derivada" no interior deste com plexo de módulos S/88 interligados, acopla-se um certo número de processadores S/370 aos processadores S/88 de modo a proporcionar aos utilizadores dos processadores S/370 pelo menos alguns dos aspectos das características de imagem de um sistema único dos S/88. E isso embora os processadores e os sistemas operativos dos processadores S/370 não proporcionem essas carac terísticas.
Proporcionam-se um ou mais processadores S/370 no interior do MÕDULO S/88. Um processador S/88 está acoplado unicamente a cada um dos processadores S/370. Como se verá, cada processador S/370 é duplicado e controlado por meios 34 de programação S/88 para o funcionamento tolerante de avarias. 0 acoplamento único e directo dos processadores S/88 e S/370, de preferência pelos mecanismos de desacoplamento e interrupção atrás descritos, torna as transferências de dados entre os processadores transparentes para ambos os sistemas operativos S/370 e S/88. Nenhum dos sistemas operativos tem conhecimento da exijs tência do outro processador ou do outro sistema operativo.
Todos os processadores S/370 utilizam o complexo do sistema S/88 tolerante das avarias para proporcionai completamente a unidade de memória principal S/370, canal ou ca nais 1/0 S/370 e dispositivos de 1/0 emulados. OS S/370 não têm quaisquer memórias principais, canais ou dispositivos de 1/0 que não sejam parte do S/88, sendo todas estas facilidades tolerantes das avarias, por construção.
No instante da configuração do sistema, a cada processador S/370 é atribuído um bloco dedicado contíguo de 1 a 16 MB da memória principal dos recursos comuns dos S/88; este bloco ê retirado das tabelas de configuração do S/88, de modo que, mesmo indadvertidamente, o sistema operativo S/88 não tem acesso ao mesmo. Registadores em equipamentos físicos tolerantes das avarias mantêm o indicador do bloco de memória para cada S/370, de modo tal que o S/370 não tem meios de acesso a qualquer memória principal que não seja a que lhe foi atribuída. 0 resultado é uma visão inteiramente convencional de sistema único da sua memória principal pelos S/370; o aspecto de tolerância das avarias da memória é completamente transparente. Um programa de aplicação (EXEC370) no S/88 emula o ou os canais e o ou os dispositivos de I/0 S/370, utilizando dispositivos S/88 e chamadas do sistema operativo S/88 actuais. Ele tem a visão de imagem de sistema único do complexo S/88, visto que é um pro grama de aplicação; assim, esta visão estende-se a todo "pseudo -canal" S/370.
Do ponto de vista oposto, o do sistema operativo S/370 (e, por extensão, dos programas de aplicação), ele pode ajudar a visualizar uma "janela" (o canal) através da qual têm lugar todas as operações de 1/0. A janela não é altera da no seu carácter - nenhum dos programas S/370 necessita de 35
ser alterado - mas a "vista" através da janela é alargada para incluir os atributos de IMAGEM DE UM SISTEMA ÚNICO. Um pequeno passo conceptual torna visível um grande número de S/370 compar tilhando de maneira eficiente uma base de dados única, a que é gerida pelo S/88.
Uma consequência desta técnica de ligação é a reconfigurabilidade dinâmica relativamente simples e rã pida de cada S/370. A "janela" do canal é bidireccional, estando o programa EXEC370 de controlo do S/88 do outro lado da mesma; EXEC370 tem capacidade total para parar, repor, reinicializar, reconfigurar e arrancar de novo a CPU S/370. Assim, por emulação transparente das facilidades de 1/0 s/370, usando outras facilidades que possuem o atributo de IMAGEM DE UM SISTEMA ÚNICO (1/0 e sistema operativo S/88), este atributo é alargado e fornecido ao S/370.
Portanto, o S/370 foi dotado com independência de localização de objectos. Os seus utilizadores podem aceder a um ficheiro de dados ou outro recurso pelo nome, um nome que lhe é atribuído no catálogo do sistema operativo. 0 utilizador não precisa de conhecer a localização do ficheiro de dados no complexo dos módulos S/370--S/88.
Os comandos de 1/0 S/370 enviados por uma unidade de processamento S/370 num módulo (9) são processados por uma unidade de processamento S/88 associada, estreitamente acoplada à unidade de processamento S/370 no mesmo módulo (ou por outras unidades de processamento S/88 interligadas no módulo (9) e controladas pela mesma cópia do sistema operativo virtual S/88 que suporta o multiprocessamento) para aceder a fi cheiros de dados e similares residentes no mesmo ou em outros módulos ligados. Ele pode devolver os ficheiros a que acedeu pa ra a unidade de processamento S/370 solicitante ou enviá-los pa ra outros módulos, por exemplo para os fundir com outros fichejl ros. , 6. Sumário 1 Assim, as funções dos dois sistemas ope 36
r:a> ,'vAoV*'—**> ♦ rativos virtuais (por exemplo VM, VSE ou 1X370 do S/370 e OS do S/38) fundem-se num sistema físico. O processador S/88 executa 0 OS S/88 e trata os aspectos de tolerância de avarias do siste ma. Ao mesmo tempo, ligam-se por fichas um ou mais processadores S/370 no bastidor dos S/38 e são atribuídos pelo OS S/88 de 1 a 16 MB de memória contígua por cada processador S/370. Cada sistema operativo virtual S/370 pensa que a sua atribuição de memória começa no endereço 0 e gere a sua memória através de técnicas normais de atribuição e paginação da memória dinâmica S/370. 0 S/370 é verificado quanto aos limites para impedir o seu acesso ao espaço de memória S/88. O S/88 tem de ter acesso ao espaço de endereços S/370, visto que o S/88 tem de deslocar dados de 1/0 para as memórias tampão de I/O S/370. O sistema operativo S/88 é o senhor de todos os meios físicos e dispositjl vos I/O do sistema. Os pares de processadores emparelhados executam os respectivos sistemas operativos num ambiente de sistema único sem alterações significativas da escrita de cada um dos sistemas operativos.
Introdução - Sistema S/88 da técnica anterior
Descrever-se-ão os aperfeiçoamentos segundo a presente invenção relativamente a uma forma preferida na qual unidades de processamento IBM System/370 (S/370) (que executam instruções S/370 sob o controlo de um qualquer dos si,s temas operativos S/370, tais como VM, VSE, 1X370, etc.) estão acopladas estreitamente a unidades de processamento IBM System/ /88 (S/88) (que executam instruções S/88 de uma maneira toleran te de avarias sob o controlo de um sistema operativo S/88 num ambiente tolerante de avarias) de uma maneira que permite o fun cionamento tolerante de avarias das unidades de processamento S/370 com as características de imagem de um sistema único S/88, possibilidade de ligação de unidades com a energia de alimentação ligada, detecção instantâneo de erros, distribuição da car-ga de I/O e isolamento das avarias e reconfigurabilidade dinâmjL ca. O IBM System/88, comercializado pela In 37
ternational Business Machines Corp., está descrito genericamente no IBM System/88 Digest, 2§ Edição, publicado em 1986, e nou tras publicações de cliente S/88 disponíveis. O sistema computa dor S/88 que inclui o módulo (10), fig. 6A, é um sistema de ele vada disponibilidade concebido para satisfazer as necessidades de clientes que exigem processamento em linha de elevada fiabilidade. O sistema S/88 combina uma arquitectura de equipamentos físicos duplexados com meios de programação sofisticados do si£ tema operativo para proporcionar um sistema tolerante das avarias. O sistema S/88 proporciona também a ampliação horizontal mediante a ligação de módulos múltiplos do sistema S/88 (10a, 10b,10c), através de interligações de dados a grande velocidade (HSDI), fig. 6B, e módulos (lOd-g) através da rede S/88, fig. 6C. O sistema S/88 está concebido para de-tectar uma avaria num componente quando e onde ela ocorra, e pa ra evitar que erros e interrupções provocadas por tais avarias sejam interoduzidos no sistema. Como a tolerância das avarias faz parte da concepção dos meios de equipamento físico do siste ma S/88, ela não exige programação pelo projectista da aplicação. A tolerância de avarias consegue-se sem aumento dispêndio nos meios de programação nem degradação da eficácia. O sistema S/88 consegue a tolerância de avarias mediante a duplicação de componentes mais importantes, incluindo processadores, dispositivos de memória de acesso directo (DASD) ou discos, memória e controladores. Se se avariar um componente duplicado, o seu par ceiro duplo automaticamente contínua o processamento e o sistema mantém-se disponível para os utilizadores finais. Proporcionam-se também alimentações de energia em duplicado, com apoio por bateria, para a retenção da memória durante as falhas de energia de curta duração. 0 sistema S/88 e os seus produtos de meios de programação proporcionam uma ampliação fácil, a partilha de recursos entre os utilizadores e soluções para requisitos complexos, mantendo no entanto uma imagem de sistema único para o utilizador final.
Uma imagem de sistema único é um ambien te de processamento distribuído constituído por muitos processa 38
dores, cada um deles com os seus próprios ficheiros e 1/0, interligados através de uma rede ou de uma LAN ("Local Area NetWork" - Rede de área local), que dá ao utilizador a impressão de estar registado numa máquina única. 0 sistema operativo permite que o utilizador mude de uma máquina para outra justamente mudando um catálogo de endereços.
Com um planeamento apropriado, a capaci dade de processamento do S/88 pode ser aumentada, enquanto o sistema S/88 está em funcionamento ao mesmo tempo que mantém pa ra o utilizador final a imagem de um sistema único. A ampliação horizontal ê obtida combinando múltiplos módulos de processamen to para obter sistemas que utilizam a HSDI do sistema S/88, e combinando múltiplos sistemas numa rede, utilizando a rede do sistema S/88.
Um módulo de processamento S/88 é um computador completo e independente, como se vê na fig. 6A dos desenhos. 0 sistema S/88 é ou ou. módulo único ou um grupo de mó dulos ligados numa rede local com a HSDI IBM, como se vê na fig. 6B. A rede S/88, que utiliza equipamentos de transmissão a distância, é a facilidade usada para interligar os múltiplos siste mas para formar uma imagem de sistema único para o utilizador final. Podem interligar-se dois ou mais sistemas por linhas de comunicações para formar uma rede de transmissão a grande distância. Esta ligação pode ser através de um cabo directo, de uma linha telefónica alugada ou de uma rede X.25. A rede do sijs tema S/88 detecta referências a recursos remotos e encaminha mensagens entre módulos e sistemas, de maneira completamente transparente para o utilizador. A possibilidade de ligações por ficha, com a alimentação ligada, permite muitas substituições de equipamentos físicos feitos sem interrupção do funcionamento do sij3 tema. 0 sistema S/88 retira do serviço um componente avariado, continuando o serviço com o parceiro duplo e acende um indicador no componente avariado - tudo sem intervenção de qualquer operador. . 0 pessoal do cliente ou de serviço pode | retirar e substituir um cartão duplicado avariado, enquanto o 39
processamento contínua. Os benifícios para um cliente incluem reparações a tempo e reduzidos custos de manutenção.
Embora o sistema S/88 seja uma máquina tolerante de avarias, de funcionamento contínuo há alturas em que é necessário interromper o funcionamento da máquina. Alguns exemplos são: melhorar o sistema operativo do sistema S/88, alterar a configuração dos meios físicos (adicionar memória principal) ou efectuar certos procedimentos de serviço.
Os componentes duplicados do sistema S/88 e os meios de programação do sistema S/88 ajudam a manter a integridade dos dados. 0 sistema S/88 detecta uma avaria ou um erro transitório no momento da avaria e não a propaga através da aplicação ou dos dados. Os dados são protegidos da corrupção e mantém-se a integridade do sistema. Cada componente contém a sua lógica de detecção e diagnóstico dos erros. A lõgjL ca de detecção dos erros compara os resultados de operações em paralelo em todo o ciclo da máquina.
Se o sistema detectar um mau funcionamento de um componente, esse componente é automaticamente retirado de serviço. 0 processamento continua no parceiro duplo enquanto o componente avariado é verificado por meios de diagnóstico internos. As funções de detecção de erros efectuam automaticamente um diagnóstico do componente retirado de serviço, enquanto o processamento continua no seu parceiro duplo. Se o dia gnóstico determinar que certos componentes necessitam de ser substituídos, o sistema S/88 pode automaticamente chamar um cen tro de apoio para participar o problema. 0 cliente benificia de reparações rápidas e baixos custos de manutenção. 0 sistema S/88 baseia-se genericamente nos sistemas processadores do tipo descrito em pormenor na patente americana 4 453 215, intitulada "Central Processing Appa-ratus for Fault Tolerant Computing", publicada em 5 de Junho de 1984, concedida a Robert Reid e nas patentes americanas relacio nadas 4 486 826, 4 597 084, 4 654 857, 4 750 177 e 4 816 990, sendo as referidas patentes aqui incorporadas por referência, na sua totalidade, como se fossem aqui apresentadas completamen te. Nas fig. 7 e 8 do presente pedido de patente representam-se 40 esquematicamente partes da patente 4 453 215, de Reid.
Este sistema computador das fig. 7 e 8 do presente pedido de patente tem um mõdulo processador (10) com uma unidade de processamento (12) , uma unidade de memória de acesso aleatório (16), unidades de controlo dos periféricos (20),(24),(32), e uma estrutura de linhas omnibus única (30) que proporciona todas as transferências de informação entre as várias unidades do módulo. A estrutura das linhas omnibus no in terior de cada módulo processador inclui linhas omnibus parceiras em duplicado (A,B) e cada unidade funcional (12), (16), (20), (24),(32) tem uma unidade parceira em duplicado. Todas as unida des diferentes das unidades de controlo que funcionam com dispo sitivos periféricos assíncronos, normalmente operam com sincronização por arranque-e-paragem com a sua unidade parceira. Por exemplo as duas unidades de memória parceiras (16,18) de um módulo processador normalmente accionam as duas linhas omnibus parceiras (A,B) e são ambas accionadas pela estrutura (30) das linhas omnibus, em sincronismo completo. O sistema computador proporciona detec-ção de avarias ao nível de cada unidade funcional dentro do módulo processador. Para obter esta característica, detectores de erros vigiam o funcionamento dos equipamentos físicos, dentro de cada unidade, e transferem a informação de verificação entre as unidades. A detecção de um erro faz com que o mõdulo processador isole a linha omnibus ou a unidade que provocou o erro pa ra não transferir informação para as outras unidades, continuan do o mõdulo em funcionamento. O funcionamento continuado utiliza o parceiro da unidade ou da linha omnibus avariadas. Quando a detecção do erro preceder uma transferência de informação, o funcionamento continuado pode executar a transferência ao mesmo tempo que teria ocorrido na ausência de avaria. Se a detecção do erro coincidir com uma transferência de informação, a operação continuada pode repetir a transferência. O sistema computador pode efectuar a re ferida detecção de avarias e a acção de lhe dar remédio rapida-. mente, isto é, dentro de uma fracção de um ciclo de funcionamen * to. O sistema computador tem no máximo apenas uma informação 41 única que é de validade questionável e que exige a repetição pa ra garantir a validade total dos dados.
Embora um módulo processador tenha uma redundância importante de meios físicos para proporcionar o fun cionamento tolerante de avarias, um módulo sem unidades duplas é não obstante completamente operacional. A redundância das unidades funcionais permite que o módulo continue a funcionar na eventualidade de uma avaria em qualquer unidade. Em geral, todas as unidades de um módulo processador funcionam continuamente, e com sincronismo seleccionado, na ausência de qualquer avaria detectada. Após a detecção de uma avaria, que se manifesta por um erro, em qual quer unidade, essa unidade é isolada e colocada fora de linha de modo que ela não pode transferir informação para outras unidades do módulo. A parceira da unidade fora de linha continua a funcionar, normalmente substancialmente sem qualquer interrupção.
Além da duplicação de unidades funcionais emparelhadas no interior de um módulo para proporcionar o funcionamento tolerante de avarias, cada unidade no interior de um módulo processador tem geralmente um duplicado de meios físi cos que está implicado numa transferência de dados. A finalidade dessa duplicação, no interior de uma unidade funcional, é fa zer ensaios, independentemente das outras unidades, para detecção de avarias no interior de cada unidade. Outra estrutura no interior de cada unidade de um módulo, incluindo a estrutura de detecção de erros, não é em geral duplicada. A estrutura comum de linhas omnibus que serve todas as unidades de um módulo processador de preferência utiliza uma combinação dos dois níveis anteriores de duplicação e tem três conjuntos de condutores que formam uma linha omnibus (A), uma linha omnibus (B) que duplica a linha omnibus (A) e uma linha omnibus (X). As linhas omnibus (A) e (B) transportam cada uma um conjunto idêntico de sinais de definição de ciclos, de endereço, de dados, de paridade e outros, que podem ser comparados para a indicação de aviso de transferência de informação errada entre unidades. Os condutores da linha omnibus (X), 42 que não são duplicados, em geral transmitem sinais respeitantes a todo o módulo e outros sinais de operação, tais como sinais de distribuição de tempos, condições de erro e energia eléctri-ca. Uma linha omnibus adicional (C) ê proporcionada para a comu nicação local entre unidades emparelhadas.
Um módulo processador detecta e localiza uma avaria por uma combinação de técnicas no interior de cada unidade funcional, que incluem a comparação do funcionamento das secções duplicadas da unidade, a utilização de outros códigos de detecção e correcção de erros e vigiando parâmetros de funcionamento, tais como as tensões de alimentação. Cada unidade central de processamento tem duas secções de processamento redundantes e, se a comparação der um resultado inválido, isola a unidade de processamento para não transferir informação para a estrutura de linhas omnibus. Isso isola outras unidades funcionais do módulo processador de qualquer informação errada que possa provir da unidade de processamento em questão. Cada unida de de processamento tem também um andar para proporcionar o fun cionamento de memória virtual, que não é duplicado. Em vez disso, a unidade de processamento utiliza técnicas de controlo de pari dade para detectar uma avaria neste andar. A unidade de memória de acesso aleatório (16) está disposta com duas secções de memória não redundan tes, cada uma das quais está disposta para o armazenamento de octetos diferentes de uma palavra de memória. A unidade detecta uma avaria, quer em cada secção da memória, quer no conjunto compósito das duas secções, com um código de correcção de erros. Mais uma vez, o detector de erros desactiva a unidade de memória para não transferir informação potencialmente errada para a estrutura das linhas omnibus e daí para as outras unidades. Ã unidade de memória (16) está também atribuida a tarefa de verificar os condutores das linhas omnibus duplicadas, isto é a linha omnibus (A) e a linha omnibus (B). Para isso, a unidade tem verificadores de paridade que ensaiam os sinais de endereços e que ensaiam os sinais de dados na estrutura de linhas omnibus. Além disso, um comparador compa ra todos os sinais na linha omnibus (A) com todos os sinais na 43
linha omnibus (B). Ao determinar deste modo que uma das linhas omnibus está avariada, a unidade de memória sinaliza nas outras unidades do módulo, através da linha omnibus (X), para obedecer apenas à linha omnibus não avariada.
As unidades de controlo dos periféricos para um módulo processador utilizam uma secção de interface com as linhas omnibus para ligação com a estrutura comum das linhas omnibus, secções de controlo duplicadas denominadas "excitação" ("drive") e "verificação" ("check"), e uma secção de interface dos periféricos que comunica entre as secções de controlo e os dispositivos de entrada/saída dos periféricos que a unidade ser ve. Hã unidades de controlo de discos (20,22) para operação com memória de discos (52a,52b), uma unidade de controlo de comunicações (24,26) para a operação, através de painéis de comunicações (50) com dispositivos de comunicação que incluem terminais, impressoras e modem, e unidades de controlo da HSDI (32) e (34), para a interligação de um módulo processador com um outro num sistema multiprocessadores. Em qualquer dos casos, a secção de interface de linhas omnibus fornece sinais de entrada para as secções de controlo de excitação e de verificação a partir da linha omnibus (A) e/ou da linha omnibus (B), ensaios para detec tar erros lógicos em certos sinais de entrada provenientes da estrutura de linhas omnibus e ensaios de identidade de sinais saídos dos canais de excitação e de verificação. A secção de controlo de excitação em cada unidade de controlo, de periféricos proporciona funções de controlo, de endereço, de estado e de manipulação de dados, apropriados para o dispositivo de 1/0 que a unidade serve. A secção de controlo de verificação da uni^ dade é substancialmente idêntica para a finalidade de verificar a secção de controlo de excitação. A secção de interface dos pe riféricos de cada unidade de controlo inclui uma combinação de dispositivos de paridade e comparadores para ensaiar sinais que passam entre a unidade de controlo e os dispositivos periféricos para detectar erros.
Uma unidade de controlo dos periféricos que opera com um dispositivo de I/O síncrono, tal como uma unidade de controlo de comunicação (24), opera com sincronização 44
por arranque e paragem com a sua unidade parceira. Porém, as unidades de controlo de discos emparceiradas (20,22) operam com memórias de discos diferentes não sincronizadas e por conseguin te operam com sincronismo limitado. As unidades de controlo de discos emparelhados (20,22) efectuam operações de escrita simul^ taneamente, mas não com sincronismo exacto, visto que as memórias de discos operam assincronamente uma em relação à outra. A unidade de controlo (32) e a sua parceira também operam tipicamente com este grau de sincronismo limitado. A unidade de alimentação de energia para um módulo utiliza duas fontes de energia de grande capacidade, cada uma das quais fornece a energia de funcionamento para apenas uma unidade em cada par de unidades parceiras. Assim uma unidade de alimentação de grande capacidade alimenta a parte du plicada da estrutura de linhas omnibus, uma de duas unidades de processamento central parceiras, uma de duas unidades de memória parceiras e uma unidade em cada par de unidades de controlo de periféricos. As unidades de alimentação de grande capacidade também fornecem energia eléctrica para unidades não duplicadas do módulo processador. Cada unidade do módulo tem um andar de alimentação de energia que recebe energia de operação de uma unidade de alimentação de grande capacidade e que, por sua vez, gera as tensões de funcionamento exigidas por essa unidade.
Esse andar de alimentação vigia além disso as tensões de alimen tação. Ao detectar uma tensão de alimentação errada, o andar de alimentação produz um sinal que fixa ao potencial de terra todas as linhas de saída provenientes dessa unidade para a estrutura de linhas omnibus. Esta acção impede que uma falha de alimentação em qualquer unidade provoque a transmissão de informação errada para a estrutura de linhas omnibus.
Algumas unidades do módulo processador executam cada transferência de informação com um ciclo de opera ção que inclui uma fase de distribuição de tempos de detecção de erros antes da transferência de informação propriamente dita. Uma unidade que proporciona esta operação, por exemplo uma unidade de controlo de um dispositivo periférico; faz assim um ensaio para detectar uma condição de avaria antes de efectuar uma 45
transferência de informação. A unidade inibe a transferência de informação no caso de se ter detectado uma avaria. Mas o mõdulo pode continuar a operação - sem interrupção nem atraso - e efec tuar a transferência de informação a partir da unidade parceira não inibida.
Outras unidades do módulo processador, que incluem geralmente pelo menos a unidade de processamento central e a unidade de memória, para as quais o tempo de operação tem maior importância, executa cada transferência de informação simultaneamente com a detecção de erro pertinente para essa transferência. No caso de ser detectada uma avaria, a unidade imediatamente produz um sinal que alerta outras unidades de processamento para descartar a transferência de informação imediatamente anterior. 0 módulo processador pode repetir a transferência de informação a partir do parceiro da unidade que informou a condição de avaria. Este modo de funcionamento produz uma velocidade de funcionamento óptima dado que cada transferência de informação é executada sem a demora destinada â detecção do erro. Um atraso só surge nos casos relativamente raros em que é detectada uma avaria. Um dispositivo de arbitragem de linhas omnibus é proporcionado para determinar qual a unidade que obtém o acesso às linhas omnibus do sistema quando há vá rias unidades a pedir esse acesso. Mõdulo S/370 tolerante de avarias (9) interligado através de HSDI/redes A fig. 7 ilustra, na parte por cima do módulo (10) da técnica anterior, a interligação de pares de pro cessadores duplexados S/370 e S/88 (unidades emparelhadas) (21, 23) que, quando substituem as unidades S/88 duplexadas (12,14) no mõdulo (10), criam um módulo S/370 (9) novo e único. Quando tais módulos únicos (9) são interligados por HSDI S/88 e por re des, de uma maneira idêntica à representada nas fig. 6B,6C para os módulos (10), eles criam um complexo S/370 (em vez de um com plexo S/88) com características S/88 de tolerância de avarias, de imagem de um sistema único, de possibilidade de ligação com 46
3BHSSBS a alimentação ligada, de partilha de carga de 1/0 entre várias unidades de processamento S/88 no interior do mesmo módulo, etc.,
Em especial, os processadores nas unida des emparelhadas (21,23) dos módulos únicos (9) executam instru ções S/370 sob o controlo do seu sistema operativo S/370; os processadores S/88 interligados efectuam todas as operações de 1/0 S/370 em conjunção com a sua memória S/38 respectiva e as unidades periféricas S/88, sob o controlo do sistema operativo S/88 em conjunção com um programa de aplicação S/88.
Além disso, outras unidades emparelhadas (25,27) e (29,31) do processador S/370-S/88 podem ser incor poradas dentro do novo módulo (9) para permitir um ambiente de processadores S/370 plural no interior do módulo único (9).
Além disso, os processadores no interior das unidades emparelha das (21,23) e (25,27) e (29,31) podem operar cada uma sob um sistema operativo S/370 diferente por par de parceiros.
Descrição geral das unidades emparelhadas (21,23) do processador duplicadas A fig. 8 ilustra uma forma preferida de interligação de processadores S/370 e S/88 no interior da unida de (21). A parte inferior da unidade (21) compreende um processador central (12), substancialmente idêntico ao processador (12) da patente de Reid atrás mencionada, excepto na utilização de um elemento processador único em cada um dos elementos (60, 62) do par de processadores. Na patente de Reid, eram proporcio nados processadores duais em (60) e em (62) para executar res-pectivamente o código do utilizador e o código do sistema opera tivo.
No presente pedido de patente, ambas as funções são executadas por um microprocessador único, de preferência um microprocessador Motorola MC68020, descrito no MC68020 Users Manual, 3§ Edição (ISBN-O-13-567017-9) publicado pela Motorola, copyriht 1989, 1988. A referida publicação é aqui incorporada por referência, como se fosse aqui apresentada com- 47
pletamente.
Assim, cada elemento processador (PE) -(60) e (62) - de preferência compreende vim microprocessador Mo torola 68020. Os multiplexadores (61,63) ligam os elementos pro cessadores (60,62) à estrutura de linhas omnibus (30) através de linhas omnibus de endereços/controlo de dados (A) e (B) e dos emissores-receptores (12e), de uma maneira descrita em pormenor na patente de Reid. Proporcionam-se um controlo local (64,66) e um mapa da memória virtual (12c) para os elementos (60,62). Um comparador (12f) verifica as avarias que produzem erros, por comparação dos sinais nas linhas de controlo, de dados e de endereços para e da linha omnibus (30) e para e dos elementos processadores (60,62). A não coincidência dos sinais produz um sinal de erro a partir do comparador (12f) para os circuitos de controlo comuns (86) que envia sinais de erro pela linha omnibus (X) da estrutura de linhas omnibus (30) e desacti va excitadores (não representados) nos emissores-receptores (12e) para pôr fora de linha a unidade de processamento (12). Circuitos de sujeição (88,90) respondem a uma falha de energia na unidade (12) para sujeitar ao potencial de terra todas as li nhas de saída da unidade (12) para a estrutura de linhas omnibus (30). Estes componentes são descritos com mais pormenor na patente de Reid. A porção superior da fig. 8 ilustra uma forma preferida da ligação de um par de elementos de processamento S/370 (85,87) ã estrutura das linhas omnibus S/88 e aos elementos de processamento S/88 (60,62) . Os elementos de procejs sarnento (85,87) estão ligados â estrutura de linhas omnibus (30' através de multiplexadores (71,73) e emissores-receptores (13), de uma maneira logicamente semelhante à dos elementos (60,62) ligados à mesma estrutura de linhas omnibus (30).
Um circuito de comparação (15) (descrito mais completamente nas fig. 32A,B), circuitos de sujeição (77) e (79) e controlos comuns (75) são proporcionados e funcio nam de maneira semelhante aos componentes correspondentes na , unidade (12). 0 circuito de controlo (86) está acoplado ao meca • nismo de interrupções S/88 dos elementos de processamento (60, 48
62). Os processadores S/370 (85,87) e os seus dispositivos de meios fisicos com eles relacionados utiliza o S/88 para processar o tratamento e a recuperação dos erros. Assim, o circuito de controlo comum (75) está acoplado ao circuito de controlo co mum (86), através da linha (95), para permitir que este último trate erros detectados pelo circuito de comparação (15). Esta linha de acoplamento (95) também permite que os controlos comuns (75) e (86) ponham ambos os seus pares de processadores respectivos (85,87) e (60,62) fora de linha, no caso de um erro em qualquer par de processadores.
Uma forma preferida de unidades de processamento S/370 na unidade (21) inclui as unidades (81,83) de gestão da memória dos elementos de processamento central (85, 87) e as interfaces (89,91) entre processador e processador (por exemplo S/370 para S/88). As unidades de gestão da memória (81,83) acoplam a memória principal (16) dos elementos processa dores (85,87) para S/88, através de multiplexadores (71,73), dos emissores-receptores e da estrutura das linhas omnibus (30).
Um circuito de comparação (15) (descrito mais completamente nas fig. 32A,B), circuitos de sujeição (77) e (79) e controlos comuns (75) funcionam de uma maneira análoga aos componentes correspondentes da unidade (12). 0 circuito de controlo (86) está acoplado ao mecanismo de interrupção S/88 dos elementos de processamento (60,62). Os processadores S/370 (85,87) e os seus equipamentos físicos relacionados utilizam o S/88 para o tratamento e a recuperação dos erros do processo. Assim, o circuito de controlo comum (75) é acoplado ao circuito de controlo comum (86) através da linha (95) para permitir que este último trate os erros detectados pelo circuito de comparação (15). Esta linha de acoplamento (95) também permite que os comandos comuns (75) e (86) coloquem ambas os seus pares respectivos de processadores (85,87) e (60,62) fora de linha, na eventualidade de um erro em qualquer dos pares de processadores.
Uma forma preferida das unidades de pro cessamento S/370 da unidade (21) inclui as unidades (81,83) de gestão das memórias dos elementos de processamento central e as 49
interfaces (89,91) processador-processador (por exemplo S/370 para S/88). As unidades de gestão das memórias (81,83) acoplam os elementos de processamento (85,87) à memória principal (16) do S/88 através de multiplexadores (71,73), emissores-recepto-res (13) e uma estrutura de linhas omnibus (30).
As interfaces (89,91) acoplam as linhas omnibus dos elementos de processamento (85,87) do S/370 respec-tivamente às linhas omnibus dos processadores dos elementos de processamento (62,60) do S/88. A unidade de processador parceira (23) é idêntica à unidade de processador (21). Recorda-se que, relativamente ã descrição anterior, os dois elementos de processamento (60,62) na unidade (21) e os dois elementos correspondentes (não representados) na unidade (23) todos operam normalmente com sincronização por arranque e paragem uns com os outros para executar simultaneamente instruções idênticas sob o contro lo do mesmo sistema operativo S/88.
Analogamente, os elementos processadores (85,87) na unidade (21) e os seus elementos correspondentes (não representados) na unidade (23) operam em sincronização de arranque e paragem uns com os outros para executar simultaneamente instruções idênticas sob o controlo do mesmo sistema operativo S/370.
No caso de um erro na unidade (21) ou na (23), essa unidade é retirada de serviço para permitir a con tinuação do funcionamento tolerante das avarias pela outra unidade.
Embora se descrevam alguns pormenores de uma forma de realização prática específica de uma unidade de processamento, mais adiante, compreender-se-ã que podem usar-se outras formas de realização conhecidas que sejam compatíveis com os requisitos descritos em IBM System/370 Principies of Ope racion (publicação NQ. GA22-7000-10, lis edição, Setembro de 1987) publicada por e disponível na International Business Machines Corporation. A referida publicação é aqui incorporada por referência como se fosse apresentada completamente.
As fig. 9A e 9B mostram uma forma de 50 acondicionamento físico dos componentes S/370 e S/88 para a uni dade de processador (21) da fig. 8. Os componentes S/370 que in cluem os elementos de processamento emparelhados (85,87) estão montados num cartão (101) e os componentes S/88 que incluem os elementos de processamento emparelhados (60,62) estão montados num outro cartão (102). Os dois cartões (101) e (102) estão rigidamente fixados um ao outro para formar um par em sanduíche (103) e estão adaptados para a insersão em duas ranhuras do pajl nel traseiro (não representado) do módulo (9), fazendo uma ca-blagem convencional do painel traseiro o acoplamento dos componentes dos cartões (101) e (102) uns aos outros e à estrutura de linhas omnibus (30), como se ilustra na fig. 8 e se descreveu na patente de Reid.
Antes de descrever os pormenores do aco plamento directo de um processador S/370 a um processador S/88, será uma ajuda proporcionar uma breve referência ao mecanismo que permite que o S/370: 1) utilize uma parte da memória princi^ pal S/88 e 2) permute comandos e dados com o S/88 utilizando um certo espaço de memória virtual S/88. Estes mecanismos serão descritos mais tarde com mais pormenor.
Assim, a fig. 10 é usada para ilustrar uma forma preferida da atribuição de posições na memória virtual S/88 para a memória real (16), por uma unidade de gestão da memória (105) para um módulo (9). O espaço de endereços virtuais (106) está dividido no espaço (107) do sistema operativo S/88 e o espaço de aplicação dos utilizadores (108). Dentro do espaço (107) há uma área (109) (endereços 007E0000 a 007EFFFF) reservada para o equipamento físico e o código usados para acoplar cada elemento do processador S/370 a um elemento respecti-vo do processador S/88, numa unidade de processador tal como a (21). O espaço de endereços (109) é tornado transparente para o sistema operativo S/88 durante o processamento normal do sistema.
Durante a inicialização do sistema, a unidade (105) de gestão da memória atribui dentro da unidade (16) da memória principal S/88 uma área de memória principal S/370 para cada conjunto de quatro elementos do processador 51
S/370 em unidades emparceiradas, tais como (21) e (23). Assim, proporcionam-se três áreas de memória principal S/370 (162), (163) e (164) para unidades emparelhadas (21,23) e (25,27) e (29,31), respectivamente. Os elementos do processador S/88 no interior das unidades parceiras têm acesso às partes restantes da unidade de memória (16) da maneira descrita na patente Reid.
As áreas de memória S/370 (162-164) são atribuídas, como se descreverá mais tarde, de uma maneira tal que o sistema operativo S/88 não saiba que estas áreas foram "roubadas" e não são susceptíveis de ser de novo atribuídas a utilizadores S/88 pela unidade de gestão da memória, a menos que voltem para o espaço S/88. Como os sistemas S/370 são siste mas virtuais, eles acedem à respectiva área de memória principal por translacção de endereços. A unidade de memória principal S/88 parceira exige áreas de memória principal S/370 idênti_ cas (não representadas). Cada elemento de processamento S/370 pode aceder apenas â sua área de memória principal S/370 respec tiva e produz um sinal de erro se tentar aceder ao espaço de me mória principal S/88. Porém, cada elemento de processamento S/88 pode aceder (ou orientar o acesso) ã área de memória principal S/370 do seu elemento de processamento S/370 durante as operações de 1/0 S/370, quando o elemento de processamento S/88 actuar como controlador 1/0 para o seu elemento de processamento S/370.
Acoplamento de elementos de processamento S/370 e S/88 (85,62) (fig. 11 e 12) A fig. 8 ilustra esquematicamente a pro visão de quatro elementos de processamento S/370, tais como (85), dois em cada uma das unidades emparelhadas (21,23) e quatro elementos de processamento S/88, tais como (62), dois em ca da unidade (21,23) acoplados de tal modo que os elementos de processamento S/370 executam simultaneamente instruções S/370 idênticas e todos os elementos de processamento S/88 executam simultaneamente instruções S/88 idênticas. Assim, todos os quatro elementos de processamento S/370 actuam como uma unidade de 52 jmwgagirwijw» i^. Λΐ-t
t*-Ji(U« U'5»*y,«rw·*» ,·*+η«ι·*Μ· ··*-% *' processamento S/370, no que respeita à execução de programas. Analogamente, todos os quatro elementos de processamento S/88 actuam com uma unidade de processamento S/88.
Por conseguinte, para facilidade de ilustração e explicação, as partes seguintes dos desenhos e da memória descritiva dirigem-se primariamente a um elemento de processamento S/370 (85) e a um elemento de processamento S/88 (62) e aos seus meios físicos e código de programas, excepto quando a duplicação de componentes exigir explicações adicionais.
Analogamente, omitir-se-á o acoplamento de elementos de processamento à estrutura de linhas omnibus (30), por exemplo através de multiplexadores (61),(63),(71) e (73) e de emissores-receptores (12e) e (11) da descrição seguin te, para facilitar a ilustração e a explicação. Far-se-á uma breve referência a este acoplamento, com referência à fig. 32.
Portanto, a fig. 11 representa o elemen to de processamento (85) acoplado âs linhas omnibus do sistema (30) e à memória S/88 (16), através de um primeiro trajecto que inclui a sua linha omnibus do processador (170) e a unidade de gestão da memória S/370 (81). O elemento de processamento (85) está representado acoplado â linha omnibus do processador (161) do elemento de processamento (PE) (62), através de um segundo trajecto que inclui o elemento de processamento para a interface dos elementos de processamento (89). 0 PE (85) utiliza o pri meiro trajecto durante a execução de programas S/370 para buscar (e armazenar) dados e instruções a partir da sua área de me mõria principal (162) S/370 na memória (16). O PE (62) executa operações de I/O S/370 para o PE (85) através do segundo trajec to que inclui a interface (89).
Numa forma de realização preferida, um conjunto (150) de micropastilhas S/370 (fig. 11) inclui micro-pastilhas funcionais individuais para o elemento processador (85), um relógio (152), um controlador de memórias "cache" (153) com uma tabela separada de consulta do catálogo de endereços , (DLTA) (341), um adaptador das linhas omnibus (154) um elemento * de co-processamento em vírgula flutuante (151) , optativo, e uma 53
(g^SffiSS33EEB3!3m*SBM
memória de controlo (171) para armazenar um conjunto de microcó digo que suporta a arquitectura S/370. Este conjunto de micro-pastilhas S/370 pode estar adaptado para ser operado por um qualquer dos sistemas operativos S/370 existentes (tais como VSE/SP, VM/SP, IX/370, etc.) comercializados pela International Business Machines Corporation. 0 controlador de memória "cache" (153) , juntamente com uma interface de controlo da memória (STCI)(155) formam a unidade de gestão da memória S/370 (81). 0 adaptador de linhas omnibus (154) e a unidade de controlo de linhas omni-bus (BCU) (156) constituem a interface entre PE e PE.
Na forma de realização preferida, cada uma das CPU S/370, tal como a PE (85) é um microprocessador de 32 bits com um fluxo de dados de 32 bits, uma unidade aritméti-ca/lógica (ALU) de 32 bits, registadores de 32 bits e uma memória local de dados de três portas, e uma memória tampão de instruções S/370 de 8 octetos. As instruções S/370 ou são executadas em equipamentos físicos ou são interpretadas por microins-truções. A micropastilha (153) proporciona memória "cache" para instruções de programas S/370 e dados, juntamente com funções de controlo de memória associadas. A micropastilha (153) trata todos os pedidos de memória que são emitidos pelo PE (85) e exe cuta as instruções dos seus programas. A micropastilha (153) também trata os pedidos provenientes do adaptador de linhas omnibus (154) quando se transferem dados de 1/0. 0 adaptador de linhas omnibus (154) e a unidade de controlo das linhas omnibus (156) (BCU) proporcionam a lógica e o controlo para interligar directamente (ou rigidamente) a linha omnibus interna do processador S/370 à linha omnibus (161) do processador S/88 durante as operações de entra-da/saída (1/0). A unidade BCU (156) é o mecanismo primário para acoplar directamente as linhas omnibus dos processadores PE (85) e PE (62) entre si. É o mecanismo de equipamentos físicos que interage com o elemento processador S/88 (62) quando o elemento processador (62) é "desacoplado" do seu equipamento físico do sistema associado para a transferência de dados e comandos entre o PE (62) e o PE (85), como se descreverá mais adiante. 54
A micropastilha do relógio (152) utiliza uma lógica centralizada para a geração dos sinais de relógio e aplica sinais de relógio apropriados individualmente a cada uma das outras micropastilhas (85) , (151), (153) e (154) . 0 relógio (152) é, por sua vez, controlado pelos sinais de relógio provenientes da linha omnibus do sistema S/88 (30), para sincro nizar os dois elementos de processamento S/370 (PE85) e S/88 (PE62).
Uma parte integrante da fusão das duas arquitecturas distintas de equipamentos físicos S/370 e S/88, fora do equipamento físico de acoplamento/desacoplamento dos processadores, é um meio de ligar de maneira síncrona o equipamento físico anteriormente não tolerante das avarias à estrutura de linhas omnibus (30) tolerante das avarias. Numa forma de realização preferida, esta interface é tratada pela lógica STCI (155) que tem de comunicar entre o controlador de memórias "cache" S/370 (153) e a linha omnibus (30) do sistema. Além disso, os equipamento físicos não tolerantes das avarias têm de ser du plicados no cartão, como se representa na fig. 8 para produzir uma lógica de "verificação" e "excitação" susceptível de funcio nar com sincronização por arranque e paragem, entre si e com uma unidade emparelhada. Assim a CPU "única" constituída por componentes do sistema em cartões (101) e (102) tem de funcionar em sincronismo por arranque e paragem com a respectiva unidade parceira duplexada. A tarefa da realização prática dos requisitos anteriores, ao mesmo tempo que se mantém uma eficácia e uma funcionalidade óptimas implica a sincronização de fontes de sinais de relógio separadas.
Na forma de realização preferida, o relógio (38) (fig. 7) do sistema S/88 é recebido por todos os diss positivos ligados à estrutura comum de linhas omnibus (30) defi nindo-se dois ciclos de sinais de relógio S/88 por cada ciclo das linhas omnibus (30). Este relógio (38) do sistema garante a comunicação síncrona na linha omnibus e pode ser usado por pro-cessadores/controladores individuais para produzir fontes inter nas de frequências de relógio baseadas no relógio do sistema. O equipamento físico S/370 utiliza uma entrada de oscilador na mi cropastilha de relógio S/370 (152), que gera então um conjunto 55
de sinais de relógio único para cada uma das outras micropasti-lhas S/370 (85)/ (151), (153), (154) e (155). Esta micropasti-lha de relógio (152) tem um atraso inerente que pode variar com base em vários parâmetros, tais como a temperatura de funcionamento, as variações de fabrico, etc.. Esta variação do atraso pode ser inaceitável, quer para manter a sincronização de arran que e paragem entre a lógica de verificação e excitação redundan tes, bem como para manter plena capacidade de canalização de in formações ("pipelining") entre a interface STCI (155) e a estru tura de linhas omnibus (30).
Como se ilustra nas fig. 12 e 19c, a forma de realização preferida utiliza a lógica de sincronização (158) e (158a), não representada, para a unidade do processador S/370 emparelhada) do relógio redundante, para permitir que os dois lados de verificação e excitação do processador de um cartão (101) funcionem com sincronização de arranque eparagem depois de uma reposição (isto é, religação da energia ou outra), enquanto se sincroniza o ciclo do processador S/370 com o ciclo das linhas omnibus (30) do S/88. Os sinais de relógio provenien tes do relógio (38) S/88 são aplicados através da estrutura de linhas omnibus (30) â lógica de sincronização (158) e à interfa ce STCI (155), para a sincronização S/88-S/370 e para aceder ã memória principal através das linhas omnibus (30) do sistema.
Esta sincronização é obtida na lógica de sincronização do relógio (158) multiplicando primeiramente o relógio do S/88 para obter a frequência de entrada do oscilador S/370 desejada para a micropastilha (152) do relógio S/370. Nejs te caso, ela é duas vezes a frequência dos ciclos de relógio S/88 e S/370. Em segundo lugar, faz-se a exploração de amostragem de um impulso de retroacção na linha (159), que representa o início do ciclo S/370, com os impulsos de relógio S/88 que re presentam os bordos dianteiro e traseiro de um período superior em um período de atraso do retentor do registador ao período do relógio de entrada do oscilador S/370 que, por sua vez, é igual à duração de meio ciclo S/88. No caso de uma reposição na qual o impulso de retroacção do relógio S/370 explorado, na linha (159) , cai fora da janela explorada, ou sobrepondo-se ao início 56
do relógio S/88, então a entrada do oscilador S/370 é negada du rante um ciclo S/370. Isto serve para "prolongar" o ciclo S/370 de modo que, na forma de realização preferida, a amostragem seguinte do impulso (na linha (159)) de retroacção do relógio S/370 caía seguramente dentro da janela desejada. Toda a lógica de comparação (15) (fig. 8), representada com mais pormenor na fig. 32 (por exemplo (402 a-g), é ignorada durante este tempo para permitir que o equipamento físico de verificação e excitação se sincronize.
Portanto, está assegurado que o ciclo do processador S/370 se inicia dentro do período do meio ciclo S/88 do início do período de relógio S/88. Todas as distribuições de tempo para as transferências entre a estrutura de linhas omnibus (30) e o controlador de memória "cache" S/370 (153) assume o atraso no pior dos casos para este meio ciclo. Além disso, a lógica de comparação (15) é alimentada apenas por linhas exploradas para amostragem com impulsos de relógio S/88, garantindo a sincronização da lógica "interrompida" (403) (fig. 32) com o cartão (102) do processador S/108 que as acompanha. Portanto, embora os equipamentos físicos de verificação e excitação S/370 possam de facto estar ligeiramente dessincronizados, devido a variações dos atrasos na lógica de geração dos respectí. vos impulsos de relógio, ambos os lados funcionam com sincronização por arranque e paragem, relativamente ao relógio (38) S/88 corrente, comum à estrutura de linhas omnibus (30), e nunca mais de meio ciclo depois do arranque do ciclo do relógio S/38. A lõ gica de sincronização (158) continua a monitorar o retorno dos impulsos de relógio S/370 na linha (159) para garantir que não há nenhuma deriva superior a meio ciclo. É necessário um máximo de um ciclo das linhas omnibus (30), na forma de realização pre ferida, para levar os dois lados ao sincronismo durante qualquer reposição do sistema; porém, qualquer desvio do atraso total fo ra da reposição, que faz com que um dos lados "prolongue" os seus impulsos de relógio S/370, terá como consequência uma condição de cartão "interrompido", isto é, uma avaria. A fig. 12 representa o dispositivo da • fig. 11 com mais pormenor. A memória (171) de controlo S/370 ej3 57
tá representada ligada ao PE (85). A memória de controlo (171) consiste, na forma de realização preferida, numa memória de 16 KB, de acesso aleatório, para armazenar micro-instruçóes que controlam a execução de instruções de programas e operações de 1/0 no interior do PE (85). A memória de controlo (171) também inclui em si um bloco de 64 KB (186) (fig. 29), que e usado como uma memória tampão para conter um microcódigo transitório carregado com base num pedido proveniente de uma área objecto interna (IOA) (187) (fig. 28), que faz parte da memória (162) dedicada S/370 no interior da unidade de memória principal (16). Nesta figura, a estrutura de linhas omnibus (161) do PE (62) e£ tá representada dividida numa linha omnibus de endereços virtuais (161A) e na linha omnibus de dados (161D). 0 PE (62) tem com ele associados equipamentos físicos que incluem um processa dor em vírgula flutuante FFP (172), uma memória "cache" (173), uma unidade (174) de armazenamento de microcódigo (174), que é usada para armazenar o microcódigo de acoplamento, aqui designa do por ETIO. Quer o microcódigo, quer um programa de aplicação armazenado na memória "cache" (173), como se verá mais adiante, são usados para controlar o PE (62) e a lógica da unidade de controlo da linha omnibus BCU (156) para efectuar operações de 1/0 para o PE (85).
Os equipamentos físicos PE (62) também incluem um mecanismo de tradução de endereços (175). Uma canali^ zação de escrita ("write pipe") (176) armazena temporariamente dados durante um ciclo de escrita para aplicação desses dados nas linhas omnibus do sistema (30) durante o ciclo seguinte, pa ra acelerar o funcionamento do sistema S/88. A lógica das linhas omnibus do sistema/88 (177) do tipo descrito na patente de Reid acopla a unidade de tradução (175) e a canalização de escrita (176) â linha omnibus do sistema (30) de uma maneira descrita ge nericamente na referida patente de Reid. Uma unidade lógica da linha omnibus S/88 semelhante (178) acopla a interface de controlo da memória (155) à linha omnibus do sistema (30).
Uma memória tampão (180), uma memória fi xa programável (181), uma memória (182) e um conjunto de registadores (183) estão acoplados ao PE (62) para serem usados duran 58 te a inicialização do sistema S/88 e do sistema S/370. A memória PROM (181) tem um código do sistema e um IDCODE necessários para inicializar o sistema a partir de uma sequência de ligação da energia. A memória PROM 181 tem o código de sincronização pa ra o S/88. 0 registador (183) tem o registador do estado do sijs tema e do controlo.
Dois dos conjuntos de micropastilhas S/370 estão montados no mesmo cartão físico, que é sincronizado, e executa programas com sincronização por arranque e paragem, para proporcionar autoverificação ao cartão. A linha omnibus da STC (157) e uma linha omnibus do canal (0,1) será vigiada relativamente a falhas de tensão, de modo que o processador S/370 não pode propagar um erro para outra unidade substituível do campo. A unidade de controlo da linha omnibus (BCU) (156) e o adaptador de interface (89) permite que cada processador (PE 62) e (PE 85) tenha controlo apropriado sobre o outro processador, de modo que nenhum dos sistemas operativos tem o controlo completo do sistema. Cada uma das funções dos processadores é controlada em parte pela interface (89) e o mi-crocõdigo que passa em cada processador.
Interface (89) entre processador e processador 1. Adaptador 1/0 (154) 0 adaptador (154) (fig. 13) tem uma interface com o processador S/370 (85) para a BCU (156) , através dos seus canais de saída (0,1) . Os canais incluem duas linhas omnibus de dados (250,251) assíncronos, (A/D), com a largura de dois octetos. As linhas omnibus (250,251) estão acopladas ao trajecto de dados síncronos, com a largura de dois octetos, na linha omnibus do processador (170) através de duas memórias tam pão de 64 octetos (259,260) . Os dados são transferidos da BCU (156) para o adaptador (154) (e para a memória principal S/370 (162)) através da linha omnibus (251) e do adaptador (154) para a BCU (156) através da linha omnibus (250). 59 0 adaptador (154) inclui os registado res seguintes: 1. 0 registador de base (110) contém o comprimento dos endereços de base e de filas de espera usados para as filas de ess pera e para o endereçamento para a caixa de correio. 2. Os registadores (111) e (112) de indicadores de leitura (RPNTR) e de indicadores de escrita (WPNTR) contêm o desvio do endereço de base em relação â entrada seguinte na fila de espera a que deve aceder-se para uma leitura ou para uma estrita, respectivamente. O seu valor será carregado juntamente com o comando no registador de emissão quando os comando/ endereço devem ser transferidos para o controlador da memória "cache" (153), através da linha omnibus (170). 3. 0 registador de estados (IOSR) (118) contém todos os pedidos Pu-BCU e BCU-PU, o estado da fila de espera de mensagens de entrada e o estado da interface BCU. 4. Se um bit no registador de activação de excepção (ER) (119) for 1 e o bit IOSR correspondente for 1, é excitada uma excepção no elemento processador (PE) (85). 5. O registador de palavras de controlo (CW) (120) controla o ajustamento/reposição de alguns bits IOSR. 6. O registador dos limites de verificação de endereços (ACBR) (121) retém o endereço da página inicial da área objecto in terna (IOA) (187). 7. Os registadores das chaves de endereços (ADDR/KEY) (122) e (123) são normalmente carregados pela BCU (156) através das linhas omnibus de endereços/dados (250) e (251) para aceder a uma posição na memória (162). Estes registadores podem ser carregados pela PE (85) para fins de ensaio. 8. Os registadores de comandos (CMDO,l) (124) e (125) são normalmente carregados com uma contagem de comandos e de octe-tos pela BCU (156). Os registadores podem ser carregados pe la PE (85) para fins de ensaio. O adaptador (154) é a interface entre a PE (85) e a BCU (156). Localmente, o adaptador (154) proporciona os seguintes serviços à BCU (156) : - acesso ã memória principal S/370 (162) 60
r;^^tugaitTsr^?iogrJ3i acesso a uma caixa de correio e a uma fila de espera de men sagens na memória S/370 (162) - um mecanismo de pedido/resposta entre a PE (85) e a BCU (156) . A BCU (156) tem acesso a toda a memória (162), incluindo a área IOA (187) (fig. 28). 0 adaptador (154) realiza a verificação dos limites de endereços (verificação ACB entre a área IOA (187) e a área do utilizador (165)), enquanto a verificação da chave é feita pelo controlador da memória "cache" (153) depois de receber a chave, o comando e os dados do endereço da memória (162), através da linha omnibus do processa dor (170) a partir do adaptador (154). Se a linha de dados ende reçada a armazenar estiver contida na memória "cache", então os dados são armazenados na memória "cache". Caso contrário, o con trolador (153) transfere os dados para a memória principal (162). Para as buscas de dados aplica-se o mesmo mecanismo no controla dor da memória "cache" (153).
As transferências de comando I/O e de mensagens entre a PE (85) e a BCU (156) são feitas através de posições pré-definidas da memória (162) (área de caixa do correio (188) e fila de espera de mensagens entradas (189)) representada na fig. 28. A BCU (156) busca comandos I/O provenientes da área de caixa do correio (188) de 16 octetos. O endere ço para os acessos ã caixa do correio é calculado da seguinte maneira: endereço de base + comprimento da fila de espera de mensagens + desvio na caixa do correio
Os dois primeiros termos são fornecidos pelo registador de base (110) do adaptador (154) e o último pela BCU (156). O comprimento da fila de espera é ajustado por dois bits no registador de base (110) para 1, 2, 4 ou 8 KB (isto é, 64 a 512 entradas). A sua base é ajustada no registador de base (110) a um limite de duas vezes a dimensão da memória tampão (isto é, 2 - 16 KB, respectivamente). A fila de espera das mensagens entradas (189) armazena todas as mensagens entradas através da BCU (154) 61
por ordem cronológica. Cada entrada tem um comprimento de 16 oc tetos.
Os indicadores de leitura (RPNTR) e de escrita (WPNTR) nos registadores (111) e (112) são usados pela BCU (156) para ler entradas de, e escrever entradas para a fila de espera (189). A PE (85) acede ao indicador de leitura por uma operação de exploração. 0 endereço de base no registador (110) mais WPNTR aponta para a entrada seguinte da fila de espe ra a escrever e o endereço de base mais RPNTR aponta para a entrada seguinte da fila de espera a ler.
Estes indicadores são actualizados depois de cada operação na fila de espera: WPNTR + 16 = WPNTR depois de uma escrita RPNTR + 16 = RPNTR depois de uma leitura
Resultam as condições seguintes da comparação dos indicadores: RPNTR = WPNTR A fila de espera está vazia RPNTR = WPNTR +16 A fila de espera está cheia; se a BCU (156) pedir uma escrita à fila de espera: memória tampão não dispo nível (BNA) emitido para a BCU atra vês da linha omnibus de estados. A validade dos dados armazenados na área de caixa do correio (188) é sinalizada da PE (85) para a BCU (156) e vice-versa, pelos mecanismos seguintes: 0 sinal "PU to BCU request" na linha (256a) (fig. 16) é ajustado pela PE (85) com uma microinstrução de controlo. Esse sinal avisa a BCU (156) para fazer a busca de ordem proveniente da caixa de correio (188) e para a executar. O pedido é reposto pela BCU depois da execução da ordem. O esta do do pedido pode ser detectado pela PE (85). A BCU faz um pedido quando surge um problema, ou durante a execução de uma ordem iniciada pela PE (85), ou em qualquer outro instante. Ela provoca uma excepção na PE (85), se não for selectivamente mascarada. 0 adaptador (154) adapta a velocidade de transferência dos canais assíncronos (0,1) do adaptador à li 62
'*“ίίϊ£κ nha omnibus síncrona (170) do processador. Portanto, a BCU (156) é apoiada por memórias tampão de dados de 64 octetos (259) e (260) , no adaptador (154) , para a transferência de dados para e da BCU (156) , respectivamente. O agregado tem uma porta de 4 oc tetos para a linha omnibus do canal (0,1) e para a linha omnibus (170) do processador.
Os registadores síncronos (113) e (114) armazenam temporariamente dados transferidos entre a BCU (156) e os agregados de memórias (260) e (269).
Os registadores de recepção e de emissão da linha omnibus armazenam dados recebidos de e transferidos para a linha omnibus (170) do processador, respectivamente.
Uma operação de armazenamento (armazena mento de dados de 1/0, fila de espera Op) é iniciada pela emissão da BCU (156) para o adaptador (154) da contagem de comandos /octetos, da chave de protecção e do endereço da memória, através da linha omnibus do canal. A contagem de comandos/octetos é recebida na linha omnibus de comandos (252) (fig. 13) e armazenada no registador (125) de comandos. Os dados da chave e do en dereço são recebidos da BCU (156) através da linha omnibus (251) de endereços/dados (fig. 13) e armazenados no registador (123) da chave/endereço (123). O agregado de indicadores de endereços de escrita e leitura são ajustados nos seus valores iniciais no registador (128). O número de transferências de dados (2 octetos de cada vez) na linha omnibus (251) é determinado pela contagem de octetos. Com uma operação de armazenamento, podem trans ferir-se até 64 octetos de dados. O endereço de memória de qual quer octeto dentro de uma operação de armazenamento pode não uj. trapassar o limite de endereços de 64 octetos. O ciclo de comando/endereços ê seguido por ciclos de dados na linha omnibus (251). Todos os dados são recolhidos na memória tampão de 64 octetos (260). Depois de terem sido recebidos os últimos dados da BCU (156), o adaptador (154) efectua uma primeira verificação (não representada) de prioridade interna para as duas memórias tampão de dados (259) e (260) e depois pede o controlo (não representado) da linha om nibus (170) do processador, tendo o adaptador (154) aí o grau 63
de prioridade mais elevado.
No caso de ambas as memórias (259) e (260) pedirem uma transferência ao mesmo tempo, o controlo interno de prioridade concede-a primeiro à memória tampão (259) e depois, sem ciclo de arbitragem, â memória (260) , isto é: as leituras têm prioridade sobre as escritas.
Quando for concedido o controlo, transferem-se a contagem de comandos/octetos, a chave de protecção e o endereço inicial para o controlador da memória "cache" (153). 0 ciclo de transferência de comandos é seguido pelos ciclos de transferências de dados. O controlador da memória "cache" (153) efectua a verificação da chave de protecção. Uma violação da chave será comunicada ao adaptador (154) no estado da linha om-nibus (170) . Outras condições de verificação pelo controlador da memória "cache" (153) e da memória principal (162) são comunicadas como estado ANY-CHECK. Uma violação da chave e condições de estado detectadas pelo adaptador (154) serão enviadas para a BCU (156) num ciclo de transferência de estados. Hã duas condições possíveis de estado detectadas pelo adaptador (154) que podem ser comunicadas â BCU (156) . Para ambas as condições de verificação é suprimido o aces^ so à memória (162).
Cada endereço de memória principal rece bido da BCU (156) é comparado com o endereço mantido no regista dor ACB para determinar se o acesso é para a área IOA (187) ou para a área de cliente (165) da memória (162). Um bit "cliente" recebido juntamente com cada comando da BCU (156) determina se o acesso à memória principal se destina à área IOA (187) ou à área de cliente ou utilizador (165) e controla os acessos impróprios.
Uma condição BNA (memória tampão não disponível) descrita mais adiante é comunicada apenas para operações de fila de espera.
As operações de leitura (leitura de I/O, leitura da caixa de correio) são iniciadas pela BCU (156) de uma maneira essencialmente idêntica ã das operações de memória ou ar • mazenamento. Logo que a contagem de comandos/octetos, a chave de 64 *****(»;
protecção e o endereço tenham sido recebidos da BCU (156), efec tua-se a verificação de prioridade interna no adaptador (154) e é pedido o controlo da linha omnibus do processador (170). Se este controlo for concedido, a contagem de comandos/octetos, a chave de protecção e o acesso inicial da memória principal são transferidos para o controlador da memória "cache" (153) para iniciar o ciclo de leitura. O adaptador (154) carrega os dados pedidos primeiro na sua memória tampão (259) e depois, a pedida da BCU, através da linha omnibus (250), para a BCU (156). É comunicado o estado com cada transferência de dados.
As condições de estado e o mecanismo de comunicação para as operações de memória aplicam-se às operações de leitura. A PE (85) pode aceder à maior parte dos registadores no adaptador (154) com operações de detecção (leitura) e de controlo (escrita) através da linha omnibus (170).
Para as operações de detecção, o comando é transferido para o adaptador (154) e retido no registador (129). No ciclo seguinte, selecciona-se o multiplexador de detecção (126) de acordo com o comando; e o comando ê carregado no registador de emissão BSR (116) para ter os dados esperados válidos no ciclo seguinte da linha omnibus (170) .
Se se detectar um erro de paridade interno no registador a detectar, o adaptador (154) emite dados com a paridade correcta para trás para a PE (85) , mas provoca uma condição de verificação na linha omnibus da chave/estado. Esta função pode ser ensaiada com uma posição de código de detecção específica.
Para as operações de controlo, o comando BUS 170 será seguido por dados, que são carregados no registador de destino no ciclo seguinte.
Se se detectar um erro de paridade na linha omnibus (170) no ciclo de comando para operações de detec ção ou de controlo ou no ciclo de dados para operações de controlo, o adaptador (154) força uma paragem do relógio. 0 registador da base (110) contém o en-* dereço base usado para endereçar a fila de espera e a mala de 65
correio e o código do comprimento da fila de espera. A fila de espera começa no endereço da base, a área da caixa de correio na base + comprimento da fila de espera.
Os registadores RPNTR e WPNTR (111) e (112) contêm o desvio do endereço da base para a entrada seguin te da fila de espera a que deve aceder-se para leitura e escrita , respectivamente.
Quando detectados, o indicador de leitura e o indicador de escrita são concatenados com o endereço de base pelo multiplexador de detecção (126) no adaptador (154). Portanto, a palavra devolvida pela operação detectada é o endereço completo da enterada seguinte da fila de espera a que deve aceder-se. 0 registador de estados 1/0 contém os seguintes bits (além de outros, não descritos aqui):
Qualquer verificação ("Any Check") (bit 0) - ajustado a 1, se qualquer verificação em CHSR <0..24> e correspondente ao bit CHER for. 1. "Any Check" provoca ATTN-REQ. Se MODE-REQ <1> = 1, então activa-se o sinal Clock-Stop-Diana.
Enviado BNA ("BNA sent") (bit 6) - bit BNA (memória tampão não disponível) é 1, quando BCU tem de arma zenar uma mensagem entrada na fila de espera e a fila de espera está cheia, isto ê, RPNTR igual a WPNTR + 16. Este bit só pode ser reposto escrevendo um 1 no registador CW (120), bit 6.
Fila de espera não vazia (bit 7). Este bit é 1 se RPNTR não for igual a WPNTR. É 0 se RPNTR = WPNTR. É este o meio usado para notificar o processador (85) de que foi recebida uma nova mensagem.
Pedido de BCU para PU ("BCU to PU Re-quest") (bits 10 e 14)- Ajustados pelo BCU (156) através do sinal na linha "BCU to PU Request" (256c) para os canais 0 e 1. A reposição dos bits 10 e 14 pelo PE (85) produz uma confirmação "BCU to PU" na linha (256d) para os canais 0 e 1.
Pedido de PU para BCU ("PU do BCU Re-quest")- Ajustado na linha (226a) pela PE (85), ajustando o bit 11 do registador CW (120) para o canal 0 e o bit 15 para o registador CW (120) para o canal 1. Reposição pelo sinal "PU to 66 PCU Acknowledge na linha (256b).
Falta de energia em BCU ("BCU powerloss" i (bit 13) - Este bit é ajustado para 1 pela BCU (156) quando ela perde a sua energia ou quando se verificar um "power on reset" (reposição da energia). É reposto em 0 se se inscrever um 1 no bit "Reset BCU powerloss" do registador CW (120) e a BCU já não estiver no estado de sem energia.
Permitir a arbitragem ("Allow Arbitra-tion") (bit 29) - Este bit activa o sinal "Allow Arbitration" da linha omnibus do caso de o bit 3 do registador de modos do adaptador estar inactivo. O bit de acesso do utilizador, que faz parte do comando/endereço recebido da BCU (156) , determina se o acesso à memória será na área de memória IOA ou na de utilizador. Se o bit de acesso do utilizador for "O", o endereço da pá gina para acesso à memória tem de estar dentro da área IOA (187). Não será feita qualquer verificação da chave para estes acessos, forçando por conseguinte o equipamento físico do adaptador a chave a ser zero (adapta-se a entradas de todas as chaves).
Se o acesso de utilizador for "1", o en dereço da página para acesso à memória tem de estar no interior da área de memória do utilizador (165) . Caso contrário é provocada uma condição de verificação ACB para o acesso. A PE (85) utiliza comandos de mensagens para ler (detectar) ou para escrever (controlar) os registadores do adaptador (154). O formato para estes comandos é o seguinte: bits 0 - 7 CMD 8 - 11 SRC 12 - 15 DST 24 - 27 REGI 28 - 31 REG2 = Tipo de comando = pedido de endereço da unidade de ljl nha omnibus X' 8 = dados a transmitir no ciclo CMD 24-27 REGI = número do registador para CONTROL = número do registador para SENSE O campo DST para a interface PU-BCU ê O adaptador (154) não descodificará o campo SRC e MSG vis to que não há qualquer informação contida para execução de co- 67 mandos. Durante as operações de controlo e detecção, os bits REGI e REG2 definirão respectivamente o registador no adaptador (154) a escrever para o mesmo e a ler do mesmo. 2. LINHA OMNIBUS DOS CANAIS 0 E 1 DO ADAPTADOR DE I/O (fiq. 16) 0 canal 0 do adaptador e o canal 1 do adaptador são interligações de alta velocidade do adaptador de 1/0 (154) para a unidade de controlo de linhas omnibus (156). 0 canal 0 inclui:
Linhas omnibus de endereços/dados (250) (bits 0-16/ P0-P1)
Linha omnibus comando/estado (249) "Tag up" (BCU para Memória tampão) li- (bits 0-3,P) nha (262a) "Tag Down" (Memória tampão para BCU) ljL nha (262b) "Pedido PU para BCU" linha (256a) "Confirmação BCU para PU) linha (256b) O canal 1 inclui uma linha omnibus de endereços/dados (251), uma linha omnibus de comando/estado (252) e linhas "Tag up" e "Tag down" (262c) e (262d). O canal 0 é usado para transferências de dados da memória S/370 (162) (e PE (85)) para BCU (156) e o canal 1 é usado para transferências de dados da BCU (156) para a memória (162) (e PE (85)).
As linhas omnibus (249) , (250), (251) e (252) dos canais originam-se no adaptador I/O (154), que é essen cialmente um par de memórias tampão de dados que controla a lógica capaz de armazenar até 64 octetos de dados cada uma. As li nhas omnibus terminam na BCU (156). O adaptador I/O (154) serve para acelerar a adaptação entre a linha omnibus (170) interna S/370 com o seu formato de palavras completas (32 bits) e as li nhas omnibus mais lentas (249) a (252) com o seu formato de ] meias palavras (16 bits).
Cada canal está organizado em duas par- 68 tes, a linha omnibus de dados (250/251) do lado de dois octetos (meia palavra) e a linha omnibus (249/252) de comando/estado do lado de meio octeto (4 bits). Sinais de etiquetas ("Tag signals"! proporcionam os meios para controlar as operações através de pe dido/resposta e sinais especiais. A transferência de dados por cada canal verifica-se sempre em dois ciclos para transferir quatro octetos por cada linha omnibus de dois octetos). Logicamente, toda transferência de dados é entre a memória principal S/370 (162) e o subsistema I/O que inclui a BCU (156). A BCU (156) é a unidade directora, isto é, ela inicia todas as operações de transferência uma vez que a PE (85) tenha assinalado a necessidade da mesma. A linha omnibus de comandos/estados (249,252) é usada durante o ciclo de selecção para definir o sentido da transferência (busca/armazenamento) e a quantidade de dados a transferir. A linha omnibus de endereços/dados (250/ /251) serve para transferir o endereço da memória principal durante o ciclo de selecção e fornece dados durante um ciclo de transferência actual. É também usada para indicar áreas especificas (188,189) na memória (162) conhecidas por "caixa de correio" e "fila de espera de mensagens". Estas áreas permitem â PE (85) permutar certa informação com a BCU (156) .
Durante uma operação de busca (a partir da memória (162)), o estado é transferido pela linha omnibus de comando/estado (249) juntamente com os dois primeiros octetos de dados pela linha omnibus (250). Este estado indica qualquer verificação de endereços, verificação da chave, etc. ou é zero para indicar uma operação sem êxito.
Se se efectuar uma operação de armazena mento (na memória (162)), segue-se um ciclo de estado depois de todos os dados terem sido fornecidos à memória principal (162).
As fig. 14A e 14B mostram a utilização lógica das partes da linha omnibus durante o subciclo 1 e o sub ciclo 2 de operações de busca e de armazenamento, respectivamen te, sendo: aaa... endereço do primeiro octeto (o octeto mais 69 A B c â esquerda) no campo de dados 1 = verificação de endereço 1 = memória tampão não disponível 1 para acesso â memória do utilizador (165], 0 para acesso à área de microcódigo (IOA 187) ddd... fff... kkkk ooooo: PP • * · * ///: in out 4 octetos de dados para/da memória comprimento do campo menos 1, em octetos (0...63 decimal) 1 = verificação da chave desvio dentro de 32 octetos área da caixa de correio prioridade (0...3,3 é a mais elevada) não considerar linha omnibus em flutuação (indefinida) "inbound" (entrada (BCU para memória tampão) "outbound" (saída ) (memória tampão para BCU)
Utilizam-se as seguintes linhas de etiqueta para as operações de transferência: 1. A linha de pedidos de PU para BCU (256a) do adaptador de li nhas omnibus (154) para a BCU (156) é usada pela PE (85) pa ra indicar a necessidade de uma operação de I/O. Uma vez ajustado, o sinal mantém-se activo até ser reposto pela BCU (156) . 2. A linha "Tag up" (etiqueta no sentido ascendente) (262a) da BCU (156) para o adaptador (154) é usada para pedir dados de saída do adaptador (154) ou para indicar que há dados de entrada disponíveis na linha omnibus. A linha "Tag up" (262c) funciona da mesma maneira. 3. A linha "Tag down" (etiqueta no sentido descendente) (262b) do adaptador (154) para a BCU (156) é usada para indicar uma falta temporária de dados para a BCU (156) , se esta situação existir. O flanco descendente do sinal TAG DOWN indjl cará então a disponibilidade de dados de saída na linha om- 70
nibus. A linha "Tag Down" (262d) funciona da mesma maneira. 4. A linha de Confirmação BCU para PU (256b), da BCU (156) para o adaptador (154), é usada para repor o sinal de pedido de PU para BCU. Esta reposição é efectuada quando se tiver completado a operação de 1/0 para a caixa de correio.
Quando a PE (85) detectar uma instrução Start 1/0 (iniciar entrada/saída) (SIO) na corrente de intru-ções, ela alerta o subsistema 1/0, isto é a BCU (156), sobre a necessidade de uma operação 1/0, activando a linha "PU to BCU Request” (pedido da PU para a BCU). Esta etiqueta faz com que a BCU (156) consulte a "caixa de correio" (188) no interior da me mória (162) para verificar se esta operação é uma busca ou um armazenamento, quantos octetos é necessário transferir, etc.. A caixa de correio contém efectivamente o canal SIO, CUA, CAW e a palavra de comando (CCW) da operação 1/0 pertinente.
As operações de armazenamento são geral mente aquelas em que a BCU (156) envia dados para a PE (85) . Es^ tes "dados" são ou comando/chave/endereço, que são enviados no ciclo de selecção, ou dados 1/0 "reais" a armazenar na memória principal (162). Em ambos os casos a sequência de eventos é a mesma. . As fig. IA a 15C ilustram esquematicamente, numa forma generalizada, para a descrição seguinte, a ma neira como a informação de dados e de estados é encaminhada para dentro e para fora de memórias tampão/registadores de trinta e dois bits no adaptador (154) e na BCU (156) e como os bits, os de ordem superior (â esquerda) e os de ordem inferior (à direita) , de informação são colocados nas linhas omnibus dos canais 0 e 1 de dezoito bits do adaptador (154) .
As fig. 25 e 26 ilustram um conjunto es pecífico de sinais para as transferências de dados entre a BCU (156) e o adaptador (154) .
Com o início de um ciclo do relógio BCU, durante uma operação de armazenamento, fig. 15A, a BCU (156) co loca os dados para o primeiro ciclo na linha omnibus (251), Se este ciclo for um ciclo de dados para uma operação de dados da memória principal, coloca-se na linha omnibus de comandos/esta- 71 dos (252) e na linha omnibus de endereços e dados (251), respec tivamente um comando, uma contagem de octetos, uma chave de ecesso e o primeiro octeto do primeiro endereço da memória prin cipal. Se o ciclo for o ciclo de selecção para uma consulta da caixa do correio, não se coloca qualquer endereço da memória principal, visto que o comando indica a caixa do correio, que está numa posição fixa. Mantém-se válido o primeiro subciclo na linha omnibus para o tempo de dois subciclos.
Um ciclo de relógio da BCU após a colocação dos dados na linha omnibus (251) durante um ciclo de selecção, a BCU (156) activa a linha do sinal "Tag Up". A linha "Tag Up" (262a) faz com que o adaptador (154) armazene os dois primeiros octetos na metade da esquerda do registador (113) .
Com o início do ciclo de relógio seguinte, a BCU (156) coloca os dados (os segundos dois octetos) para o subciclo seguinte na linha omnibus de endereços/dados (251) para armazenamento, na outra metade do registador (113) do adaptador (154). Estes dados são ou o restante de um endereço da memória principal ou um desvio (se o lance pertence a um ciclo de selecção de consulta da caixa do correio). A BCU (156) retém os segundos dois octetos durante três ciclos do relógio da BCU, depois faz cair o si^ nal "Tag up".
As operações de busca são geralmente aquelas em que a BCU (156) pede dados do espaço de dados (162) da memória principal, da área de microcõdigos na memória (162) , ou da caixa de correio ou da fila de espera de mensagens. Em qualquer caso, um ciclo de selecção tem de preceder uma tal ope ração de busca para instruir a lógica do adaptador (154) acerca da operação que ele tem de executar. 0 ciclo de selecção ê realizado colocando os comando/chave/endereço na linha omnibus (249) de uma maneira análoga ã operação de armazenamento utilizando a linha omnibus (252), excepto que o comando na linha omnibus de comandos/estados (249) é um comando de "busca".
Com o início do ciclo de relógio seguin te (depois de se completar o ciclo de selecção) a BCU produz o sinal "Tag up" e mantém-no durante três ciclos de relógio BCU (fig. 15B). 0 sinal "Tag up" pede dados da memória tampão. Os 72
dados estarão disponíveis um ciclo mais tarde, se a memória tam pão puder fornecer dados. Como o funcionamento é semi-síncrono, a BCU (156) admite que os dois primeiros octetos de dados sejam mantidos válidos na linha omnibus durante dois ciclos, há depois um tempo de comutação de um ciclo e depois disso podem encaminhar-se os dois segundos octetos de dados para a BCU (156).
Contudo, há situações nas quais o adaptador (154) não tem dados disponíveis no instante em que surge o sinal "Tag up". Isso sucede tipicamente numa busca "inicial" de dados, isto é, quando se buscam dados a partir de um novo en dereço levando algum tempo até que o pedido de busca seja processado através do controlador da memória "cache" (153) e do controlador da memória (155), voltando depois ao adaptador (154). Uma nova tentativa na memória principal (162) pode também provo car um atraso temporário.
Sempre que o adaptador (154) não possa fornecer dados (fig. 15C), excita a linha "Tag Down" logo que seja detectado o sinal "Tag up". A BCU (156) deve fazer a amostragem da linha "Tag Down" não depois de cinco ciclos após ser gerado o sinal "Tag up". 0 adaptador (154) mantém o "Tag Down" até estar disponível a primeira palavra de dados (quatro octetos) . Nesse instante, o adaptador (154) coloca os dois primeiros octetos na linha omnibus (250) e faz cair o sinal "Tag DownY 0 flanco descendente do sinal "Tag Down" dispara a lógica (253) da BCU. A BCU (156) admite que os primeiros octetos são válidos durante os dois ciclos seguintes â queda do sinal "Tag Down" e depois ficam disponíveis os dois segundo octetos. Conforme o valor da contagem feita durante o ciclo de se lecção até 60 octetos, podem seguir-se dois octetos de cada vez.
Quando todos os dados da caixa de correio que foram pedidos no ciclo de selecção tiverem sido recebi dos, a BCU (156) estabelece o sinal "BCU to PU Acknowledge" (confirmação da BCU para a PU) na linha (256b) para o adaptador (154) para repor o pedido da PU para a BCU na linha (256a) que iniciou a operação. 73
mação entre a PE (85) e a BCU (156) é feita através de posições pré-definidas da memória (188,189) utilizando o endereço de base e o comprimento da fila de espera armazenados no registador de base (110) no adaptador (154). A fila de espera das mensagens entradas (189) armazena todas as mensagens emitidas pela BCU por ordem cronológica. 3. Unidade de controlo de linhas omnibus (156) - Descrição Geral (Figuras 16 e 17) A unidade de controlo das linhas omnibus (BCU) (156) é o equipamento físico primário de acoplamento entre o processador S/370 (85) e o seu processador S/88 associa do (62) que i utilizado para efectuar as operações de I/O S/370. A BCU (156) inclui meios que interagem com um programa de aplicação (EXEC370) e um microcõdigo (ETIO) que é executado no processador do S/88 (62) para apresentar interrupções ao processador (62) e para desacoplar assincronamente o processador (62) do seu equipamento físico associado e para acoplar o processador (62) à unidade BCU (156), tudo transparen te para o sistema operativo S/88. As operações de interrupção e desacoplamento transparentes são utilizadas para permitir o aco plamento directo dos processadores S/370 e S/88 para a transferência eficiente de comandos e dados I/O S/370 do processador S/370 (85) para o processador (62) S/88 para a conversão dos co mandos e dados para uma forma utilizável pelo processador S/88 (62) para efectuar as operações I/O S/370.
Compreender-se-á que o EXEC370 e o ETIO podem ambos ser um microcõdigo ou um programa de aplicação e ser armazenados na memória (174) ou na memória "cache" (173). A BCU (156), fig. 16, inclui a lógica da interface da unidade de controlo de linhas omnibus e regista dores (205), um controlador do acesso directo ã memória (DMAC) (209) e uma memória local (210). Linhas omnibus locais de ende-* reços e de dados (247) e (223) acoplam a memória (210) ao ende-1 reço da PE (62), às linhas omnibus de dados (16lA,161D) através 74
ÇTtC&CK dos circuitos de excitação/recepção (DRVR/RCVR) (217,218) e à lógica de interface (205) . O DMAC (209) está acoplado às linhas omnibus de endereços (247) através de retentores (233) e à linha omnibus de dados através dos circuitos de excitação/recepção (234). O DMAC (209) tem quatro canais, 0 a 3, que estão acoplados â lógica de interface (205) (fig. 17) por trajectos respectivos de pedido e de confirmação, cada um deles dedicado a uma função especial: o canal 0 transfere comandos I/O S/370 de uma área de caixa do correio (188) (fig. 28) na me mória S/370 (162) para a memória local (210) (LEITURA DA CAIXA DE CORREIO). O canal 1 transfere dados S/370 da memória (210) para a memória (162) (Leitura I/O S/370). O canal 3 transfere mensagens S/88 de elevada prioridade da memória (210) para a área (89) da fila de espera de mensagens (fig. 28) na memória (162) (ESCRITA DE MENSAGENS NA FILA DE ESPERA). O adaptador de linhas omnibus (154) tem dois canais 0 e 1. O canal 0 do adaptador trata as funções de LEITURA DA CAIXA DE CORREIO e ESCRITA I/O S/370 dos canais 0,1 do DMAC (isto é, o fluxo de dados do S/370 para a BCU (156)). O canal 1 do adaptador trata as funções de LEITURA I/O S/370 e ESCRITA NA FILA DE ESPERA DE MENSAGENS dos canais 2, 3 da DMAC (isto é, o fluxo de dados de BCU (156) para S/370). 4. Controlador do acesso directo à memória (209) io O controlador do acesso directo â memória (DMAC) (209) é de preferência do tipo descrito (MC68450) no M68000 Family Reference Manual, FR68K/D, Copyright Motorola, Inc. 1988. O referido manual é aqui incorporado por referência como se fosse transcrito na sua totalidade. O DMAC (209)é conce bido para complementar a eficácia e as capacidades arquitectu-rais dos microprocessadores da família M68000 Motorola (tal como o elemento processador M68020 (62)) deslocando blocos de dados de uma maneira rápida e eficiente com o mínimo de intervenç de um processador. O DMAC (209) efectua transferências de dados de memória para memória, de memória para um dispositivo e de um 75
ig*02»™SSa»SESíEidEESffismatea V5‘\ . .· v·
dispositivo para uma memória.
Inclui quatro canais de acesso directo a memória (DMA) independentes, com prioridade programável, e utiliza a estrutura da linha omnibus M68000 assícerona com uma linha omnibus de endereços de 24 bits e de dados de 16 bits. Po de ser enderaçado explicita e implicitamente. A finalidade principal de um DMAC tal como (209) em qualquer sistema é transferir dados a velocidade muito elevadas, usualmente muito mais rapidamente que o que um microprocessador pode tratar sob o controlo de meios de programação. A expressão acesso directo à memória (DMA) é usado para designar a capacidade de um dispositivo periférico aceder à memória num sistema da mesma maneira que o faz um microprocessador. A memória na presente aplicação é a memória local (210). O funcionamento do DMA pode verificar-se simultaneamente com outras operações que o sistema tenha necessidade de efectuar, reforçando assim grandemente a eficácia geral do sistema. 0 DMAC (209) desloca blocos de dados com velocidades que se aproximam dos limites da linha omnibus local (223). Um bloco de dados consiste numa sequência de ope-randos, de um octeto, de uma palavra ou de uma palavra longa, que se inicia num endereço específico na memória com o comprimento do bloco determinado por um valor de contagem de transferência. Uma operação num canal único pode implicar a transferên cia de vários blocos de dados para ou da memória (210) .
Qualquer operação que envolva o DMAC (209) seguirá os mesmos passos básicos: inicialização do canal por PE (62), transferência de dados e terminação do bloco. Na fase de inicialização, o processador PE (62) carrega os regista dores do DMAC com informação de comando, indicadores de endereços e contagens de transferência, fazendo depois arrancar o canal. Durante a fase de transferência, o DMAC (209) aceita pedidos para transferências de operandos e proporciona controlo dos endereços e das linhas omnibus para as transferências. A fase de terminação ocorre depois de a operação estar completa, quando o DMAC indica o estado da operação no registador de estados CSR. Durante todas as fases de uma operação de transferência de 76
dados, o DMAC (209) estará num de três modos de operação: 1. IDLE - Este é o estado que o DMAC (209) toma quando é repojs to por um dispositivo exterior e aguarda a inicialização pe lo processador do sistema (62) ou um pedido de transferência de operandos de um periférico. 2. MPU - Este é o estado em que DMAC (209) entra quando é se-leccionado ao nível da micropastilha por uma outra linha om nibus no sistema, que funciona como primária (usualmente o processador principal do processador (62)). Neste modo, os registadores internos do DMAC são gravados ou lidos, para controlar o funcionamento do canal ou verificar o estado de uma transferência de blocos. 3. DMA - Este é o estado em que entra o DMAC (209) quando está a actuar como uma linha omnibus considerada como primária para efectuar uma transferência de operandos. 0 DMAC pode efectuar transferência de dados de endereços implícitos ou explícitos. Para as transferên cias explícitas, os dados são transferidos de uma fonte para um registador de retenção interno DMAC, e depois, no ciclo seguinte da linha omnibus, são deslocados do registador de retenção para o destino. As transferências implícitas exigem apenas um ciclo da linha omnibus porque os dados são transferidos directa mente da fonte para o destino, sem memorização intermediária in terna no DMAC. Há três tipos de operações dos canais: 1) transferências de um bloco único, 2) funcionamento contínuo e 3) operações encadeadas. Quando se transferem blocos de dados isolados, são inicializados os registadores (MAR) e (DAR) de en dereços de memória e de endereços de dispositivos, pelo utiliza dor, para especificar a origem e o destino da transferência. É também inicializado o registador de contagem de transferências da memória para contar o número de operandos transferidos num bloco.
Os modos de encadeamento são: encadeamento de campos de dados ("array") e encadeamento de campos de . dados ligados. 0 modo de encadeamento de campos de dados opera | a partir de um campo de dados contíguo na memória (210) que con 77 siste em endereços de memória e valores de contagem de transferência. 0 registador do endereço de base (BAR) e o registador de contagem de base de transferência (BTC) são inicializados pa ra apontar para o endereço inicial do campo de dados e o número de entradas do campo de dados, respectivamente. Quando cada transferência de blocos estiver completada, é buscada a entrada seguinte a partir do campo de dados, decrementa-se a contagem de transferências e incrementa-se o endereço de base para apontar para a entrada do campo de dados seguinte. Quando a contagem de transferências atingir zero, a entrada precisamente procurada ê a transferência do último bloco definido neste campo de dados. 0 modo de campos de dados encadeados ljL gados é semelhante ao modo de encadeamento de campos de dados, excepto que cada entrada do campo de dados na memória contém um endereço de ligação que aponta para a entrada seguinte no campo de dados. Isso permite um campo de dados na memória não contíguo. A última entrada contém um endereço de ligação ajustado a zero. 0 registador BTC da contagem de transferências de base não é necessário neste modo. 0 registador de endereços de base (BAR) é inicializado para o endereço da primeira entrada no campo de dados. 0 endereço de elos de ligação é usado para actualizar o registador de endereços de base no início de cada transferência de blocos. Este modo de encadeamento permite que as entradas do campo de dados sejam facilmente deslocadas ou inseridas sem ter de reorganizar o campo de dados por ordem sequencial. Também, o número de entradas no campo de dados não precisa de ser especificado para o dmac (209), Este modo de endereçamento é usado pelo DMAC (209), no presente pedido de patente, para aceder a blocos livres da fila de espera de trabalho a partir de uma lijs ta de elos de ligação, de uma maneira que se descreve mais adian te com mais pormenor. O DMAC (209) interromperá o PE (62) para um certo número de casos que ocorrem, tais como a completude de uma operação DMA, ou quando do pedido de um dispositivo usan do uma linha PCL (57 a-d). 0 DMAC (209) retém os vectores de in terrupção, em oito registadores de vectores na micropastilha, 78 para serem usados na estrutura de interrupções por vectores PE (62). Estão disponíveis por cada canal dois registadores de vec toresf o vector de interrupção normal (NIV) e o vector de inter rupção de erro (EIV). A cada canal é atribuído um nível de prioridade de 0, 1, 2 ou 3, isto é, aos canais 0, 1, 2 e 3 são atribuídos os níveis de prioridade 0, 2, 2, 1, respectivamente (sendo o nível de prioridade 0 o mais elevado).
Os pedidos são gerados exteriormente por um dispositivo ou gerados internamente pelo mecanismo de au to-pedido do DMAC (209). Os auto-pedidos podem ser gerados ou a uma velocidade máxima, caso em que o canal tem sempre um pedido pendente, ou com uma velocidade limitada, determinada seleccio-nando uma parte da largura de banda da linha omnibus para ficar disponível para a actividade DMA. Os pedidos exteriores podem ser pedidos que roubam ciclos, que são gerados pelo sinal de pe dido associado com cada canal. O DMAC (209) contém 17 registadores (fig. 18) para cada um dos quatro canais mais um registador de controlo geral (GCR), todos eles sob o controlo dos meios de programação.
Os registadores do DMAC (209) contêm in formação acerca das transferências de dados, tais como o endere ço da origem e do destino e códigos de funções, contagem de transferências, dimensões dos operandos, dimensão das portas do dispositivo, prioridade do canal, endereço de continuação e con tagem de transferências e o funcionamento da linha de controlo dos periféricos. Um registador CSR também proporciona informação de estado e de erros sobre a actividade do canal, das entra das dos periféricos, e de vários eventos que podem ter ocorrido durante uma transferência DMA. O registador de controlo geral GCR selecciona o factor de utilização da linha omnibus a usar em operações de auto-pedido DMA de velocidade limitada.
Os sinais de entrada e saída estão orga nizados funcionalmente nos grupos como adiante se descreve (ref. fig. 19A). A linha omnibus de endereços/dados (A8- 79
-A23,D0-D15) (248), uma linha omnibus de 16 bits, é multiplexa-da temporalmente para proporcionar saídas de endereços durante o modo de funcionamento DMA e é utilizada como linha omnibus de dados bidireccional para introduzir dados provenientes de um dispositivo exterior (durante uma escrita em PE (62) ou uma lei tura em DMAC) para fazer a saída de dados para um dispositivo exterior (durante uma leitura de PE (62) ou uma escrita em DMA.C) Esta linha omnibus é uma linha omnibus de três estados e é des-multiplexada utilizando retentores e memórias tampão exteriores (233,234), controlados pelas linhas OWN e DDIR de controlo do multiplexador.
As linhas (Al) a (A7) dos endereços inferiores da linha omnibus (247) são linhas bidireccionais com três estados e são usadas para endereçar os registadores internos DMAC, no modo MPU, e para proporcionar as sete saídas dos endereços inferiores, no modo DMA.
As linhas de códigos de funções (FCO) a (FC2) são linhas de saída de três estados e são usadas, no modo DMA, para qualificar mais o valor na linha omnibus de endereços (247) para proporcionar espaços de endereços separados que podem ser definidos pelo utilizador. 0 valor colocado nestas linhas é retirado de um dos registadores internos de códigos de funções MFC, DFC, BFC, conforme o registador que proporciona o endereço usado durante um ciclo da linha omnibus DMA.
Linhas de controlo das linhas omnibus assíncronas controlam as transferências assíncronas de dados usando os sinais de controlo seguintes: selecção, impulsos de sincronização de endereços, leitura/escrita, impulsos de sincro nização de dados superiores e inferiores e confirmação de trans ferencia de dados. Estes sinais são descritos nos parágrafos se guintes. A linha de entrada SELECT (selecção) (296) é usada para seleccionar o DMAC (209) para um ciclo da li nha omnibus MOU. Quando for identificado, o endereço em A1-A7 e os impulsos de sincronização de dados (ou AO quando se usar uma linha omnibus de 8 bits) selecciona o registador interno DMAC que será implicado na transferência. O sinal SELECT deve ser ge 80
rado qualificando um sinal de descodificação do endereço com os impulsos de sincronização de endereços e de dados. 0 sinal AS (ADDRESS STROBE) na linha (270b) é um sinal bidireccional usado como uma entrada, no modo DMA, para indicar que está presente um endereço válido na linha omnibus de endereços (161). Nos modos MPU ou IDLE, é usado como entrada para determinar quando o DMAC pode tomar o controlo da linha omnibus (se o DMAC tiver pedido e lhe tenha sido concedido o uso da linha omnibus). READ/WRITE (leitura/escrita) é um sinal bidireccional (não representado) usado para indicar o sentido de uma transferência de dados durante um ciclo da linha omnibus.)
I
No modo MPU, um nível elevado indica que uma transferência é do ; DMAC (209) para a linha omnibus de dados (223) e um nível baixo | ^ i indica uma transferencia da linha omnibus de dados para o DMAC (209). No modo DMA, um nível elevado indica uma transferência i da memória endereçada (210) para a linha omnibus de dados (223) ! e um nível baixo indica uma transferência da linha omnibus de dados (223) para a memória endereçada (210) .
As linhas bireccionais UPPER AND LOWER DATA STROBE (não representadas) indicam quando os dados são válidos na linha omnibus e que partes da linha omnibus devem estar implicadas numa transferência (D8-15 ou DO-7). A linha bidireccional DATA TRANSFER ACK NOWLEDGE (DTACK) (265) é usada para sinalizar que um ciclo da linha omnibus assíncrona pode ser terminado. No modo MPU, esta saída indica que o DMAC (209) aceitou dados da PE (62) ou colocou dados na linha omnibus para a PE (62). No modo DMA, esta en trada (265) é vigiada pela DMAC para determinar quando termina ! um ciclo da linha omnibus. Enquanto DTACK (265) se mantiver ne- j gado, o DMAC inserirá ciclos de espera no ciclo da linha omnibus] e quando DTACK (265) for detectado, o ciclo da linha omnibus se rá terminado (excepto quando PCL (257) for usado como sinal de prontidão, caso em que ambos os sinais têm de ser detectados an tes de o ciclo ser terminado).
Sinais de controlo multiplex nas linhas OWN e DDIR são usados para controlar dispositivos anteriores 81 multiplexadores/desmultiplexadores (233,234) para separar a informação de endereços e de dados na linha omnibus (248) e para transferir dados entre as metades superior e inferior da linha omnibus de dados (223) durante certos ciclos da linha omnibus DMAC. A linha OWN é uma saída que indica que o DMAC (209) está a controlar a linha omnibus. Ê usado como sinal de activação pa ra ligar excitadores exteriores de endereços e memórias tampão de sinais de controlo. A linha BUS REQUEST (pedido da linha om nibus) (BS) (269) é uma saída identificada pelo DMAC para pedir o controlo da linha omnibus local (243,247) . 1 i A linha BUS GRANT BG (Atribuição de li-1 nha omnibus) (268) é uma entrada detectada por um árbitro exterj no de linhas omnibus (16) para informar o DMAC (209) que pode j
I assumir o controlo da linha omnibus logo que esteja completado ! o ciclo corrente da linha omnibus.
Os dois sinais de controlo das interru£! ções IRQ e IACK nas linhas (258a) e (258b) formam uma sequência de transmissão com passagem de testemunho por pedido/confirmação das interrupções com PE (62) através da lógica de interrupções (212). INTERRUPD REQUEST (IRQ) na linha (258a) é uma saída identificada pelo DMAC (209) para pedir um serviço de PE (62). INTERRUPT ACKNOWLEDGE (IACK) na linha (258b) é identificada por PE (62) através da lógica (216) para confirmar que recebeu uma interrupção do DMAC (209). Em resposta ã identificação de IACK, o DLAC (209) colocará um vector em DO-D7 da linha omnibus (223) que será usado pela PE (62) para buscar o endereço da rotina apropriada para processar a interrupção DMAC.
As linhas de controlo de dispositivos realizam a interface entre o DMAC (209) e dispositivos acopla- ; í dos aos quatro canais DMAC. Quatro conjuntos de três linhas são j dedicados a um canal DMAC único e ao seu periférico associado; as restantes linhas são sinais globais compartilhados por todos os canais.
As entradas REQUEST (REQO a REQ3) nas . linhas (263a a d são reclamadas pela lógica (253) para pedir * uma transferência de operandos entre a memória principal (162) 82 *}· e a memória (210) .
As saídas ACKNOWLODGE (ACKO a ACK3) nas linhas 264 a-d são reclamadas pelo DMAC (209) para sinalizar que um operário está a ser transferido em resposta a um pedido de transferência anterior.
As linhas de controlo de periféricos, PERIPHERAL CONTROL LINES (PCLO a PCL3) (257 a-d, inclusive, são linhas bidireccionais entre a lógica da interface (253) e o DAMAC (209), que são ajustadas para funcionar como entradas de prontidão, aborto, regarga, estado, interrupção ou impulsão de relógio de activação, ou como saídas de impulsos de arranque. DATA TRANSFER COMPLETE (DTC), linha j (267) i uma saída reclamada pelo DMAC (209) durante qualquer cij cio da linha omnibus do DMAC para indicar que os dados foram ! transferidos com êxito. i DONE. Este sinal bidireccional é recla-! mado pelo DMAC (209) ou um dispositivo periférico durante o ciclo da linha omnibus DMA para indicar que os dados que estão a ser transferidos são o último item de um bloco. O DMAC reclamará este sinal durante um ciclo da linha omnibus quando o registador da contagem de transferências da memória for decrementado até zero. 5. Unidade de controlo de linhas omnibus (156) - Descrição pormenorizada (Fig. 19 A-C e 20) a) Registadores de interface para transferência de dados a alta velocidade A lógica de interface da BCU (205) (fig. 16) foi dividida em várias unidades funcionais, para facilidade de ilustração e descrição nas fig. 19 A-C. Assim, a lógica (205) inclui um certo número de registadores de interface interpostos entre a linha omnibus de dados local (223) e os canais 0 e 1 do adaptador para aumentar a velocidade e a eficácia das transferências de dados entre o adaptador (154) e a BCU (156). A lógica dos equipamentos físicos (253) da interface (205) , juntamente 83
com o DMAC (209), a lógica de descodificação de endereços e arbitragem (216) e a lógica dos impulsos de sincronização de ende reços (215) controlam as operações da BCU (156) .
Os registadores de interface incluem um registador do estado de leitura do canal 0 (229) e um registador do estado de escrita do canal (1) (230), acoplados ãs linhas omnibus de comando/estado dos canais 0 e 1 (249,252), para reter o estado das transferências de dados entre o adaptador (154) e a BCU (156).
Os registadores de comando (214,215) dos canais 0 e 1 retêm o endereço S/370 para transferência parar i o adaptador (154) durante as transferências de dados I/O S/370.j O registador (227) também retém as palavras de dados I/O seguin tes (até 4 octetos) das transferências de dados (até 64 octetos por transferência de endereços) para o adaptador (154), depois j
I de cada transferência de endereço. A memória tampão de leitura do canal 0 recebe dados I/O transferidos do adaptador (154) durante operações de leitura da caixa do correio DCU e de escrita I/O S/370.
Os contadores (220,222) "BSM WRITE/READ SELECT UP" dos canais 0,1 e os contadores (221,224) "BSM WRITE/ /READ BOUNDARY" dos canais 0 e 1 retêm as contagens de octetos para a transferência de dados da BCU (156) para o adaptador (154). Os dois contadores são necessários para cada um dos canais para impedir o cruzamento dos limites dos endereços de 64 bits S/370 pelas transferências de dados. Como mais adiante será descrito, os contadores (220,222) armazenam inicialmente a contagem total de octetos a transferir para uma operação de I/O j (até 4 KB) e são usados para transferir valores de contagem pa-i ra os registadores (214) e (225) para formar parcialmente um en dereço inicial S/370 apenas para a transferência do último bloco (64 octetos), isto é, a última operação de transferência de comandos/dados. Os contadores de limites (221,224) são usados para apresentar (em parte) um endereço inicial S/370 sempre que for detectado um cruzamento dos limites pela BCU (156) para qualquer operação inidividual de transferência de comandos/da-dos ou quando o valor da contagem de octetos for superior a 64 84
ΚΒ.
Os contadores (220),(221),(222) e (224) são decrementados de maneira apropriada depois de cada transferência de dados, através dos canais 0 ou 1.
Um contador da fila de espera (254) (Q COUNT) proporciona uma função análoga para as transferências de mensagens (até 16 octetos) para o adaptador da memória S/370 (154) .
Os endereços para seleccionar os registadores de interface anteriores estão no espaço de endereços da memória (210) , fig. 23C, e são seleccionados descodificando o
I endereço na linha omnibus (247) de uma maneira bem conhecida. !
Um sinal na PU da BCU na linha (256a) proveniente do adaptador (154) para a lógica (253) notifica a BCU (156) de que está pronto um pedido de leitura da caixa de correio S/370. Este sinal não é reposto por um sinal de confir-' mação BCU PU na linha (256b) até a informação da caixa de correio ter sido armazenada na memória local (210) .
As linhas TAG UP e TAG DOWN (262 a-d) são usadas para a sincronização de dados entre a BCU 156 e o adaptador (154) através dos canais 0 e 1 do adaptador.
Proporcionam-se sinais de transmissão com passagem de testemunho entre a lógica BCU (253) e o DMAC (209). A lógica BCU faz pedidos de serviços pelas linhas (263 a-d), um por cada canal DMAC. 0 DMAC responde com sinais de con firmação pelas linhas (264 a-d). Outras linhas tais como a de seleccção (270), de confirmação da transferência de dados (265),j linhas de controlo de periféricos (257 a-d), transferência de j dados completada (267) foram descritas atrás, com referência ao | DMAC (209). b) Lógica de desacoplamento da BCU e de interrupção (215, 216) (Fig. 20,21)
Foi mais atrás referido que há duas ca-racterísticas que são críticas para obter o acoplamento estreito dos processadores S/370 e S/88 de modo a proporcionar ao sis 85 ÃãUagim>iw^·.
msxCT tema S/370 as características de sistema único S/88, tais como o funcionamento tolerante das avarias e o ambiente com imagem de um sistema único. Designam-se aqui essas características por "desacoplamento" do sistema S/88 do seu equipamento físico asso ciado e um mecanismo "de interrupção único". As duas caracterí^ ticas funcionam de uma maneira que é transparente para o sistema operativo S/88. 0 desacoplamento e a lógica de interrupção (215,216) são proporcionados na BCU (156). A lógica de "desacoplamento" descodifica o endereço virtual aplicado à linha omnibus de endereços do processador S/88 (161A) durante cada ciclo de execução da instrução. Se forem detectados o bloco de endereços virtuais S/88 ! i pré-seleccionados atribuídos à BCU (156) ou a sua memória (210),( o sinal de impulsos de sincronização de endereços (AS) proveniente do processador S/88 (62) ê encaminhado para a BCU (156) em vez de para o equipamento físico S/88. Esta acção impede que o sistema operativo e os equipamentos físicos S/88 tomem conheci-j i mento de que teve lugar um ciclo de máquina, isto é, a acção é transparente para o S/88.
Porém, o processador S/88 (62) é acopla do para controlar a BCU (156) durante este ciclo de máquina, sendo o sinal AS e o endereço pré-seleccionado usados para se-leccionar e controlar vários componentes na BCU (156) para efec tuar uma função, relacionada com as operações 1/0 S/370.
Um código de aplicação especial (EXEC370I executado no processador S/88 inicia a comunicação com o proce£ sador S/370 (85) colocando estes endereços virtuais prê-selec- ! cionados na linha omnibus S/88 (161A) para orientar a BCU (156) j para efectuar operações para realizar a referida comunicação. O DMAC (209) e outra lógica na BCU (156) apresentam interrupções ao S/88 num nível especificado (6), cha mado esta aplicação especial para entrar em acção como for requerido. A apresentação de cada interrupção é transparente para o sistema operativo S/88.
Mais adiante será feita uma breve descrição do tipo de funções efectuadas por algumas poucas rotinas do dispositivo de tratamento de interrupções em resposta a es- 86
tas interrupções, com referência a um exemplo de uma vista geral dos meios de microprogramas "firmware" das operações 1/0 S/370.
As modificações do mecanismo e do siste ma operativo S/88 para tratar interrupções S/370 para S/88 atra vés de controladores DMAC tais como (209), quer na base de uma unidade partilhada, quer num módulo com várias unidades partilhadas, vão agora ser descritas.
Recordar-se-á que uma unidade partilhada é uma sanduíche ligada de um cartão de processador S/88 dual modificado com um cartão de processador S/370 dual contendo me-: mórias locais, DMAC e lógica de cliente duais. Os elementos | i iguais deste cartão dual ensanduichado operam em paralelo, em j perfeito sincronismo (por arranque e paragem) por razões de de- ; tecção de avarias. i
Esta sanduíche total tem normalmente ' uma sanduiche parceira idêntica, funcionando as parceiras sincronizadas por arranque e paragem, aparecendo assim como uma en tidade tolerante das avarias. Para a discussão seguinte é suficiente considerar este equipamento físico duplicado como uma unidade operacional única, como se representa na fig. 21.
Numa forma de realização preferida, podem residir num invólucro único do módulo até oito destas unida des operacionais (295) a (295-8), compartilhando a memória prin cipal, as facilidades I/O e as alimentações de energia, sob o controlo de uma cópia única do sistema operativo S/88. A unidade (295) (e cada uma das outras unidades (295-2) e (295-8)) cor respondente a um par de cartões parceiros, tais como os cartões I (21) e (23) da fig. 7. É importante notar que, nesta configura-: í çao de CPU múltiplas, as unidades do processador S/88 (62) e |
I (62-8) funcionam com multiprocessadores que repartem a carga de! trabalho S/88, mas as unidades S/370 (85) a (85-8) funcionam se parada e independentemente e não intercomunicam. Cada unidade S/370 funciona sob o controlo do seu próprio sistema operativo e não tem "conhecimento" de qualquer outra CPU no ambiente (nem S/370 nem S/88.
Devido ao ambiente de multiprocessamen- 87
^ J,c& r ··*·'*“ -- - to e à arquitectura S/88, o tratamento de interrupções no siste ma S/88 normal é repartido entre as unidades CPU (62) a (62-8). Numa visão simplificada, cada interrupção (proveniente das 1/0, dos distribuidores de tempos, transferências de programas, etc.) é apresentada na linha omnibus comum (30) a todas as unidades do processador S/88 em paralelo; uma das unidades aceita a responsabilidade de satisfazer o serviço e faz com que todas as ou tras unidades o ignorem. Independentemente de qual a unidade CPU que aceita o serviço, há uma tabela de vectores única, um ponto de entrada único (por vector) no sistema operativo para o código processador, sendo a disposição da interrupção decidida e tratada pelo sistema operativo (único).
Numa configuração S/370 múltipla, todas as interrupções S/88 normais operam como atrás se descreveu; ne nhum código de tratamento de interrupções S/88 é modificado. AI terações pouco importantes dos meios físicos para permitir a apresentação das interrupções do DMAC 209 ao 209-8 são inteiramente transparentes ao mecanismo de interrupções e aos meios de programação S/88.
Um requisito é que uma interrupção DMAC tem de ser tratada apenas pelo processador S/88 (62) a que está ligado esse DMAC, a BCU e o S/370, de modo que as unidades múltiplas S/370 (85) a (85-8) não podem interferir mutuamente. Para isso, a linha DMAC IRQ (258a) está cablada directamente para o processador S/88 (62) ao qual está ligado o DMAC 209 e não aparece na linha omnibus S/88 comum, como sucede para todas as linhas de pedido de interrupção S/88. Durante as faixas de tempo usurpadas do S/88 para suporte do S/370, um processador S/88 (65) dado é dedicado ao S/370 a que está directamente ligado.
Reservam-se oito localizações de vectores de utilizador dentro da tabela de vectores S/88 para utilizar pelos DMAC, sendo estes vectores endereços codificados rigi damente de meios de tratamento de interrupções DMAC que são adi cionadas ao sistema operativo S/88. Estes oito meios de tratamento das interrupções são usados por todos os processadores S/88 para processar interrupções apresentadas por todos os DMAC para os processadores S/370 associados. 88 »*-.» ·*·*»
Cada DMAC, tal como (209) , tem um único sinal de saída de pedido de interrupção (IRQ) e oito registadores internos de vectores (dois por canal, cada um para operações normais e erros detectados pelo DMAC). No instante da iniciali-zação (descrita mais adiante), estes valores dos registadores de vectores DMAC são programados para corresponder às oito loca lizações da tabela de vectores principais reservados atrás refe ridos. Assim, um DMAC pode pedir uma das oito rotinas do meio de tratamento quando apresenta IRQ. Estes meios de tratamento acedem ao DMAC, aos meios físicos BCU, às filas de espera, às listas encadeadas e a todos os parâmetros de controlo apresentando endereços virtuais que se situam dentro da gama de endere ços da memória local "escondida" (210). A concepção dos equipamentos físicos garante que cada processador S/88, tal como (62), pode aceder à sua própria memória tal como (210) e não a outras, embora uma "janela" de desacoplamento de endereços virtuais comum seja compartilhada entre as unidades S/370 múltiplas. Isto é, o espaço de endereços virtuais S/88 007EXXXX é usado por todos os multiprocessadores S/88-S/370 num módulo embora cada uni dade emparelhada, tal como (21,23), tenha a sua memória física S/88 dedicada, como se mostra na fig. 10.
Nas configurações múltiplas S/370, todos os DMAC (209) a (209-8) são programados identicamente, no que respeita a estes oito registadores de vectores, e todos com partilham oito vectores reservados na tabela principal de vecto res, bem como das rotinas dos meios de tratamento. A diferencia ção, bem como o desacoplamento, verificam-se em cada acesso à memória, tal como (210) . A apresentação com cablagem rígida do DMAC IRQ ao seu próprio processador S/88, juntamente com o desa coplamento, garante a separação e a integridade das unidades do processador S/370 e a não interferência com o funcionamento nor mal do S/88. Excepto no que se refere ao tempo "perdido" da CPU S/88, o atendimento destas interrupções é transparente para o sistema operativo S/88. A concepção completa das interrupções realiza assim o atendimento intermitente "dedicado por pedido" 89 y, *·' das interrupções DMAC S/370, com isolamento e protecção das uni dades múltiplas S/370, usurpando facilidades individuais do pro cessador de um ambiente de um sistema de multiprocessamento que utiliza uma filosofia diferente de atendimento das interrupções, sem substancialmente qualquer impacto no funcionamento do siste ma de multiprocessamento e sem alterações significativas no sis^ tema operativo do multiprocessamento.
Para um funcionamento mais pormenorizado de cada mecanismo de interrupção DMAC, faz-se referência às fig. 19A e 20. Quando um dispositivo periférico, tal como o DMAC (209), que possui vectores de selecção, apresenta um pedido de interrupção (IRQ) ao processador S/88 (62), é activada pe lo dispositivo uma única linha IRQ (258a). Esta linha IRQ esta cablada para um circuito de codificação (293), de uma maneira especificada pela arquitectura do processador S/88, de modo a apresentar um pedido de interrupção codificado ao processador S/88 (62) através dos pernos de entrada IPLO-IPL2, nível de prio ridade específico 6. O processador (62) decide efectivamente quando pode atender a interrupção, usando bits de máscara de prioridade mantidos no registador interno de estados. Quando pronto, o processador (62) inicia um ciclo especial de "confirmação de interrupção" (IACK).
No ciclo IACK, que é controlado interna mente pelo processador (62), é apresentada uma única configuração de endereços na linha omnibus de endereços (161A) para iden tificar o tipo de ciclo e o nível de prioridade que estão a ser atendidos. Isto é também efectivamente um pedido de um número de vector a partir do dispositivo de interrupção. Todos os dispositivos que fazem pedidos comparam o nível de prioridade que está a ser atendido com o seu próprio, encaminhando o dispositi vo cuja prioridade condiz com um número de vector de um octeto para a linha omnibus de dados (161D) para o processador (62) pa ra ler.
Uma vez obtido o número de vector, o processador (62) conserva o estado interno básico numa pilha su pervisora e gera depois o endereço do vector de excepção a ser 90 usado. Isso faz-se multiplicando internamente o número do vec-tor do dispositivo por quatro e somando este resultado ao conteúdo do registador interno do vector base, dando o endereço da memória do vector de excepção. Este vector ê o valor do novo contador de programa para o código do dispositivo de tratamento da interrupção. A primeira instrução é buscada utilizan do este novo valor do contador do programa, retomando-se a descodificação e a execução normais da instrução, no estado de supervisor, com o registador do estado do processador (62) ajusta do para o nível de prioridade agora corrente.
As fases anteriores, desde o início do ciclo IACK, passando pela busca da primeira instrução do dispositivo de tratamento da interrupção, são efectuadas por uma com binação de operações de meios físicos e internas no processador (62), não exigindo a execução de instruções do programa. 0 efei to líquido é a preempção transparente do programa que corria an teriormente (de prioridade inferior) para executar o tratamento da interrupção de prioridade mais elevada.
As interrupções DMAC (209) na forma de realização preferida são cabladas para o nível de prioridade 6, adaptando-se inteiramente ã arquitectura do processador (62). O DMAC (209) tem oito números de vectores programados internamente, sendo usadas oito rotinas de tratamento separadas. A lógica de descodificação e arbitragem (216) (fig. 19A) e a lógica de controlo AS (215) controlam esta função de interrupção durante o ciclo IACK além de proporcionar a função de desacoplamento do processador S/88 (62). Vão agora descrever-se estas duas funções dos meios físicos detalhadamente, com referência ã fig. 20, que representa pormenores da lógica (215) e da lógica (216) da fig. 19A. A linha de impulsos de sincronização de endereços (270) proveniente do PE (62) é acoplada a uma entrada da lógica de controlo (215). A lógica (216) tem dois circuitos de descodificação (280,281). A saída (282) do circuito (280) está acoplada à lógica (215); a saída (283) do circuito (281) está também aco piada à lógica (215) através da porta E (291) e da linha (287) . 91
<vhxj«cHíVJ
Norxnalmente, durante a execução das instruções, os circuitos de descodificação (280) e (281) permitem que o sinal de impulsos de sincronização de endereços (AS) na linha (270) passe através da lógica (215) para a linha (270a) que é a linha de impulsos de sincronização de endereços normal para os meios físicos S/88 associados com PE (62).
Porém, se uma instrução executada pelo processador S/88 (62) aplicar um endereço virtual na linha omni bus de endereços (161A) com os quatro dígitos hexadecimais de ordem superior iguais a ,,007E" (implicando o desacoplamento do PE (62) do seu equipamento físico S/88 e o acoplamento do PE (62) à BCU (156) para uma função relacionada com uma operação 1/0 S/370), a lógica de descodificação (280) coloca um sinal na linha (282) para bloquear o sinal AS na linha (270a) e envia AS para a BCU (156) através da linha (270b). A lógica de descodifi cação (280) pode também ser concebida para detectar um código de função apropriado nas linhas FCO-2; porém, isto é simplesmen te uma escolha de projecto. As fig. 22, 23 e 24 mostram o atraso entre os sinais de endereços na linha omnibus (161A) e os im pulsos de sincronização de endereços na linha (270), que permite o bloqueio do sinal AS na linha (270a) antes do instante em que se faz subir o sinal AS. Compreender-se-ã que podem usar-se meios diferentes de um grupo especial de endereços virtuais S/88 aplicados à linha omnibus de endereços para descodificar uma condição que indica o desacoplamento do PE (62) do seu equipamento físico S/88 associado e o acoplamento de PE (62) à BCU (156) . O sinal de bloqueio na linha (282) é aplicado a um circuito OU (284) para produzir um sinal de pedido da linha omnibus local do PE(62) na linha (190) para a lógica de arbitragem (285). A lógica (285) satisfará o pedido para PE (62) apenas se o DMAC (209) não tiver já feito um pedido na linha (269). A linha (191) de aceitação do pedido da linha omni bus de PE (62) é activada se não houver qualquer pedido do DMAC. O sinal de aceitação do pedido da linha omnibus do PE (62) na . linha (191) eleva o nível nas linhas ENABLE (286 a,b, fig. 19A) * através da lógica (253) para acoplar as linhas omnibus PE (62) 92 1
xU (161 A,D) às linhas omnibus locais (247,223) através dos excita dores (217) e dos excitadores/receptores (218) , em preparação para uma operação PE (62) com BCU (156). Os dados e os comandos podem ser transferidos entre o PE (62) e elementos da BCU enquanto que as linhas omnibus do processador (161 A,D) são acopladas às linhas omnibus locais (247,223) sob o controlo da ins trução que está a ser executada pelo PE (62). 0 programa de apli cação EXEC370 e os microprogramas registadores em ROM ("firm-ware") contêm tais instruções.
Se existir um pedido DMAC na linha (269), a lógica (285) dã prioridade ao DMAC (209) sobre o pedido PE (62) na linha (190); o sinal de aceitação do pedido de linhas omnibus do DMAC na linha (268) ê devolvido ao DMAC (209) e a li nha omnibus local (247,223) é ligada ou entre a memória local (210) e os canais 0, 1 do adaptador, através dos registadores da interface de grande velocidade, ou entre o DMAC (209) e a me móroa local (210), em preparação para uma operação DMAC com a BCU (156).
Pode portanto ver-se que a lógica (215, 216) desacopla o processador S/88 (62) dos meios físicos associados (por exemplo (175),(176),(177) e acopla-o à BCU (256), quando se descodificar um endereço 007EXXXX pela lógica (280). Este desacoplamento é transparente ao sistema operativo S/88.
Analogamente, a lógica (281) de descodi_ ficação (e os meios físicos associados) bloqueia os impulsos de sincronização de endereços AS provenientes da linha (270a) e inicia um pedido da linha omnibus local para a lógica de arbitragem (285), durante uma sequência de interrupção DMAC (209) para o PE (62).
Mais específicamente, quando o DMAC (209) aplicar um sinal de interrupção na linha (258a), ele é aplicado ao PE (62) através dos circuitos OU (292a) e (292), da entrada Nível 6 da lógica de prioridade (293) de interrupções S/88 e das linhas IPLO-2. O PE (62) responde com um ciclo de confirmação de interrupção. Bists lógicos pré-determinados (que incluem o valor do nível de interrupção) são colocados na saída FCO-2 e na linha omnibus de endereços (161A) (bits Al-3,A16-19), 93
sendo esses bits descodificados pela lógica (281) , para produzir uma saída na linha (283). Esta saída e o sinal de interrupção na linha (258c) fazem com que a porta E (291) aplique um si nal na linha (287) fazendo com que a lógica (215) aplique AS â lógica (253) da BCU através da linha (270b). 0 sinal na linha (287) bloqueia AS proveniente da linha (270a) e coloca um pedido de linha omnibus PE (62) na linha (90) através do circuito OU (284) para a lógica de arbitragem (285). Devido ao facto de os impulsos de sincrondL zação de endereços (AS) estarem bloqueados para não irem para os meios físicos S/88, esta interrupção é transparente para o sistema operativo S/88.
Quando se receberem os bits especiais IACK na linha omnibus (161A) e FCO-2 como atrás se descreveu, a lógica de descodificação (281) produz um sinal de saída na linha (283) para bloquear um sinal de impulsos de sincronização endereços na linha (270a) e para colocar um pedido PE (62) na lógica de arbitragem (285) através do circuito OU (284) e na li nha (190). Se não houver qualquer pedido DMAC na linha (269) , activa-se o nível do sinal de aceitação da linha omnibus PE (62) na linha (191) para a porta E (294-1). A porta E (294) produz um sinal IACK na linha (258) para o DMAC (209). Este sinal aler ta o DMAC (209) para apresentar o seu vector de interrupção. O DMAC coloca então o vector na linha omnibus local e eleva o nível de "DTACK" na linha (265) para a lógica (253). A lógica (253), em resposta ao sinal AS na linha (270b), eleva o nível dos sinais ENABLE nas linhas (286a,286b) para acoplar linhas om nibus do processador (161A e D) âs linhas omnibus locais (248) e (223), através dos circuitos (217,218), para ler o vector apro priado proveniente da DMAC (209) para o PE (62) . O DMAC (209) apresenta vectores de interrupção do octeto menos significativo da sua linha omnibus de dados (248) (fig. 19A) para a linha omnibus de dados do processador S/88 (161D), bits 23-16, através do activador receptor (XCVR) (234) e os bits 23-16 da linha omnibus de dados local (223) . O número do vector emitido pelo DMAC * (209) é usado pelo processador S/88) para saltar para um dos ou 94 tros dispositivos de tratamento de interrupções no microcódigo de interface S/88 ETIO. DTACK na linha (265) e na lógica (253) activa DSACK 0,1 nas linhas (266 a,b) para terminar o ciclo PE (62), através de dois circuitos OU (288). As linhas (266 a,b) são combinadas num circuito OU com linhas DSACK S/88 normais (266 c,d), para formar as entradas DSACK definitivas (266 e,f) para o PE (62).
Os pedidos de interrupção aplicados ao circuito OU (292a) através das linhas (562) e (563) provenientes da Facilidade de Serviço Integrada (fig. 49) dão origem a uma sequência de operações semelhante âs descritas atrás com re ferência a um pedido de interrupção DMAC. Dois circuitos E (294-2) e (294-3) (fig. 20) excitam sinais IACK nas linhas (258 d,e) para iniciar a transferência dos números de vectores apropriados da BCU (156) para a unidade de processamento S/88 (62) através da lógica (654) e (565) da fig. 49 e da linha omnibus de dados local (223).
Compreender-se-ã que o pedido de interrupção de nível 6 S/88 pode receber uma prioridade superior à dos pedidos de interrupção DMAC e BCU (quando forem concorrentes) , por uma alteração pouco importante da lógica. No entanto, correntemente, o tempo para reconhecer faltas de energia como fontes de interrupção secundárias é mais que adequado.
c) Atribuição de posições de endereços na memória na BCU A memória local (210) (fig. 41C) tem uma dimensão fixa e tem as suas posições definidas no espaço de endereços virtuais S/88 do PE (62) . A memória local (210) está dividida em três domínios de endereços para diferençar três finalidades : 1. Leitura/escrita S/88 PE (62) directamente de/para memórias tampão de dados locais e estruturas de controlo incluindo listas de elos de ligação; 2. Comandos de leitura/escrita S/88 PE (62), estados de leitura para a/da BCU (156); os comandos são descodificados a 95 3. partir de endereços específicos; e
Registadores DMAC de leitura/escrita S/88 PE (62) (quer para as operações de inicialização, quer para as operações normais); os números dos registadores são descodificados a partir de endereços específicos. 0 espaço de endereços da memória local inclui;
MEMÕRIAS TAMPÃO DE DADOS E ESTRUTURAS DE CONTROLO ÁREA DE COMANDOS BCU 1. (64 K octetos menos 512; inclui listas de elos de ligação na memória física (210)) 2.
3. ÁREA DE ACESSO DMAC (comando de 256 octetos, descodificados a partir de endereço específico)e (número de registador de 256 octetos descodificada a partir de endereço es pecífico) A unidade (216) de descodificação de en dereços locais e de arbitragem das linhas omnibus detecta todos os endereços dentro do espaço desta memória local. O DMAC (209) pode, ao mesmo tempo, estar a apresentar um endereço no interior da área 1 atrás referida. 0 DMAC não pode endereçar as áreas 2 ou 3 atrás referidas; isso é garantido por microcõdigo de inicialização. A BCU 156 vigia todos os endereços na linha omnibus local e reorienta, através de indicadores de controlo, operações com endereços dentro dos domínios 2 e 3 para a unidade própria (BCU ou DMAC) em vez de para a memória local (210) . Assim a área de endereços da memória local (210) representada pelos domínios 2 e 3 atrás referidos, enquanto presentes, nunca é aqui usada para memória.
Na forma de realização preferida, um quarto tipo de operação é também tratado pela unidade (215) de descodificação de endereços locais e de arbitragem das linhas omnibus: 0 processador S/88 confirma interrupções DMAC (209) para PE (62) S/88 e completa todas as interrupções de acordo com a arquitectura MC 68020, como atrás se descreveu. - 96
Esta operação especial é detectada por bits de endereço e de código de função que a PE (62) S/88 apresenta, com a diferença de que a descodificação (especial arqui-tectada) não ê um endereço no domínio da memória local (210). A unidade (216) de arbitragem das linhas omnibus locais tem portanto um descodificador especial para este caso, e auxilia a lógica a indicar ao DMAC para apresentar o seu vector de interrupção pré-programado. A operação ê aliás se melhante â leitura de um registador DMAC pelo processador S/88. A linha omnibus de endereços (247) é se leccionada pela PE (62) quando a descodificação dos dígitos de ordem superior der o valor hexadecimal (Η) 007E.
Os quatro dígitos hexadecimais restantes proporcionam o domínio de endereços da memória local de 64 KB, que são atribuídos da seguinte maneira:
Dispositivo I/O
Selecção (ou comando) do registador DMAC Reposição BCU BSM Wr Sei Up BSM Rd Sei Up Ler estado BCU Selecção da memória local
Descodificação do endereço 007EOOOO-007EOOFF (área 3 anterior) 007E0100 (área 2 anterior) 007E0104 (área 2 anterior) 007E0108 (área 2 anterior) 007E010C (área 2 anterior) 007E0200-007EFFFF (área 1 ante rior)
Os dados seguintes são colocados na linha omnibus de dados local (223) pelo processador S/88 (62) para um registador de contagem de transferências para a memória DMAC seleccionado, e para usar a BCU 156 num comando subsequente BSM Read/Write Select: 31 23 15 7 0
0000 Oqbb bbbb bbbb rspp kkkk CLXX XXXX
Os bits 31-16 (0000 Oqbb bbbb bbbb) da contagem de transferências de octetos são ajustados no contador de transferência de memória DMAC: * 26 = Bit de ordem superior de contagem de octetos (= 1 pa- • ra a contagem máxima de octetos (apenas 4 096)). 97
25- 16 = Bits de ordem inferior da contagem de octetos. Bits 26-16 representam 1/4 da contagem actual de octetos (transferências de palavras duplas). A BCU (156) captura os dados, da seguin te maneira, para um comando BSM Read/Write Select Up:
31-27 = Ignorados pela BCU 26 = Bit de ordem superior da contagem de octetos. Este bit será igual a 1, apenas quando se estiver a transferir a contagem máxima de octetos. 26- 14 = A transferência dos bits da contagem de octetos (mãxi mo 4 096) para o adaptador dos registadores (220) ou (222) exige uma contagem de 1111 1111 1111 para transs ferir 4 096 octetos (contagem de octetos 1). Portanto a BCU (156) decrementará os bits 26-16 de limite das palavras duplas, um vez, antes de os apresentar junta mente com os bits 15-14 do desvio de octetos (em blocos de 64 octetos) ao adaptador de linhas omnibus (154) 15-14 = Bits de ordem inferior da contagem de octetos. Estes bits representam o desvio de octetos menos 1 (para os requisitos do adaptador de linhas omnibus) a partir de um limite de palavras duplas. Estes bits não são usados pelo DMAC (209) ou pela BCU (156), visto que eles apenas transferem palavras duplas. Eles são reti dos na BCU (156) atê passarem para o adaptador de linhas omnibus (154), para apresentação ao BSM S/370 (162). 13-12 = Prioridade dos canais da linha omnibus do adaptador para o registador (219) ou (227). 11-08 = Chave da memória para o registador (219) ou (227) 07 = Bit do espaço Utilizador/IOA para o registador (219) ou (227) 06 =0 processador S/88 activará este bit para BSM Write
Select Up para indicar que é necessário um acesso adi cional â memória local. Isso ocorrerá quando um endereço de memória local inicial não estiver num limite de palavra dupla. Como todos os acessos BCU têm de co meçar num limite de palavra dupla, o primeiro acesso 98 lilílij .·· ''“•-'•‘•^--γΑ^-^ΐΐΜΚΛνϊϊπβΙί»» conterá o ou os octetos no endereço inicial designado, bem como o ou os octetos anteriores contidos nesse endereço de palavra dupla. 0 ou os octetos anterio res são descartados. 05-00 = Reservados 0 seguinte será colocado na linha omni-bus de dados local (223) pelo processador S/88 (62) para o registador de contagem de transferências para a memória DMAC e pe la BCU (156) para um comando Q Select Up subsequente: OOOO 0000 0000 bbbb 0000 kkkk cxxx xxxx 0 valor da contagem de transferências de octetos (bits 31-16) é ajustado no registador MTC de contagem de transferência de memória pelo canal 3 DMAC. A BCU (156) captura os dados para um comando Q Select Up subsequente da seguinte maneira:
31-20 = Ignorados pela BCU 19-16 = Contagem de octetos (máximo 64 octetos) para o regis tador (220) ou (222)
15-12 = Ignorados pela BCU 11-08 = Chave da memória para o registador (227) 07 = Bit do espaço Utilizador/IOA para o registador (227) 06-00 = Ignorados pela BCU. d) Operação das linhas omnibus de endereços e dados locais
Todas as operações de linhas omnibus lo cais são iniciadas através de pedidos de linhas omnibus provenjL entes do processador S/88 (62) ou do DMAC (209) . As operações da linha omnibus local do processador S/88 (62) incluem: Leitura/escrita da memória local (32 bits)
Leitura/escrita de registadores DMAC (8,16,32 bits)
Ciclo de confirmação de interrupção para DMAC (leitura do vector de interrupção de 8 bits)
Leitura do estado da BCU (leitura de 32 bits BCU) Reposição da BCU programada
As operações das linhas omnibus locais DMAC (209) incluem: - 99 -
Carga da lista de elos de ligação (16 bits)
Operações DMAC (32 bits)
Apenas proporciona endereços da memória local Proporciona pedido de linha omnibus local Interrupções
Proporciona o vector de interrupção normal para PE (62) para 4 canais (8 bits)
Proporciona o vector de interrupção de erro para PE (62) para operações DMAC ilegais e outros erros detectados no DMAC (8 bits)
As operações da linha omnibus local BCU (156) incluem:
Proporciona dados de leitura/escrita (32 bits) durante as operações DMAC
Inicia o pedido de dados para DMAC (209)
Inicia o pedido de interrupções de leitura de caixa do correio através da linha DMAC PCLO (257a).
Sempre que o processador S/88 (62) acti va a sua linha omnibus de endereços com uma descodificação da linha omnibus local válida (007EXXXX) ou com um ciclo de confir maçao de interrupções dirigido para DMAC, a lógica BCU (156) efectua o seguinte:
Bloqueia a linha ADRESS STROBE (AS) pa- ra S/88.
Activa um Pedido de Linha omnibus para a lógica de contenção (216) .
Se a linha omnibus local não estiver em utilização, a linha omnibus de endereços (161A) e a linha omnibus de dados (161B) do processador S/88 são acopladas â linha omnibus local (247,223), através dos receptores excitadores (218,217). Efectua-se a operação de leitura, de escrita ou IACK.
As linhas DSACK (266 a,b) são activadas pela lógica BCU, para fechar o ciclo: 32 bits DSACK para todos os comandos di^ rigidos à memória local e à BCU. 16 bits DSACK para todos os comandos di_ rigidos ao registador DMAC. 100
16 bits DSACK para ciclos IACK. A linha (269) de pedido da linha omni-bus (BR) do DMAC proveniente do DMAC (209) ê activada para uma sequência DMAC ou de carga da lista de elos de ligação. Quando isto se verifica, a BCU (156) efectua o seguinte:
Se a linha omnibus local não estiver em utilização, o endereço DMAC (durante a carga de leitura/escrita DMAC ou da lista de elos de ligação) é encaminhado para a linha omnibus de endereços local (247). A lógica BCU (156) encaminha os dados (escrita DMAC para a memória local (210)) a partir de um registador DMAC para a linha omnibus de dados local (223). A memória local (210) encaminha os seus dados (leitura DMAC ou carga da lista de elos de ligação) para a linha omnibus local (223). Ê efectuada a operação de leitura/escrita. A linha DTACK é activada pela lógica BCU (253) para o DMAC (209), para encerrar o ciclo. e) Endereçamento do processador S/88 (62) e do DMAC (209) para/da memória (210)
As atribuições dos bits do endereço do processador S/88 (62) para a memória local (210) são as seguintes: bits de ordem inferior 0,1 (e IZ0,1 do PE (62), não representados) determinam o número e o alinhamento na linha omnibus dos octetos (1-4) a transferir. Os bits 2-15, inclusive, são os bits de endereço para o espaço de memória (210) .
No modo de lista de elos de ligação, o bit A2 do endereço DMAC é usado como bit de ordem inferior do endereço (limite de palavra dupla) para a memória local (210). Como o DMAC (209) é um dispositivo orientado para palavras (16 bits) (AI ê o seu bit de ordem inferior do endereço) e como â memória local (210) acedem palavras duplas (32 bits), têm de proporcionar-se meios, nos equipamentos físicos, para permitir que o DMAC (209) leia dados para a sua lista interna de elos de ligação a partir de posições de memória local contíguas. Isso consegue-se lendo duas vezes a mesma posição de palavra dupla na memória (210) , usando A2 como bit de ordem inferior do ende- 101
rego. Como então AI é usado para seleccionar a palavra alta/bai xa a partir da linha omnibus local. 0 deslocamento dos bits de endereço para a memória local (210) é feito no equipamento físi co através dos bits de código de função DMAC. Qualquer código de função, excepto "7", proveniente do DMAC (209) fará com que os bits AI5-AO2 do endereço sejam apresentados à memória local (210) . Este esquema permite que os dados da lista de elos de li. gação da memória local sejam armazenados em posições contíguas na memória (210).
No modo de leitura/escrita da memória local, o bit DMAC é usado como bit de ordem inferior do endereço para a memória local (210). Os dados lidos são fornecidos ã memória (210) a partir da memória tampão (226) de leitura do ca nal 0 da linha omnibus do adaptador. Os dados são escritos a partir da memória (210) para a memória tampão (228) de escrita do canal 1 da linha omnibus do adaptador. Como o DMAC é um dispositivo de 16 bits, pretende-se que o bit de ordem inferior do endereço represente um limite de palavra. Porém, todas as opera ções DMAC acedem a uma palavra dupla. Para permitir acessos a palavras duplas com um mecanismo de endereçamento de acesso a uma palavra, é necessário um deslocamento de endereço. 0 deslocamento dos bits de endereço para a memória local (210) faz-se no equipamento físico através dos bits de código de função DMAC. Um código de função, de 7 provenientes do DMAC (209), fará com que os bits A14-A01 do endereço sejam apresentados ã memória local (210). Para permitir a operação correcta, o DMAC é carregado com 1/4 do valor da con tagem de octetos actual (1/2 da contagem actual de palavras). Para uma operação de escrita DMAC, há uma medida para permitir escritas de palavras controlando as linhas UDS e LDS (não repre sentadas) provenientes do DMAC (209) , embora todas as operações DMAC sejam normalmente acessos de palavras duplas. Os sinais UDS e LDS provocam o acesso das porções de ordem elevada (D31--D16) e de ordem baixa (D15-D0) da memória local (210) ,
No modo PE (62) para DMAC (209)/ o processador S/88 PE (62) escreverá nos registadores DMAC, em cada um dos quatro canais DMAC 0-3, para estabelecer os controlos in 102 ternos para uma operação DMAC. A PE (62) tem também a capacidade de ler todos os registadores DMAC. 0 DMAC (209) devolve uma palavra (16 bits) DSACK numa linha omnibus (266) que tem duas linhas, DSACK 0, DSACK 1, permitindo dimensões de portas de 8, 16 ou 32 bits. Isso permite que o DMAC (209) tome tantos ciclos quantos os necessários para efectuar a carga DMAC de maneira apropriada.
As linhas SIZO, SIZ1 (não representadas) e AO do processador S/88 são usadas para gerar entradas UDS (Upper Data Strobe - Impulsos de sincronização de dados superio res) e LDS (Lower Data Strobe - Impulsos de sincronização de da dos inferiores) (não representadas) para o DMAC (209). Isto é necessário para ter acesso a registadores com a dimensão de um octeto no DMAC (209), como se descreveu mais completamente na publicação DMAC atrás descrita. A linha LDS é gerada a partir da combinação lógica OU de NOT SIZO ou SIZI ou AO da linha omni bus de endereços (161D). A linha UDS é gerada a partir da lógica NÃO de AO. A linha SIZO é usada para aceder ao octeto de ordem inferior quando se acede a uma registador com a dimensão de uma palavra (NOT ZIZO). A linha SIZI â usada para aceder ao octeto de ordem inferior quando se está a aceder a uma registador com a dimensão de uma palavra, através de uma operação "três oc tetos restantes" do processador S/88. Isso ocorrerá apenas quan do o processador S/88 estiver a executar uma operação de leitu-ra/escrita de uma palavra dupla (32 bits) para o DMAC num limite de octeto ímpar. O bit AO é usado para seleccionar o octeto superior ou o octeto inferior num registador de dois octetos.
Os bits A0,AI são usados para seleccionar octetos num registador DMAC de quatro octetos. Os bits A6,A7 da linha omnibus de en dereços (161D) do PE (62) seleccionam um dos quatro canais DMAC.
f) Operação do contador de octetos BCU BSM RD/WR O BCU (156) é capaz de aceitar um coman do único proveniente do DMAC (209) que transferirá até 4 KB de dados através de cada linha omnibus do adaptador (250,251). Porém, cada linha omnibus pode tratar apenas blocos de 64 octetos 103 J27 .' para uma operação de transferência de dados. Hã outras restrições da linha omnibus do adaptador a que tem de obdecer o equipamento físico a fim de satisfazer os requisitos do protocolo. 0 que segue é uma descrição pormenorizada dos meios físicos BCU (156) que efectuam isso. A BCU (156) contém dois contadores de palavras completas (11 bits) (220,222) e dois contadores (4 bits) (221,224) de limites, que são usados para operações de leitura BSM da linha omnibus e BSM de escrita do adaptador. Os contadores de limites (221,224) são usados para representar um endereço inicial para o adaptador de linhas omnibus, quando se detectar o atravessamento de um limite de 64 KB pela BCU (156) para qualquer operação individual de comando/transferência de dados, ou quando a contagem de octetos for maior que 64 octetos. Os conteúdos do contador de limites são apresentados ao adaptador de linhas omnibus (154) para todas as transferências excep-to a do último bloco. Os conteúdos dos contadores de palavras completas são apresentados para a transferência do último bloco apenas (operação da última transferência de comando/dados). O processador S/88 (62) coloca a contagem de octetos, a chave, e os bits de prioridade na linha omnibus local (223) (fig. 45F) para transferência para o registador (222) ou (220). 0 bit R (bit de contagem 1) representa limites de palavras (2 octetos) e o bit S (bit de contagem 0) representa limites de octetos. Os bits de contagem de palavras completas representam uma capacidade de transferência de 2KB-1 palavras duplas. Como todas as transferências são feitas numa base de palavras duplas, o bit 2 ê o bit de decrementação de ordem inferior. Os bits R e S são retidos pela BCU e apresentados ao adaptador de linhas omnibus (154), na transferência final de 64 octetos.
Devido às restrições seguintes do adaptador de linhas omnibus e ao facto de apenas se verificarem transferências de palavras duplas na linha omnibus local (223) , torna-se necessário manipular os bits de contagem de octetos e de palavras. Isso permitirá que os octetos/palavras ímpares sejam transferidos para a PE (85) S/370, e permitirá também um en 104
dereço inicial que não é um limite de palavra dupla. A contagem de octetos que é apresentada ao adaptador de linhas omnibus (154) não pode ser superior a 64 octetos. A contagem tem de ser representada em octetos-1. Nenhuma transferência de blocos pode cruzar um limite de 64 octetos. Quando a contagem de octetos for igual a, ou menor que 64 octetos e não houver atravessamento de um limite e o endereço inicial não estiver num limite de palavras duplas, pode ser necessário um ajustamento extra â con tagem de palavras duplas.
Quando houver um atravessamento de um limite de 64 octetos, são necessárias pelo menos duas operações de transferência de comandos/dados da linha omnibus do adaptador, independentemente do valor da contagem. 0 processador S/88 fará o cálculo prévio da contagem de palavras duplas e dos bits R, S e I, com base num exame dos factores atrás descritos, e na contagem das transferências totais de octetos. Os bits R e S não serão apresentados ao adaptador (154) até à última operação de transferência de comandos/dados.
Quando o PE (62) S/88 coloca a contagem na linha omnibus local (223) (fig. 45F), o DMAC (209) captura os bits 31-16 e a BCU captura os bits 26-6. A BCU (156) armazena os bits 26-14 no registador (220) ou (222). Os bits 26-16 re presentam o campo de contagem de palavras duplas. O contador (220) ou (222) é decrementado num limite de palavra dupla (bit 2). O processador S/88 PE (62) coloca um BSM Read/Write Select Up Command na linha omnibus de endereços local (247) e o endere ço inicial BSM na linha omnibus de dados local (223) . O DMAC (209) é um dispositivo de 16 bits que está ligado a uma linha omnibus de 32 bits. Está programado para transferir palavras (2 octetos) durante operações DMA em todos os canais e cada registador de endereços de memória interno MAR é incrementado de uma palavra (2 octetos) por transferência. Porém, é necessário um incremento de palavra dupla (4 octetos), visto que cada transferência é efectivamente de 32 bits. Para o conseguir, o processador S/88 PE (62) inicia liza sempre o MAR para metade do endereço inicial desejado (na memória (210)). A BCU (156) compensa então isso duplicando o en 105
GJSSSnSUTT^S
í: Λλ<· - ^:ίΛ'.;νιΑ.ν ^ν'.ι«,,........ dereço do MAR antes de o apresentar à linha omnibus local (223)r donde resulta a sequência de endereços correcta, tal como é vi£ ta na memória (210). A BCU (156) efectua o seguinte: 1. 0 contador de limites (221) ou (224) é carregado a partir de bits 2-5, invertidos, da linha omnibus de dados local (223), ao mesmo tempo que o registador de endereços BSM (228) ou (231) é carregado. 2. Decremento do contador de palavras completas (220) ou (222) num limite de palavras duplas (bit 2); e 3. Incremento do registador de endereços BSM (228) ou (231) num limite de palavras duplas (bit 2).
Quando ficam mais de 64 octetos ou se verifica um atravessamento de um limite durante uma transferência de blocos de dados, a BCU (156) carrega a contagem de octetos de comando de leitura/escrita BSM na linha omnibus de coman dos/estado (249) ou (252), a partir do contador de limites (221) ou (224) e do registador de endereços BSM (231) ou (228), bits 1,0 (invertidos). Efectua-se depois a operação de Leitura/EscrjL ta. A BCU (156) decrementará os registadores de contagem de limites (221) ou (224) e o registador de contagem de palavras com pletas (220) ou (222) num limite de palavras duplas; além disso, incrementará o registador de endereços BSM (231) ou (228) num limite de palavras duplas. A BCU (156) parará quando, no registador de endereços BSM (231) ou (228), bits 5-2 = 0000, um limi te de 64 octetos. Neste instante, os bits do contador de limites deve ser = 1111.
Quando restarem 64 octetos, ou menos, e não houver atravessamento de um limite durante uma transferência de blocos de dados, a BCU (156) carregará a contagem de octetos de comando de Leitura/Escrita BSM na linha omnibus do adaj: tador, na linha omnibus de comandos/estados (249) ou (252), a partir dos bits 5-2 do contador (220) ou (222) e dos bits R e S. A BCU (156) efectua então uma operação de Leitura/Escrita duran te a qual decrementa o registador (220) ou (222) num limite de palavras duplas, incrementa o registador de endereços BSM (231) ou (228) num limite de palavras duplas e para quando todos os 106
bits 12-2 do registador (220) ou (222) forem "l". Um atravessamento de um limite é detectado comparando os bits 2-5 do registador de contagem (220) ou (222) com o seu registador de limites (221) ou (224). Se o valor do registador de contagem (220) ou (222) for maior do que o do registador de limite (221) ou (224), então foi detectado um atravessamento de um limite. g) Sequências de transmissão com passagem de testemunho BCU 156/Adaptador (154) O diagrama de distribuição de tempos da fig. 5 mostra as sequências de transmissão com passagem de testemunho entre a BCU (156) e o adaptador (154) para os comandos de Leitura da Caixa de Correio e dos comandos de leitura da memória, incluindo a transferência de duas palavras de 32 bits pa ra uma memória tampão da fila de espera de trabalho na memória local (210).
Quando um comando de leitura da caixa de correio ou de leitura da memória é produzido na linha omnibus (290) (fig. 19A), dois sinais Gate Left e Gate Right introduzem sequencialmente as partes da esquerda e da direita do comando e do endereço em registadores (214) e (219) (fig. 19B) para o ada£ tador (154) buscar os dados apropriados da memória S/370 (162). Activa-se o comando Tag Up na linha (262a), a que se seguem sinais periódicos de leitura de dados. Activa-se o comando Tag Down na linha (262b), até os dados buscados serem armazenados na memória tampão (259) . Quando se activam os sinais periódicos Clock Left e Clock Right seguintes, introduzem-se as partes da esquerda e da direita da primeira palavra buscada na memória tampão (226), através da linha omnibus (250) .
Activa-se Bus Request na linha (263a ou b) para o canal 0 ou 1 do DMAC. O DMAC arbitra o controlo da linha omnibus local através da linha (269). Quando este pedido for aceite pela lógica (216) , activa-se Bus Grant na linha (268) . 0 DMAC (209) activa o sinal de confirmação Acknowledge na linha . (264a) ou (264b), o que faz com que a BCU encaminhe os dados na memória tampão (226) para a linha omnibus de dados local (223) , 107
enquanto que o DMAC (209) coloca o endereço de memória local se leccionado na linha omnibus de endereços local (247). Então o DMAC (209) envia DTC pela linha (267) para fazer com que a lógi ca (253) active o sinal de selecção da memória, Store Select, na linha (210a), sendo os dados na linha omnibus (223) colocados na memória tampão apropriada na memória local (210).
Os sinais periódicos sucessivos Tag Up, Clock Left e Clock Right, DMAC Request encaminham as palavras de dados sucessivas para a memória tampão (226) , sendo estas pa lavras transferidas para a memória tampão apropriada, na memória (210), enquanto o DMAC (209) obtém acesso às linhas omnibus locais (247) e (223), através da lógica de arbitragem (216), e emite sinais Acknowledge e DTC. A fig. 26 mostra analogamente as sequên cias de transmissão com passagem de testemunho para comandos de selecção da fila de espera, Quene Select Up, e de escrita na me mória, Storage Write. Quando for emitido qualquer destes comandos pela linha omnibus (290), os sinais Gate Left e Gate Right transferem o comando e o endereço (previamente armazenados nos registadores (225) e (227)) para o adaptador (154). Na linha (262a) são activados um comando Tag Up seguido de sinais de dados periódicos. Na linha 263 c ou d é activado DMAC Request. O DMAC (209) arbitra a linha omnibus local (247,223) através da linha (269) e da lógica (216). Quando o pedido for aceite através da linha (268), o DMAC (209) activa a confirmação Acknowledge na linha (264c ou d), a que se segue DTC na linha (267) para transferir a primeira palavra de dados da memória (210) para o registador (227). Os sinais periódicos Gate Left e Gate Right seguintes transferem a primeira palavra de dados do registador (227) para a memória tampão (260) do adaptador (154) .
Os sinais seguintes DMAC Request na linha (263c ou d) e DMAC Acknowledge e DTC transferem as palavras de dados seguintes para o registador (227) enquanto o DMAC (209) arbitra o controlo das linhas omnibus locais (247,223). Os sinais periódicos Gate Left e Gate Right seguintes transferem cada palavra de dados do registador (227) para a memória tampão (260). 108
ELEMENTO PROCESSADOR S/370 PE (85)
Cada elemento de processamento, tal como PE (85), da forma de realização preferida contém as facilida des básicas para o processamento de instruções S/370 e contém as facilidades seguintes;
Fluxo de dados básico de 32 bits. Unidade aritmética/lógica (ALU) (306) de 32 bits.
Unidade de deslocamento (307) de 32 bits Memória local de dados de 48 registadores (de 32 bits cada um) (303) com possibilidade de endereçamen to de 3 portas;
Memória tampão de instruções S/370 (309) de 8 octetos; e
Facilidades de distribuidor de tempos (distribuidor de tempos CPU, comparador, etc.) (315). O fluxograma de dados simplificado de uma forma de realização preferida do PE (85) está representado na fig. 27, devendo entender-se que existem muitas realizações práticas do processador S/370 bem conhecidas na técnica. A forma preferida de cada elemento de processador (85) da realização preferida é um processador capaz de executar as instruções da arquitectura do sistema/370. O processador busca instruções e dados a partir de uma área de memória real (162) da memória (16), através da linha omnibus (170) do processador. Esta linha omni-bus (170) bidireccional é a ligação universal entre o elemento processador PE (85) e as outras unidades do conjunto (150) de mi cropastilhas S/370. O PE (85) actua como director, mas tem a prioridade mais baixa no sistema. As instruções são executadas por meios físicos e por microinstruções que o processador execu ta quando no modo micro. 0 PE (85) tem três grupos principais de funções: O "grupo linhas omnibus" que consiste nos registadores de emissão e de recepção (300,301), e os registadores de endereços (302) para armazenar operandos e instruções. - O "grupo aritmética/lógica" que consiste na memória local de 109
dados (DLS) (303), os registadores de operandos A e B (304, 305), a unidade aritmética e lógica ALU (306) e a unidade de deslocamento (307) . - O "grupo descodificador de operações" constituído pelo registador de endereços da memória de controlo (CSAR) (308), a memória tampão de instruções S/370 (I-Buffer) (309), os registadores OP (310) e os contadores de ciclos (311) com controlo de transferência de programas e de excepções. - O "grupo de distribuidores de tempos", com uma unidade (315) pequena, relativamente independente, constituído por um di£ tribuidor de tempos de intervalos (315), o relógio das horas do dia, o comparador de relógios e o distribuidor de tempos da CPU. A descrição breve seguinte esboçará a utilização destas unidades lógicas. A memória tampão de instruções (309) pôs as instruções S/370 ã disposição do descodificador o mais rapidamente possível. A primeira meia palavra contendo o código operativo é fornecida através do registador de operação (310) ao descodificador (312) para iniciar a fase I S/370. A segunda e a terceira meias palavras (se as houver) são fornecidas à ALU para cálculo do endereço. A memória tampão I (309) ê um regista dor de palavras duplas que é carregado por operações tais como IOL, LOAD PSW ou PSW permutadas através de uma operação forçada no registador (313), antes de iniciar a sequência da instrução S/370. A memória tampão I (309) é de novo preenchida palavra-a--palavra enquanto as instruções são fornecidas para o registador de operação (310) (e para a ALU (306) , para cálculo de ende reços) e é completamente preenchida durante cada ramificação com êxito. 0 descodificador de operações (OPDEC) (312) seleccio na a operação a efectuar. O descodificador é alimentado a partir dos registadores de operações de microcõdigos de operações (310). Os bits de modo decidem qual (ou nenhum, no caso de uma operação forçada) toma o controlo para a descodificação.
Os conteúdos da memória tampão (309) são fornecidos para o registador de operação (310) e, em paralelo, * para o registador CSAR (308) para endereçar uma tabela de códi- 110 , - ViVirv^yT»»»-—ί.τ-ι
J gos de operações na memória de controlo (171) . Cada uma das entradas nesta tabela serve para dois fins: indica se existe uma rotina em microcódigo e endereça a primeira instrução dessa rotina. As rotinas de microcódigos existem para a execução de instruções mais complexas, tais como instruções com campo de comprimento variável e todas as outras que não são executadas directamente por meios físicos. Códigos especiais de funções nas instruções micro activam os meios físicos de suporte de modo que é possível controlar o fluxo de dados de 32 bits usando instruções micro de 16 bits.
Todo o processamento ocorre numa canali zação de informações de três etapas: - A primeira etapa lê a instrução para o registador OP (310). - A segunda etapa lê os endereços e/ou os dados para os regi£ tadores A/B (304) e (305) e para o registador de emissão (300) da linha omnibus (300). O registador OP (310) é liber tado para uma outra primeira etapa, fazendo passar o seu conteúdo para o descodificador OP (312), que controla a ter ceira etapa. - A terceira etapa realiza a operação ALU, deslocamento ou li^ nha omnibus, conforme o que for requerido em cada caso. Efectuam-se nesta etapa também operações de escrita DLS. O processamento efectivo é adicionalmen te melhorado realizando o descodificador em vários grupos (não representado), um dedicado especificadamente para a ALU, um outro para o grupo de linhas omnibus e assim sucessivamente. Mul-tiplexadores seleccionãveis por octetos (não representados) na entrada dos registadores A/B e na saída da ALU ainda melhoram a execução das operações. Assim, há instruções RR S/370, cada uma das quais ocupa uma das etapas da canalização de informações du rante apenas um ciclo.
Os registadores (313) de operação força da (FOP) são usados para controlo interno. Estes registadores obtêm entradas de dispositivos de rejeição e de condições exce£ cionais e forçam um outro modo para o descodificador (312) . São operações típicas a carga de memórias tampão de instruções I, transição para o nível dos dispositivos de rejeição e o início de rotinas de excepção. 111
Todos os registadores de operação (310) têm um contador de ciclos (311) próprio. Os contadores de ciclos de microcódigo são compartilhados por algumas operações forçadas (FOP). As operações aritméticas e a maior parte das outras micro-instruções apenas requerem um ciclo. A maior parte das mi cro-instruções que executam operações das linhas omnibus do pro cessador exigem dois ciclos. A memória de dados local DLS (303) contém 48 registadores de palavras completas (4 octetos), que são acessíveis através de tris portas, sendo uma delas uma porta de entrada e duas portas de saída. Qualquer registador pode ser en dereçado através do registador (314) para a entrada (IN), poden do o mesmo registador ou dois registadores diferentes ser simul taneamente endereçados para a saída. Este endereçamento triplo permite que a busca de operandos se sobreponha ao processamento. Devido a uma lógica de comparação e encaminhamento de dados (não representando) um registador precisamente endereçado para uma operação de escrita pode também ser usado como entrada no mesmo ciclo. Isto facilita as operações de canalização das informações . A ALU (306) é de preferência uma unidade lógica de palavras completas, capaz de executar operações E, OU, OU EXCLUSIVO e ADD, na forma verdadeira e na forma invertida, sobre dois operandos de palavras completas. A adição decimal é também admitida. A predição e a geração de paridades, bem como a propagação rápida do transporte estão também incluídas. O registador de guarda (320) permite as operações de divisão. A lógica de estados (ALU STAT) (321) gera e armazena várias condi ções para decisões em ramificações do programa, avaliação do sd. nal, etc.. 0 registador de endereços do controlo da memória (CSAR) (308) endereça micro-instruções e tabelas para a memória de controlo (171) . A entrada para CSAR (308) é um endereço actualizado proveniente do modificador MOD associado (322) ou um endereço de destino de uma ramificação com resulta-, do afirmativo, ou um endereço forçado para a consulta de uma ta * bela. A consulta de uma tabela é obrigatória no início de cada 112
=¾¾
instrução S/370 e para algumas operações forçadas (FOP). 0 CSAR (308) obtém o padrão do código OP como um endereço para aceder â tabela de Códigos OP (fig. 29). A saída desta tabela de códigos OP define a forma de execução que pode ser a descodificação directa do registador de operações (310). Se for necessária a execução indirecta, a saída da tabela de códigos OP é reenviada para o CSAR para endereçar a micro-rotina apropriada. O registador de endereços da memória (302) está dimensionado para endereços de 24 bits. Dm modificador (323) associado MOD actualiza o endereço de acordo com a d_i mensão do bloco de dados buscado. As instruções são buscadas em avanço, por incrementos de uma palavra (4 octetos) enquanto a memória tampão de instruções (309) está a ser esvaziada. A entrada para o registador de endereços de memória (302) vem do re gistador (324) de endereços de operandos das instruções. Além disso, é posto em paralelo com o registador de endereços das instruções (324) por razões de aumento da velocidade. O fluxo de dados da CPU permite o processamento em sobreposição de até três instruções S/370 de cada vez. As instruções S/370 são executadas, ou por meios físicos, ou interpretadas por micro-instruções. O tempo de ciclo básico da forma de realização preferida é 80 ns. O processamento das instruções faz-se em uma ou mais etapas de 80 ns. Dm dispositivo de multiplicação com elevada velocidade PS (151) acelera as operações de multiplicação binárias em vírgula flutuante. As mi cro-instruções provenientes da memória central (171) são usadas apenas para a execução das instruções demasiado complexas e por tanto muito dispendiosas quando feitas inteiramente por meios físicos. As micro-instruções, se forem necessárias, são forneci das com a velocidade de 60 ns por instrução. 0 conjunto de micro-instruções está optimizado para as instruções S/370 de interpretação. As micro-instruções têm o formato de meias palavras e podem endereçar dois operandos. O microcódigo não contido na memória de comando (171) é retido na área objecto interna IOA (187), que é . uma área reservada na memória S/370 (162) (ver fig. 28,29). Es-\ te microcódigo inclui o código sensível de menor eficácia para 113 excepçoes, instruções S/370 executadas pouco frequentemente, etc.. Estas micro-rotinas são buscadas com base em pedidos para a memória tampão de 64B (186) na parte de RAM da memória de comando (171). Sempre que o PE (85) encontrar um endereço maior que o realizado na memória de comando (171), ele indica uma ope ração de busca de um bloco de 64 B para o controlador da memória "cache" (153) e a interface do controlador da memória (155). As unidades (153,155) buscam o bloco de 64 B a partir da área IOA (187) e emite-o para o PE (85) , que o armazena na memória tampão (186). As micro-instruções são buscadas pelo PE (85) a partir da memória tampão (186) para execução. Todo o microcõdigo é carregado na memória no instante de carga do microcõdigo inicial (IML). 0 sistema proporciona um apoio IML para facilitar a carga do microcõdigo do S/88 na memória.
As instruções S/370 e os dados do utili zador são buscados a partir de uma memória "cache" (340) de ele vada velocidade de 8KB (fig. 31). Os dados são lidos/escritos da/na memória "cache" (340) à base de palavras completas. O tem po necessário para ler/escrever uma palavra completa de/para a memória "cache" é de 120 ns. A memória "cache" (340) é automati camente reenchida com blocos de 64 octetos, a partir da memória (162), â medida que surge a necessidade. O PE (85) comunica com a memória "cache" (340) por via dos comandos das linhas omnibus do processador. Os endereços virtuais proporcionados pelo PE (85) são usados para consultar os endereços das páginas prê-tra duzidas correspondentes na tabela separada de consulta da lista (DLAT) (341). A memória local de dados (303) no PE (85) inclui 16 registadores gerais, 4 registadores de vírgula flutuante e 24 registadores de trabalho. Todos os registadores podem ser endereçados individualmente através de três portas susceptí veis de ser endereçadas separadamente. Assim, a memória (303) pode fornecer dois operandos em paralelo para a ALU (306) e simultaneamente aceitar uma palavra completa da ALU (306) ou da memória "cache" (340) dentro do mesmo ciclo de 80 ns. Como não há disposição em série, como nas memórias de dados locais convencionais, as operações aritméticas e lógicas podem ser executadas de maneira sobreposta com preparação para as instruções 114 seguintes. A CPU mantém uma memória de instruções (I-Buffer) de 8 octetos (309) para instruções S/370. Esta memória tampão é inicializada por uma instrução de ramificação S/370 com resultado positivo. 0 PE (85) busca uma palavra dupla de da dos a partir da corrente de instruções S/370 a partir da memória "cache" (340) e carrega a mesma na memória de instruções (309). Quando se carrega a primeira palavra completa na memória de instruções (309), o PE (85) inicia de novo a execução de uma instrução. Os dados da memória tampão de instruções são buscados a partir da memória "cache" (340) simultaneamente com a exe cução das instruções S/370. Como o primeiro ciclo em cada execu ção de uma instrução é um ciclo "não "cache"", a CPU utiliza ess te ciclo para pré-buscar uma palavra completa a partir da memória "cache" para a introduzir na memória tampão de instruções (309).
Dispõe-se de um segundo ciclo "não-ca-che" com instruções S/370 que necessitam de indexação durante o cálculo do endereço efectivo, ou que são executadas por micro--rotinas. Nestes casos, a busca de instruções S/370 pode ser completamente sobreposta com a execução de instruções S/370.
Na forma de realização preferida, .o con junto de micropastilhas S/370 comunica através de um mecanismo de interrupção que exige que a micropastilha receba uma interrupção para a confirmar repondo o retentor de interrupção da mi cropastilha de emissão.
Sempre que o sistema (por exemplo através da BCU (156)) ajusta (activa) um ou mais bits num registador de estados (STR) (descrito mais adiante) do adaptador (154), o sistema tem também de activar uma linha de controlo NATTNREQ. Isso provoca uma excepção no elemento processador (85) quando tiver sido executada a instrução S/370 corrente, forçando assim o elemento processador (85) a "olhar" para o registador de esta dos. Um processador de excepções detectarã então o conteúdo do registador STR, interrogará o "tipo ou tipos de interrupção" e despachará a ou as micro-rotinas do sistema apropriadas. Sempre que o elemento processador (85) activa um bit no registador STR, 115
BH o sistema tem de reagir ao mesmo em conformidade. Basicamente há dois tipos de pedidos de interrupção: 1. Pedidos do sistema (SYSREQ) são pedidos (através da BCU (156)) para o elemento processador (85) S/370. 0 sistema ajusta o ou os tipos de interrupção no registador STR para especificar o seu pedido. Isso provoca uma excepção no elemento processador (85) que transfere o controlo para o dispositivo que trata as excepções. Este dispositivo que trata as excepções despacha a micro-rotina apropriada, que envia um comando PROC-Bus para o adaptador (154) , para repor o ti^ po de interrupção apropriado no registador STR, executa a função definida pelo tipo de interrupção e inicia a execu-Q ção da instrução S/370 seguinte. 2. Pedidos de transferência podem ser invocados ou pelo sistema ou pelo PE (85) implicando uma transferência adicional de dados na interface do sistema.. Para isso, previm-se dois retentores de interrupção no registador STR: um é o pedido de comunicação do processador de comunicação (PCR) e outro é o pedido de comunicação do sistema (SCR). 0 PCR é ajustado pelo PE (85) e reposto pelo sistema; o SCR é ajustado pe lo sistema e reposto pelo PE (85).
Para as operações de transferencia rãpi da de dados, previu-se a existência de dois registadores adicio nais: o registador BR (115) (fig. 13), que é ajustado pelo PE (85) e lido pelo sistema, e o registador BS (116) , que é ajusta do pelo sistema e lido pelo PE (85). 0 que se segue é um exemplo de um PE (85) para pedido de transferência do sistema. O PE (85) coloca dados para serem transmitidos para o sistema no registador (115) e liga o retentor PCRl. 0 sistema lê os dados provenientes do registador (115) e repõe o retentor PCR. 0 processador pode explorar o retentor PCR para verificar se ele foi ou não reposto. 0 PE (85) pode transferir mais dados para o sistema repetindo a sequência ante rior. 0 sistema pode transferir dados para o PE (85) de uma maneira análoga, como segue. 0 sistema coloca da dos para ser transmitidos para o PE (85) no registador (116) e 116
liga o retentor SCR. O PE (85) é interrompido, explora o STR, encontra o retentor SCR ligado, lê os dados do registador (116) e repõe o retentor (SCR). 0 sistema pode interrogar o retentor SCR para verificar se foi ou não reposto. 3. 0 sistema pode transferir outros dados para o PE (85) repe tindo a sequência anterior.
Podem também permutar-se dados através da área IOA da memória (187). Há comandos PROCBUS para o PE (85) e para o adaptador (154) que permitem quer armazena quer buscar dados em/a partir da área IOA (187). 0 PE (85) tem um conjunto de memórias tampão atribuídas na área IOA (187), nas quais coloca dados para serem buscados pelo sistema. Correspondentemente, o sistema tem um outro conjunto de memórias tampão atribuídas na área IOA (187), nas quais coloca dados para serem buscados pelo PE (85). Os tipos de interrupção IOASYS/IOAPU podem ser usados em pedidos SYSREQ para indicar-se mutuamente que se colocaram dados nas memórias IOA.
Certas condições de verificação da máquina e de interrupção externa são activadas pelo sistema de utilização. 0 sistema comunica uma condição de interrupção ao PE enviando um pedido de comunicação SYSREQ ou XFERREQ. 0 PE (85) executa as funções seguintes: a. Explora o registador STR e interroga o seu conteúdo. b. Chama a micro-rotina proporcionada pelo sistema. 0 dispositivo de tratamento dos pedidos de interrupção do sistema efectua o processamento de interrupção específico. Num instante apropriado, a micro-rotina envia um comando PROCBUS para o adaptador (154) para repor o SYSREQ ou XFEROEQ correspondente. Finalmente, devolve o controlo para o microcó-digo S/370. c. 0 PE (85) permuta PSW para a classe de interrupção S/370 apropriada e executa a função NSI.
Os pedidos de interrupção 1/0 são gerados pelo sistema ajustando o bit 1/0 no registador STR. Quando, de cada vez, se completa a instrução S/370 corrente, é pedido o dispositivo de tratamento e excepções. Nesta rotina, o PE (85) lê o registador STR para reconhecer o pedido de interrupção 1/0. 117
0 PE (85) repõe o bit STR e ajusta o retentor do pedido de interrupção interno ao PE (85). Este retentor é mascarado com a máscara I/O da PSW corrente. Se a máscara for 1 e não estiver pendente nenhum pedido de interrupção de prioridade mais elevada, o dispositivo de tratamento de excepções passa o controlo para um dispositivo de tratamento de pedidos de interrupção 1/0 proporcionados pelo sistema que processa o pedido de interrupção 1/0.
Linha omnibus do processador (170) (fig. 11 e 30) e comandos da linha omnibus do processador A linha omnibus do processador (170) ê a ligação comum entre todos os componentes do conjunto de micro pastilhas S/370. Logicamente, todas as linhas listadas adiante pertencem a esta linha omnibus: 1. As linhas (0-31 + 4 paridade) da linha omnibus do processador são geralmente usadas para transferir um comando juntamente com um endereço num ciclo e depois para transferir os dados associados no ciclo seguinte. A permissão para utilizar a linha omnibus é dada por um árbitro de preferência s_i tuado no adaptador das linhas omnibus (154). 0 PE (85) tem a prioridade mais baixa. Quando for dada a permissão através da linha BUS GRANT PE85, o PE (85) coloca quatro itens nas linhas apropriadas da linha omnibus no ciclo seguinte. Para uma operação de acesso à memória, o comando colocado nas linhas 0—7 da linha omnibus do processador, o endereço é posto nas linhas 8-31 da linha omnibus do processador, uma chave de acesso é posta na linha omnibus de estados da chave (KEY STATUS BUS) e simultaneamente é excitado um sinal "N-Command-Valid". 2. A linha omnibus KEY/STATUS (0-4 + paridade) é usada para dois fins: para emitir uma chave de acesso para a memória e para obter em retorno uma informação de estado. São transfe ridos quatro bits da chave de acesso PSW S/370 mais um quin to bit que representa o resultado de uma operação lógica E do bit do modo de controlo PSW (BC ou EC) e do bit de tradu - 118 -
ção dinâmica do endereço. 0 estado devolvido deve ser zero para uma operação boa. Um estado não-zero provoca na maioria dos casos uma rejeição para PE (85) . Não é esperado qualquer ess tado para comandos do tipo "mensagem" que ajustam retentores de controlo na unidade da linha omnibus endereçada. 3. A linha N BUS BUSY proporciona uma indicação de ocupação sempre que uma operação não pode ser completada no mesmo ci cio em que foi iniciada. A linha N-BUS BUSY é activada pelo PE (85) simultaneamente com a linha N-CMD-VALID para todos os comandos que requerem mais de um ciclo para se completarem. É da responsabilidade da unidade omnibus endereçada levar a linha N-BUS-BUSY para o nível activo se a execução do comando leva dois ou mais ciclos. A linha N-BUS-BUSY é também levada para o nível activo quando a uni^ dade de linha omnibus endereçada não pode aceitar o comando seguinte durante um par de ciclos. Há uma excepção à regra: PE (85) activará N-BUS-BUSY durante três ciclos se ele enviar comandos de operação da memória para a memória principal do agregado BSM (162). Em geral, N-BUS-BUSY estará no nível activo pelo menos um ciclo a menos que a duração da execução de uma instrução. 4. 0 sinal de ocupação da unidade de gestão da memória MMU BUSY origina-se no controlador da memória "cache" (153). É usado para indicar ao PE (85) a chegada de estados e dados para todas as operações de acesso â memória que tomem mais de um ciclo para ser executadas.
As operações de busca principalmente fornecem dados no ciclo seguinte (após terem sido iniciadas) ou posteriormente. Se se fornecerem dados e estados no ciclo seguinte, o sinal MMU-BUSY mantêm-se inactivo no nível baixo (0). Se não puderem fornecer-se dados e estados no ciclo seguinte, MMU-BUSY é elevado para o nível 1 e retorna ao 0 no ciclo em que são efectivamente colocados dados e estados na linha omnibus.
Durante as operações de memória, o PE (85) espera estados na linha omnibus KEY STATUS BUS no ciclo 119
seguinte (após ter sido iniciada a operação de memória). Se não puderem fornecer-se estados no ciclo seguinte, MMU-BUSY mantém-se inactivo (0); além disso é elevada para o nível 1 e volta ao 0 no ciclo em que efectiva é fornecido um estado. 5. O indicador de falha da memória "cache" na linha MISS IND i usado pelo controlador da memória "cache" (153) para indicar uma falha de DLAT, uma falha da chave ou uma violação de endereçamento para o PE (85) . A indicação é uma duplicação de informação que está disponível também no estado. A linha está válida no mesmo ciclo em que se apresentou o estado na KEY STATUS BUS, mas a linha de indicação de falha é activada poucos nanossegundos mais cedo. A indicação de falha força uma rejeição através do PE (85) no ciclo seguinte, 6. 0 sinal na linha BUS GRANT PE85 dá a permissão para a utili zação da linha omnibus para o PE (85). O sinal tem origem no árbitro. PE (85) subsequentemente coloca o comando e o endereço para operação desejada na linha omnibus no ciclo que se segue aquele em que o sinal de permissão se tornou activo e N-BUS-BUSY não está activo. 7. Utilização: o sinal de pedido de atenção na linha N-ATTN--REQ origina em alguma outra unidade de linhas omnibus (tal como o adaptador de linhas omnibus (154)) o pedido do PE (85) para efectuar a operação "sense". O PE (85) acata o pe dido logo que se complete a operação corrente em curso (por exemplo a execução de uma instrução). 8. 0 sinal de comando válido na linha N-CMD-VALID é usado pelo PE (85) para indicar que o padrão de bits nas linhas 0-31 da linha omnibus do processador e as linhas 0-4 (incluindo todas as linhas de paridade) de KEY STATUS BUS é válido. Es^ ta linha pode ser activada (nível baixo) no ciclo que se se gue àquele em que BUS-GRANT-PE85 se activou e N-BUS-BUSY se desactivou. 9. A linha ADDR-DECREMENT é usada pelo PE (85) para operações de acesso à memória que procede do endereço inicial para posições no sentido descendente (tais como as necessárias para a transferência de dados de processamento de dados de cirnais). O sinal pode ser activado no mesmo ciclo em que se activou N-CMD-VALID. 120
10. O sinal de anulação do comando na linha CMD-CANCEL é usado pelo PE (85) para anular um acesso à memória de busca jã iniciada. Isso pode ocorrer no ciclo depois de se activar N-CMD-VALID quando o PE (85) detectar condições que inibem o uso imediato dos dados pedidos.
Na forma de realização preferida, há quatro grupos de comandos PROCBUS de tipos geralmente bem conhe eidos: CPU-Storage; I/O-Storage; MMU Operation; Message Exchange e Floating Point A unidade de linhas omnibus (PE (85), adaptador (154) ou controlador da memória "cache" (153)) que pe de o controlo da linha omnibus (171) coloca o comando na linha omnibus. Para os comandos CPU-Storage e I/O-Storage, a unidade de linhas omnibus também coloca o bit de tradução da chave de acesso e do endereço dinâmico na linha omnibus KEY STATUS BUS. Depois de completado o comando, devolve-se o estado na mesma li. nha omnibus para a unidade de linha omnibus que fez o pedido. O adaptador (154) envia comandos CPU--Storage e comandos I/O-Storage enquanto que o PE (85) apenas pode enviar comandos CPU=Storage. Estes grupos de comandos são como segue: OPeração Comando da memória CPU Comando da memória
I/O 1. a)
Referência da memória principal S/370 FETCH Busca da memória "cache"
Cache Hit Cache Miss
Busca da memória "cache" b) STORE Cache Hit
Recarregar a linha da memória "cache" a partir da memória (incluindo CAST OUT) e busca a partir da memória "cache" Armazenar na memória "cache"
Armazenar na memo ria "cache" 121
Cache Miss Recarregar a linha da memória "cache" (incl. EAST OUT) e armazenar na memória "cache" 2. Referência da área objecto interna (IOA)
Certos comandos da memória CPU permitem o acesso à verificação dos endereços de aces so à memória IOA
Os comandos I/O-Storage são executados no controlador da memória "cache" (153) sem verificação do ende reço da memória principal S/370. Esta verificação é executada em STC1 (155). Os comandos CPU-Storage são dirigidos para o con trolador (153) para execução e têm um campo de comando, de um octeto, e um campo de endereço real ou virtual, de três octetos,
Os bits do campo de comando são os seguintes:
Bit do comando Significado
Comando da memória CPU Operação de busca Operação de armazenamento Curtocircuito da memória "cache", nenhu ma verificação de endereço Acesso â memória "cache" com verificação de endereço - comparar endereço S/370 - verificar ACB Nenhum acesso DLAT; isto é, - nenhuma verificação de protecção controlada pela chave - nenhum tratamento de bits de referência e de permuta
Acesso DLAT; isto é, - verificação da protecção controlada pela chave - tratamento de bits de referência e permuta 122
5 - 7 = nnn Contagem do comprimento em octetos: 000 = 1 octeto 001 = 2 octetos 010 = 3 octetos 011 = 4 octetos 100 = 8 octetos 101 = 64 octetos 110 = 64 octetos FETCH! retardamento de
BSM 111 = 64 octetos FETCHI retardamento do adaptador
Exemplos de comandos de memória CPU são: 1. Fetch (lOlllnnn)/store (lOOllnnn) Real N Byte, para buscar ou memorizar até 64 octetos de/para a memória (162) com um endereço real. 2. Fetch (ΙΟΙΟΙΟηη)/store(ΙΟΟΟΙΟηη) Cache Real N Byte para lejl tura/escrita até 4 octetos de/para a memória "cache" com um endereço real. 3. Fetch (lOlOllnn)/store(lOOOllnn) Cache Real N Byte para lei^ tura/escrita até 4 octetos de/para IOA com um endereço real (100000nn). 4. Fetch (ΙΟΙΟΟΟηη)/store(100000nn) Cache Virtual N Byte para leitura/escrita até 4 octetos de/para a memória "cache" com um endereço virtual.
Os comandos I/O-storage (memorização I/O) são iniciados pelo adaptador (154) e dirigidos para o controlador da memória "cache" (153). Eles transferem correntes de dados com o comprimento de 1 - 64 octetos, por ordem ascendente dos endereços. O formato de comandos de 32 bits inclui um endereço real do octeto nos três octetos de ordem inferior e o octe to de ordem superior inclui um bit "0" da ordem mais elevada, o bit seguinte de ordem mais elevada define uma operação de busca ou de armazenamento e os restantes seis bits definem o comprimento da transferência de dados (1 - 64 octetos). As correntes de dados são transferidas nos limites de palavras, excepto para a primeira e a última transferências, que podem exigir o alinha • mento de posição na linha omnibus. 1 Os comandos MMU são usados para comandar 123
o controlador da memória "cache" e os seus registadores incluin do DLAT, ACB, lista de endereços e outros similares.
Os comandos de mensagens são usados para transferir mensagens entre as unidades de linhas omnibus ligadas â linha omnibus (151) .
Unidade de gestão da memória S/370 (81) 1. Controlador da memória "cache" (153) (fig. 31) 0 controlador da memória "cache", fig. 31, inclui a memória "cache" (340) e a lógica de endereçamento e comparação (347,348), um alinhador de busca (343), bem como a tabela separada de consulta da lista (DLAT) (341) para a tradução rápida dos endereços. O controlador (153) aceita endereços virtuais e comandos de memória da linha omnibus do processador (170) e transfere comandos de busca ou de memorização para a in terface (155) (fig. 11) de controlo da memória, através do mul-tiplexador (349) e da linha omnibus STC (157) , quando não puder satisfazer o pedido através da memória "cache" (340) . A tabela DLAT (341) proporciona a tradu ção rápida de endereços virtuais de páginas em endereços reais de páginas. As suas 2 x 32 entradas contêm 64 endereços de pãgi nas pré-traduzidos. A DLAT (341) é acedida utilizando um esquema de endereçamento associado ajustado por duas vias. A dimensão das páginas virtuais é de preferência 4 KB. No caso de falta da DLAT, o PE (85) é interrompido e a tradução do endereço virtual é feita por microprograma usando tabelas de segmentos e páginas (não representadas) na memória principal S/370 (162), de uma maneira bem conhecida. A DLAT (341) é depois actualizada para reflectir o novo endereço das páginas virtuais e reais da informação buscada a partir da memória e colocada na memória "cache". Uma cópia da chave da memória é buscada a partir da me mória S/370 e incluida na entrada da DLAT. A memória "cache" de 8 KB (340), com a sua lista (342), proporciona uma memória tampão de elevada velo cidade para melhorar de maneira significativa a eficácia do pro cessador. As matrizes de dados e da lista estão divididas em 4 124
compartimentos. Cada compartimento na memória "cache" está orga nizado em 256 x 8 B (octetos). Para a busca de dados na memória "cache" (340), o desvio em octetos no endereço virtual é usado para endereçar simultaneamente a tabela DLAT (341), a lista de endereços da memória "cache" (342) e a memória "cache" (340). A verificação de protecção, controlada pela chave, é feita pelo circuito de comparação (345) utilizando a chave da memória na entrada DLAT seleccionada. São retidos 4 x 8 B de dados na saída (340a) da memória "cache" (340). Se os dados pedidos estiverem na memória "cache" (340), utiliza-se um último sinal de se-lecção para encaminhar os octetos apropriados para o alinhador de busca (343) .
Para as operações de armazenamento efec tua-se um armazenamento parcial numa base de octetos.
No caso de uma falta da memória "cache" o controlador da memória "cache" (153) estabelece automaticamen te um comando BSM para a busca da linha de memória "cache" de 64 B no modo discontínuo por grupos. Se a linha da memória "cache" a substituir por uma nova linha da memória "cache" foi alterada desde que foi carregada, inicia-se uma· operação de expul são para a memória (162) antes de se carregar a nova linha de memória "cache". Dados de entrada/saída (I/O) nunca provocam operações de expulsão de linhas da memória "cache" e de carga de linhas da memória "cache". Os dados I/O a buscar na memória (162) serão consultados, quer na memória principal (162), quer na memória "cache" (340) acedendo ãs duas facilidades. Se se ve rificar uma resposta positiva na memória "cache", é cancelada a operação da memória, sendo os dados fornecidos pela memória "ca che". Se os dados I/O não estiverem na memória "cache", eles se rão buscados directamente na memória, mas não se substituirá qualquer linha na memória "cache". Os dados I/O a armazenar na memória serão armazenados na memória "cache" (340) se a linha endereçada estiver já na memória "cache"? caso contrário, serão armazenados directamente na memória (162). A memória de chave de 4 KB (344) retém as chaves da memória para a memória 16 MB. A memória de chaves é uma matriz organizada de 4K x 8. Cada octeto contém uma chave de memória. Cada entrada da tabela DLAT contém uma cópia da cha 125
ve de memória associada com o seu endereço do bloco de 4 KB. Isso reduz de maneira significativa o número de acessos à memória de chaves enquanto acede repetitivamente a uma página. As alterações das atribuições das chaves da memória afectam, quer a memória de chaves, quer quaisquer cópias na memória "cache".
Os comandos, dados e endereços recebidos pelo controlador de memória "cache" (153) da linha omnibus do processador (170) através do circuito receptor (355) são armazenados nos registadores de comandos, de dados e de endereços (350), (351) e (352). O registador de endereços (347) armazena a gama de endereços válidos para o elemento de processamento PE (85) S/370 associado. A lógica de comparação CMP (348) verifica a validade do endereço recebido. A função de comparação de ende reços S/370 proporcionada pelo registador de endereços (347) e a sua lógica de comparação associada (348) trata endereços provenientes, quer do PE (85) , quer do adaptador de linhas omnibus (154). A função de comparação do registador de limites de comparação de endereços (ACB) (353) assegura que as referências da memória principal S/370 destinadas ã área do utjl lizador não endereçam a área IOA. O registador ACB (353) armaze na a linha divisória (limite) entre a área IOA reservada e a área não reservada da memória S/370 (162). Cada acesso ã memória S/370 conduz â comparação pela lógica (354) do endereço recebido com o valor ACB. 2. STCI (155) (fig. 32A,B) a) Introdução A interface de controlo da memória (STCI] (155) liga o conjunto de micropastilhas S/370 ã memória duplexa da tolerante das avarias (16,18), através da lógica das linhas omnibus (178) e da linha omnibus do sistema (30) (fig. 1). Ela apoia todos os comandos do processador S/370 e de armazenamen-to/busca I/O que definem transferências de dados a partir de 1-64 octetos por comando. Todos os ECC, refrescamentos, ini-cialização e configuração da memória, recuperações de informa- 126
ções, etc., são tratados pelo processador S/88 (62) e pelas memórias (16,18). Nas fig. 32A,B está representado um fluxo de da dos pormenorizados da STCI (155) . A STCI (155), a STCI emparelhada (155a) (não representada numa unidade de gestão da memória (83)) e o seu par de STCI correspondente (não representado) e a unidade parceira (23) (fig. 8), em conjunto, arbitram o controlo da estrutura de linhas omnibus (30) através de uma arbitragem tal co mo a lógica (408) (fig. 32B) em cada STCI. Não só as STCI (155) arbitram contra os controladores I/O e outras CPU (25), (27) e (29),(31) do módulo (9), como se vê na fig. 7, mas também as STCI têm de arbitrar contra o seu processador S/88 (62) associa do (e os processadores emparelhados e emparceirados com esse processador nas CPU (21,23) da fig. 8) que podem estar a pedir o controlo da linha omnibus para funções I/O S/370 ou funções S/88 convencionais.
Porém, a lógica de arbitragem é de resto genericamente análoga à descrita na patente de Reid, baseada primariamente em posições de ranhuras no painel traseiro do pro cessador e cartões I/O, lógica que será agora descrita. Durante uma fase de arbitragem, qualquer unidade do módulo do processador (9) susceptível de ser um módulo director das linhas omnibus e que esteja pronto para iniciar um ciclo de linha omnibus arbitra o uso da estrutura de linhas omnibus. A unidade faz essa arbitragem declarando um sinal de Pedido de Ciclo de Linha Omni^ bus e verificando simultaneamente, por meio de uma rede de arbjl tragem, se há unidades de prioridade mais elevada que estejam também a declarar um sinal de pedido de ciclo de linhas omnibus, A unidade, ou par de unidades emparceiradas, que tem êxito na obtenção do acesso ã estrutura de linhas omnibus durante a fase de arbitragem é chamada directora da linha omnibus e inicia um ciclo de transferência durante a fase de relógio seguinte. Nunca nenhuma das unidades de memória (16,18) é uma unidade direc-tora e não arbitra.
Durante a fase de definição de um ciclo, a unidade que é determinada para ser a directora das linhas om-• nibus para o ciclo define o tipo de ciclo, produzindo um conjun 127
to de sinais de definição de ciclo ou de função. A unidade di-rectora da linha omnibus também declara os sinais de endereço e coloca na linha de paridade do endereço uma paridade par para os sinais de endereço e de função. Todas as unidades do módulo processador, independentemente do seu estado interno de operação, recebe sempre os sinais nos condutores da linha omnibus que transportam os sinais de função e de endereço, embora as unidades de controlo dos periféricos possam operar sem receber sinais da paridade. 0 ciclo que é definido é abortado se nesse instante for declarado um sinal Bus Wait.
Durante a fase de resposta, qualquer unidade do sistema endereçada que esteja ocupada pode declarar o sinal Bus Busy (linha omnibus ocupada) para abortar o ciclo. Uma unidade de memória, por exemplo, pode declarar um sinal Bus Busy se for endereçada quando estiver ocupada ou durante um ciclo de refrescamento. Um sinal Bus Error (erro na linha omnibus) declarado durante a fase de resposta fará abortar o ciclo, pois o erro pode ter sido no endereço dado durante a fase de definição do ciclo. Os dados são transferidos quer na linha omnibus A quer na linha omnibus B durante a fase de transferência de dados, quer o ciclo de leitura quer para o ciclo de escrita. Isso permite ao sistema canalizar uma mistura de ciclos de leitura e de ciclos de escrita na estrutura da linha omnibus sem recorrer à re-arbitragem para a utilização das linhas de dados e sem ter de colocar indicadores nos dados relativos â unidade de origem ou à unidade de destino.
As transferências de palavras completas são acompanhadas pela declaração quer de sinais UDS, quer LDS (sinais de impulsos de sincronização de dados superiores e infe riores). As transferências de meias-palavras ou de octetos são definidas como transferências acompanhadas pela declaração de apenas um destes sinais de impulsos de sincronização. As transferências de escrita podem ser abortadas cedo no ciclo pela uni dade directora da linha omnibus, simplesmente não declarando ne nhum dos sinais de impulsos de sincronização. As unidades dirigidas, que estão a ser lidas, têm de declarar os sinais de impulsos de sincronização com os dados. Os sinais de impulsos de sincronização são incluídos calculando a paridade dos dados na 128 linha omnibus.
Erros detectados durante a fase de trans[ ferência de dados farão com que a unidade que detecta o erro de clare um ou ambos os sinais de Bus Error na fase de distribuição de tempos seguinte, que é a primeira fase após os dados. As unidades de controlo de periféricos aguardam para ver se ocorre um erro antes de utilizar os dados. A unidade central de proce^ sarnento (21) e a unidade da memória principal (16) do sistema, no entanto, usam os dados logo que são recebidos e, na eventualidade de um erro, com efeito recuam e aguardam pelos dados cor rectos. A declaração de um sinal Bus Error durante uma fase põsi -dados faz com que se repita a fase de transferência durante na próxima fase, a sexta, do ciclo de transferência. Isso faz abor tar o ciclo, se existir algum, que de outro modo transmitiria dados pela estrutura da linha omnibus durante esta segunda fase pós dados, isto é, a sexta. 0 modo "backplane" normal de funcionamento do sistema ilustrado é quando todas as unidades estão no modo Obey Both (Obedecer a Ambos), no qual, quer a linha omnibus A, quer a B aparecem sem erros. Em resposta a um erro na li nha omnibus.A, por exemplo, todas as unidades comutam sincroni-zadamente para o modo Obey B (Obedecer a B). 0 módulo (9) regressa ao modo de funcionamento Obey Both por meio de meios de programação de supervisão executados numa unidade central de processamento S/88.
Em ambos os modos de funcionamento Obey A e Obey B, ambas as linhas omnibus A e B são accionadas pelas unidades do sistema e todas as unidades efectuam ainda uma veri ficação dos erros plana. A única diferença de funcionamento no modo Obey Both é que as unidades simplesmente registam outros erros na linha omnibus que não está a ser obedecida, sem exigir que se repitam os dados, sem fazer abortar quaisquer ciclos.
Mas um sinal Bus Error na linha omnibus obedecida é tratado como anteriormente e faz com que todas as unidades comutem para obedecer à outra linha omnibus. 129
b) Fases da linha omnibus do sistema A fig. 33 ilustra a operação anterior com quatro ciclos de transferência multifãsicos canalizados na estrutura de linhas omnibus (30) para o módulo (9). As curvas (56a) e (56b) mostram o relógio principal e os sinais de sincro nização directores que o relógio (38) aplica à linha omnibus X (46), para 21 fases de distribuição de tempos sucessivas, numera das de (1) a (21) , como se indica na parte superior do desenho. Os sinais de arbitragem na estrutura de linhas omnibus, representados com as curvas (58a), mudam no início de cada fase da distribuição de tempos para iniciar, em cada uma das 21 fases ilustradas, a arbitragem de um novo ciclo, como se anota com a legenda de numeração dos ciclos. (={==}= 1), (=}=={= 2), (=[==|= 3),..., (=1==)= 21) . A fig. 33 representa sinais de definição de ciclos com a forma de onda (58b). Os sinais de definição de ciclos, para cada ciclo, ocorrem uma fase de relógio mais terde que os sinais de arbitragem para esse ciclo, como se indica com os números dos ciclos na curva (58b). O desenho representa ainda os sinais BUSY, WAIT, DATA, A BUS ERROR e B BUS ERROR. A fiada inferior do desenho indica o modo "backplane" e representa as transições,
Ainda com referência à fig. 33, durante a fase de distribuição de tempos número 1, o módulo (9) produz os sinais de arbitragem de ciclos para o ciclo =)==)=1. O sistema está a operar no modo Obey Both, como foi designado. A unidade directora da linha omnibus determinada durante o ciclo de arbitragem da fase 1 define o ciclo e efectuar durante a fase de distribuição de tempos (2), como está designado com a referência =)==)= 1 na curva do sinal de definição de ciclos (58b). Também na fase de distribuição de tempos (2) é efectuada a arbitragem para um segundo ciclo, ciclo φφ 2.
Durante a fase de distribuição de tempos (3) não há sinal de resposta na estrutura de linhas omnibus para o ciclo φφ 1, o que indica que este ciclo está pronto para prosseguir com uma transferência de dados como se verifica durante a fase (4) da distribuição de tempos e está designado por 1 na curva de dados (58e). Também durante a fase 3 da distribui ção de tempos é efectuada a arbitragem do ciclo para o ciclo 130
## 2 e a arbitragem para um outro ciclo φφ 3.
Na fase 4 da distribuição de tempos, transferem-se os dados do ciclo φφ 1 e efectua-se a definição para o ciclo φφ 3. Também é declarado um Bus A Arror durante es^ ta fase da distribuição de tempos como se indica com a curva (58f). 0 sinal de erro faz abortar o ciclo φφ 2 e comuta todas as unidades no módulo para o modo Obey B. 0 sinal Bus A Arror da fase 4 da distribuição de tempos indica que na fase anterior 3 da distribuição de tempos pelo menos uma unidade do sistema detectou um erro relativamente aos sinais provenientes da linha omnibus (A) (42). 0 erro verificou-se quando não havia nenhum dado na estrutura de linhas omnibus, como se indica pela ausência de dados na curva (58b) durante a fase 3 da distribuição de tempos, não havendo portanto necessidade de repetir uma transfe rência de dados.
Durante a fase 5 da distribuição de tem pos, com o sistema operando no modo Obey B, é arbitrado um quin to ciclo, define-se a função para o ciclo φφ 4 e não está presente qualquer resposta na estrutura da linha omnibus para o ci cio φφ 3. Por conseguinte, esse ciclo procede ã transferência de dados durante a fase 6 da distribuição de tempos. Também na fase 6 da distribuição de tempos é declarado um sinal Bus Wait, como aparece na curva (58d); isso está em ligação com o ciclo ##4.0 efeito é estender esse ciclo para uma outra fase da dij3 tribuição de tempos e fazer abortar o ciclo ## 5.
Arbitra-se um novo ciclo ## 7, na fase 7 da distribuição de tempos, e a operação de definição prossegue para o ciclo ## 6. Na fase 8 da distribuição de tempos, apli cam-se os dados para o ciclo ## 4 na estrutura da linha omnibus para transferência. Também na fase 8 da distribuição de tempos é declarado um sinal BUSY. Este sinal faz parte da resposta ao ciclo ## 6 e faz abortar o ciclo.
As operações de arbitragem e definição na fase 9 da distribuição de tempos seguem o mesmo padrão com declaração de outro sinal Bus A Error. 0 sistema jã estã a operar no modo Obey B e por conseguinte a resposta a este sinal é simplesmente registar o erro. 0 sinal BUS WAIT declarado na fase 10 131
da distribuição de tempos e que continua para a fase 11 estende o ciclo φφ 8 por mais duas fases da distribuição de tempos, de modo que os dados para esse ciclo são transferidos durante a fa se 13 da distribuição de tempos, como está indicado. 0 sinal BUS WAIT declarado durante estas fases também faz abortar os ci cios ΦΦ 9 e ΦΦ 10, como está representado. Qualquer sinal BUSY declarado durante as fases 10, 11 ou 12, com vista â extensão do ciclo φφ 8 pelo sinal WAIT, faria abortar o ciclo φφ 8. Notar que a transferência dos dados para o ciclo ΦΦ 7 ocorre na fase 10 da distribuição de tempos independentemente dos sinais nos condutores WAIT e BUSY durante esta fase da distribuição de tempos.
Outros sinais BUS A ERROR que ocorram durante as fases 11, 12 e 14 da distribuição de tempos mais umaí? vez não têm qualquer efeito no sistema senão o de serem regista dos, porque o sistema já está em operação no modo Obey B. O sinal WAIT declarado durante a fase 14 da distribuição de tempos faz abortar o ciclo ΦΦ 13. Também estende o ciclo φφ 12, que é no entanto abortado pelo sinal BUSY declarado durante a fase 14 da distribuição de tempos. Além disso, a transferência de dados para o ciclo φφ 14 verifica-se na fase 17 da distribuição de tempos.
Na fase 19 da distribuição de tempos, imediatamente a seguir ao ciclo φφ 15 da transferência de dados da fase 19 da distribuição de tempos, é declarado um sinal BUS B ERROR. Este sinal de erro faz abortar o ciclo ΦΦ 17, que está na fase de resposta, e inicia uma repetição da transferência de dados para o ciclo ΦΦ 15. A transferência repetida ocorre duran te o ciclo φφ 20. Além disso, este sinal de erro comuta o módulo para o modo Obey A.
Notar que o sinal BUS WAIT é activado apenas pelas unidades directoras que tenham sido endereçadas por uma unidade directora da linha omnibus e não estão prontas para efectuar uma transferência de dados. Como a STCI (155) nun ca é uma unidade dirigida e apenas endereça a memória, e não dispositivos I/O, esta linha não é utilizada pela STCN (155). A lógica (178) da linha omnibus do sistema proporciona o elo de ligação da STCI (155) para os cartões 132
»·;—»κγχμκϊ3*! de memória S/88 (16,18) e inclui a lógica de arbitragem (408) (fig. 32B). Os mesmos ciclos de transferência básicos atrás definidos para a linha omnibus (30) são usados pela lógica (178) : 1. Fase de arbitragem - Esta fase prossegue em todos os ciclos enquanto os controladores das linhas omnibus disputarem a posse da linha omnibus. Tipicamente a prioridade da arbitra gem baseia-se no painel traseiro SLOT ID dos dispositivos de arbitragem. Para a forma prèferida da concepção da inter face STCI a prioridade das arbitragens baseia-se na SLOT IT para CPU simples, enquanto que se utilizam as linhas (409) do indicador FIFO Almost Full/Almost Empty (AFE) e do indicador Half-Full (HF) em cada CPU PE (85) e a sua unidade em parelhada) para atribuir paridades baseadas no pedido real de tarefas em realizações com CPU múltiplas. 2. Fase de definição de ciclos - Esta fase segue-se a uma acejL tação pela linha omnibus do ciclo anterior. Inclui um código de função de 4 bits em BUS FN CODE A e B da linha omnibus (30) para especificar transferências de 16, 32 ou 64 bits Leitura/Escrita (R/W) juntamente com o endereço físico inicial de 27 bits para a memória (16). A memória (16) é de 256 MB, para a forma de realização preferida. Todos os acej[ sos da memória são nos limites de 16, 32 ou 64 bits, de modo que não é usado o bit 0 de endereços. De preferencia o acesso de octetos e de palavras é indicado pelos sinais UDS, LDS representados na fig. 14, em ligação com a definição de BUS FN CODE. 3. Fase de resposta do ciclo - Esta fase pode incluir uma condição de BUS ERROR ou BUS BUSY na linha omnibus (30) a partir da memória, o que forçará a interface STCI a re-arbi-trar e reenviar a fase de definição de ciclo anterior. 4. Fase de dados - Uma vez aceite o pedido de memória (depois da fase de resposta ao ciclo) verificar-se-ã a fase de dados no ciclo que se segue a fase de resposta do ciclo (2 ci^ cios depois da fase de definição do ciclo). Podem transferir-se 16, 32 ou 64 bits dentro de uma fase de 125 ns, em leitura ou escrita. 5. Fase pós-dados - Necessária para verificar se há erros na linha omnibus, o que forçará a repetição dos dados (ou a 133
partir da interface STCI (155) ou da memória (16)) na linha omnibus do sistema (30) depois de os dados serem enviados inicialmente. Como as duas linhas omnibus A e B transmitem dados idênticos, podem ocorrer erros quer da linha omnibus A quer da B, durante as fases pós-dados.
Uma diferença importante entre o proceis sador S/88 (62) arbitrar a linha omnibus (30) e a interface STCI (155) arbitrar a linha omnibus (30) pode agora ser descrita. Tipicamente, um processador S/88 (62) será operado em apenas uma das cinco fases em qualquer instante. Porém, devido à capacidade de canalização de informações de busca e de memória na interface STCI (155) (descrita mais adiante), a interface STCI pode operar em todas as fases ao mesmo tempo. Por exemplo, durante uma operação de leitura de 64 octetos, a interface STCI (155) pode ser operada em todas as cinco fases ao mesmo, se não houver quaisquer erros e se à interface STCI for concedida um controlo de arbitragem da linha omnibus (30) em cada um dos cin co ciclos consecutivos. Isso melhora a eficácia do sistema, especialmente numa versão uni-processador de um módulo (9).
c) Características da interface STCI
Descrevem-se a seguir algumas das carac: terísticas da interface STCI: 1. FIFO (400) - Quatro memórias RAM rápidas (64 x 9 bits) de atendimento por ordem de chegada ("First-IN-First-OUT) formam uma memória tampão para permitir reter até quatro coman dos de memória de 64 octetos antes de a unidade (155) ficar no estado de ocupada. Transporta também paridade de entrada para saídas de todos os dados. O relógio S/370 (152) comanda por impulsos de relógio a entrada de comandos e dados na FIFO (400) e o relógio S/38 comanda por impulsos de relógio a saída de comandos e dados da FIFO (400). Uma forma de rea lização preferida da memória FIFO (400) é a CY7C409, descr^L ta mais completamente, a começar na página 5-34 no Product Information Manual publicado em 15 de Janeiro de 1988 por Cypress Semiconductor Corp. 134
Além dos sinais de sincronização por passagem de testemunho normais na indústria/ proporcionam--se também indicadores APE ("Almost Full/Almost Empty" -Quase cheio-Quase vazio) e HF ("Half Full"-Semi-cheio). AFE está no nível elevado quando FIFO está quase cheia ou quase vazia. Caso contrário AFE tem o nível baixo. HF tem o nível alto quando FIFO está semi-cheia; caso contrário tem o nível baixo. A memória aceita palavras de 9 bits em paralelo nas suas entradas sob o controlo da entrada Shift--In (SI) quando o sinal de controlo "Input-Ready" (IR) tiver o nível elevado. A saída dos dados faz-se pela mesma or dem por que foram memorizados sob o controlo da entrada Shift-Out (SO), quando o sinal de controlo Output-Ready tiver o nível elevado. Se a memória FIFO estiver cheia (IR no nível baixo) são ignorados os impulsos na entrada SI? se FIFO estiver vazia (OR no nível baixo) são ignorados os impulsos na entrada SO. A ampliação em paralelo para palavras mais compridas é realizada por combinação lógica, em circu_i tos E, das saídas IR e OR (respectivamente) das memórias FIFO individuais. A operação lógica E garante que todas as memórias FIFO estão prontas para aceitar mais dados (IR no nível elevado) ou então prontas para dar saída a dados (OR no nível elevado), compensando assim as variações dos tempos de atraso da propagação entre os dispositivos. AS operações de leitura e escrita são completamente assíncronas, permitindo que a memória FIFO se ja usada como memória tampão entre duas máquinas digitais com frequências de relógio de operação muito diferentes ou com fases de relógio muito diferentes. A memória FIFO (400) inclui um indicador de escrita e um indicador de leitura e a lógica de controlo necessária para gerar sinais de sincro nização com permuta de informações conhecidas (SI/IR, SO/OR), bem como indicadores AFE e HF. Com a memória FIFO vazia, a lógica da interface STCI manterá SO no nível elevado, de mo do que, quando se escreve uma palavra, ela atingirá rapidamente a saída. O sinal OR tornar-se de nível elevado durante! 135 çaçssKSS!
um ciclo interno, voltando depois de novo ao nível baixo.
Se se escreverem mais palavras na memória FIFO, elas alinham-se depois da primeira palavra e não aparecerão nas saí das até SO se tornar de nível baixo.
Os dados não se propagam fisicamente através da memória. Em vez de deslocar os dados incrementam -se os indicadores de leitura e escrita. O tempo necessário para incrementar o indicador de escrita e propagar um sinal da entrada SI para a saída SO de uma memória FIFO vazia ("fallthrough time") ou o tempo necessário para incrementar o indicador de leitura e propagar um sinal da entrada SO pa ra a saída IR de uma FIFO cheia ("bubblethrough time") determinam a velocidade a que os dados podem passar através da memória FIFO (400) .
Quando se liga a alimentação, a memória FIFO é reposta com um sinal Master Reset. Isso faz com que o dispositivo entre na condição de vazio, o que é indicado pelo facto de o sinal OR ter o nível lógico baixo ao mesmo tempo que o sinal IR tem o nível lógico elevado. Nesta condição, as saídas de dados (D00-D08) terão o nível lógico baixo. O indicador AFE terá o nível alto e o indicador HF o nível baixo. A disponibilidade de uma posição vazia ê indicada pelo estado de nível lógico elevado do sinal In-put Ready (IR). Quando IR tiver o nível lógico alto, uma transição de nível baixo para nível alto no perno Shift-In (SI) carregará os dados nas entradas para a memória FIFO (400). A saída IR irá então para o nível lógico baixo, indi cando que os dados foram amostrados. A transição do nível alto para o nível baixo do sinal SI inicia a transição do nível baixo para alto do sinal IR, bem como a transição do nível baixo para o nível alto do indicador AFE se a memória FIFO (400) estiver quase cheia ou quase vazia. A disponibilidade de dados nas saídas da memória FIFO (400) é indicada pelo estado de nível eleva do do sinal OUTPUT READY (OR). Depois de a memória FIFO ser reposta, todas as saídas de dados (DOO-DOS) estarão no esta do de nível baixo. Enquanto a memória FIFO estiver vazia, o 136
sinal OR terá o nível baixo e todos os impulsos SHIFT OUT (SO) aplicados à mesma serão ignorados. Depois de os dados terem sido deslocados para o interior da memória FIFO o sinal OR irá para o nível elevado.
Dois indicadores, ALMOST FULL/ALMOST EMPTY (AFE) e HALF FULL (HF) descrevem quantas palavras estão armazenadas na memória FIFO. AFE terá o nível elevado quando houver oito ou menos, ou 56 ou mais, palavras armaze nadas na memória FIFO. Caso contrário, o indicador AFE tem o nível baixo. HF tem o nível elevado quando houver 32 ou mais palavras armazenadas na memória FIFO, caso contrário, o indicador HF terá o nível baixo. As condições do indicador verificam-se em relação com os flancos descendentes de SI e SO. 2. Lógica SBI - A lógica (178) da interface da linha omnibus S/88 (SBI), que permite que o processador S/370 (85) inicie a leitura/escrita para a memória S/88 (16) , inclui a lógica (408) para arbitrar cada um dos ciclos para acesso à linha omnibus (30), para iniciar transferências de 16, 32 ou 64 bits. As linhas da interface da lógica (178) e a lógica de arbitragem (408) são de preferência do tipo descrito na patente de Reid, na medida em que não sejam modificadas como aqui se descreve. 3. Tolerância das avarias - Toda a lógica da interface STCI, incluindo a memória tampão FIFO (400), ê duplexada para pro porcionar autoverificação no cartão do processador S/370. A única lógica simplexada inclui a lógica do comparador (402 a-g), a lógica de interrupções (403) e a lógica de geração de impulsos de relógio (não representada). Assim, a interface STCI (155) tem uma interface STCI (155a) (não representada) emparelhada, substancialmente idêntica, que faz parte da unidade de gestão da memória (83) da fig. 8. A lógica do comparador (402 a-g) constitui a lógica de comparação (15) da fig. 8 e a lógica de interrupção faz parte da lógica comum de controlo (75) da fig. 8. Na forma de realização preferida, a verificação de comparação S/370 é efectuada apenas nas interfaces empare- 137
lhadas STCI (155) e (155a), para proteger contra a dispersão de dados errados através da estrutura de linhas omnibus (30). Porém, S/370 os erros de verificação da máquina S/370 e de paridade são fornecidos â lógica (403) através da linha omnibus (460). Alguns erros nas linhas omnibus BCU (247, 223) são captados por circuitos de comparação S/88 (12f) (fig. 8) . 4. Verificação de endereços - Proporcionam-se dois registadores (404) e (405) , com o mapa da memória (MEM Base & MEM S.i ze) para garantir que a dimensão de cada espaço de memória do processador S/370, tal como (162), não ê violado enquanto se utiliza um desvio da base (fig. 10) para gerar um endereço físico válido de utilizador S/370 na memória (16) do sistema S/88. 5. Operação síncrona - Derivam-se impulsos de relógio S/370 (152) do relógio S/88 (38) (fig. 7), entrada de 16 MHz, atra vés da linha omnibus (30) e da lógica de sincronização (158) (fig. 19c), para permitir a sincronização entre os relógios no interior de um período do relógio de entrada do oscila-dor S/370 a partir do arranque do relógio S/88 (38) . Isso permite canalizar leituras consecutivas (por exemplo um comando de leitura de 64 octetos) da memória (162) para o con junto de micropastilhas S/370 (150) , sem qualquer estado de espera entretanto (considerando ciclos consecutivos admitidos para a interface STCI (155) na linha omnibus do sistema (30)) . 6. Interface da linha omnibus STC - Todos os comandos normais de busca/memorização S/370 são executados juntamente com o cancelamento do comando. Os erros de paridade e/ou erros ECC não serão comunicados ao sistema operativo S/370, mas sim são tratados como tentativas repetidas (erros ECC ou erros de paridade das linhas omnibus) ou interrompidas (erros de paridade internos do cartão). Os atravessamentos da linha de fronteira dos 64 octetos terão como consequência uma viragem dos endereços.
Como se representa na fig. 11, a interface STCI (155) é uma interface para o processador S/370 (85), através da unidade de controlo da memória "cache" 138 (153), que trata a tradução dinâmica dos endereços (virtuais S/370, utilizando uma memória "cache" de instruções/dados de 8 KB, bem como uma tabela DLAT de 6 entradas (341) (tabe la separada de consulta da lista). Assim de todas as transferências reais/virtuais 1/0 ou de processador resulta um endereço "real" formado na linha omnibus STC (157) pela unjl dade (153). Tipicamente, quando o adaptador de linhas omnibus (154) ou o processador S/370 (85) conduzem operações de memória "real", a unidade (153) simplesmente actua como um estádio de transição da linha omnibus do processador (170) para a linha omnibus STC (157), excepto para as respostas positivas da memória "cache", que podem ter como resultado o cancelamento de um comando depois de ter sido formado na linha omnibus STC (157).
Apresenta-se agora uma breve descrição das 41 linhas omnibus STC (fig. 32A e (30). A linha omnibus STC de dados/endereços/comandos (406) tem 32 linhas omnibus de dados bidireccionais, mais paridade ímpar, por octeto. Esta linha omnibus é usada para transportar comandos e endereços num ciclo e até 32 bits de dados em cada ciclo subsequente da operação de memória. A linha STC VALID é activada pela unidade (153) para a interface STCI (155) para sinalizar que um comando/endereço é válido na linha omnibus STC no mesmo ciclo. A linha STC CANCEL é activada pela unidade (153) para a interface STCI (155) para cancelar um comando anteriormente emitido. Pode aparecer até 2 ciclos depois de STC VALID ser emitido. É combinada logicamente por um circuito OU com a entrada COMMAND CANCEL da PE (85). A linha STC BUSY (440) é activada pela interface STCI (155) para a unidade (153), um ciclo depois de ter sido emitido um "STC VALID", para significar que a unidade está ocupada e não pode aceitar um novo comando. Ê libertada 1 ciclo antes de a unidade (155) estar em condições de receber um novo comando. STC DATA INVALID na linha (433) pode ser emitido pela interface STCI (155) para a unidade (153) no mesmo ciclo em que são devolvidos dados numa busca para invalidar a transferência de dados. A unjl dade (153) ignora o ciclo de dados se a linha não estiver activada. Esta linha será activada coincidentemente com dados quando tiver ocorrido um erro FAST ECC na linha omnibus (30), quan- 139
do tiver havido uma comparação com resultado negativo de dados entre a lógica de unidades emparelhadas STCI (155,155a) ou se se tiver detectado uma paridade incorrecta durante o ciclo de leitura da linha omnibus (30). A linha STC DATA TRANSFER (441) é excitada para a unidade (153) pela interface STCI (155), para sinalizar uma transferência de dados na linha omnibus STC (157) no ciclo seguinte. Para as memorizações, ela dita que a unidade (153) forneça a palavra de 32 bits seguinte no ciclo seguinte. Para as buscas, ela alerta a unidade (153) de que o ciclo seguinte conterá dados válidos, a menos que seja ultrapassada por STC DATA INVALID no ciclo seguinte. A concepção da interface STCI (155) é completamente canalizada para permitir que todos os estados anteriores estejam activos no mesmo instante, no interior de uma CPU S/370. Deste modo, admitindo aceitações contí nuas pela linha omnibus e a não existência de quaisquer erros, a interface STCI (155) pode manter dados canalizados em buscas, sem estados de espera, utilizando leituras de 64 bits (por ciclo da linha omnibus do sistema (30) de 125 ns) na linha omnibus STC (157) de 32 bits, 62,5 ns. A interface (410) do sistema S/88 é usa da na interface STCI (155) para permitir o acesso aos registado res DIMENSÃO DA MEMÕRIA/BASE DA MEMÕRIA (405) e (404) no interior do espaço de memória de endereços virtuais local BCU. Os erros "BROKEN" (403) e "BUS INTERRUPT REQ"(IRQ) são fundidos com os do cartão (102) do processador S/88 para activar uma interrupção de baixa prioridade na linha omnibus (30) como uma CPU única.
Os erros "Bus IRQ" diferem dos erros "Broken" por esses erros, usualmente devidos a sinais não prote gidos provenientes da linha omnibus (30) , que são detectados dd. ferentes pelo mesmo cartão ou pelo cartão parceiro, não desligam um cartão da linha omnibus (30), como o fazem os erros "Bro ken". Estes erros só são activados quando o cartão está no modoí "Obey both".
Além disso, são activados a partir da lógica (415) do cartão do processador S/88 os sinais "Obey A", "Obey B" e "Duplexed" pelas linhas (411), (412) e (413), em vez 140
de os realizar de novo no interior dos processadores S/370. Os sinais ObeyA/ObeyB são usados para controlar os multiplexadores de entrada (71) e (73) (fig. 8) para respectivamente, os multiplexadores de verificação e de entrada de dados do lado da acti vação, bem como para introduzir condições de erro nas linhas om nibus. 0 sinal Duplexed na linha (412) é usado para sinalizar quando os cartões estão emparelhados (isto é, é usado na lógica (408) de arbitragem das linhas omnibus para garantir que os dois parceiros são arbitrados conjuntamente quando em ranhuras consecutivas).
Os sinais Obey A e Obey B são invertidos para proporcionar +Obey A, -Obey A, +Obey B e -Obey B. Os sinais +Obey A e -Obey B são aplicados aos registadores (428) e (429), respectivamente. Os registadores (428) e (429) são acoplados respectivamente às linhas omnibus A e B da estrutura de linhas omnibus (30), respectivamente. Os sinais de relógio S/88 (não representados) transmitem cadenciadamente dados das linhas omnibus A e B para os registadores (428) e (429) respectivamente para todos os três modos de relógio A, B e Ambos. Os dados no registador (428) saem para as linhas omnibus (436) e (435) quando a linha omnibus está a funcionar nos modos Obey A ou Obey Both e o registador (429) dá na sua saída sinais para as linhas omnibus (435) e (436) apenas durante o modo Obey B. Analogamente, como se vê na fig. 34, o conteúdo do registador (428a) da interface STCI (155a) é igualmente fornecido na saída durante os modos Obey B e Obey Both. O conteúdo do registador (429a) é fornecido na saída durante o modo Obey A. Combinando por um cir cuito OU as saídas dos registadores (428) e (429) e (428a) e (429a) realizam-se as funções dos multiplexadores de entrada respectivos.
Os valores Dimensão da memória/Base da memória nos registadores (405) e (404) são colocados num mapa da memória no espaço de endereços virtuais do processador S/88 (62), através do espaço de endereços locais da BCU. Eles têm de ser colocados durante o processo de inicialização do S/88, uma vez definido o espaço (162) da CPU S/370 dado. Podem ser altera . dos pelo S/88 desde que não estejam em processamento operações 1 de memorização/busca na interface STCI. 141
O acesso aos registadores (404) e (405) é obtido pela lógica de descodificação de endereços (216) da fig. 19A, através de um endereço local (007E01FC) e incluem os dados seguintes: bits PA 20-23 e bits PA 20-27, que são iguais respectivamente â dimensão da memória (MEM SIZE) S/370 (162) e ao endereço da base da memória (MEM BASE), sendo: MEM Size = mega-octetos (1 a 16) da memória principal atribuídos pela memória S/88 (16) à área de memória (162). MEM Base = mega-octetos de desvio do en dereço zero no espaço de endereços físicos na memória (16) atr:L buídos â área de memória (162) . PA = S/88 endereço virtual traduzido (isto é, endereço físico).
Quando a lógica (216) descodifica o endereço 007E01FC, são colocados os bits da dimensão e do endereço da base nos registadores (405,404) pelo processador (62), através da sua linha omnibus (161D). Durante esta operação, a lógica (216) desacopla o processador (62) do seu equipamento fí^ sico associado, de modo que a carga dos registadores (404) e (405) é transparente para o sistema operativo S/88. Além disso, o sistema operativo S/370 desconhece a sua existência ou o seu uso no acesso à memória S/370 (162).
As fig. 32A e B também ilustram as linhas de entrada/saída (I/O) usadas pela interface de controlo da memória (155) . Esta inclui além da linha omnibus STC (157) todas as linhas necessárias para a interface para a linha omnibus (30) do sistema S/88, para o processador S/88 (62) e para a lógica (415) no cartão (102) da CPU S/88. Para facilitar a descrição, não se representam nas fig. 32 A e B os emissores-rece£ tores (13) da fig. 8. d) Operações de memorização de dados
Quando vem um comando de memória da uni
* dade do controlador da memória "cache" (153), a interface STCI • (155) introduz, com um impulso de relógio, o comando na linha 142
omnibus de endereços/dados (406) (que faz parte da linha omni-bus STC (157)) bits 0-7 e armazena-os na memória tampão de comando (CMD BUFF) (416) juntamente com o bit STC VALID e na memó ria tampão (417). 0 sinal STC BUSY na linha (440) será activado durante o ciclo seguinte pela lógica FIFO/STC.BUS (401), para indicar que a unidade (155) está ocupada. Entretanto o endereço real de 24 bits na linha (406) é também introduzido por um impulso de relógio no registador A/D (417).
Sempre que a memória FIFO (400) não esteja cheia e possa aceitar todo o comprimento da transferência de dados (até 64 octetos) especificado no comando (não existência de transbordo na memória FIFO), será activado o sinal STC DATA TRANSFER pela lógica (401), mantendo-se activo em todos os ciclos até estarem completas todas as transferências de dados da linha omnibus STC para este comando. Nas memórias, o sinal STC DATA TRANSFER não é enviado (e portanto o comando não é de^ locado para a memória FIFO) até ser assegurado que não foi emitido nenhum cancelamento (até 2 ciclos depois de STC VALID). Po rém, durante este tempo, a lógica (401) desloca o endereço de 24 bits do registador (417) para o registador (442) e os quatro primeiros octetos de dados são transferidos da unidade (153) pa ra o registador (417). Além disso, os indicadores FIFO HF e AFE (409) são comparados com o comprimento descodificado do comprimento da transferência de octetos proveniente da memória tampão de comando CMD BUFF (416). Os indicadores FIFO indicam 1 de 4 valores da profundidade da memória tampão em uso. Se o comprimento da transferência de octetos, mais os 4 octetos dos dados da palavra de comando, excederem a capacidade de 64 palavras da memória FIFO, então são retidas todas as activações de STC DATA TRANSFER até desaparecer esta condição de transbordo. Isso veri ficar-se-á logo que se tenham deslocado para fora da memória FIFO palavras suficientes para modificar o estado dos indicadores.
Se não se verificar qualquer cancelamen to e não existir transbordo na memória FIFO, as descodificações do comando proveniente do bloco (401), concatenadas com o endereço de 24 bits proveniente do registador (442) , através do muJL tiplexador (447) , são armazenadas na memória FIFO (400) em ci- 143
cios consecutivos, através do registador (442) , uma vez que o comando de memória inicial seja deslocado para o interior da me mória FIFO. A porta (423) é usada para multiplexar os 16 bits inferiores nos 16 bits superiores para transferências de 16 bits na linha omnibus (30). O bit S ê usado para distinguir armazenamentos de buscas e o bit C/A i usado para diferenciar entre palavras de comando e palavras de dados na memória FIFO (400) , como se vê na fig. 35. A paridade é mantida através da memória FIFO.
As entradas e as saídas da memória FIFO são comandadas por impulsos de relógio de maneiras diferentes.
Os dados são deslocados para o interior da memória FIFO (400) com impulsos de relógio S/370, enquanto que são deslocados para fora da memória com impulsos de relógio S/88. As distribuições de tempos são ajustadas para considerar o caso mais desfavorável dos tempos de passagem pelas memórias FIFO (60 ns), quando a memória FIFO (400) está vazia. As palavras de comandos e de dados da memória FIFO estão representadas na fig. 35, onde: S = (1 = Armazenamento, 0 Busca) C/A = (1 = Comando/endereço, 0 = dados) P01 = Octetos 0,1 Paridade par P23 = Octetos 2,3 Paridade par LWD = Selecção da palavra de dados inferior (LWD) (pala vra de dados inferior multiplexada na palavra superior; P01 = P23 neste caso) 64 OVFL = excedida a transferencia de 16 palavras devido ao alinhamento irregular do endereço; exige um ciclo adicional de dados de 32 bits. 32B16B,8B,4B = contagem ponderada das transferências de octetos TRLl,0 = Codificação para octetos válidos na palavra "tra seira" (transferência dos últimos dados de 32 bits).
Dispositivos sequenciadores individuais no bloco (401), nos lados de entrada/saída da memória FIFO (400), seguem as transferências para/da memória FIFO. O sequenciador de saída segue o número de transferências de dados na linha om- 144
nibus (30) pendentes para o comando corrente de busca ou de armazenamento. Uma vez que a palavra de comando atinga a saída da memória FIFO, o bit C/A = 1 é descodificado na lógica (401); e, desde que não haja qualquer comando anterior pendente para se completar, funde-se o endereço real S/370 proveniente da memória FIFO (400) com o registador da base (404), através da lógica (422) e (423), que é então carregado como endereço "físico" inicial na memória de endereços (420), enquanto se carrega a contagem de transferências no sequenciador de saída em (401). Também a lógica de arbitragem (408) é ajustada para começo da arbitragem. A lógica de controlo de ciclos em (408) seguirá todas as fases activas da interface STCI (155) na linha omnibus (30) para as operações quer de busca, quer de memorização. Juntamente com as linhas de estados da linha omnibus (30) (isto é, BUS BUSY (linha omnibus ocupada; Bus Error, erro na li_ nha omnibus), esta lógica é usada no interior da interface STCI (155) para tratar as operações das fases normais na linha omnibus (30), bem como para o tratamento de condições de erro que conduzem a definição ou fases de dados dos ciclos cancelados. O endereço físico é formado comparando em primeiro lugar na lógica (442) os quatro bits superiores do endereço real de 24 bits S/370 proveniente da memória FIFO (400! com o valor da dimensão da memória S/370 no registador (405) .
Se os bits do endereço S/370 não excederem a zona da dimensão atribuída ao processador S/370 (85), os quatro bits superiores são então adicionados pela lógica (423) ao valor de base da memória S/370) no registador (404), e concatenados com os bits in feriores 19-1 na memória tampão (420) , para formar um endereço físico de 27 bits que é usado como endereço S/88 inicial na área S/370 (162). Por outro lado é anunciado uma verificação do programa. Qualquer atravessamento dos limites dos endereços de 64 octetos terá como consequência um regresso ao endereço inicial. 0 contador U/D de endereços (421) é usa do para reter os bits 5-2 do endereço físico de saída. Ele rece be impulsos de relógio, em sincronismo com o sequenciador de saída e, embora normalmente incrementado, ele pode ser decremen tado quando responde a condições BUS BUSY e BUS ERROR de um ci- 145
cio da fase de resposta. Uma vez carregado o sequenciador de saída, a lógica associada inicia ciclos de armazenamento, com base em aceitações de arbitragem da linha omnibus através da ló gica (408), enquanto que responde às condições BUS ERROR e BUS BUSY. Produz-se um código apropriado de uma função S/88 pela ló gica (401) correspondente ao comando de armazenamento S/88; e o código da função é colocado no registador (443) para aplicação nas linhas omnibus A e B da estrutura (30) de linhas omnibus, quando um ciclo de arbitragem pedido for atendido. O sequenciador de saída é normalmente decrementado de cada vez que é atendido um pedido, sendo o de-cremento de 1 para transferências de 32 bits e de 2 para transferências de 64 bits para a linha omnibus (30) , até se atingir o zero, indicando que não há mais octetos para ser transmitidos para o comando presente.
No caso de uma condição de BUS BUSY ou de BUS ERROR durante uma fase de resposta do ciclo sobreposta com uma fase de definição do ciclo o sequenciador de saída será incrementado de 1 para as transferências de 32 bits e de 2 para as transferências de 64 bits (apenas busca) canceladas.
Simultaneamente, o contador U/D de ende reços (421) é decrementado de 1 para transferências de 32 bits e de 2 para transferências de 64 bits (apenas buscas). O registador de saída de dados (425) é usado para reter temporariamente dados de saída. O registador de saída de dados (426) é necessário no caso de ser necessário reactivar os dados, devido a um Bus Error subsequente (erro na linha omnibus A ou B). Neste caso, os dados subsequentes (para um endereço mais elevado) podem ser aceites e armazenados na me mõria (16,18) mais cedo que os dados do ciclo anterior, que estão associados com o Bus Error, porque a transferência de dados ter de ser pedida 2 ciclos depois da sua transferência inicial. (Em contraste com os dados de armazenamento, os dados de busca não podem ser recebidos fora da sequência). Entretanto, a lógica da arbitragem da linha omnibus (408) arbitra continuamente ciclos até serem iniciadas as transferências e aceites na linha omnibus (30) . A arbitragem e a transferência de dados para a li nha omnibus do sistema (30) e para a memória (16,18) são seme- 146
lhantes âs descritas anteriormente na secção b).
Finalmente, note-se que a concepção da memória FIFO permite o armazenamento até 64 palavras (quase 4 grupos de transferências de memória de 64 octetos) antes se atingir o estado de ocupado. Para os armazenamentos, enquanto a memória FIFO não estiver cheia e possa aceitar as palavras de comandos e de dados associados com a memorização, a memória FIFO é carregada continuamente até ser possível. Por conseguinte, desactiva STC Busy depois de se executar cada comando de ar mazenamento, libertando-se a unidade (153) e permitindo que o processador S/370 (85) continue a execução. Admitindo que há uma elevada percentagem de resultados positivos na memória "cache" na unidade (153), aumenta-se de maneira significativa a eficácia memorizando na memória tampão o equivalente a um armazenamento de quase 64 octetos na memória FIFO ou armazenamentos de 32 octetos 1-4.
Parte-se da hipótese de que a interface STCI (155) é o lado de "excitação" do par (155,155a) de interfa ces STCI e que a interface STCI (155a) é o lado de "verificação1 de erros. Portanto, apenas a interface STCI (155) activa sinais (controlo, endereço, dados) na estrutura de linha omnibus (30), como se mostra na fig. 32B. Quando os sinais se destinam para as duas linhas omnibus A e B, as linhas de activação da interfa ce STCI (155) estão representadas acopladas âs duas linhas omni^ bus (através dos emissores-receptores (13), não representados na fig. 32 B). Na interface STCI (155a), as linhas corresponden tes não estão acopladas ã estrutura de linhas omnibus (30); ape nas à lógica de comparação (402-g). A lógica de comparação (402g) compara os bits 27-6 do endereço provenientes da memória tampão (420), os bits de endereço 5-2 provenientes do contador U/D de endereços (421) , o bit de endereço modificado 1 e o bit de paridade proveniente da lógica geradora de paridade (PTY Gen) (445), e o código da função proveniente do registador (443), com os bits correspondentes provenientes da interface STCI (155a). No caso de uma comparação com resultado negativo, a lógica (402g) aplica sinais de erro na lógica de interrupções (403) e âs linhas BUS ERROR A e B. 147
A lógica (402a) compara os bits de saída dos dados que saem do registador (425) com os bits correspon dentes provenientes da interface STCI (155a) e aplica os sinais de comparação negativa à lógica (403) e às linhas BUS ERROR A e B. A lógica (402d) compara bits provenientes da lógica (401) da memória FIFO com bits correspondentes da interface STCI (155a). A porta E (446) proporciona um sinal de erro para a lógica (403) se estiver activado o sinal STC VALID enquanto o sinal STC está activado na linha (440) . e) Operações de busca de dados
Um comando de busca segue o mesmo tra-jecto que os comandos de memorização, através dos registadores (416), (417), (442) e da memória FIFO (400), atrás descrito.
Uma diferença é que o sinal STC DATA TRANSFER não é activado na lógica STC BUS (408) até saber-se que os dados foram recebidos no registador (428) ou (429), a partir da memória (162), através da linha omnibus (30). Um comando de busca e um sinal STC VALID são recebidos e armazenados no registador (417) . A lógica do STC BUS em (401) emite um sinal STC BUSY durante o ciclo STC BUS seguinte para impedir que o controlador da memória "cache" emita outro comando até ser removido STC BUSY.
Assim, quando for possível ter recebido um comando de busca, o sinal STC BUSY é mantido pela lógica (401) até ter sido completamente executado o comando de busca, visto que o controlador da memória "cache" (153) está â espera dos da dos para a busca a receber. (Durante os ciclos de memorização, STC BUSY foi removido, logo que se tenham transferido os dados de armazenamento do controlador (153) para a memória FIFO (400). Durante o ciclo do comando de busca, o sinal STC BUSY tem de ser mantido até que todo e qualquer comando de armazenamento na memória FIFO (400) seja executado, executando-se depois o coman do de busca. Só então pode o sinal STC BUSY ser removido para permitir a transferência do comando seguinte para a interface * STCI (155).
Nos ciclos a seguir ao armazenamento do 148
comando nos registadores (416) e (417), o comando e o endereço são transferidos para o registador (442) e depois para a memória FIFO (400).
Quando o comando de busca for recebido no último andar da memória FIFO (400) (quando o sinal OUTPUT--Ready tiver o nível elevado, como atrás se descreveu), o bit C/A e outros bits do comando são descodificados, na lógica (401). Um código de função S/88 correspondente aos bits de comando S/370 descodificados é colocado no registador (443), para aplicação â estrutura de linhas omnibus (30) , quando tiver sido satisfeito um pedido de ciclo de arbitragem. A seguir a essa aceitação e à fase subsequente de definição do ciclo e ã fase de resposta do ciclo, a interface STCI (155) introduzirá a fase de dados, admitindo que não foi comunicada nenhuma situação de ocupação da linha omnibus, ou de erro na linha omnibus, durante a fase de resposta do ciclo. Os primeiros 32 bits, juntamente com os bits DP, UDS e LDS, são recebidos nas linhas omnibus A, B da estrutura de li-Q nhas omnibus (30) da posição apropriada na área (162) da memória (16) e da sua parceira, e retidos nos registadores (428, 429), respectivamente, iniciando o relógio S/88 a segunda metade do ciclo da linha omnibus (30) . Admitindo que está activo o modo Obey Both ou o modo Obey A, os dados serão encaminhados do registador (428) para a memória tampão (430) no ciclo seguinte do relógio S/88 (início do ciclo da linha omnibus (30) seguinte) . Para as transferências de 64 bits, os segundos 32 bits são retidos em registadores (428) e (429), concorrentemente com a transferência dos dados anteriores para a memória tampão (430) . Um gerador de paridade (431) adiciona paridade ímpar à palavra de dados armazenada em (430). Estes dados e os bits de paridade, juntamente com os bits UDS, LDS e DP recebidos, são aplicados à lógica (402c) , através das linhas omnibus (435) e (436) . A lóg_i ca (402c) compara estes bits com os bits correspondentes produzidos na interface STCI emparelhados (155a). A memória (430) en caminhará agora a primeira palavra de dados, mais a paridade, para a memória tampão (432) para ser activada durante o ciclo • STC BUS seguinte, para a transferência para o controlador da me 149
mória "cache" (153) , através de uma linha omnibus (406) da linha omnibus STC (157). A memória tampão (432) é comandada com impulsos de relógio do relógio S/370, que são sincronizados com impulsos de relógio S/88 de modo tal que o início do ciclo da linha omnibus STC ocorre depois da activação do relógio S/88. Como são definidos períodos de 62,5 ns idênticos para os dois relógios S/88 e S/370, isso permite a canalização das leituras consecutivas da linha omnibus (30) para a linha omnibus STC. Assim, na forma de realização preferida, executam-se dois ciclos da interface STCI (155) por cada ciclo de 125 ns da linha omnibus (30) .
Admitindo que há aceitações sucessivas para a interface STCI (155) , seguir-se-á uma segunda fase de da dos â primeira fase de dados atrás descrita (admitindo que não há erros da linha omnibus, etc.). Admitindo que há transferências de 64 bits, os dados serão então introduzidos por impulsos de relógio nos registadores (428) e (429), simultaneamente com os dados introduzidos por impulsos de relógio da memória tampão (428) (ou (429) para o modo Obey B) para a memória tampão (430). Os dados da memória tampão (430) aplicarão então os 32 bits seguintes à memória tampão (432) para transferência para o contro lador da memória "cache" (153), como atrás se descreveu. Vê-se portanto como podem utilizar-se transferências de 64 bits conse cutivas para manter um fluxo de dados canalizado na forma de realização preferida.
Se durante esta fase ocorrer um erro FAST ECC, ou uma comparação de dados com resultado negativo, ou um erro de paridade, é emitido o sinal STC DATA INVALID, pela linha (433), pela lógica (402c) simultaneamente com os dados na linha omnibus de endereços/dados STC (406) . Além disso, se chegarem dados subsequentes no ciclo depois do ciclo no qual houve dados invalidados, será forçada uma condição de erro na linha omnibus pela lógica STCI SBI, em ambas as linhas omnibus A e B, a seguir a esse ciclo de dados. Isso garante que os dados serão de novo activados 2 ciclos mais tarde (isto é, um ciclo depois de ser anunciado o erro na linha omnibus), mantendo-se assim a integridade e a funcionalidade dos dados na linha omnibus STC, transferindo dados buscados em sequência. A activação de erros 150 da linha omnibus quer na linha omnibus A quer na B é equivalente â memória (16) comunicar uma condição de erro ECC em relação com um erro "verdadeiro" na linha omnibus, não provocando assim uma alteração na lógica OBEY das linhas omnibus ao longo de todos os controladores nas linhas omnibus do sistema (30).
Analogamente, utiliza-se a mesma lógica (402c) para comparar os dados recebidos e para verificar a par^L dade através das linhas omnibus (435) e (436), nas operações de memorização, para verificar os resultados da comparação da saída de dados em (402e), efectuando uma comparação de dados "em anel fechado" ("loopback") da linha omnibus do sistema (30) atra vés dos registadores (428) e (429) . Isso ajuda a identificar os problemas nos emissores-receptores (13), no cartão (101), mais rapidamente e ajustará o cartão da lógica de interrupções (403) nas memórias, se houver uma comparação com resultado negativo e não for comunicado um erro da linha omnibus no ciclo seguinte da linha omnibus. Além disso, todas as saídas dos comparadores (402 a-g) que produzem uma condição de avaria em comparações com resultado negativo, válidas para operações de busca e de ar mazenamento, gerarão uma condição de interrupção na lógica (403). O ajustamento inicial de interrupção gerará sinais de erro nas linhas omnibus, quer na linha omnibus A, quer na B, assegurando assim que é repetida uma transferência de dados no ciclo anterior, enquanto que qualquer fase de definição do ciclo no ciclo anterior é abortada.
Em contraste com o armazenamento, para as buscas todos os comandos anteriormente na memória FIFO têm de ser executados, bem como a busca corrente, antes de a unidade poder libertar a linha STC BUSY (440) e aceitar outro comando. O controlador da memória "cache" (153) tem de receber os da dos para um comando de busca antes de poder ser emitido um outro comando de memória. A definição dos tipos de ciclo de leitu ra/escrita disponíveis está representado nas fig. 36 A-D, nas quais: UU = Octeto superior da palavra superior
Um = Octeto superior da palavra média LM = Octeto inferior de palavra média - 151 -
LL
Octeto inferior de palavra inferior MEM 16 MEM 32 MEM 64
LW
Ciclo de memória de 16 bits Ciclo de memória de 32 bits Ciclo de memória de 64 bits Palavra comprida (32 bits)
UDS
LDS
Impulsos sincronização de dados superiores Impulsos de sincronização de dados inferiores Não se dispõe de escritas de 64 bits na forma de realização preferida da unidade (155), devido â ênfase posta na minimização dos meios físicos. Uma memória FIFO 64 x 36 é suficiente para suportar a transferência de memória de 32 bits do S/370. Uma limitação da eficácia resultante de usar ape nas escritas de 32 bits é que, visto que cada "folha" do cartão de memória S/88 na memória intercalada (16) tem o comprimento de 72 bits (64 bits mais 8 bits ECC), cada folha, uma vez tendo sido acedida para as escritas, manter-se-á ocupada durante e ci cios adicionais (125 ns). Isso significa que a mesma folha pode ser acedida apenas uma vez cada 5 ciclos (625 ns) em escritas consecutivas. Como todas as escritas de 32 bits S/370 são definidas para endereços sucessivos, isso significa que transferências consecutivas no interior do mesmo limite de 64 bits não po dem ser emitidas mais rapidamente que de 5 em 5 ciclos (625 ns) enquanto que transferências em limites de 64 bits podem ser emi tidas em ciclos sucessivos de 125 ns (admitindo que a arbitragem foi ganha).
Os ciclos de leitura de 64 bits são admitidos e, neste caso, enquanto as leituras consecutivas não te nham acesso à mesma folha, podem ser executadas em ciclos conse cutivos. Caso contrário podem ser executadas de 2 em 2 ciclos (250 ns) . Devido ao facto de cada 32 bits serem recebidos da ljL nha omnibus (30) em leituras de 64 bits de 62,5 e 62,5 ns (por exemplo, duas vezes todos os 125 ns do ciclo da linha omnibus (30)), os tempos dos ciclos das linhas omnibus STC e (30) estão adaptados de modo tal que os dados podem ser canalizados da linha omnibus do sistema (30) para a linha omnibus STC (157) depois de ter sido recebidos. Utilizam-se dois níveis extraordinã rios de memorização em memórias tampão (memórias tampão (430) e (432)) com registadores (428) e (429), para suportar sincroniza-
ção apropriada de ciclos e permitir a geração de paridade de ca da octeto de dados.
Cada endereço de 27 bits e cada código de função de 4 bits são enviados, em conjunto com um bit de paridade, que os acompanha durante as fases de definição de ciclos da linha omnibus (30). Os dados de 32 bits levam também um bit de paridade, com eles associado, durante as fases de dados da linha omnibus (30). Um ciclo básico de 125 ns na linha omnibus (30) permite transferências normais de 16 e 32 bits, bem como transferências de leitura de 64 bits dentro da janela de 125 ns. Optativamente, pode usar-se equipamento físico adicional para aceitar transferências de escrita de 64 bits na interface STCI (155) .
Suporte de I/O S/370 (fig. 37) A fig. 37 ilustra esquematicamente uma vista geral dos equipamentos físicos e do código de aplicação S/88 que é utilizado para suportar as funções de 1/0 S/370. Os dispositivos físicos são (601), (602),(615) a (619), (621) e (623) a (625). As rotinas em meios de programação (ou em meios de mi-crocódigos) são (603) a (614) , (620) , (622) e (626) .
As funções destes vários elementos vão agora descrever-se. O bloco (606) é o controlo principal para o código de aplicação S/88 que consiste nos blocos (606) a (614). Este conjunto de blocos, conhecido por EXEC370, efectua todas as funções do código de aplicação S/88 para a emulsão e o supor te dos dispositivos, serviços, configuração e consola do operador, etc. S/370. O bloco (603) é o microcódigo que é exe cutado no microprocessador S/370. Um protocolo entre o bloco (603) e o bloco (606) permite que eles transmitam pedidos e re_s postas entre si, relativas à iniciação das operações I/O S/370, à sua terminação e â informação de estados do dispositivo e canais de 1/0 S/370. Ele permite também que o bloco (606) solici-\ te o bloco (603) para efectuar funções CPU S/370 específicas. 0 • bloco (605) é a memória S/370 e é acessível directamente quer 153
para o bloco (603) quer para o bloco (606) . O bloco (606) proporciona a configuração S/370 apropriada através dos dados contidos no bloco (602), que é um ficheiro de dados S/88. 0 bloco (604) é uma tarefa, executada separadamente, que proporciona o painel do operador S/370 através do dispositivo terminal S/88. Esta tarefa pode ser iniciada ou parada em qualquer instante sem cortar o funcionamento lógico do processo S/370. O bloco (607) ê uma parte do EXEC370 e proporciona a emulação da interface entre o processo S/370 e o bloco (604). O bloco (601) é um conjunto de "ficheiros de correcções" ("patch files") que contem o código objecto S/370 que foi escrito especialmente para fins de detecção e cor recção de erros ("debugging") de programas S/370 incluindo a sua BCU (156). Há um painel de detecção e correcção de erros de programas proporcionando no bloco (604), que permite a selecção ! e a carga no bloco (605) de um destes "ficheiros de correcção". O bloco (608-1) consiste no código responsável pela emulação do canal S/370. Ele executa a busca de palavras de comandos S/370, o movimento de dados para e do bloco (605), a comunicação de informação de interrupções I/O S/370 ao bloco (603) e a selecção do emulador de código da unidade de controlo apropriado. Pode haver mais de um canal S/370 (por exem pio (608-2)), mas é usado o mesmo código. O bloco (609-1) é o código emulador da unidade de controlo S/370. O sistema S/370 tem muitos tipos diferentes de unidades de controlo, isto é, controladores DASD, controladores de fita, controladores de comunicações, etc.. A função dos controladores S/370 está distribuída entre o bloco (609-1) e o emulador dos dispositivos especiais, o bloco (610) a (614). A finalidade principal do bloco (609-1) é o das funções de separação de endereços, mas outras funções específicas da uni dade de controlo podem residir no bloco (609-1). Há portanto mais de um bloco deste tipo (por exemplo o bloco (609-2)), isto é, o emulador do controlador DASD, o emulador do controlador de comunicações, etc.; mas não há uma correspondência de um para . um com as unidades de controlo S/370 suportadas. ^ O bloco (610) representa o código neces- 154 sário para emular uma consola S/370. 0 bloco (611) representa o cõdigo necessário para emular um terminal S/370. 0 bloco (612) representa o código necessário para emular um leitor S/370. Este é um dispositivo de entrada virtual, modelado de acordo com o leitor VM normalizado. Ele proporciona a entrada de ficheiros sequenciais que foram gerados a partir de uma outra fonte, tipi^ camente uma fita ou uma disquete. 0 bloco (613) representa o código nece£ sário para a emulação de um impressor S/370. Um impressor S/88 actual pode ser accionado, ou os dados S/370 podem ser escritos num ficheiro S/88, para impressão da bobina, mais tarde. 0 bloco (614) representa o cõdigo necessário para emular um disco S/370 (DASD): admitem-se os dois formatos: Contagem, Chave e Da dos; e Bloco fixo, por dois conjuntos diferentes de código. 0 bloco (615) representa um terminal S/88, tipicamente o dispositivo de saída da consola S/88. A con sola do sistema S/88 visualiza, quer mensagens de operador S/88, quer mensagens de operador S/370, além de registar as mensagens para um registo em disco, que aparecerá ao S/370 como um terminal 3278 ou 3279. 0 bloco (616) representa um terminal S/88. 0 bloco (617) representa um ficheiro de dados sequencial S/88, num disco S/88. 0 bloco (618) representa um impressor S/88 ou um ficheiro de dados S/88 sequencial num disco S/88. 0 bloco (619) representa um ficheiro de dados S/88 num disco S/88. 0 bloco (620) é o código que lerá uma fita do sistema S/370 mon tada num dispositivo de fita S/88 e que a apresentará no formato de um bloco (617) quando ele aparecer na fita S/370 original. O bloco (621) representa um dispositivo de accionamento de fita S/88 no qual está montada uma fita escrita em S/370. O bloco (622) é o código que lerá um fi cheiro introduzido no S/88 a partir de um computador pessoal e o apresenta num formato do bloco (617) quando ele apareceu originalmente ao ser gerado num sistema S/370. 0 bloco (623) é um computador pessoal (PCTERM) configurado para emitir e receber dados, quer do siste ma S/88, quer do S/370. 0 bloco (624) é um sistema S/370. O blo co (625) representa um impressor com enrolador S/88. 0 bloco 155
(626) é o código que elabora o formato de um ficheiro S/88 para um dispositivo DASD S/370 emulado. Esta é uma tarefa executada separadamente no S/88 que elaborará o formato do ficheiro para qualquer dos DASD S/370 suportados desejados.
OPERAÇÕES I/0 S/370. VISTA GERAL DOS MEIOS DE MICROPROGRAMAS
Apresenta-se agora uma vista simplifica da e generalizada da 1/0 do sistema S/370. A arquitectura S/370 proporciona vários tipos de instruções 1/0, um esquema de códigos de condições (CC) susceptíveis de ser ensaiadas por programas e um mecanismo de interrupções de programas. Conceptualmente , uma instrução I/O é dirigida para um "Canal I/O", que dirige e controla o trabalho da operação 1/0 em paralelo com outro processamento CPU e comunica estados à CPU quando a instrução 1/0 é executada (através do código de condições), e/ou quando a operação 1/0 está completa (através da interrupção do programa).
As instruções S/370, os códigos de condições, as interrupções e os dispositivos 1/0 (DASD, fita, terminais, etc.) estão estreitamente arquitectados. Contudo, o canal 1/0 está arquitectado de maneira solta para proporcionar uma certa latitude de concepção, existindo muitas formas de rea lização prática diferentes. A visão alargada do aperfeiçoamento do sistema S/370 tolerante das avarias é então uma CPU S/370 (conjunto de micropastilhas com meios de microprogramas, específicos para o cliente) e um "psendocanal 1/0" que consiste em faixas de tempo de uma CPU S/88 e um sistema operativo (OS), com a adição de meios de microprogramas especiais e meios de programa ção ao nível da aplicação (EXEC370) que proporcionam quer a emu lação dos dispositivos 1/0 S/370, quer o controlo global do com plexo do sistema. A parte S/88 deste complexo proporciona uma CPU, um sistema operativo, dispositivos 1/0, blocos de alimenta ção, linhas omnibus e memórias tolerantes das avarias; a CPU S/370 é feita tolerante das avarias mediante redundância dos meios físicos e a adição de lógica de comparação.
Os meios de microprogramas (isto é, mi- 156
A crocódigos) de cliente incluem-se em dois grupos: a. Meios de microprogramas accionadores da BCU S/88 (ETIO) exe cutados no processador S/88 (62) - rotinas de serviço para a inicialização e controlo do equipamento físico BCU/DMAC, serviço de interrupções DMAC e tratamento de estados e erros b. Microcõdigo S/370 (processador (85) - instruções 1/0, trata mento de interrupções 1/0 e alguns controlos especiais tais como invocação de reposição, IPL, paragem, etc..
Como auxílio para compreender o contexto das várias operações de microprogramas, considere-se a seguinte sequência simplificada de eventos que ocorrem numa opere ção 1/0 típica: uma escrita S/370 de uma mensagem de 80 octetos para um terminal com visualizador 3278 S/370 emulado.
Suponhamos, para este exemplo, que a inicialização já foi feita, que o S/370 e o S/88 estão a funcio nar normalmente e não está em curso nenhuma outra operação I/O S/370, sendo feita referência directamente à fig. 43 e às fig. 19 A-C. Cada uma das transferências de dados/comandos entre o PE (62) e os elementos da BCU (156) é efectuada usando o mecanismo "de desacoplamento" atrás descrito com referência ã fig. 20. 0 fluxograma da fig. 43 ilustra esquematicamente esta opera ção I/O inicial típica. a. 0 processador S/370 (85) encontra uma instrução START I/O (SIO) (todas as instruções I/O no conjunto de micropasti-lhas (150) são microcodificadas na forma de realização preferida) . b. São invocados os meios de microprogramação para SIO: ele desloca vários parâmetros para a posição de caixa do correio fixa (188) (na área IOA da memória principal S/370), emite um pedido de serviço para a BCU 156 (pedido PU-BCU) e aguar da uma resposta. c. Os meios físicos da BCU detectam o pedido e geram um comando para a leitura da caixa do correio, de 16 octetos, a par tir da posição fixa IOA S/370 e depois responde ao processa dor S/370 (85) repondo o pedido através de BCU-PU ACK (que significa "o pedido foi satisfeito"). d. No processador S/370 (95), são libertados os meios de micro programas SIO para terminar a instrução SIO e continuar o 157
processamento na instrução sequencial seguinte. e. Concorrente com o evento "d", como consequência de "c", os meios físicos S/370 estiveram a transferir os 16 octetos de dados da caixa do correio para a memória (259) da interface BCU no adaptador (154) através da linha omnibus (170). f. Enquanto os dados são memorizados na memória tampão (em blo cos de 4 octetos) os meios físicos BCU assinalam repetida-mente o DMAC (209) (canal 0) para transferir os dados da caixa de correio (em blocos de 4 octetos) para um bloco FILA DE ESPERA DE TRABALHO na memória local (210) . g. Quando estiver completa a transferência de 16 octetos, o DMAC (209) apresenta uma interrupção (NOTIFICAR, fig. 43) ao processador S/88 (62) e prepara-se depois para uma opera ção de caixa de correio futura carregando o item seguinte na lista encadeada. Esta interrupção é uma das 8 interrupções DMAC para o processador (62) , isto é, uma interrupção do canal 0 DMAC "normal". h. Quando o S/88 aceitar a interrupção DMAC (sujeita a um possível retardamento, devido a mascaramento), executa-se uma rotina de serviço de meios de microprogramas de cliente (na ETIO); ela verifica o estado do DMAC (209) , encontra o bloco da FILA DE ESPERA DE TRABALHO justamente recebido por re ferencia ã lista encadeada e introduz esse bloco na lista de espera para passar ao programa de aplicação EXEC370. i. EXEC370 verifica a FILA DE ESPERA DE TRABALHO, retira da f_i la de espera o bloco da FILA DE ESPERA DE TRABALHO; constrói um pedido de dados no bloco FILA DE ESPERA DE TRABALHO e chama uma rotina dos meios de microprogramas para obter os 80 octetos de dados a enviar para o terminal 3278. j. Os meios de microprogramas preparam e fazem arrancar o DMAC (209) (canal 1), depois enviam um comando para os meios físicos BCU para iniciar a leitura dos 80 octetos a partir de uma posição da memória S/370 específica através do adaptador (154), da linha omnibus (170) e do controlador da memória (155) . k. Os meios físicos BCU, o adaptador (154) e o DMAC (209) trans ferem os 80 octetos para o bloco FILA DE ESPERA DE TRABALHO e o DMAC (209) apresenta uma interrupção ao S/88; isto é se 158
melhante ãs operações nas alíneas f. e g. anteriores. Esta interrupção, uma interrupção "normal" do canal 1 do DMAC, é uma das oito interrupções DMAC atrás descritas. l. Uma rotina de serviço de interrupção dos meios de micropro-gramas mais uma vez verifica o estado do DMAC e introduz na fila de espera um indicador do bloco FILA DE ESPERA DE TRABALHO para EXEC370. m. EXEC370 faz qualquer conversão de dados necessária, depois escreve os dados para o terminal 3278 emulado usando os ser viços do sistema operativo S/88. Passado um certo tempo, re cebe a notificação do fim (normal ou de erro) dessa operação. Constroi então, no bloco FILA DE ESPERA DE TRABALHO, uma mensagem de interrupção S/370 apropriada, incluindo o estado, e chama de novo uma rotina dos meios de microprogra mas para a escrever na fila de espera de mensagens S/370. n. Os meios de microprogramas preparam e fazem o arranque do DMAC (canal 3) , depois emitem um comando para os meios físi. cos BCU para escrever 16 octetos para a fila de espera das mensagens S/370. Isto é análogo a uma leitura da mala de correio no sentido inverso, excepto que neste caso o adapta dor (154) gera uma interrupção de excepção ao nível do mi-crocõdigo no processador S/370 (85) , no fim da operação (também sujeita a um retardamento por mascaramento). 0 DMAC (209) também interrompe (NOTIFICAR, fig. 43) o processador S/88 (62), tal como em g. e k. anteriormente. Esta interrujD ção, uma interrupção "normal" do canal 3 do DMAC, é uma das oito interrupções DMAC. o. No processador S/370 (85), os meios de microprogramas de cliente tratam a excepção e têm de ensaiar as máscaras do canal para a possibilidade de retardamento; se estiverem mascarados, de modo que não pode apresentar-se uma interrujo ção no programa em execução, os dados essenciais são deslocados da área (189) da fila de espera de mensagens para uma fila de espera de interrupções pendentes; um outro dispositivo de tratamento dos meios de microprogramas de cliente atenderão a mesma quando o canal for de novo activado para interrupções. Se não estiver mascarado, estes meios de microprogramas comutam o contexto do S/370 para a rotina de 159
interrupção de programa, imediatamente.
Uma visão ampla do sistema FT aperfeiçoado conduz à conceptualização do papel do S/88 como um proces sador 1/0 dirigido anexo - é um processador 1/0 ou um pseudo-ca nal para S/370. Porém, actualmente toda a comunicação básica en tre os processadores tem de ser iniciada a partir do S/88 (devd. do à concepção). Também, o S/88 pode aceder a toda a memória e ao espaço de microcódigos S/370, através de EXEC370, ao passo que o inverso não é verdadeiro - o processador S/370 (85) não pode aceder de modo nenhum â memória S/88, nem mesmo acidentalmente. Assim, a imagem mais real é a do S/370 como dirigido pelo S/88, mas com a imagem interna de um S/370 independente, nor mal, com 1/0 S/370. 0 S/370 não "sabe" que o S/88 está ali.
Mas, como os programas S/370 são executados em sincronismo com o S/88 e não têm de ser impedidos, as instruções 1/0 S/370 têm de ser capazes de INICIAR uma acção, sendo esta facilidade proporcionada pela linha (256a) de pedido da PU-BCU, que tem um significado singular: S/370 tem uma espera de mensagens de alta prioridade para o S/88 (usualmente uma instrução 1/0). A natureza da prioridade deste pedido de serviçc é a razão para o esquema de caixa de correio automática e para a programação do canal 0 do DMAC numa lista encadeada. 0 DMAC (209) é uma parte integrante da concepção dos meios físicos BCU. Ele é inicializado e controlado basicamente pelos meios de microprogramas S/88, e as transfe rências de dados são cedenciadas pela lógica BCU, que activa as quatro linhas (263-d) de entrada de pedido REQ, uma para cada canal. Além disso, a lógica BCU externa activa a linha (257a) CHANNEL 0 PCL, quando se completa cada transferência da caixa do correio, fazendo com que o DMAC (209) apresente um pedido de interrupção ao processador S/88 (62). Há quatro operações básicas de transferência de dados entre S/370 e S/88: 160
Dimensão Adaptador DMAC (154) (209) Canal Canal Tipo de operação DMAC 1. Ler caixa do correio 16 octetos 0 0 Contínua Lista encadeada 2. Ler dados 1-4096 octetos 0 1 Arranque-para- gem pré-esvazjl ãvel 3. Escrever dados 1-4096 octetos 1 2 Arranque-para-gem pré-esva-ziãvel 4. Escrever mensagem Q 16 octetos 1 3 Aranque-para- gem A inicialização e a programação do DMAC (209) é completamente a normalizada e de preferência em conformidade com a arquitectura MC68450. Em resumo:
Todos os 4 canais - dimensão da transferência das palavras (16 bits); a linha REQ controla a transferência; o endereço da memória na memória (210) é contado para cima; o endereço do dispositivo (registador da memória de dados BCU) não é contado interrupções activadas; roubo de ciclos sem retenção; dispositivo com confirmação/modo de endereçamento endereçado implicitamente/ /simples; porta de dispositivo de 16 bits; PCL = entrada de estados
Adicionalmente ao anterior - CHO Transferência do dispositivo para a memória (memória (210)); encadeamento de agregados ligados; PCL = entrada de estado com interrupção CHI: transferência para a memória (memória (210)); ausência de encadeamento CH2 e 3 transferência da memória (memória (210)) para o dispositivo; ausência de encadeamento. O DMAC "pensa" que o dispositivo tem da dos de 16 bits, mas a lógica exterior provoca transferências de 32 bits. O modo de encadeamento de grupos ligados usado em CHO (canal 0 de DMAC (209)) implica que existe uma lista encadeada usada e que ela ê ajustada pela rotina de inicialização ETIO. 161
Uma vez verificado o arranque de CHO, ele só pãra devido a uma condição de erro, ou por se encontrar a última entrada válida na lista encadeada. No funcionamento normal, verifica-se uma in terrupção de S/88 de cada vez que o DMAC (209) completa uma interrupção de caixa do correio e os meios de microprogramas vigiam e preenchem a lista encadeada em tempo real; assim a última entrada válida da lista não é nunca atingida e CHO funciona continuamente (funciona em vazio).
Cada um dos canais DMAC está provido de dois registadores de vectores de interrupção NIV e EIV (fig. 18], um para fim de operação normal e outro para fim forçado por um erro detectado. O presente aperfeiçoamento utiliza todos os oito vectores, com oito rotinas de interrupção ETIO separadas na memória de microcódigos (174). Adicionalmente, a interrupção normal do canal 0 tem dois significados possíveis: um, "caixa do correio recebida", interrupção provocada por PCL e o menos comum "canal parado devido ao fim de uma lista encadeada". O dispositivo de tratamento das interrupções diferencia estes dois significados por ensaio de um bit de estado DMAC.
Os meios de microprogramas S/88 proporcionam quatro entradas de serviços para o programa de aplicação EXEC370: inicialização e arranque das três transferências de da dos básicas atrás descritas - leitura de dados, escrita de dados e escrita de mensagens na fila de espera. A entrada ETIO-INÍCIALIZE é usualmente chamada logo depois da ligação da energia, mas pode também ser usada para reinicializar para tentativas de recuperação de erros. Ela repõe os meios físicos BCU e o DMAC (209) , depois programa os registadores DMAC, em todos os quatro canais, com valores de configuração e de controlo. Forma também a lista encadeada e faz arrancar o canal 0, fazendo com que o DMAC (209) se autocar regue com o primeiro conjunto de parâmetros da lista encadeada e depois espere por uma transição de pedido proveniente dos meios físicos BEU na linha (263a).
As outras três entradas de serviços são chamadas para fazer arrancar os canais 1 (ler dados), 2 (escrever dados) e 3 (escrever mensagens na fila de espera) do DMAC. O programa de chamada (EXEC370) proporciona um indicador para 162
um bloco FILA DE ESPERA DE TRABALHO que foi pré-ajustado com en dereços de dados, valores de contagem, etc.. Estas rotinas ou fazem arrancar imediatamente o DMAC (209) e os meios físicos BCU, ou introduzir na fila de espera a operação, se o canal DMAC pedido estiver ocupado (Uma fila de espera "de trabalho pendente" separada, representada na fig. 41E, é mantida para ca da um destes três canais). Uma vez o serviço pedido iniciado ou introduzido na fila de espera, o controlo volta ao programa de chamada e o processador das interrupções continua o funcionamen to até se completar.
Uma terceira área, pequena mas crucialmente importante, dos meios de microprogramas de cliente S/88 é a modificação do sistema operativo (OS) S/88 para intersectar e orientar as oito interrupções DMAC para os meios de tratamento de cliente, mas transparentes ao sistema operativo S/88. Isso implica modificações na tabela de vectores arquitectada normali zada MC68020 no OS para o nível 6 (que é normalmente autoorien-tada no cado das falhas de energia) e a colocação dos meios de tratamento das interrupções de cliente no OS. É essa uma realização preferida; mas, como adiante se verá, na secção relativa ãs rotinas de inicialização para interrupções, pode proporcionar-se uma lógica na BCU (156) para colocar um vector na linha omnibus local (223), eliminando a necessidade da modificação de vectores.
Todos os meios de microprogramas S/88 £n ra a força de realização preferida estão escritos em linguagem "assembler MC67020", podendo assim ser de maneira apropriada de signados por microcõdigo. São considerados meios de microprogra mas, devido ã natureza das suas funções. Há quatro categorias de meios de microprogramas de cliente necessários para o processador S/370 (85); 1. Instruções I/O de microcõdigo, que vão para o pseudocanal S/88, 2. Tratamento de mensagens assíncronas que vêm do S/88, incluindo interrupções I/O, 3. Manutenção de dados e estados de configuração de todos os serviços 1/0 S/370 (emulados), e 4. Realização prática de um subconjunto de operações manuais 163 de utilizador.
Todos estes meios especiais de micropro gramas são escritos em microcódigo S/370 e utilizam, sempre que possível, sub-rotinas funcionais pré-existentes. Há dez instruções do tipo 1/0 no S/370, que são discutidas com mais pormenor com referência à descrição das fig. 44 A-I: CLRCH - "Clear channel" (limpar o canal) (op. de canal único) CLRIO - "Clear 1/0" (limpar entrada/saída) HDV - "Halt device" (reter o dispositivo) HIO - "Halt 1/0" (reter entrada/saída) RIO - "Resume 1/0" (retomar entrada/saída) SIO - "Start 1/0" (arrancar entrada/saída) SIOF - "Start 1/0 Fast" (arrancar 1/0 rapidamente) STIDC - "Store channel ID (armazenar canal ID (op. de canal único) TCH - "Test channel" (ensaiar canal (op. de canal único) TIO - "Test 1/0" (ensaiar entrada/saída)
Cada uma destas instruções é realizada em microcódigo, de modo a passar toda a informação essencial pa ra EXEC370 no S/88 através do mecanismo de caixa de correio, mantendo no entanto a concordância com a arquitectura S/370. Várias condições diferentes nos meios físicos no adaptador (154) têm como uma consequência a activa-ção do pedido de "Adapter Attention" que, por sua vez, é uma das várias causas possíveis de uma "Forced Exception" num nível de microcódigo no processador S/370 (85). 0 tratamento desta ex cepção pelo microcódigo efectua-se entre instruções S/370 (imediatamente, se o PE (85) estiver no estado de espera). A causa mais frequente e comum de "Adapter Attention" é a recepção pelo PE (85) de uma mensagem proveniente do pseudocanal 1/0 S/88 para a área fixa "Message-Q" (mensagens na fila de espera) da sec ção IOA da memória principal S/370. 0 meio de tratamento das excepções de microcódigo S/370 existente é modificado para o caso "Adapter Attention". 0 código ensaia o adaptador (154) para determinar a causa do pedido e trata particularmente apenas o tratamento de 164
iftt- li^y.tÍL»»»» smtwEoluuii*4· Β!Γ·ν "Q-not-empty" (fila de espera não vazia) (o que significa mensa gem recebida); qualquer outra causa regressa ao código não modi ficado para o tratamento.
As categorias definidas de mensagens re cebidas são: 0000 NOP Nenhuma operação 0001 RESET Invocar a rotina existente de reposição de programa S/370 0002 CLEAR RESET: Invocar a rotina existente Clear Reset S/370 0003 HALT: 0004 STEP: 0005 RUN: 0006 LPSW: 0007 SMSG: 0008 IMSG:
Reter a execução do programa S/370, pa£ sar para o modo ISTEP
Fase de instrução; executar uma instrução e depois parar
Repor o modo ISTEP; reatar a execução do programa
Executar a função S/370 "Load PSW", usando uma PSW proporcionada no interior da mensagem. Abandonar o estado HALTED (de paragem)
Mensagem de estados - actualizar os bits de estado na Tabela de Estados dos Dispositivos local (IOA) para um ou mais dispositivos de 1/0 configurados. Mensagem de interrupção - introduzir na fila de espera ou apresentar imediatamente uma interrupção 1/0 S/370, confor me o estado da máscara do canal.
Os tipos de mensagens 0001-0006 anterio res são operações manuais S/370, para controlo do estado, resul. tantes de entrada do utilizador na Consola do Sistema S/370 (emulada). Podem também ser forçadas directamente por EXEC370, conforme for necessário, para a recuperação de erros ou sincronização. O tipo de mensagem 0007 é usado para informar o S/370 de alterações assíncronas de estado nos dispositivos de I/O, tais como perda de energia, alterações de ON/OFF-LINE, erros de tectados em dispositivos, etc.. Podem também ser expandidos, pa ra comunicação para fins gerais do S/88 para o S/370. 0 tipo de 165
mensagem 0008 é o veículo para comunicar estados de operação de fim de I/O para o S/370 - quer de condições normais, quer de condições de fim de avaria. Terá sempre como consequência uma eventual modificação de Program Interrupt e Device Status Table no S/370. Vão agora discutir-se alguns pormenores das funções ETIO eEXEC370, interfaces, protocolos e fluxos de instruções.
Concepção do microcõdigo do sistema 1. Introdução A fig. 38 ilustra a concepção do micro-código para uma forma de realização preferida do presente aperfeiçoamento. O código que é executado na unidade de processamen to S/370 (cada elemento de processamento tal como o (85)) é man tido na memória de controlo (171) e interpreta instruções S/370, quando elas são executadas pelo PE (85). As instruções microco-difiçadas para Start 1/0, tratamento de interrupções, funções de operador, verificação da máquina e carga de microprogramas/ /carga de programas inicial (IML/DPL) são concebidas especifica mente para estabelecer a interface com o microcõdigo S/88 como se mostra na figura. A interface inclui as facilidades de meios físicos comuns da lógica da interface (81) , incluindo a memória local (210), a memória "cache" S/370 e o espaço de memória real S/370 (162) com capacidade de interrupções para o microcõdigo dos dois processadores (85) e (62). No código S/88, o activador do microcõdigo S/370 inclui o conversor de palavras de comando (CCW) , o dispositivo de tratamento de interrupções, o dispositd. vo de tratamento de erros, IML/IPL e código de sincronização, que interage com a interface de aplicação S/88 (EXEC370) e o sis tema operativo S/88. O processador (62) tolerante das avarias executa tudo referente a I/O, diagnóstico, isolamento da avaria, IPL/IML e sincronização para o sistema. Este sistema não é visto com um sistema coprocessador, porque os programas S/370 são os únicos programas executados do ponto de vista dos utilizadores. - 166 -
0 gestor do sistema pode controlar os atributos do sistema atra vês do sistema S/88, que funciona com tolerância das avarias. A função primária do sistema operativo S/88 e a aplicação EXEC370 é a conversão 1/0 com uma aparência de canal 370 múltiplo. Todas as funções de erros e recuperação do sistema e de atribuição dinâmica de recursos são tratadas pelo sistema operativo S/88. As funções de verificação da máquina e de operador ante-riormente tratadas pelo sistema operativo S/370 são agora passa das para o sistema operativo S/88 de modo que as funções podem ser tratadas de uma maneira tolerante das avarias. A fig. 39 ilustra a execução de um comando 1/0 S/370, neste exemplo um comando START I/O. As acções tomadas pela instrução S/370, o microcõdigo S/370, os meios físicos de acoplamento (PE (85) para PE (62)), o microcõdigo de acoplamento ETIO (executado no PE (62)) e o programa S/88 EXEC 370 estão representados resumidamente, sendo o passo final a execução do SIO S/370, no processador S/88 PE (62). A fig. 40 é lima vista geral simplificada que ilustra resumidamente alguns dos componentes e funções do sistema aperfeiçoado relativamente ao EXEC370 e ao dispositi vo de activação do microcõdigo usado durante a execução de SIO, juntamente com o fluxo de comandos, o fluxo de dados e a compar timentação de sinais e meios físicos/códigos. 2. INTERFACE DE PROGRAMA ETIO/EXEC 370 - fig. 41A-H, 42
Utilizam-se os termos seguintes nesta secção: EXEC370 - Todo meio de programação que se executa no PE (62) pertencente à emulação e suporte de dispo sitivos exteriores, serviços, configuração, consola de operador etc. S/370 e memorizado na memória de microcõdigos (174) , O código EXEC370 usado menos frequentemente pode ser armazenado na memória "cache" (173). MICROCÕDIGO S/370 - O microcõdigo que é * executado no processador S/370 (85) que suporta operações do • processador S/370 e armazenado na memória (171). 167
ETIO - interface do microcôdigo entre EXEC370 e os meios físicos da BCU e mantido na memória (174). 0 microcôdigo S/370 PE (85) e EXEC370 comunicam um com o outro através de um "protocolo", fig. 41A. 0 microcôdigo PE (85) envia mensagens para EXEC370 pedindo a execução de funções como 1/0, e EXEC370 envia mensagens que indicam que terminaram as funções 1/0, mensagens respeitantes a alterações de estado de dispositivos e de canais e mensagens que pedem o microcôdigo PE (85) para efectuar funções CPU S/370 específicas. Estas mensagens (descritas em pormenor mais adiante) são transmitidas entre o microcôdigo PE (85) e EXEC370 através de meios físicos que incluem o controlador da memória "cache" (153), o adaptador (154), a BCU (156) e o seu DMAC (209), etc.. Este serviço de transmissão de mensagens é posto pela ETIO â disposição de EXEC370. A interface entre ETIO e EXEC370 e o protocolo entre o microcôdigo PE (85) e EXEC370 vai agora ser descrito. A interface (fig. 4lB) entre EXEC370 e ETIO, os meios de programação de suporte externo S/370, executa dos pelo S/88, e do activador do microcôdigo BCU (ETIO), executados no PE (62) consiste num conjunto de filas de espera e memórias tampão residentes na memória (210), um evento ID, uma va riável EXBUSY e uma sequência de chamada de sub-rotinas. A interface CHAMADA de sub-rotinas indica operações de transferencie de dados entre S/88 e S/370 e inicializa a DMAC (209) e a BCU (156) no instante da reinicialização. A interface de filas de espera é usada para manter a pista de itens de trabalho até eles poderem ser processados e a interface de eventos ID (uma interrupção para S/88) notifica EXEC370 quando se tiver adicionado trabalho às filas de espera.
Na memória (210) há dezasseis blocos de 4KB (500), fig. 41C. Catorze (500-0 a 500-13) são usados como blocos de memórias tampão de 4KB. Os dois restantes são divididos em trinta e dois blocos de 256 octetos (501-0 a 501-31). Quatro blocos (501-0 a 501-3) são usados para comunicação por | meios físicos, um (501-4) para filas de espera e outras variá-* veis comuns a EXEC370 e ETIO. As restantes vinte e sete são usa 168
das como memórias de filas de espera de trabalho (WQB) (501-5) a (501-31). No espaço de endereços equivalente aos blocos (501— -0) e (501-1) são atribuídos a comandos da BCU (156) (executados pelo PE (62)) 256 octetos e aos endereços dos registadores DMAC são atribuídos 256 octetos para acesso pelo PE (62), como se descreveu com referência âs operações da BCU (156). Cada uma das vinte e sete Memórias Tampão das Filas de Espera de Trabalho retém dados pertencentes a uma tarefa ou pedido de serviço específicos. Vinte e seis WQB são usadas para serviço de pedidos iniciados por microcõdigos PE (85). A WQE restante (EXWQE) (501-31) é reservada para servir pedidos originados pelo S/88 e enviados para o microcõdigo PE (85); nunca aparecerá na fila de I espera livre FREE Q (fig. 41E). Cada bloco WQB, fig. 41D, contém um bloco de caixa de correio (505) de 16 octetos, um bloco de parâmetros (506) de 16 octetos e uma área de trabalho espec_í fica de dispositivos (507). O bloco de caixa de correio (505) contém dados passados entre EXEC370 e o microcõdigo PE (85). O seu conteúdo é transparente através da interface ETIO. O bloco de parâmetros (506) contém parâmetros passados entre ETIO e EMEC370, usualmente respeitantes ã transferência de dados entre a memória local (210) e a memória principal (162). A área de trabalho (507) é propriedade do EXEC370. Contém informação ácer ca do progresso da operação de pedido, do estado corrente dos dispositivos S/370, de dados do utilizador possíveis, do tipo dos dispositivo S/88, indicadores para outro blocos de controlo EXEC370, informações sobre ocorrência de erros, etc.. 0 bloco da caixa de correio (505) inclui quatro campos, contendo informação de I/O S/370 passada entre o microcõdigo PE (85) e EXEC370: OP - Este campo contêm um pedido de EXEC370 ou do mi-crocódigo PE (85) CUA - Endereço de 16 bits da unidade de canal CAW - Palavra de endereço do canal S/370 de 32 bits da posição hexadecimal 48 na memória S/370 (162) quando se emitiu a instrução I/Q em questão. CCW - Palavra de comando de canal S/370 endereçada pela CAW anterior. Quando EXEC370 devolve uma indi cação de interrupção, este campo contêm a CSW, a 169 palavra do estado do canal. 0 bloco de parâmetros (506) contém seis parâmetros usados quando é pedida uma transferência de dados en tre a memória (210) e a memória principal (162) por EXEC370. 1. req - campo de pedido ETIO: 0 não operação 1 escrever o conteúdo do bloco da caixa de correio na fila de espera de mensagens PE (85) (189) na memória (162) e depois enviar um pedido BCU para PU pela linha (256a). 2 Ler dados a partir da memória S/370 3 Escrever dados para a memória S/370 2. req - resultados do pedido feito pelo campo "req"
Este campo é garantido por EXEC370 para ser inicialmente zero. Se não for zero na reposição, ETIO está a indicar um erro de qualquer tipo. 3. CONTAGEM - o número de octetos a transferir. 4. ENDEREÇO S/370 (S/370 ADDR) - situação na memória
S/370 onde começa a área de dados. Este não é necessariamente um valor do campo do endereço da CCW 5. Chave - Este campo de 16 bits conterá o seguinte pa drão de bits: ppkkkklO 00000000 sendo pp (paridade) = 00 e KKKK = a chave de protecção da própria memória S/370
Endereço da memória tampão (BUFF ADDR) - A posição na memória (210) onde começa a área de dados. Pode estar no interior de uma memória de 4K ou de um bloco WQB. EXEC 370 assegurará a relação seguinte: (S/370 ADDR módulo 4) = (BUFF ADDR módulo 4). EXEC370 utiliza filas de espera para manter os blocos WQB. A área de comunicação das filas de espera (501-4) tem 256 octetos de comprimento e reside no desvio 400 (hex) na memória (210). A fig. 41E mostra as filas de espera de finidas entre ETIO e EXEC370 para reter as entradas dos indicadores para os blocos WQB: 170
rSESiSSSM^M^SSs^·:
Fila de espera livre (FREEQ) (510) retém os indicadores para os blocos WQB não usados correntemente.
Fila de espera de trabalho WORKQ (511) retém indicadores para os blocos WQB que esperam para ser servi dos por EXEC370. S/3701Q (512) retém indicadores para os blocos WQB que esperam transferências de mensagens de EXEC370 para PE (85). S/3702Q (513) retém indicadores para blocos WQB que esperam por transferências de dados do controlador da memória "cache" (153) para S/88. S/3703Q (514) retém indicadores para blocos WQB que esperam por transferências de S/88 para o contro lador da memória "cache" (153). S88Q (515) retém indicadores para blocos WQB depois de completado o serviço ETIO. A fig. 41E representa o trajecto dos blocos WQB através das filas de espera. Todas as filas de espera são inicializadas por EXEC370 durante a reinicialização do S/88. Os blocos WQB vazios são mantidos no campo FREEQ. ETIO re tira-os do FREEQ quando necessário para preencher as listas encadeadas (516). O DMAC (209), através da lista encadeada (516), coloca entradas de caixa de correio S/370 provenientes da área de caixa de correio (188) da memória (162) para as áreas de blo cos de caixa de correio de blocos WQB vazios. Os blocos WQB na lista encadeada que tenham sido preenchidos são deslocados para a fila de espera de trabalho (511) por ETIO. Quando ETIO coloca um (ou mais) blocos WQB na fila de espera de trabalho (511) e EXEC370 está não ocupado, ETIO notifica ο EX370 event ID. EXEC 370 retira o bloco WQB da lista de espera de trabalho antes de atender o pedido.
Durante o processamento do pedido, podem ter de transmitir-se dados entre o controlador da memória "cache" (153) e a memória tampão (WQB ou memória de blocos), ou pode ter de enviar-se uma mensagem para o microcódigo PE (85). ETIO proporciona este serviço para EXEC370. EXEC370 chama ETIO, que inicia a operação apropriada da BCU (156) ou, se os equipamentos físicos estiverem ocupados, coloca o bloco WQB na fila 171 ............. 11 çg^fSSSSSBSSffisiEsa iffiEMsuaa,.
Lu^*Í».'i»ta5Uaí‘ de espera E/30 Q apropriada. Cada um dos três serviços (enviar mensagens para S/370, transferir dados para S/370 e transferir dados de S/370) tem as suas filas de espera próprias (512), (513) e (514) . Adicionam-se blocos WQB a uma das filas de espera S/370 pelo código ETIO enquanto no encadeamento do EXEC370. Quando se tiver completado o serviço 1/0, a rotina de interrupção ETIO coloca o bloco WQB na fila de espera S/88 (515) e, se EXEC370 estiver não ocupado, notifica ο EX370 event ID. A fig. 42 ilustra o movimento dos blocos WQB através das filas de espera juntamente com as interfaces entre EXEC 370, ETIO, os meios físicos de interface (89) e o microcódigo S/370. Quando estiver inteiramente completado o pedido de trabalho original, isto é, completa a transferência de dados, é enviada uma interrupção IO (se existir alguma) para o PE (85) e EXEC370 reenvia o bloco WQB para a fila de espera livre FREEQ. EXEC370 obtém então a sua tarefa seguinte, verificando primeiro a fila de espera S/88 (515) e a fila de espera de trabalho (WORK Q) (511). Se ambas estiverem vazias, EXEC370 põe uma variável EXBUSY em zero e espera que seja notificado o evento EX370. EXEC370 ajusta EXBUSY para 1 quando for notificado, antes de começar o processamento.
Todas as filas de espera, o evento ID do EX370 e a variável EXBUSY residem na área COMM (501-4)" da fila de espera da memória (200), como se mostra na fig. 41F. To das as filas de espera são de natureza circular, como se mostra na fig. 41G, com indicadores com dois tipos de índices: um índi ce FILL (Preencher) (517) e um índice EMPTY (esvaziar) (518) . O índice FILL (517) aponta para a entrada seguinte da fila de espera a preencher e o índice EMPTY (518) aponta para a entrada seguinte a esvaziar. Se os índices EMPTY e FILL forem iguais, a fila de espera está vazia. As seis filas de espera nunca terão transbordo, visto que cada uma tem 32 entradas e há apenas 27 blocos WQB.
Cada fila de espera contém também: qid identifica esta fila de espera QSIZE número de entradas nesta fila de espera (n) Q(i) entradas e endereço que apontam para os blocos WQB na fila de espera 172
ftessan A área de comunicação dos meios físicos contêm 1 024 octetos. A área de comunicação BCU utiliza 512 oc-tetos do espaço de endereços. As listas encadeadas (516) tomam 480 octetos. 32 octetos estão reservados para comunicação de ou tros meios físicos. A lista de elos de ligação (516) (fig. 41H) é usada pelo DMAC (209) para levar para a caixa de correio itens de blocos provenientes da área da caixa de correio (188) da memória (162). Os blocos WQB provenientes da fila de espera FREE Q (510) são usados para preencher entradas na lista de elos de ligação (516). Cada entrada da lista de elos de ligação contém dez octetos e identifica o endereço do bloco WQB na memória (210) no qual devem colocar-se os dados, o número de octetos dos dados a transferir (16) e o endereço da entrada do elo de ligação seguinte. 0 DMAC (209) (canal 0) interrompe S/88 quando atinge uma entrada da lista de elos de ligação com um endereço zero para o elo de ligação seguinte. A posição corrente do DMAC (209) (canal 0) na lista está em qualquer instante disponível para os meios de programação.
Além dos seus pontos de entrada de interrupção, ETIO tem dois pontos de entrada suceptíveis de ser chamados, externos: ETIO INIT ETIO(WBN) EXEC370 chama ETIO INIT uma vez em cada reinicialização S/88, enquanto EXEC37Q está a inicializar-se. As filas de espere, já foram inicializadas e os campos EVENT ID estarão válidos. O microcõdigo PE (85) ainda não estará a funcionar, mas pode estar no processo IML (carga inicial dos microprogramas). EXEC370 chama ETIO (WBN) sempre que deseja transferir dados ou mensagens de/para S/370. O parâmetro WBN é um número interior de dois octetos (Work Quene Buffer Number - Número da memória da fila de espera de trabalho) que identifica o bloco WQB que contém o pedido de serviço. WBN é o valor de um índice, que vai de 0 a 27. O pedido de serviço ê identificado pelo campo REQ no bloco de parâmetros. Os valores do campo REQ são : 1 = escrever os conteúdos deste bloco de caixa do correio na fila de espera de mensagens S/370 (189) na memória (162) e depois emitir um pe 173
—- ^j>3aaBnsmH ^ dido da BCU para a PU ; 2 = ler dados da memória S/370 (162) pa ra a área especificada da memória (210) e 3 = escrever dados pa ra a memória S/370 provenientes da área especificada da memória (210). A subrotina ETIO coloca este bloco WQB em fila de espera nas filas de espera S/3701Q, S/3702Q ou S/3703Q, se a função de I/O pedida não puder ser iniciada imediatamente. A rotina de in terrupção ETIO retirará o bloco WQB seguinte da fila de espera S/370 Q apropriada quando terminar a operação anterior.
Se o campo REQ tiver um 1, o microcódi-go PE (85) não deve ser notificado (por exemplo por uma interrupção) até que a entrada do bloco de caixa do correio esteja na área de fila de espera de mensagens S/370 (189) da memória (162) .
Se a fila de espera de mensagens S/370 (189) estiver cheia, um erro no campo RET do bloco Parm (parame tro) identificará o problema para EXEC370. Se for necessário, EXEC370 pode suportar uma fila de espera de apoio. 3. PROTOCOLO DO MICROCÕDIGO S/370, EXEC370
A comunicação entre EXEC370 e o microcó digo S/370 requer uma tabela de estados dos dispositivos (DST -Device Status Table) com uma entrada para cada dispositivo I/O na memória S/370 (162). EXEC370 e o microcõdigo S/370 comunicam entre si através de mensagens de 16 octetos (ver Bloco da caixa de correio (505), fig. 41D) que são enviadas para um lado e pare. o outro. Há uma lista de espera que retém as mensagens por ordem FIFO (primeira entrada-primeira atendida) para o receptor em cada extremidade. Há também um mecanismo de notificação (linhas PU para BCU e BCU para PU). No bloco de caixa de correio (505) o campo "OP" (código de operações S/370 de 16 bits) contém um pedido ou uma resposta vindos de EXEC370 ou do microcódi go S/370. O endereço CUA (Channel Unit Address - Endereço da unidade do canal) é o endereço do operando de uma instrução I/O S/370. CAW é o conteúdo de 32 bits da posição HEX (48) na memória S/370 (162) , quando a instrução de. I/O foi enviada, e inclui a chave de memória. A CCW de oito octetos é endereçada pela CAW 174
referida. Quando EXEC370 devolve uma indicação de interrupção, este campo contém a CSW. 0 PE (85) armazena a CSW na posição 40 Hex S/370 quando ele provoca uma interrupção de I/O. O campo CUA ficará sem modificação. A mensagem OPERATION é enviada para EXEC 370 pelo microcõdigo S/370 sempre que for encontrada uma instru ção S/370 que deva ser total ou parcialmente tratada pelo EXEC 370. A mensagem OPERATION contém a informação atrás descrita re lativa ao bloco de caixa de correio (505) da fig. 41D.
As mensagens EXEC370 enviadas para o mi crocõdigo S/370 incluem: 1. A mensagem RESET (OP = 1) pede que o microcõdigo S/370 processe um Reset S/370. 2. A mensagem CLEAR RESET (OP = 2) pede um Reset and Clear Sto rage S/370 (repôr e limpar a memória S/370). 3. A mensagem HALT pede que o microcõdigo S/370 se abstenha de buscar instruções S/370 e espere por instruções ulteriores. A mensagem HALT inclui um campo OP = 3. 4. A mensagem STEP (OP = 4) pede que o microcõdigo S/370 busque e execute uma instrução S/370 e entre depois no modo HALT. 5. A mensagem RUN (OP = 5) pede que o microcõdigo S/370 entre no seu modo normal de buscar e executar instruções S/370. 6. A mensagem LPSW (OP = 6) pede que o microcõdigo S/370 efec-tue uma instrução LPSM (Load Program Status Word - Carregar a palavra do estado do programa), utilizando o endereço especificado no campo ADDRESS da mensagem LPSW. Pode ser usada para retirar o microcõdigo S/370 da condição HALT. 7. Mensagem SMSG (OP = 7) indica alterações de estado para um ou mais dispositivos de I/O configurados no S/370. 8. Mensagem IOINTR (OP = 8) indica que se completou uma operação de 1/0. Se o canal não tiver a máscara OFF, o microcõdigo S/370 iniciará uma operação de interrupção de 1/0. Se o canal tiver a máscara OFF, o microcõdigo S/370 preservará a CSW na ta bela de estados dos dispositivos e ajustará o estado do disposi tivo para OL (CSW registada em memória). A mensagem IOINTR também inclui o campo seguinte CUA e NC (colocar em DST CUA).
Duas mensagens, FETCH e STORE, do S/88 175
para o controlador de memória "cache" (153) são funções lógicas, em vez de mensagens. É necessário permitir um valor par ou ímpar de campos CNT e ADDRESS.
Os seus campos são: BUF - 2 octetos endereço da memória tampão na memória (210) CNT - 2 octetos contagem de octetos ADDR - 4 octetos endereço W/KEY na memória S/370. O microcõdigo S/370 mantém uma tabela contendo informação acerca do estado de cada dispositivo S/370 endereçãvel. As peças principais de informação são:
Condição do dispositivo - permite o ajustamento imediato do CR (registador de condições S/370), depois de um TIO, SIO, etc.
Dispositivo a seguir - a condição seguinte a usar quan
do toma uma interrupção I/O
Device CSW - mantida para interrupções I/O 370 com máscara. São possíveis quatro condições diferentes dos dispositivos no DST (CUA), para um dispositivo 370: 00 Dispositivo pronto 01 Dispositivo não pronto, CSW armazenada 10 Dispositivo ocupado 11 Dispositivo não operacional
Quando se completa uma operação I/O num dispositivo S/370, é enviada uma palavra de estado do canal (CSW) pelo canal para a CPU. Se o canal tiver a máscara OFF a CPU não aceita a CSW.
Na presente aplicação, se o canal tiver uma máscara, o microcõdigo S/370 preserva a CSW e ajusta a condição DST(CUA) para 01. Uma TIO ou SIO subsequentes terão como resultado o armazenamento da CSW preservada, sendo colocado o código de condição 01 (CSW memorizada) no CR. Quando o microcõdigo S/370 é inicializado, ele parte da hipótese de que todos os dispositivos estão não operacionais. S/88 emitirá uma mensagem ONLINE para cada dispositivo que deve ser suportado. O dispositivo é identificado pelo seu CUA (endereço da unidade de 176 controlo). 4. Fluxos de instrugões entre o microcódigo S/370 e EXEC370
Enquanto o PE 85 executa sequências de instruções de um programa, S/370 encontrará de tempos a tempos uma instrução de 1/0 que, na presente aplicação, será executada pelo processador S/88 (62) e os meios físicos, de programação e de microprogramas com ele relacionados. As fig. 44 A-L (e a fig 43 atrás referida) ilustram a sequência de microcódigos utiliza da para a execução destas instruções de 1/0 S/370. A BCU (156) (e o adaptador (154)) ê o mecanismo de acoplamento de meios físicos primários para efectuar a execução final da instrução 1/0 S/370 pelos meios físicos S/88. No interior da BCU (156), o con trolador DMAC (209) é o "polícia sinaleiro" principal para orientar o fluxo de operações e dados. O canal 0 do DMAC (209) recebe comandos I/O do S/370, o canal 1 trata o fluxo de dados do S/370, o canal 2 trata o fluxo de dados para o S/370 e o canal 3 emite mensagens de interrupção (e outras) para o S/370, A memória local (210) na BCU (156) constitui a área de comunicação entre o S/370 e o S/88. A linha omnibus local (223/247) acopla o processador S/88 (62) ao DMAC (209) e ã memória local (210) . A linha omnibus local (223/247) acopla o DMAC (209) e a memória (210) ao S/370, através de meios físicos de aceleração na BCU (156) e no adaptador (154).
As instruções I/O S/370 são despachadas para as rotinas do microcódigo S/370, para tratamento no interior do S/370, e um programa de aplicação S/88 EXEC 370 (juntamente com o seu microcódigo ETIO S/88 relacionado) efectua a execução final da I/O. O adaptador (154) e a BCU (156) constitu em a ligação de meios físicos entre o código S/370 e S/88. A ro tina de arranque do microcódigo 1/0 tem uma tabela DST, que segue o estado de cada dispositivo, por exemplo; está actualmente disponível, ele já emitiu uma SIO, está ele ocupado?, recebeu ele em resposta uma interrupção?. Esta informação está contida no código de condição CC.
Esta secção descreve o fluxo de instruções para várias operações 1/0 S/370. Alguns processos e termos específicos usados nesta secção estão definidos no fim da secção. As operações são as seguintes: 1. CLEAR CHANNEL (fig. 44A) - Esta instrução provoca uma 1/0 System Reset a executar no canal endereçado, com uma reposjL ção do sistema sinalizada para todos os dispositivos no canal endereçado. 0 microcódigo S/370 não sabe quais os dispo sitivos que estão actualmente no canal, de modo que ajusta CC = 3 para todas as entradas DST nesse canal. Subsequentemente, EXEC 370 enviará uma mensagem ou mensagens SMSG para redefinir a configuração nesse canal. O canal a limpar é endereçado pelos bits 16 a 23 do endereço da instrução. Quando o microcódigo S/37C receber o controlo do despacho, ele começa por verificar o endereço do canal (CA). O endereço do canal será válido ou inválido. Se o endereço do canal for inválido, o registador de condições (CR) é ajustado para 3 e o S/370 passa à instrução sequencial seguinte. Um canal que seja suportado pelo microcódigo S/370 é considerado ter um endereço de canal válido. Para o endereço de canal válido, o microcódigo S/370 envia uma mensagem de limpeza do canal (CLRCH) para EXEC370. Depois passará por todas as entradas da tabela de estados dos dispositivos (DST) para este canal. Todos os campos do código de condição são ajustados para 3, significando que não estão disponíveis e quaisquer entradas da tabela de interrupções pendentes (PIT) encontradas são libertadas para uma lista de PIT livres. O microcódigo S/370 ajusta então o registador de condição para 0 e passa à instrução sequencial seguinte. Entretanto EXEC370, quando receber a mensagem de limpeza do canal, efectua uma reposição do sistema 1/0 para todos os dispositivos no canal endereçado. Certifica--se depois de quais os dispositivos que estarão em linha e envia uma mensagem de estado para o microcódigo S/370, para redefinir a configuração nesse canal. Quando o microcódigo S/370 receber a mensagem de estado, ele modifica o código de condição na tabela de estados dos dispositivos, para cada dispositivo endereçado para ele na mensagem de estados. 178 2.
CLEAR 1/0 (fig. 44B) - Esta instrução suspende a execução da instrução S/370 em processamento no PE (85) até ser devolvido para EXEC370 IMSG para o CUA endereçado.
Quando o microcôdigo S/370 recebe o con trolo do despacho, ele obtém o endereço CUA da unidade de controle a partir do endereço da extremidade superior da instrução. Utilizando o endereço da unidade de controlo, ele encontra a entrada correcta da tabela DST dos estados dos dispositivos, para este dispositivo. Verifica o valor do có digo de condição (CC). Há três opções: 1) CC igual a zero ou 3, 2) CC igual a 2, ou CC igual a 1 e a condição NC seguinte igual a 2 e 3) CC igual a 2, ou CC igual a 1.
Para a primeira opção, CC igual a zero ou 3, o microcôdigo S/370 apenas ajusta o registador de con dições para o valor de CC e passa ã instrução seguinte na sequência.
Se CC for igual a 1, há uma interrupção pendente na tabela de interrupções pendentes (PIT). Neste caso, o microcôdigo S/370 vai para a entrada da tabela de interrupções pendentes e verifica o valor de NC.
Para o caso de ser CC igual a 2 ou CC igual a 1 e NC igual a 2, S/370 envia uma mensagem CLEAR 1/0 para EXEC370 (CLRIO). Espera pela confirmação e limpa quaisquer entradas de interrupção pendente associadas com o dispositivo. Espera então pela mensagem de interrupção a ser devolvida por EXEC370. Entretanto quando EXEC370 receber a mensagem de limpeza 1/0 (CLRIO) , efectua a sua reposi^ ção selectiva do dispositivo endereçado, forma uma palavra de estado de controlo para o dispositivo e devolve uma mensagem de interrupção para o microcôdigo S/370. Quando o microcôdigo (370) recebe a mensagem de interrupção, gera a en trada PIT e preenche o NC e a CSW a partir da mensagem. A entrada de interrupção pendente é depois ligada à entrada da DST.
Nesta altura, chegamos à terceira opção, CC igual a 2 ou CC igual a 1. Chegamos a este ponto por duas vias. A primeira via é a de o dispositivo estar ocupado ou o dispositivo ter enviado uma interrupção pendente, mas man 179
tendo-se ocupado. Este é o caso de ser enviada a reposição selectiva. A segunda via é quando o dispositivo tem uma interrupção pendente mas já não está ocupado. Para ambas estas vias, CC será igual a 2 ou 1. Ê esta a terceira opção. 0 microcódigo solta a interrupção, coloca a CSW na memória S/370, ajusta o registador de condição para 1 e passa â ope ração sequencial seguinte. 3. HALT DEVICE (fig. 44C) - Quando o microcódigo S/370 receber o controlo do despacho para uma instrução HALT DEVICE, ele verifica o código de condição para a entrada na tabela de estados dos dispositivos endereçada. Ha três opções, um código de condição igual a 0 ou 2, o código de condição igual a 1 ou o código de condição igual a 3. Para a primeira opção, código de condição igual a 0 ou 2, o microcódigo S/370 envia uma mensagem de retenção do dispositivo (HDV) para EXEC370. Ajusta a 0 os 16 bits de estado na CSW S/370, aju£ ta o registador de condição para 1 e passa ã instrução sequencial seguinte. Entretanto, quando EXEC370 recebe a mensagem HDV, executa a função apropriada no dispositivo endereçado e devolve uma mensagem de interrupção normal. Quando CC = 1, o microcódigo S/370 liberta a interrupção da tabela PIT, coloca uma CSW no sítio próprio, na memória S/370, ajus ta o registador de condição para 1 e passa à instrução sequencial seguinte. Para a terceira opção, CC igual a 3, o microcódigo S/370 apenas ajusta o registador de condição igual a 3 e passa â instrução sequencial seguinte. 4. HALT 1/0 (fig. 44C) - Neste nível de descrição, a função pa ra HALT 1/0 é idêntica à função para HALT DEVICE. 5. RESUME 1/0 (fig. 44D) - Num sistema S/370, esta instrução RIO apenas faz uma verificação para ver se o canal está ope racional antes de aceitar a instrução. 0 microcódigo S/370 tem de verificar o CC para o CUA específico, como com outras instruções 1/0. A CAW não é referenciada, e a CAW não é bus^ cada para esta instrução.
Quando o microcódigo S/370 recebe o con trolo do despacho S/370 para uma instrução de reassumir 1/0 (RIO), ele verifica o código de condição (CC) para a entrada de estado do dispositivo endereçada. Há duas opções. CC 180
é igual a 0, 1 ou 2 e CC é igual a 3. Para CC igual a 0, 1 ou 2, o microcõdigo S/370 emite a mensagem RESUME I/O para EXEC370, ajusta o código de condição para 2 e ajusta o registador de condição para 0 e passa ã instrução sequencial seguinte. Entretanto, quando EXEC370 recebe a mensagem RIO, ele examinará o endereço da unidade de controlo e continua a operação I/O antes suspensa. Para a segunda opção, CC é igual a 3 - o microcõdigo S/370 simplesmente ajusta o xegxs tador de condição para 3 e passa à instrução sequencial seguinte . 6. START 1/0 (fig. 44E) - Quando o microcõdigo S/370 recebe o controlo do despacho para uma instrução de iniciar I/O (SIO), ele usa o endereço da unidade de controlo para encontrar a entrada na tabela de estados dos dispositivos. Verifica então o código de condição (CC), havendo quatro opções. CC igual a 0, CC igual a 1, CC igual a 2 e CC igual a 3. Para CC igual a 0, o dispositivo estã pronto e o microcõdigo S/370 envia uma mensagem de início de I/O (SIO MSG) para EXEC370, ajusta CC para o valor 2, que significa ocupado, ajusta o registador de condição para 0, significando a acei_ tação e passa â instrução sequencial seguinte. Entretanto, quando EXEC370 recebe a mensagem SIO, utiliza o endereço da unidade de controlo para encontrar o dispositivo específico e inicia uma operação I/O normal nesse dispositivo. Para a segunda opção, CC igual a 1, o microcõdigo S/370 liberta a interrupção, coloca a CSW na memória S/370, ajusta o bit de ocupação na CSW para "ligado", ajusta o registador de condi^ ção para 1 e passa ã instrução sequencial seguinte. Para a terceira opção, CC igual a 2, o microcõdigo S/370 ajusta a CSW e posição 40X da memória S/370 para "tudo zeros", coloca o bit de ocupação da CSW em ligação, ajusta o registador de condição para 1 e passa â instrução sequencial seguinte. Para a quarta opção, CC igual a 3, o microcõdigo S/370 simplesmente ajusta o registador de condição (CR) para 3 (significando dispositivo não operacional) e passa â instrução sequencial seguinte. 7. START I/O FAST RELEASE (fig. 44F) - Quando o microcõdigo S/370 recebe o controlo do despacho para uma instrução de 181
início de 1/0 rápido (SIOF), ele verifica o código de condi çao (CC) para a entrada DST endereçada. Há duas opções, CC igual a 0, 1 ou 2 e CC igual a 3. Para a primeira opção, CC igual a 0, 1 ou 2, o microcõdigo S/370 envia uma mensagem SIOF para EXEC370, ajusta CC igual a 2, o registador de con dição para 0 e passa â instrução sequencial seguinte. Entre tanto, quando EXEC370 recebe uma mensagem SIOF, se estiver apto, inicia a operação 1/0; caso contrário devolve uma men sagem de interrupção com uma CSW contendo um código de condição de deferimento que actua como uma interrupção normal quando é recebida pelo microcódigo S/370. Para a segunda ojd ção, código de condição igual a 3, o microcõdigo S/370 simplesmente ajusta o registador de condição para 3 e passa à instrução sequencial seguinte. 8. TEST I/O (fig. 44G) - Quando o microcõdigo S/370 recebe o controlo do despacho para uma instrução de ensaio I/O (TIO), ele verifica o código de condição. Há três opções, CC igual a 0 ou 3, CC igual a 1 ou CC igual a 2. Para CC igual a 0 ou 3, o microcõdigo ajusta o registador de condição para o valor CC e passa à instrução sequencial seguinte. Para a se gunda opção, CC igual a 1, o microcódigo liberta a interru£ ção e coloca a CSW na memória S/370, ajusta o registador de condição para 1, significando CSW armazenada, e passa â in£ trução sequencial seguinte. Para a terceira opção, CC igual a 2, o microcõdigo põe zeros na área CSW (40X) na memória S/370, ajusta para "ligação" o bit de ocupado na CSW, ajusta o registador de condição para 1 e passa à instrução sequencial seguinte. 9. STORE CHANNEL ID (fig. 44H) - Quando o microcõdigo S/370 re cebe o controlo do despacho para uma instrução de Store Channel ID, ele verifica o endereço do canal. Há duas opções endereço do canal válido e endereço do canal inválido. Para a oj ção canal inválido, o microcódigo ajusta o registador de condição CR igual a 3 e passa ã instrução sequencial seguin te. Para a opção endereço do canal válido, o microcódigo ajusta a posição de memória S/370 A8 hexadecimal para 20000000 hexadecimal. Ajusta depois o registador de condição para 0 e passa à instrução sequencial seguinte. 182
-I 10. -I 10. Cf SE^ÍKiSsyssiBiinyy*^^ '-^ϋ-ΙΚί^ .i-j^sjri^l'^gn^aajaajgga ^ }) <? TEST CHANNEL (fig. 401) - Quando o microcõdigo S/370 recebe controlo do despacho para uma instrução de ensaio do ca nal (TCH) ele verifica o endereço do canal. Notar para este fluxograma que há duas opções principais e três opções pouco importantes. Para a primeira opção principal, endere ço do canal inválido, o microcõdigo ajusta o registador de condição para 3 e passa à instrução sequencial seguinte.
Para a segunda opção, endereço do canal válido, o microcõdigo verifica ainda todas as entradas da tabela DST para este canal. A primeira das opções menos importantes ocorre se o microcõdigo descobrir uma entrada DST para um dispositivo específico com CC igual a 1, significando que este dispositivo tem uma interrupção pendente. Para este caso, o microcõdigo ajusta o registador de condição igual ale passa à instrução sequencial seguinte. Se, quando o microcõdigo chega ao fundo da lista de entradas DST para este canal, não tiver encontrado uma entrada para a qual CC é igual a 1, ele então verifica se há pelo menos uma com CC igual a 2. Se houver, esta é uma segunda das opções menos importantes e, para esse caso, o microcõdigo ajusta o registador de condição para o valor 2 e passa à instrução se quencial seguinte. Caso contrário ocorre a terceira opção pouco importante e o microcõdigo ajusta o registador de cor dição para o valor 0 e passa à instrução sequencial seguin te. 11. Interrupções primárias e secundárias (fig. 44J,44K) - Os termos interrupções primárias e secundárias são termos do S/370. Uma interrupção primária contém pelo menos o bit de estado Channel End (CE) na palavra CSW resultante de uma operação 1/0. Uma interrupção secundária é ou uma segunda interrupção, contendo o Device END (DE) para a operação 1/0? ou é uma interrupção assíncrona, iniciada pelo serviço que pediu o dispositivo.
Ao nível desta descrição, não há diferença entre interrupções primárias e secundárias; portanto, descreve-se apenas a interrupção primária. A diferença entre as interrupções 1/0 mascaradas e 1/0 activadas das fig. 44J e 44K é se 1/0 está mascarado. Isto é, se o processador 183
S/370 aceitará uma interrupção proveniente do canal ou não. Se uma interrupção não for aceite pelo processador S/370, o canal empilha a interrupção e é designada por interrupção pendente até ao momento em que o processador S/370 esteja permissivo. Quando se verificar uma condição de inter rupção enquanto EXEC370 estiver a emular uma operação de um dispositivo específico, ele forma uma palavra CSW e armazena-a numa mensagem, que depois envia para o microcódi-go S/370. Quando o microcédigo recebe esta mensagem de interrupção ele verifica a máscara S/370 para verificar se 1/0 está mascarado ou permissivo. Se 1/0 estiver mascarado (fig. 44J) ele empilha a interrupção. A descrição do processo de empilhamento de interrupções é apresentado mais adiante. Se o microcõdigo S/370 verificar a máscara e 1/0 estiver mascarado (fig. 44K) ajusta-se o campo do código de condição na entrada DST para o dispositivo que faz a in terrupção igual ã condição seguinte (NC) na mensagem de in terrupção, a CSW da mensagem é colocada na memória S/370 e o microcõdigo provoca a execução de uma interrupção 1/0. 12. Acontecimentos de Mascaramento 1/0 S/370 (fig. 44L) - Se 1/0 estiver mascarado quando EXEC370 envia uma mensagem de interrupção para o microcõdigo S/370, a interrupção i colo cada na pilha numa entrada da tabela de interrupções pendentes (PIT). Num instante ulterior, ocorrerá algum aconte cimento S/370, de que resultará a activação das interrupções 1/0, ou qualquer interrupção para a qual a máscara ac tiva 1/0. Em algum instante em que a máscara do sistema PSW for alterada de modo que active um 1/0 anteriormente mascarado, o microcõdigo S/370 tem de verificar a existência de quaisquer interrupções pendentes para esses canais. Se não for encontrada nenhuma, o microcõdigo simplesmente sai para a instrução sequencial seguinte. Se no entanto for encontrada, o microcõdigo liberta a interrupção da tabela, coloca CSW na memória S/370 e efectua uma interrupção S/370
No que segue, estão contidas descrições dos processos que foram referenciados imediatamente atrás: 1. Interrupção empilhada - 0 termo interrupção empilhada é usa do em ligação com mensagens de interrupção que são recebi- 184
das pelo microcõdigo S/370 quando 1/0 S/370 for mascarado. As interrupções são empilhadas na área de estados dos dispo sitivos, no que é denominado tabela de interrupções pendentes, ou PIT. As entradas da tabela PIT são encadeadas por ordem FIFO (atendimento por ordem de chegada) para a entrada DST que representa o dispositivo S/370 que provoca a interrupção. Empilhar uma interrupção implica tomar uma entra da da PIT da lista livre, encadeá-la para o fim da lista da PIT para essa entrada DST, colocar a CSW no campo de estados da entrada PIT e o valor NC no campo NC da entrada PIT, e colocar o campo CCW da DST com o valor "1". A colocação de CC com o valor "1" indica que existe uma interrupção pen dente para este dispositivo. 2. Libertar a interrupção - Libertar uma interrupção implica retirar da cadeia a entrada PIT no topo da lista DST/PIT, colocar o código de condição DST com o valor encontrado no campo NC da entrada PIT, preservar o campo do estado da entrada PIT que contém uma CSW S/370 e devolver a entrada PIT para a lista livre. 3. Enviar mensagem para EXEC370. Pode fazer-se referencia à fig. 43 para esta descrição, a título de exemplo. No instan te da opção CC igual a 0, o microcõdigo S/370 decidiu que necessita de enviar uma mensagem para EXEC370. Especifica-mente, a mensagem é uma mensagem START I/O. (SIO MSG). Para esta mensagem, ou qualquer outro tipo de mensagem que o microcõdigo S/370 envie, o procedimento é o mesmo. 0 microcõdigo S/370 preenche o campo de dados na entrada da caixa de correio na memória (162) com o conteúdo da mensagem. Envia depois um pedido PU para a BCU, que é recebido pela lógica BCU (253). O microcõdigo S/370 então espera a devolução de uma confirmação. Entretanto, a lógica BCU quando recebe uma indicação ZU para BCU inicia um acesso ã memória e uma operação do DMA para transferir os dados da caixa de correio para a memória (210) da BCU. Quando estiver completo o DMA, devolve um sinal de confirmação (ACK) para o microcõdigo S/370, que prossegue então com a sua instrução sequencial do programa seguinte. Ao mesmo tempo, a lógica DMAC interrompe o sistema 88. A rotina dos meios de programação rece- 185 çntZa!éSfii;,?S*Z&m
be o controlo, verifica a validade da operação e depois emô. te uma notificação para EXEC370 que retira então a mensagem da fila de espera de trabalho. 4. Enviar mensagem para o microcódigo S/370 - Há vários tipos diferentes de mensagens que o EXEC370 envia para o microcódigo S/370. S/170 1/0 Masking Events (fig. 44L) é um exemplo de uma tal mensagem de interrupção. EXEC370 chama o microcódigo ETIO, que forma a interface com a lógica BCU. ETIC inicia uma operação DMA, que transfere a mensagem da memória BCU (210) para a memória S/370. Quando DMA estiver completo, é enviada uma mensagem DCU para PU, para o microcódigo S/370 e é enviada uma interrupção para o sistema 88, que faz com que a rotina da interface ETIO envie uma notificação para EXEC370. FUNCIONAMENTO DA UNIDADE DE CONTROLO DA LINHA OMNIBUS (BCU)(156)
1. INTRODUÇÃO Vão resumir-se alguns dos componentes do sistema e as suas funções atrás descritos. A BCU (156) desem penha uma função de interface I/O entre o conjunto de micropas-tilhas S/370 e o subsistema I/O, que é constituído pelo PE S/88 (62) e o seu sistema associado e componentes I/O no módulo (10). O conjunto (150) de micropastilhas S/370 e o subsistema I/O comunicam através do adaptador de linhas omnibus (154). A área (162) da memória S/370 no interior da memória principal S/99 (16) é aqui por vezes referida como módulo básico da memória BSM (162). Há dois conjuntos de linhas de interface das linhas omnibus do adaptador (249,250) (canal 0) e (251,252) (canal 1) que fazem o acoplamento da BCU (156) e do adaptador de linhas omnibus (154) . A BCU (156) inclui uma memória local de 64 KB (210), um controlador de acesso directo â memória DMAC) (209), uma linha omnibus de endereços local, de 32 bits (247), uma linha omnibus de dados local de 32 bits (233) e uma lógica de interface (205).
Como atrás se descreveu com mais porme- - 186 -
nor, o DMAC (209) inclui quatro canais de transferência de dados:
Canal 0 - Os comandos da caixa de correio são transferidos do PE (85) para a BCU (156). São lidas mensagens da ãrea de memória S/370 (162) para a memória local (210). Dados de escrita PE S370(85).
Canal 1 - Os dados são lidos da ãrea de memória S/370 (62) para transferir para a memória local (210) .
Canal 2 - Dados de leitura PE S/370 (85). Os dados são transferidos da memória local (210) para a área de memória S/370 (162).
Canal 3 - Transferências de mensagens de prioridade elevada da BCU (156) para o PE S/370 (85) . As men sagens são transferidas da memória local (210) para a área de memória S/370 (162). O controlador DMAC (209) transfere pala vras duplas (32 bits) entre o adaptador de linhas omnibus (154) e a memória local (210) . Ele também interrompe o subsistema I/O S/88 PE (62) quando estiverem completas as transferências de da dos I/O. A memória local (210) inclui memórias tampão de I/O e de dados de mensagens WQB e dados da lista de elos de ligação, para cargas automáticas da caixa de correio através do DMAC (209). A lógica BCU (205) inclui uma unidade de arbitragem de linhas omnibus locais (216) na qual o PE S/88 (62) e o DMAC (209) disputam o acesso às linhas omnibus locais, isto é, a linha omnibus de dados (223) e a linha omnibus de endereços (247). A linha "Bus Request" (pedido de linha omnibus) PE (62) (190) está activa sempre que são detectados os endereços seguintes (ver fig. 41C) pela unidade (216) de descodificação de endereços e arbitragem:
Qualquer endereço da memória local; qua_l quer comando dirigido à BCU, incluindo Programmed BCU Reset, BSM Write Select Up, BSM Read Select Up e Read BCU status; ciclc de confirmação de Local bus interrupt e qualquer comando de lei^ tura ou escrita de registador dirigido ao DMAC. . A linha DMAC Bus Request (269) está ac- tiva quando pretende obter o controlo da linha omnibus local 187 lkee__ / (223,247) para uma sequência DMAC (leitura ou escrita da memória local (210)) ou uma sequência de carga da lista de elos de ligação (leitura da memória local). A linha (288) de aceitação pela linha omnibus é activada quando for dado o controlo da linha omnibus local ao DMAC (209) pela lógica (216); a linha (191) é activada se for dado o controlo ao PE (62). A lógica BCU (205) controla a distribui ção de tempos das transferências do DMAC (209) entre o adaptador de linhas omnibus (154) e o subsistema I/O e converte tranjs ferências I/O até 4 KB em transferências de blocos de 64 octe-tos para o adaptador de linhas omnibus (154), pelos canais 0 e 1. A lógica BCU (205) detecta um atravessa mento de uma fronteira de 64 octetos para qualquer transferência de blocos. Se isso ocorrer, o bloco será partido em duas transferências separadas. A BCU (156) calculará o número de palavras até ã fronteira dos 64 octetos para a primeira transferência. Isso será apresentado, juntamente com o endereço inicial, ao adaptador de linhas omnibus (154). As palavras restantes, juntamente com um novo endereço, serão apresentadas ao adaptador das linhas omnibus (154) através de um comando subsequente (BSM read/BSM write). A lógica (BCU) (205) também proporciona um pré-esvaziamento (pre-empt) de transferências de dados I/O (numa fronteira de 64 octetos) quando se verificar um pedido de mensagem de alta prioridade ou um pedido de leitura da caixa de correio. Um pedido de mensagem de alta prioridade e um pedido de caixa do correio podem ser tratados concorrentemente na BCU (156). Uma operação "BSM Read" e "BSM Write" podem ser tratadas concorrentemente na BCU (156). A BCU (156) realiza as seguintes operações I/O:
Operação Mailbox Read : iniciada pelo S/370 I/O INSTRUCTION MICROCODE através da linha (256a) "PU to BCU REQ". A caixa de correio (188) está localizada no módulo BSM S/370 (162). Ela é utilizada para armazenar comandos I/O que serão executados pelo subsistema I/O (Start I/O, etc.). Podem também conter informação de estados, e outra, que o subsistema I/O recebe do PE (85). Um comando "PU to BCU Select UP" é inicia 188
Ϊ--- -‘Λ*'·· * *Α. do pela BCU (156) guando a linha (210) "PU do PCU Select" for activada no canal 0 da linha omnibus do adaptador. Operações de escrita 1/0 S/370 (canal 0 da linha omnibus do adaptador) serão pré-esvaziadas numa fronteira de 64 octetos se for activado "PU do BCU Request" pelo PE S/370 (85) .
Operações de leitura e escrita I/O S/370: proporcionam transferências de dados (máximo blocos de 4 KB) en tre a memória S/370 (162) e os dispositivos I/O nos canais 0 e 1 na linha omnibus do adaptador. Todas as transferências de dados são iniciados pelo subsistema I/O (PE S/88 (62)) através do comando da linha omnibus do adaptador "BSM SELECT UP".
Transferências de mensagens de elevada prioridade: interrupções, mensagens de estados, erros, etc., mensagens de elevada prioridade são passadas do subsistema I/O para o S/370. Todas as transferências são iniciadas a partir da BCU (156), através do comando "Q SELECT UP". As operações de leitura I/O S/370 (canal 1 da linha omnibus do adaptador) serão pré-esvaziadas num limite de 64 octetos se se verificar um pedi do de mensagem de elevada prioridade.
2. FLUXO DA SEQUBNCIA START I/O S/370. DESCRIÇÃO GERAL E PORME-NORIZADA A instrução "START I/O (SIO), a "Palavra de Endereço do canal" (CAW) e a primeira "Palavra de Contro lo do Canal" (CCW) estão armazenadas em posições pré-determina-das da "caixa de correio" na memória S/370 (162) . Esta informação é passada para a memória local (210) através da lógica de intervace BCU (205) e do adaptador de linhas omnibus (154).
Os registadores do canal 0 do DMAC representados na fig. 18 são usados para as operações de leitura da caixa de correio. Eles serão programados pelo PE S/88 (62) para operar num "Modo de Encadeamento de. Matrizes Encadeadas".
O PE (62) inicializa este modo estabelecendo uma série de "listas encadeadas" (tabelas) na memória local (210) , fig. 41H. De-• pois ajustará o primeiro "endereço superior da lista encadeada", . no "Registador de endereços de base" (BAR) do canal 0 do DMAC - 189 -
GEHrSJKSSV
(de 32 bits). 0 endereço aponta para a primeira posição na memõ ria (210) dos dados da lista encadeada. A "PCL" (linha de controlo de periféricos) do DMAC (257a) será programada pelo PE (62) para fazer com que o DMAC (209) active a sua linha (258) de saída de interrupção IRQ sempre que seja activada a linha PCL (257a). A linha "PCL" (257a) será activada a seguir a ter-se completado a tran£ ferência de dados da caixa de correio da memória principal (162) para a memória local (210) através da memória tampão do adaptador (259) . A interrupção informará o processador PE S/88 (62) de que precisamente se completou uma carga da caixa de correio.
Os dados da lista de elos de ligação (fig. 41H) consistem no seguinte: o endereço de memória inicial de um bloco de dados; a contagem de transferência de memória e um endereço do elo de ligação para a entrada seguinte da tabela. O endereço do último elo de ligação na tabela será zero. O processador S/88 (162) ajusta o endereço superior da lista encadeada no registador de endereços de base do canal 0 do DMAC. O processador S/88 PE (62) activarã o DMAC (209) escrevendo um "1" no bit 7 (bit "Start") do seu registador de controlo de canal (CCR) do seu canal.0. O DMAC (209) lerá então a primeira lista encadeada para o seu registador do canal 0 da seguinte maneira:
Endereço inicial do bloco de dados WQB da memória (210) para o registador de endereço de memória (MAR) (32 bits);
Contagem de transferências (octetos de dados da caixa de correio) para o registador de contagem de transferências da memória (MTC)? e
Endereço do elo de ligação para o regis tador de endereço de blocos (BAR) seguinte.
Mais especificamente, durante a execução da instrução, o PE S/370 (85) descodifica a instrução "START I/O", coloca o comando "START I/O", a Palavra de Endereço do Canal e a primeira palavra de comando do canal em posições sucessivas da "mala de correio", contidas na memória S/370 (162), O endereço inicial da caixa de correio (base + comprimento da 190
fila de espera) é armazenado no registador de base do adaptador das linhas omnibus (154), no instante da inicialização. 0 PE S/370 (85) envia um controlo opera tivo "LD OSCW" através da linha omnibus do processador, com o bit 11 activo. Isso ajusta para o estado ligado o bit "PU to BCU REQUEST" na palavra de controlo do adaptador das linhas omnibus (154). 0 bit 11 da palavra OSCW provoca um pedido "PU to BCU Request" na linha omnibus do adaptador (canal 0). Se ocorrer um "PU to BCU REQ" durante uma transferência de dados 1/0, então a BCU (156) pré-esvaziará a transferência I/O num limite de 64 octetos para permitir que se verifique uma carga da caixa de correio. A BCU (156) gera então na linha omnibus (290) um comando "Read Mailbox Select Up", com o formato representado na fig. 45A, onde os bits 0 e 1 são bits de comando e os bits 2-7 são a contagem de octetos, e armazena este no regls tador de comandos, canal 0, (214). Os bits do endereço da caixa de correio são armazenados no registador (219) através da linha omnibus (290) num formato representado na fig. 45B, onde o bit 7 identifica a área IOA na memória (162), os bits 24-26, o núme ro do canal da BCU e os bits 27-31, o desvio da mala de correio.
Depois a BCU (156) activa a linha omnibus COMMAND/STATUS (249) e a linha omnibus ADDR/DATA (250), pre enchendo os registadores (214) e (219), activa um comando "TAG UP" na linha (262a) e espera pelos dados do adaptador da linha omnibus. Ela faz isso por exploração da linha "TAG DOWN" (262b). "TAG DOWN" está activo enquanto os dados não estiverem prontos. Logo que "TAG DOWN" tenha sido desactivado pelo adaptador de li nhas omnibus (154) (dados prontos), retêm-se os quatro primeiros "octetos" de dados da caixa de correio na memória tampão de leitura, do canal 0, (226) através de dois subciclos do canal 0. A lógica da BCU (253) activa depois a linha "REQUEST" (263a) no canal 0 do DMAC (209). O DMAC (209) activa depois "BUS REQUEST" (BR) para a linha (269) para o circuito (216) de arbitragem da LINHA OMNIBUS LOCAL. Se a linha ora nibus local não estiver a ser usada pelo processador S/88 (62), é concedido o acesso através da linha de concessão de acesso (BG) (268) ao DMAC (209). O DMAC (209) transfere então o endere 191
ço inicial da caixa de correio local WQB (na memória (210) do MAR para a linha omnibus de endereços (247), e activa "ACRO" (confirmação do canal 0 do DMAC), linha (264a). O sinal "ACKO” inicia a transferência dos dados da memória tampão (226), através da linha omnibus de dados (223) para a parte da Caixa de Correio Local da WQB na memória (210). A linha "DTACK" (265) é activada para informar o DMAC (209) de que está completa a operação.
Os sinais de relógio da BCU (fig. 25) continuam a transferir dados da caixa de correio da memória tam pão (259) para o registador (226). A BCU (156) executa duas sequências (de 16 bits cada) da linha omnibus do adaptador ("TAG UP"/"TAG DOWN") para cada sequência (32 bits) da memória local (210)/DMAC(209).
Quando o ciclo DMAC estiver completo (DTACK activo), o DMAC (209) activa a linha (267) "Data Trans-fer Complete" (DTC) para a lógica BCU (253), que envia outro "REQUEST" para o DMAC (209) pela linha (263a) para ler os segun dos quatro octetos do registador (226) para a caixa de correio WQB. Os ciclos DMAC repetem-se, até terem sido transferidos todos os dados da caixa de correio (16 octetos) (4 ciclos da linha omnibus) local. A linha "PCL" (257a) será então activada pe la lógica BCU (253) para o DMAC (209). Isso faz com que a linha "IRQ" (258) seja activada a partir do DMAC (209) para o codificador de prioridades do processador S/88/lõgica de interrupções (212). O PE (62) tratará então o pedido de caixa de correio.
Quando o DMAC (209) completar a sua car ga do registador do canal 0 a partir da lista encadeada, ele ess pera então um sinal na linha "REQ" (263a) do canal 0, a partir da lógica BCU (253), para iniciar a carga seguinte da caixa de correio. Uma vez que tenha arrancado, o canal 0 do DMAC mantém--se activo indefinidamente, controlando o processador S/88 (62) a lista encadeada circular e suspendendo a BCU (156) as transfe rências de dados, mantendo a linha "REQ" (263a) inactiva. Se o canal 0 se interromper, devido a uma condição de "fim de lista", o processador S/88 receberá uma interrupção de terminação e fará de novo arrancar o canal 0, quando for apropriado. 192
3. FLUXO DA SEQUÊNCIA DE TRANSFERÊNCIA DE DADOS I/O S/370. DESCRIÇÃO GERAL
Todas as transferências de leitura e e_s crita 1/0 originam a partir do processador S/88 (62) , através da linha omnibus do adaptador, comandos "BSM READ SELECT UP" e "BSM WRITE SELECT UP” arquitectados. 0 comando CCW S/370 e o en dereço inicial (na memória S/370 (162)) são derivados da palavra CCW para um "START 1/0". Os dados são transmitidos pelo pro cessador S/88 (62) entre este dispositivo I/O e uma memória tam pão local, na memória local (210). A memória local (210) inclui uma fila de espera de blocos de memória para operações de escrita I/O, que é gerida pelo processador S/88 (62). Quando a fila de espera incluir pelo menos uma entrada, ela está pronta para desenca dear uma operação de escrita I/O. O endereço inicial para um dos blocos seleccionado é armazenado nos registadores do canal 1 DMA, no controlador DMAC (209), pelo processador S/88 (62), antes da iniciação de uma operação de escrita. Os registadores do canal 1 DMAC são reservados para operações de escrita de I/O S/370 (memória S/370 (162) para I/O) através da memória local (210). A memória tampão de dados do adaptador (259) (64 octetos é reservada para leitura da caixa de correio e operações de escrita de I/O S/370 (transferências de dados da memória S/370 (162) para a memória local (210)). Esta memória tampão está asso ciada ao canal 0 das linhas omnibus (249,250) do adaptador. A memória tampão (260) (64 octetos) é reservada para escrever men sagens (para S/370) e para operações de leitura 1/0 S/370 (tranjs ferências de dados da memória local (210) para a memória S/370 (162)). Esta memória tampão está associada ao canal (1) (251, 252) da linha omnibus do adaptador. O processador S/88 (62) in_i cializa os registadores dos endereços de memória das palavras de ordem superior do DMAC, canal 1 canal 2, para zero (0). Isso poupa um ciclo extraordinário da linha omnibus quando estes registadores são carregados durante sequências de operações, visto que a memória local (210) não requer mais de 16 bits de ende reço. 193
a) Operagões de escrita I/O: (Memória S/370 (162) para Memória local (210)) O processador S/88 (62) ajusta o endere go inicial da memória tampão local no registador MAR de endereços de memória do canal 1 do DMAC, colocando informagão na linha omnibus (248) de enderegos e dados DMAC (através da linha omnibus (161a), do excitador (217) , da linha omnibus (247) e do retentor (233), como se mostra na fig. 45C, sendo os bits 31-08 = 007E00 = comando "DMAC REGISTER SELECT" e os bits 07-00 = Se-lecgão (baixa) do registador de enderego de memória do canal 1 do DMAC. Notar que S/88 identifica bits mais e menos significativos na linha omnibus respectivamente como "31" e "0", o oposto do protocolo S/370. O conteúdo representado na fig. 45D (destinado ao MAR) é colocado na linha omnibus de dados (223), sendo os bits 31-16 = enderego inicial da memória tampão local na memória local (210) para os dados de escrita I/O. Os bits de ordem elevada na linha omnibus (31-36) serão carregados na parte de ordem inferior (15-00) do registador de enderegos de memó ria do canal 1. Os bits de ordem elevada (31-16) do MAR foram ajustados para 0 durante a inicializagão. O DMAC (209) responde com um sinal "DSACK" da porta de 16 bits nas linhas (266 a,b) através da lógica BCU (253) para a CPU do processador S/88. O processador S/88 (62) coloca os dados da BCU (contagem de octe-tos, chave da memória, dados da prioridade da linha omnibus do adaptador e dados do espago utilizador (IOA)) e os dados de con tagem de transferências de memória do canal 1 do DMAC pela li-nha omnibus de enderegos local (247). A fig. 45E mostra o coman do na linha omnibus de enderegos, sendo os bits: 31-08 = 007E00 = comando "DMAC REGISTER SELECT"; e 07-00 = BCU SELECT e DMAC CHANNEL 1 MTC SELECT.
Os bits da contagem de octetos, da chave da memória (derivada da palavra CCW), a prioridade da linha omnibus do adaptador e do espago utilizador) IOA serão colocados na linha omnibus de dados (223) pelo processador S/88 (62) ’ no formato representado na fig. 45E, tendo os bits a designagão • seguinte: 194
k. r ,.*«#«* Μ.Μ·— W *♦»· 31-27 = Reservados 26 = Bit de ordem superior da contagem de octetos. Es te bit será igual a 1 apenas quando estiver a transferir a contagem máxima de octetos (48 octetos) .
26-16 = Contagem de octetos carregada no registador MTC do canal 1 do DMAC 26-14 = Contagem de octetos carregados no registador BCU (220) (máximo 4 096), sendo pelo menos parte da contagem carregada no registador (221), como se descreverá mais adiante nas operações de contagem de octetos. O adaptador de linhas omnibus (154) requer uma contagem de 1111 1111 1111 para transferir 4 096 octetos (contagem de octetos - 1). Por conseguinte, a BCU (156) decrementará os bits dos limites de palavras duplas (26-16) uma vez, antes de a apresentar, juntamente com os bits 15-14 do desvio de octetos (em blocos de 64 octetos), ao adaptador da linha omnibus (154) . 15-14 = Bits da contagem dos octetos de ordem inferior da BCU 156. Estes bits representam o desvio de octetos menos 1 (para os requisitos do adaptador da linha omnibus) a partir de um limite de palavras duplas. Estes bits não são usados pelo DMAC (209) nem pela BCU (156) visto que apenas transfere palavras duplas. São passados para o adaptador da linha omnibus (154), para apresentação ao BSM S/370 (162). 13-12 = prioridade dos canais da linha omnibus do adaptador 11-08 = chave da memória
07 = bit do espaço utilizador IOA 06 =0 processador S/88 activarã este bit (1) para in dicar que é necessário um acesso de memória local adicional. Isso verifica-se quando um endereço inicial de memória S/370 não está num limite de palavras duplas (32 bits). Como todos os acessos BCU têm de começar num limite de palavras duplas, 195
o primeiro acesso conterá o ou os octetos designa dos com endereço inicial, bem como o ou os octetos anteriores contidos nesse endereço de palavras, duplas. Rejeitam-se o ou os octetos anteriores. 05-00 = Reservados. O DMAC (209) carregará a palavra de ordem superior (isto é, a contagem de octetos) da linha omnibus de dados no registador MTC do canal 1. A BCU (156) capturará o conteúdo da linha omnibus de dados da seguinte maneira:
Bits 26-14 - para o contador (220) de octetos de BSM READ SELECT UP; e
Bits 13-06 - para o registador (219) de endereços e dados do ADAPTER BUS CHANNEL 0, mas dispostos doutra maneira.
Para uma transferência de palavras duplas se verificar num ciclo de máquina do processador S/88, o endereço tem de estar num limite de palavras duplas. Como o endereço MTC do canal 1 do DMAC não está num limite de palavras duplas (bits 07-00 = 01001010), tem lugar a seguinte acção para carregar a BCU (156) e o DMAC (209) com um comando do processador S/88. A BCU (156) inverterá o bit 1 do endereço e apresenta rá o mesmo ao DMAC (209), juntamente com os outros bits de selec ção do registador. Isso permitirá que o registador MTC para o canal 1 seja seleccionado apropriadamente (bits o7-00 do endere ço = 01001010). Esta disposição aplica-se também â selecção do registador MTC para as operações de leitura I/O do canal 2. O DMAC (209) responde com um sinal "DTACK" na linha (265) para a lógica BCU (253). A lógica BCU (253) converte o sinal "DTACK" nu ma resposta "DSACK" na porta de 32 bits pelas minhas (266 a,b) para o processador S/88 (62). A contagem de octetos de transferência, juntamente com os dados restantes da linha omnibus de dados serão apresentados ao adaptador (154) durante o comando "BSM READ SELECT UP" seguinte. O contador (21) de limites de lei tura BSM ou o contador (220) de octetos BSM READ SELECT-UP serão carregados no registador (214) de comandos de leitura do canal 0 O processador S/88 (62) gerará então um . comando "BSM READ SELECT UP" na linha omnibus (247) com o forma *_ to representado na fig. 45G, sendo os bits 31-00 = 007E0108 = 196
= BSM READ SELECT UP". 0 processador S/88 (62) também colocará o endereço inicial na linha omnibus de dados (223) no formato representado na fig, 45H, na qual os bits 23-0 = endereço inici al na memória (162) . O endereço inicial BSM na linha omnibus (223) é armazenado no registador A/D (219) e no registador de endereços de leitura do BSM (231). Ele será depois emitido para o adaptador de linhas omnibus (154), para apresentação à memória S/370 (162). A BCU (156) activa depois as linhas "DSACK" (266 a,d) para o processador S/88 (62). Nesta altura, o processa dor S/88 é libertado e deixa de estar envolvido nesta operação. A BCU (156) coloca o comando (de leitura) "BSM SELECT UP" no registador (214), através da linha omnibus (290), na linha omnibus (290), na linha omnibus de comando/ /estados (249) representada na fig. 451, sendo os bits: 0-1 = 11 o comando (de leitura) "BSM SELECT UP" e 2-7 = comprimento do campo menos 1 (máximo 64 octetos) O comprimento do campo foi previamente transferido do registador (220) ou (221) para o registador (214). O registador (219) coloca a informação do endereço na linha omnibus (20) no formato representado na fig. J, sendo os bits: 0-3 = Chave da memória 4 =1 5-6 = prioridade (adaptador de linhas omnibus (154) para linha omnibus do processador (170)); 7 = 1 = acesso â área de utilizador; 0 = acesso â área de microcõdigo; 8-31= endereço do primeiro octeto no campo de dados na me mória (162) . A lógica BCU (253) activa então a linha TAG UP (262a) para o adaptador de linhas omnibus (154) , para re ter os dados de comando e do comprimento do campo no registador de comandos do adaptador (124) (fig. 13) e os dados de endereço no registador (122). O adaptador de linhas omnibus (154) activa TAG DOWN para a lógica BCU (253), se os dados não forem válidos. A lógica BCU (253) espera até desaparecer TAG DOWN. O adaptador de linhas omnibus (154) converte o comando BSM SELECT UP na li- 197
nha omnibus do adaptador num comando de memória 1/0 da linha om nibus do processador, como se mostra nas fig. 45K e 45L, no qual os bits da linha omnibus (170) de dados/endereços do processador representam: 0=0= Comando de memória I/O 1=1= Operação de busca 2-7 = Comprimento do campo 8-31 = Endereço real do octeto e no qual os bits da linha omnibus de chave/estados do processa dor representam: 0-3 = Chave da memória 4 =0 Ausência de translacçao dinâmica.
Quando os dados endereçados são devolvi^ dos da memória S/370 (162), eles são retidos na memória tampão (259) (canal 0) de dados do adaptador de linhas omnibus. O ada£ tador de linhas omnibus (154) desactiva então a linha TAG DOWN (262b) no canal 0 da linha omnibus do adaptador. Esta condição alerta a BCU (156) para reter dois octetos (16 bits) de dados, imediatamente seguidos de outros dois octetos na memória tampão de leitura do canal 0 (4 octetos) através de sinais de relógio da esquerda e da direita. A BCU (156) activa então a sua linha "REQl" (263b) (pedido do canal 1 do DMAC) para o DMAC (209). O DMAC (209) envia um sinal "BUS REQ” pela linha (269) para a lógica (216) de arbitragem das linhas omnibus locais da BCU, para executar um ciclo de linha omnibus local.
Quando o sinal de aceitação da linha om nibus na linha (268) for devolvido da lógica (216) de arbitragem BCU, o DMAC (209) faz arrancar uma operação da memória tampão de leitura do canal 0 (259) para a memória local (210) . Ele faz isso devolvendo ACK1 (confirmação do canal 1 do DMA) pela linha (264b) para a lógica BCU (253), e encaminhando o endereço de memória local para o registador do canal 1 DMAC (MAR) para os circuitos (não representados) de endereçamento da memória (210), através da linha omnibus (248), do retentor (233) da linha omnibus de endereços (247) e do multiplexador (232) . A lóg:L ca BCU (253) utiliza o sinal ACK1 na linha (264b) e o sinal de selecção da memória RAM na linha (210a) para encaminhar os primeiros dados (4 octetos) da memória tampão (226) para a linha 198
omnibus de dados (223), para o armazenamento na memória (210) no endereço especificado pelo registador MAR. Quando DTACK for devolvido pela linha (265) pela lógica BCU (253), o DMAC (209) activa DTC (transferência de dados completa) na linha (267). A BCU (156) decrementará a contagem de octetos que fora retida nos registadores (220) e (MTC)? incrementa o registador MAR do canal 1 e decrementa o registador de endereços (231) para cada palavra dupla (4 octetos) de dados que foram recebidos do adaptador de linhas omnibus (154) atê 64 octetos. A sequência descrita atrás é repetida para cada quatro octetos (até 64) do comando BCU. Se a contagem de transferências de octetos for maior que sessenta e quatro, então a BCU (156) | apresentará um novo endereço inicial BSM ao adaptador de linhas omnibus (154) através dos registadores (231) e (219), a fim de buscar os 64 octetos seguintes. 0 registador (231) foi decremen tado para cada transferência de quatro octetos, como se descreveu atrás e tem portanto o endereço inicial seguinte apropriado. O adaptador de linhas omnibus (154) regista em memória tampão 64 octetos de dados, para cada endereço inicial até se completar a transferência de dados pedidos pelo comando (até 4 KB). A BCU (156) deixará o DMAC (209) em repouso (não excitando) REQ se a memória tampão (259) do adaptador de linhas omnibus estiver vazia e até ser recebida a palavra de dados válida seguinte; o estado de TAG DOWN reflecte a disponibilidade de dados válidos na memória (259). Os ciclos REQ/ACK continuam até a contagem de octetos chegar a zero, altura em que o DMAC (209) activa IRQ na linha (258) para o processador S/88 (62). Isto alerta o processador S/88 (62) para ler a memória tampão da memória local que contém os dados lidos da memória S/370 (162) para processamento apropriado: b) Operação de leitura I/O: (Memória local (210) para memória S/370 (162))
As operações de leitura I/O (sob o controlo do programa EXEC370) são desencadeadas quando existir pe-• lo menos uma entrada na fila de espera de leitura I/O na memõ-. ria (210). O processador S/88 (62) obtém o controlo da linha om - 199 - 1..
nibus local se ela não estiver a ser utilizada pelo DMAC (209). 0 processador S/88 (62) ajusta-se ao endereço inicial de leitura I/O da memória local no registador de endereços de memória (MAR) do canal 2 do DMAC, colocando a informação representada na fig. 45M na linha omnibus (247), onde os bits: 31-08 = 007E00 = Comando DMAC REGISTER SELECT 07-00 = Seleccionar o registador (inferior) de endereços da memória do canal 2 do DMAC; e colocando o endereço inicial (da memória tampão na memória (210)) na linha omnibus de dados (223), como se mostra na fig. 45N, sendo os bits: 31-16 = endereço inicial dos dados de leitura 1/0 da memó ria tampão 15-00 = Reservados
Os bits de ordem elevada da linha omnibus de dados 31-36 serão carregados nos bits de ordem baixa (15-00) do registador de endereços de memória do canal 2. Os bits de ordem elevada (31-16) do registador MAR foram postos em zero durante a inicialização. O DMAC (209) responde com um sinal DTACK na linha (265) , que é convertido em sinais DSACK nas linhas (266 a,b) para o processador S/88 (62). O processador S/88 (62) desloca então dados (até 4 KB) de um controlador I/O tal como (20) ou (24) para a memória local (210), através do controlo de programas S/88, utilizando o endereço inicial da me mõria tampão de leitura 1/0 da memória local.
Quando estiver completa a transferência de dados, o processador S/88 (62) coloca a selecção de.contagem de transferência de memória do canal 2 do DMAC na linha omnibus de endereços (247) no formato representado na fig. 450, sendo os bits: 31-08 = 007E00 = comando DMAC Register Select 07-00 = Seleccionar MTC do canal 2 do DMAC e BCU.
Os bits da contagem de octetos, da chave da memória (derivados da palavra CCW), da prioridade da linha omnibus do adaptador e do espaço do utilizador/IOA serão co locados na linha omnibus (223) pelo processador S/88 (62) no foi mato representado na fig. 45P, no qual os bits: 31-27 = Reservados 200 26
= bit de ordem superior da contagem de octetos. Este bit será igual a 1 apenas quando se estiver a transferir a contagem máxima de octetos.
26-16 = Contagem de octetos do registador MTC do canal 2 do DMAC 26-14 = Contagem de octetos carregada na BCU (156) (máximo 4 096) . 0 adaptador da linha omnibus (154) exige uma contagem 1111 1111 1111 para transferir 4096 octetos (contagem de octetos - 1). Por conseguinte, a BCU decrementará os bits 26-16 do limite de palavra dupla, uma vez, antes de os apresentar, juntamente com os bits 15-14 do desvio do octeto | (em blocos de 64 octetos) para o adaptador de linhas omnibus (154). 15-14 = Bits de ordem inferior da contagem de octetos. Es_ tes bits representam o desvio de octetos, menos 1 (para os requisitos do adaptador de linha omnibus) a partir de um limite de palavra dupla (32 bits). Estes bits não são usados pelo DMAC (209) ou pela unidade BCU (156) visto que apenas transferem palavras duplas. Os bits são passados para o adapta dor de linhas omnibus (154) para apresentação ao BSM S/370 (162). 13-12 = prioridade dos canais da linha omnibus do adaptador 11-08 = chave da memória
07 = bit do espaço utilizador/IOA 06-00 = Reservados. O DMAC (209) carregará a contagem de octetos da linha omnibus de dados (223) para o registador MTC do canal 2. A BCU (156) capturará o conteúdo da linha omnibus de da dos quando o comando anterior aparece na linha omnibus de endereços (247). Os bits 26-16 são armazenados no contador (222) de octetos de selecção de escrita BSM. Os bits 13-07 são armazenados no octeto de ordem superior do registador (226) S/D do canal 1 da linha omnibus do adaptador. O DMAC responde com um sinal . DTACK na linha (265) para a lógica BCU (253) . A lógica (253) con 1 verte o sinal DTACK numa resposta DSACK na porta de 32 bits pe- 201
las linhas 266 a,b para o processador S/88 (62) . A contagem da transferência de octetos, juntamente com os restantes dados da linha omnibus de dados será apresentada ao adaptador de linhas omnibus (154) durante o comando BSM WRITE SELECT UP seguinte. A contagem no contador (224) de limites de escrita BSM (todas as transferências excepto a última) ou no contador (22) de octetos de escrita BSM (última transferência) é carregada no registador (225) dos comandos de escrita do canal 1 do adaptador. 0 processador S/88 (62) gera então um comando BSM WRITE SELECT UP na linha omnibus de endereços local (247) no formato representado na fig. 45Q, no qual os bits:
31-00 = 007E0104 = Comando BSM WRITE SELECT UP O processador S/88 colocará também o en dereço inicial do BSM na linha omnibus de dados (223), no forma to representado na fig. 45R, no qual os bits: 31-24 = Reservados,
23-00 = Endereço inicial do BSM O endereço inicial BSM na linha omnibus de dados (223) será capturado pelos octetos de ordem inferior do registador (227) A/D do canal 1 e o registador (228) de ende reços de escrita BSM. Depois será enviado (como se verá mais adiante) para o adaptador de linhas omnibus (154) para apresentação ã memória S/370 (162). A BCU (156) activa então as linhas DSACK (266 a,b) (porta de 32 bits) para o processador S/88 (62). Nesta altura, o processador S/88 (62) é libertado e deixa de es tar envolvido nesta operação. A lógica BCU (253) emite um comando BSM SELECT UP, encaminhando bits "01" para os bits de ordem superior do registador de comandos (225) através da linha omnibus (290) e coloca o comando e o comprimento'do campo do registador (225) na linha omnibus (252), no formato representado na fig. 455, sendo os bits: 0-1 = Comando (de escrita) BSM SELECT UP, 2-7 = Comprimento do campo, menos 1 (64 octetos no máximo) O conteúdo do registador (227) é coloca do na linha omnibus (251) de endereços/dados (251) (em dois sub ciclos), no formato representado na fig. 45T, no qual os bits: 0-3 = Chave da memória 202
5-6 = prioridade (adaptador de linhas omnibus para linha omnibus do processador) 7 = 1 = acesso à área de utilizador 0 = acesso ã área de microcódigo 8-31 = Endereço S/370 do primeiro octeto no campo de dados 0 comando e o comprimento do campo são armazenados no registador (125) do adaptador (154) . Os dados da Chave/Endereço são armazenados no registador (123) do adaptador (154) através do registador SYNC (113). A lógica BCU (253) acti va o sinal REQ2 na linha (263c) para o canal 2 do DMAC. 0 DMAC 209 emite o endereço inicial da memória tampão I/O do registador MAR para a memória (210) , através da linha omnibus (248), do retentor (233), da linha omnibus (247)/ do multiplexador (232), para transferir uma palavra dupla de dados da memória (210) para o registador A/D (227). ACK2 (confirmação do canal 2 do DMA) é activado na linha (264a) . Isso provoca vim TAG UP na linha (262a) para o adaptador (154). O adaptador (154) transfere então uma palavra dupla de dados do registador (227) para a memória tampão (260) do adaptador, em dois subciclos, através do registador (113). Repete-se uma sequência de escrita de sinais REQ/ACK seguidos de um comando TAG UP para transferir cada palavra de dados dupla. O BCU (156) decrementa a contagem de octetos nos registadores (222,224) e do endereço no registador (228) e no MTC do canal 2 do DMAC, para cada palavra dupla (32 bits) que é apresentada ao adaptador de linhas omnibus (154) , até 64 octetos
Se a contagem de octetos de transferência for maior que 64, então (como atrás se descreveu, relativamente as operações de escrita) a BCU (156) apresentará um novo endereço inicial de dados, para cada endereço inicial. Esta sequência repete-se até a contagem de octetos no registador (222) (máximo de 4KB) atingir zero.
Quando a memória tampão (260) do adapta dor de linhas omnibus estiver cheia, a BCU (156) suspenderá a sequência de escrita até que o adaptador de linhas omnibus dê . uma indicação de memória tampão disponível, através da linha 1 TAG DOWN (262c). 203 0 adaptador de linhas omnibus (154) con verte o comando BSM SELECT UP na linha omnibus do adaptador, num comando 1/0 MEMORY na linha omnibus do processador S/370, num formato representado nas fig. 45U e 45V na linha omnibus (170) do processador, e na linha omnibus de chave/estado, sendo:
Bits na linha omnibus do processador:
0 = 0 = Comando 1/0 MEMORY 1 = 0 = Operação de memória 2-7 = Comprimento do campo 8-31 = Endereço real do octeto
Bits da linha omnibus de Chave/Estado: 0-3 = Chave da memória 4 = 0 = Ausência de translacção dinâmica.
Quando se tiverem transferido todos os dados (contagem de octetos =0) o DMAC (209) activará a linha de interrupção (258a) para o codificador de prioridades (212) do processador S/88. C) FLUXO DA SEQUBNCIA DE TRANSFERÊNCIA DE MENSAGENS DE PRIORIDADE ELEVADA S/370
Todas as transferências de mensagens de alta prioridade são originadas a partir do subsistema I/O (processador S/88 (62)). O canal 3 do DMAC serã ajustado pelo processador S/88 (62)) para efectuar a transferência de dados (16 octetos). A BCU (156) utilizará o canal 1 da linha omnibus do adaptador para a comunicação de dados (comando Q SELECT UP). A BCU (156) detecta um pedido de mensagem de alta prioridade quando o processador S/88 (PE 62) efec-tua uma carga de contagem de transferências de memória DMAC para o registador MTC no canal 3. Como consequência disso, a BCU (156) gera um comando Q SELECT UP para o PE S/370 (95) na linha omnibus (252) do adaptador do canal 1. Se estiver em curso uma transferência de dados de leitura I/O S/370 (canal 1 da linha omnibus do adaptador) quando for detectado o pedido, então a BCU espera até estar completa a transferência do bloco corrente de 64 octetos antes de satisfazer o pedido. SE não houver qualquer actividade no ca 204
______fga&& nal 1 da linha omnibus do adaptador, então o pedido será satisfeito imediatamente.
Vai agora descrever-se com mais pormenor esta transferência de mensagens de prioridade elevada. 0 PE (62) obtém o controlo da linha omnibus local (223,247), se ela não estiver a ser utilizada pelo DMAC (209). O PE (62) armazena então os dados da mensagem na memória local (210) através do controlo do programa. O PE (62) coloca o endereço inicial da mensagem da memória tampão local no registador MAR de endereços de memória do canal 3 do DMAC, colocando a informação na linha omnibus de endereços local (247), no formato representado na fig. 45W, sendo os bits: 31-08 = 007E00 = comando DMAC Register Select 37-00 = DMAC Channel 3 Memory Address Reg (Low) Select
Coloca-se o endereço inicial dos dados da mensagem da memória tampão local pretendido para o registador de endereços de memória na linha omnibus de dados (223) no formato representado na fig. 45X, sendo os bits: 31-16 = 0 endereço inicial dos dados da memória tampão lo cal na memória (210) 15-00 = Reservados
Os bits de ordem superior (bits 31-16) da linha omnibus de dados serão carregados na parte dos bits de ordem inferior (bits 15-0) do registador MAR de endereços de me mõria do canal 3 do DMAC. Os bits de ordem superior (bits 31-16) do registador MAR foram colocados em zero durante a inicializa-ção. 0 DMAC (209) responde com um sinal DTACK na linha (265), que é convertido para um sinal DSACK da porta de 16 bits nas l.i nhas (266 a,b), através da lógica BCU (253) para o processador S/88 (62). O processador S/88 (62) coloca então um comando na linha omnibus de endereços local (247) no formato re presentado na fig. 45Y, sendo os bits
31-08 = 007E00 = comando DMAC REGISTER SELECT 07-00 = Seleccionar BCU e DMAC canal 3 MTC
Os bits da contagem de octetos, da chave da memória e do espaço utilizador/IOA serão colocados na linha omnibus de dados pelo processador S/88 (62), no formato re- 205 <,ιΜ- presentado na fig. 45Z, sendo os bits: 31-20 = Reservados 19-16 = bits de contagem de octetos da transferência. Estes bits são carregados no DMAC (209) e na BCU (156). Representam uma contagem de palavras duplas para o DMAC (209) e para a BCU (156) (máximo de 64 octetos). 15-12 = Zero 11-08 = Chave da memória
07 = Bit do espaço utilizador/IOA 06-00 = Reservados 0 DMAC (209) carregará a palavra de ordem superior (contagem de octetos) da linha omnibus de dados (223) no registador MTC de contagem de transferências na memória do canal 3. A BCU (156) capturará o conteúdo da linha omnibus de dados quando este comando particular aparece na linha om nibus de endereços (247) , armazenando os bits 19-16 no contador Q Select Up (254) e os bits 11-07 no registador (227) de endere ços e dados do canal 1. 0 DMAC (209) responde com um sinal DTACK para a lógica (253), que o converte numa resposta DSACK da porta de 32 bits nas linhas (266 a,b) para o PE (62). Esta acção alerta a BCU (156) para iniciar uma transferência de mensagens de alta prioridade da memória local (210) para o BSM S/370 (162) A contagem de octetos de transferência, juntamente com os dados adicionais representados na fig. 45Z, são apresentados ao adaptador de linhas omnibus (154) durante um comando Q Select Up ge rado na BCU. O contador (254) de Q Select é carregado nos bits 4-7 do registador (225) de comandos de escrita no canal 1. A BCU (156) coloca o comando Q Select Up no registador (225) atra vês da linha omnibus (290); e os dados no registador (225) são colocados na linha omnibus (252) (canal 1) do adaptador no formato representado na fig. 45AA, sendo os bits: 0Ί = Comando (de escrita) Q Select Up 2-7 = Comprimento do campo, menos 1 (16 octetos) A informação colocada na linha omnibus de endereços/dados (251) através do registador (227) está repre sentada na fig. 45AB, sendo os bits: 206 0-3 = Chave da memória 4-6 = Zero 7 = 1 = Acesso à área de utilizador 0 = Acesso à área de microcódigo 8-31 = Não considerar.
Os dados nas linhas omnibus (252) e (251) são transferidos para os registadores (125) e (123) do adaptador, respectivamente. A lógica BCU (253) activa então a linha REQ (263d) (pedido do canal 3 do DMA). O DMAC (209) coloca o endereço inicial da memória tampão 1/0 (proveniente do registador MAR) na linha omnibus local (247) e activa ACK (confir mação do canal 3 do DMAC) na linha (264d). A BCU (156) transfere então os primeiros quatro octetos de dados da memória tampão I/O endereçada da memória local (210) para a memória tampão (260) do adaptador, em dois subciclos, através do registador SYNC (113). Os blocos de quatro octetos seguintes são transferi dos por sequências dirigidas pelo comando TAG UP para o adaptador de linhas omnibus (154), e as linhas REQ/ACK (263d,264d) pa.i ra o DMAC. A BCU (156) decrementa o contador de octetos para ca da palavra dupla (32 bits) que é apresentada ao adaptador de li_ nhas omnibus (154) . O adaptador de linhas omnibus (154) con verte o comando Q Select Up em um comando de memória 1/0 da linha omnibus do processador para emitir a mensagem para a área (189) da memória (162); o formato do comando estã representado na fig. 45AC, no qual os bits do PROC BUS (170) são: 0 = 0 = Comando de memória 1/0 1 = 0 = Operação de armazenamento 2-7 = Comprimento do campo (máximo 64 octetos) 8-31 = Endereço real dos octetos (dos registadores (110, 112) do adaptador). A linha omnibus KEY/STATUS do processador (85) tem dados no formato representado na fig. 45AD, sendo os bits: 0-3 = Chave da memória 4 = Ausência de translacção dinâmica.
Quando se tiverem transferido todos os dados da mensagem para o adaptador de linhas omnibus (154) (con- 207
Ή;*, tagem de octetos = 0), o DMAC (209) activará a sua linha de interrupção (258a) para o codificador de prioridades do processador (211). O DMAC (209) apresenta vectores de interrupção a par tir do octeto menos significativo da sua linha omnibus de dados (248) para a linha omnibus de dados do processador S/88 (161D), os bits 23-16, através do receptor activador (234) e os bits 23-16 da linha omnibus de dados local (223) . O DMAC devolve para o PE (62) um sinal DSACK de 16 bits.
d) Comando READ BCU STATUS
Um comando READ BCU STATUS pode ser for mado pelo processador S/88 (62) para ler o estado corrente da BCU (156). O comando é colocado na linha omnibus de endereços (247) pelo processador S/88 (62), no formato representado na fig. 45AE, sendo os bits:
31-00 = 007E010C - Comando READ BCU STATUS A BCU (156) colocará o estado representado na fig. 45AF na linha omnibus de dados e devolverá DSACK (porta de 32 bits) pela linha omnibus (266) da PE (62) . Os bits da fig. 45AF representam: 31-29 = Estado do canal 0 da linha omnibus do adaptador -verificação da chave, verificação do endereço 28 = 1 = Oltimo ciclo de dados 0 = todos os outros ciclos 27-26 = estado do canal 1 da linha omnibus do adaptador, verificação da chave, verificação do endereço 25 = Memória tampão não disponível (Comando Q Select
Up) 24 = 1 = Oltimo ciclo de dados 0 = Todos os outros ciclos 23 = Canal 0 da linha omnibus Tag Down 22 = Canal 1 da linha omnibus Tag Down 21 = BSM Read Sync Check 20 = BSM Read Select Up/Pending Latch 19 = BSM Write Select Up Request/Pending Datch 18 = Q Select Up Request/Pending Latch 17 = Read Mailbox em progresso - 208 -
16 = BSM Read em progresso 15 = BSM Write em progresso 14 = Q Select Up em progresso 0 bit 21 de estado da BCU (BSM Read Sync Check) será reposto depois de ser lido pelo processador S/88 (62). Este bit indica que as contagens de octetos do adaptador de linhas omnibus (154) e da BCU (156) não concordam quan do termina uma operação de leitura do BSM; portanto é detectado um erro que exige a ressincronização.
Para a operação de escrita BSM, o adaptador de linhas omnibus (154) activará Tag Down em (262b), para indicar que foram recebidos todos os dados. Tag Down em (262b) será então desactivado pelo adaptador de linhas omnibus (154), altura em que os indicadores de estado serão apresentados a, e calculados pela unidade BCU (156). Se Tag Down não for desactivado dentro de 100 microssegundos. A BCU (156) activará uma linha de anulamento (não representada) para o adaptador de linhas omnibus (154) . Isso fará então com que o adaptador (154) se des^ ligue da unidade BCU (156). Tag Down em (262b) é também usado pelo adaptador de linhas omnibus (154) para indicar qualquer erro que não possa ser comunicado à BCU (156) através da linha omnibus de comandos/estados (252).
e) Reposição programada da BCU
Uma reposição programada da BCU, realizada pelo PE (62), desempenha a mesma função que uma reposição da BCU quando da ligação da energia. Ela pode ser realizada em qualquer instante para limpar a BCU de quaisquer condições anor mais. Contudo, tem de ser reconhecido pelos meios físicos um ci cio da linha omnibus local (descodificação de 007EXXXX) para se executar este comando. 0 comando é colocado na linha omnibus de endereços local (247) pelo processador S/88, no formato representado na fig. 45AG, sendo os bits: 31-00 = 007E0000 - Comando Reset BCU. O conteúdo da linha omnibus de dados se rã ignorado pela BCU (156) . A BCU (156) devolverá DSACK (porta 209 de 32 bits) nas linhas (266 a,b) para o processador S/88 (62). EMULAÇÃO DO FORMATO DA PISTA DE CONTAGEM/ CHAVE E DADOS (fig. 46A-K) A emulação do DASD S/370 no S/88 será descrita, a título de exemplo, para ilustrar uma maneira preferida de como os programas 1/0 S/370 podem ser executados pelos processadores e dispositivos 1/0 S/88. 0 S/370 será referido co mo Sistema Objecto e o S/88 como Sistema Objectivo. Os dados do DASD (Direct Acess Storage Device - Dispositivo de memória para o acesso directo) para o sistema objecto são mantidos pelo sistema objectivo num Formato de Emulação. 0 código S/370 que se executa no processador S/370 é designado por meios de programação do sistema objecto. A discussão divide-se em quatro partes: 1) 0 Sistema Objecto - apresenta uma breve descrição do formato de gravação de contagens, chaves e dados, usado pelos produtos de memória de acesso directo S/370, existentes. 2) 0 Sistema Objectivo - Descreve o modelo de interface dos programas DASD. 3) 0 formato de emulação - descreve a atribuição de posições dos campos do sistema objecto nos formatos de emulação usados. 4) A função de emulação - descreve a distribuição das posições das funções do Sistema Objecto nas funções de emulação.
1. 0 SISTEMA OBJECTO
Os meios físicos do DASD estão dividos em cilindros e os cilindros em pistas. 0 número de cada um deles e a sua capacidade variam para os diferentes tipos e modelos de DASD. Cada cilindro pode ser endereçado, por programa, por um número do cilindro (CC), de dois octetos, e as pistas in dividuais dentro de um cilindro são acedidas por cabeças separa das de leitura/escrita, cada uma delas endereçãvel por um número de cabeça (HH), de dois octetos. A situação física de uma pista 210 é dada pelos seus números de cilindro e de cabeça, sendo portan to especificada pelo endereço (CCHH), de quatro octetos. Cada uma das pistas tem um endereço de repouso, um descritor da pista (registo 0) e um ou mais registos de dados. A dimensão de ca da registo é programável; e quando se escrever o endereço de re pouso e as dimensões dos registos numa pista, diz-se que essa pista está formada. Todas as pistas são formatadas a partir do seu índice da pista para o índice da pista seguinte. A fig. 46A ilustra uma tal pista. A unidade de informação básica gravada no meio físico é um octeto de dados constituído por oito bits. Um grupo de octetos de dados constitui uma área, e o dispositivo separa estas áreas por intervalos de escrita entre as mesmas Cada registo consta de duas (contagem, dados) ou de três (conta gem, chave, dados) áreas, enquanto que o endereço de repouso é constituído por apenas uma área. As três áreas que formam um re gisto do sistema objecto são: contagem, chave (optativo) e dados . A área de contagem contém os campos seguintes: F Indicador 1 octeto indicando a condição da pi£ ta, transbordo da pista de registos lógicos CCHH Endereço da pista 2 octetos indica o número do cilindro e o número da cabeça on de a pista está situada fisicamente R Número do registo 1 octeto indicando o número sequen cial do registo na pista KL Comprimento da 1 octeto indicando o número de octe chave tos na área da chave DL Comprimento dos 2 octetos indicando o número de octe dados tos da área de dados ECC Código de erro 2 octetos usado para código de detec ção/correcção de erros A área da chave contém os seguintes cam pos:
Se KL = 0, esta área e o seu intervalo -- .
são omitidos) KEY Chave Octetos KL Dados do utilizador ECC Código de erros 2 octetos usado para detecção/ /correcção de erros A área de dados contém os campos seguin tes: DATA Dados Octetos DL Dados do utilizador ECC Código de erros 2 octetos usado para detecção/ /correcção de erros A primeira área em cada pista é o ende- reço de repouso. Ela contêm os campos seguintes: F Indicador 1 octeto indicando a condição da pista CCHH Endereço da 2 octetos indica os números do pista cilindro e da cabeça onde está fisicamente localizada a pista ECC Código de erros 2 octetos usada para detecção/ /correcção de erros 0 Registo 0 (descritor da pista) é sempre o primeiro registo a seguir à área do endereço de repouso. No sistema de programação preferido, o registo 0 do campo CCHH define a pista alternada, se a pista tiver recebido um indicador como defeituosa. 0 Comprimento da Chave é normalmente 0 para a pista 0. 0 registo 0 pode ser seguido por um ou mais regiss tos de dados. A área da chave é optativa e, se estiver presente, pode conter de 1 a 255 octetos. O número de um registo é obtido quando um comando de Write CCW escrever as áreas da contagem, da chave e dos dados. Depois de o registo ter sido formatado, as áreas de dados do utilizador podem ser lidas e/ou re-escri-tas (utilizando outros comandos CCW) sem destruir registos adja centes na pista. Se um registo for reformatado, os que se lhe seguem são destruídos.
2. O SISTEMA OBJECTIVO O DASD (fig. 46B) é apresentado ao mi- 212 crocódigo S/88 sob a forma de ficheiros que contêm blocos de 4 096 octetos de dados, numerados sequencialmente a partir de 1, O mecanismo de emulação distribui as posições do formato do si£ tema objecto e a função numa combinação do formato e função do sistema objectivo utilizável.
3. 0 FORMATO DE EMULAÇÃO
Os parâmetros físicos de diferentes tipos e modelos de DASD no sistema objecto variam. O número do ti po e modelo do DASD, juntamente com os vários parâmetros, são mantidos no primeiro bloco de dados, INFO, do ficheiro do siste ma objectivo, fig. 46C. O restante do ficheiro contém os dados emulados das pistas objectos (fig. 46C). Os dados de cada pista são mantidos num número inteiro de blocos de dados. O número de blocos de dados do sistema objectivo necessários para cada pista é um parâmetro mantido no primeiro bloco de dados. Cada pista no sistema objecto, a começar com CCHH = 0000, é mantida sequencialmente no ficheiro do sistema objectivo. 0 seu número de bloco inicial pode ser calculado dados CCHH e as dimensões do disco objecto mantidas no bloco INFO.
Cada pista emulada (fig. 46D) contém uma lista dos registos existentes correntemente nessa pista, um cabeçalho da.lista e os dados de utilizador (chave, dados) para cada pista. A lista é usada para localizar os dados para um registo específico, efectuar operações de busca no registo ou de chave, aceder ao último registo e tratar o excesso na pista.
Os dados do sistema objecto são tratados no ambiente de emulação de uma de três maneiras: mantido, retido, implicitamente ou não mantido.
Nem todos os intervalos são necessários e não são mantidos. Os dados ECC não são criados nem mantidos visto que a integridade dos dados ê assegurada pelo sistema objectivo. Como o modelo de programa proporcionado pelo sistema objectivo elimina toda a área da superfície física avariada, as pistas alternadas no sistema objecto são realizadas de uma maneira sem faltas. Isto significa que a parte do octeto Indica- 213
dor (F), que indica a condição da pista, não é mantida e os oc-tetos de Indicador (FLAG) escritos pelos meios de programação do sistema objecto são verificados para a validade e descartados. 0 CCHH (endereço da pista) passado pelos meios de programação do sistema objecto é usado para calcular a localização da pista emulada no ficheiro DASD do sistema objectivo. Ele é mantido no cabeçalho da pista descrito mais adiante, mas não se faz proliferar através de todas as áreas de contagem e do endereço de repouso da pista emulada. 0 endereço de repouso não ê mantido como uma área explícita. 0 número (R) do registo, também passado pelos meios de programação do sistema objecto, é mantido implicitamente e não aparece como dados explícitos.
Os dados do utilizador, a CHAVE optativa e os campos de dados, para cada registo, são mantidos de uma maneira sequencial na pista emulada imediatamente a seguir â lista da pista, fig. 46D. 0 restante dos dados do sistema objecto (F) (excesso lógico da pista de registos), KL e DL) é mantido na lista da pista, fig. 46E. Uma entrada da lista contém F, KL e DL, bem como um apontador (p) para os dados do utilizador (CHAVE e DADOS) para cada registo. R é mantido implicitamente como número de entrada da lista. A fig. 46E mostra a composição do cabeçalho, da lista e dos dados do utilizador, bem como a distribuição das posições de uma pista emulada nos blocos de 4 KB do sistema objectivo. Os apontadores p0-p2 apontam para os endereços iniciais (dentro dos blocos de 4 KB) dos registos de dados 0-2.
4. FUNÇÕES DE EMULAÇÃO
Esta secção dirige-se para a utilização dos formatos de emulação atrás descritos proporcionando alguns dos comandos DASD CCW do sistema objecto. As fig. 46F-K, inclusive, representam dados transferidos pelos meios de programação do sistema objecto durante operações de leitura e de escrita. 214
k. Λ«
Para as operações (ops) CCW que implicam o endereço inicial, são calculados os valores de F e CCHH da fig. 46F, são verifica dos, mas não se escreve nada na pista emulada.
Para operações CCW que envolvem o regijs to 0, fig. 46G, os campos CCHH e R são verificados, mas nada se escreve. Os campos KL e DL são transferidos para/da entrada apropriada da lista. O registo zero tem um desvio zero na área de dados do utilizador. O registo 0 de leitura/escrita orienta a cabeça para o primeiro registo na pista.
As operações CCW que envolvem contagem orientam sempre a cabeça para o registo seguinte na pista, fig. 46H. Para operações que envolvem Chave e Dados, a localização e as dimensões dos dados do utilizador são encontradas na lista (fig. 461). As operações que envolvem contagem, chave e dados orientam a cabeça de leitura/escrita para o registo seguinte na pista (fig. 46J) . Para as operações que envolvem contagem múlt_i pia, chave e dados, o processamento começa com a entrada seguin te da lista e continua até â última entrada válida da lista (fig. 46K) .
Partilha da memória real (16) pelo S/88 e o S/370 1. Introdução
Vai agora descrever-se com mais pormenor o "roubo" de uma ou mais áreas da memória real (física)(16) para um ou mais processadores S/370 na gestão e na distribuição das posições na memória (16), fazendo-se referência às figuras:
Fig. 10, que ilustra teoricamente a memória virtual S/88 (106) e a memória física (16) do S/88 e a atribuição das áreas de armazenamento da memória física S/370 (162-164) para os processadores S/370 (21,23), (25,27) e (29, 31); A fig. 47, que ilustra esquematicamente o processo de captura de uma área de memória S/370 da memória física S/88 (16); e
As fig. 48 A-K, que ilustram a distribuição de posições dos meios de programação virtuais/físicos, tais como são usados na gestão da memória S/88, sendo essa dis- 215 tribuição de posições controlada para permitir a captura daafea de memória S/370. A memória (16) está dividida em páginas de 4 KB e uma pluralidade de entradas do mapa da memória (mme), uma para cada página de 4KB, está contida nas matrizes de entra das do mapa da memória (fig. 48A) que, em conjunto, formam o ma pa de toda a memória (16). As entradas correspondentes a páginas não atribuídas para uso estão ligadas numa "lista livre" (isto é, a fila de espera de atribuição de memória) incluindo em cada entrada (fig. 48B) os números das páginas seguintes (apontadores) das entradas anteriores e seguintes na lista. Um apontador dos meios de programação no sistema operativo S/88 aponta sempre para o início da lista livre. As páginas da memória física são atribuídas a vários processos a partir do início da lista livre e as páginas devolvidas para a lista livre são de preferência colocadas no início da lista livre. Os números das páginas "anterior e seguinte" e o apontador dos meios de programação para o início da lista livre são actualizados de ma neira apropriada.
Quando o sistema S/88 é inicializado, estas entradas são colocadas por ordem sequencial de endereços na lista livre; nesta altura apenas poucas páginas estão atribuídas para utilização. Portanto, há grandes áreas contíguas de memória (16) disponíveis para atribuição a partir da lista livre. Por conseguinte, no instante da inicialização, as áreas de memória (por exemplo (162), (163), (164)) tem de ser "roubada" para os processadores S/370. Subsequentemente, à medida que se atribuem páginas a partir da lista livre e se devolvem páginas â mesma, como for requerido, os grandes blocos contíguos na lijà ta livre fraccionam-se e deixam de estar disponíveis. Se se fizesse uma tentativa para criar uma área S/370 contígua, seria necessário interromper todos os processos e executar rotinas complexas para atribuir de novo blocos de memória já atribuídos a vários processos até se dispor de memória contígua suficiente.
As rotinas de serviço, no programa de aplicação EXEC370, descritas mais adiante, proporcionam as funções para roubar áreas de memória S/370 a partir do sistema ope rativo S/88. 216
„ .· ;t . Λ*^Λ . «VWw.. ·*·* · » 2. Distribuição de posições da memória S/88 (16)
Mas primeiro vai descrever-se uma forma preferida de gestão/distribuição de posições (elaboração do mapa) da memória principal S/88 (16) , com referência âs fig. 48 A-K, inclusive. A fig. 48A é uma vista geral simples da estrutu ra de meios de programação estabelecida pelo sistema operativo S/88 (S/88 OS) para manter um espaço de endereços virtuais do processo. A estrutura dos meios de programação inclui os elemen tos seguintes: pte - Process table entry (entrada da tabela de processos) (representa um processo pmb - Process map block(s) - Bloco(s) do mapa de processos.
Encadeados entre si, contêm os apontadores (pme) para as apte para este espaço de endereços virtuais de processos pmbp - um apontador na pte para o primeiro pmb na cadeia pme - entradas do mapa de processos (apontadores para as apte) contidas nos pmb mme - entradas do mapa da memória física. Contidas nas matri zes das mme há uma mme para cada página de 4 KB de me mória física no sistema, isto é na memória (16). apte - entrada da tabela da página activa. Contida em blocos aptos, há um bloco apto para cada página virtual única no sistema vpn - Número de página virtual no interior do espaço de ende reços virtuais do processo pmt - Tabela de gestão de processos. Há um ponteiro ptep na pmt para cada processo (pte) no sistema ptep - Apontador da entrada na tabela de processos para um processo.
A estrutura do mapa da memória da fig. 48A é usada pela unidade de gestão da memória (105), fig. 10 e 47. Ela consiste em uma ou mais matrizes (fig. 48C) de mme, cada uma contendo 512 mme ordenadas, na forma de realização prefe rida. Cada mme representa uma página de 4 KB de memória real • (16), e portanto uma matriz de mme representa 512 x 4 KB = 2 MB . de memória contígua. 217
A caixa com a designação "Matriz do Mapa da Memória" da fig. 47 ilustra teoricamente todas as matrizes de mme dispostas por ordem sequencial de endereços.
As mme são usualmente arrumadas numa de três listas: 1) lista usada, mme atribuídas a um processo 2) lista recuperada, mme a devolver â lista livre 3) lista livre, mme disponíveis para atribuição a um processo.
As mme são deslocadas de uma lista para a outra, sendo os seus apontadores actualizados de maneira apro priada.
Se elas não estiverem numa lista, ou re presentam uma página com cablagem permanente ou estão num estado transitório. A estrutura dos dados das mme, usada pela unida de de gestão da memória (105) contém os apontadores das três listas indicados na fig. 48B, onde: indicadores cablados 1/0 em progresso escrita ligado modificado não usado (2) evicção, limpeza não usado (1) evicção libertar avaria de página mme seguinte mme anterior endereço aptep pagina esta cablada I/O de disco avançado agora indica a última I/O (ou a I/O cor rente) para esta trama foi uma escrita para disco a página tem uma PTW (palavra da tabela físl. ca) nos registadores dos meios físicos última observação do bit modifjL cado
Notifica posto para limpeza Notifica o posto para limpar e libertar esta página Alguma avaria da página aguardando nesta página ppn (número da página física) para a mme seguinte ppn para a mme anterior endereço de disco, enquanto em memória apontador para apto para esta 218
página
Os campos "mine seguinte" e "mme anterior" são usados para criar as listas encadeadas (usada, de recuperação e lista livre). São os números das páginas físicas para a mme seguinte e para a mme anterior que serão alterados como se descreve adiante, quando a memória física do S/88 é capturada para uma área de memória S/370. Na forma de realização prefe rida, cada uma das matrizes mmep (fig. 48C) é uma lista de 128 apontadores, cada um dos quais é um endereço virtual de uma matriz mme. Os primeiros n apontadores são uma lista ordenada de todas as matrizes mme. Os restantes 128-n apontadores não ZEROS Isso proporciona a capacidade de manter o rasto de 128 x 2 MB = 256 MB de memória real. Cada um destes apontadores compreende os 16 bits mais significativos (de ordem mais elevada) de um en dereço físico, chamado um número de página física (ppn), e são usados como apontador para uma mme específica. Os sete bits de ordem superior do ppn seleccionam a matriz mme, e os nove bits de ordem inferior do ppn seleccionam a mme no interior da matriz. Os doze bits de ordem inferior do endereço físico são um desvio na página real (física) da memória (16).
Uma estrutura da informação do mapa da memória (mem map info) (fig. 48D) é usada para guardar o rasto da memória usada para os mapas, sendo: mem map infop-1 apontador para a estrutura da primeira next mem map infop n pages per page (16) ppn informação do mapa da memória apontador para a estrutura da informação seguinte do mapa da memória número de páginas de 4K de memória real usadas por este mapa (máximo 16) o restante da estrutura é uma matriz de informação por página número de página física para mme para esta página. As entradas da tabela de páginas acti- vas (apte) são usadas para manter o rasto da memória virtual. Há uma apte para cada página de 4 KB de memória virtual em todos os espaços de memória virtual no sistema. A estrutura apte 219
c:; ‘'-Τΐ^,ΐτ
SRWn,^ '>tíí.iíÍ^.-3K.'mniBHJ5£ 'v. (fig. 48E) indica o(s) dono(s) do espaço virtual, o endereço virtual da página e o endereço de memória real do endereço do disco, se chamado.
Se mais de um processo compartilhar o mesmo espaço de endereços virtuais, todos os processos são iden tifiçados através de um aposto ("trailer") apte (fig. 48G); e o apte para cada página virtual aponta para o "aposto". A estrutura apte inclui: endereço endereço de real página de 4K endereço de disco endereço do apte livre seguinte se apte estiver na lista livre indicadores processo per página bifurcada mem atribuída espera erro 1/0 libertar apte correcção tipo cpu mau endereço, atribuído de novo contagem vpage número de páginas virtuais. (indicadores mem atribuídos = 1) (indicadores mem atribuídos = 0) página virtual não partilhada com outros processos a página do processo per foi bifurcada a página tem memória atribuída espera para esta pãgi na ocorreu um erro I/O na página Libertar este APTE quando I/O se completar a página foi corrigida na ini-cialização erros forçaram vim novo endereço número de processos que compartilham esta página 0 número de páginas virtuais (vpn) consiste nos 16 bits mais significativos dos 27 do endere ço virtual. processo endereço de pte pa pta ra o processo per ou (se não for partilhada a memó ria virtual) 220 j*· **S*'- - <-i. V>-, /Λ·· .^ilkííirijj endereço do aposto (se for partilhada a memória do apt virtual)
Cada apte tem um comprimento de doze oc tetos e estão contidas 256 entradas em cada bloco de tabelas de páginas activas (apt) (fig. 48F). A posição relativa das apte dentro de um bloco não tem qualquer significado. Todas as apte não usadas são incluídas numa lista de aptep livres. Se forem necessárias apte adicionais e a lista estiver em zero, é atribuído um novo bloco apt na nova pilha, sendo todas as 256 apte introduzidas nas listas rpteo livre. 0 aposto apt (fig. 48G) é usado para zo nas de programa partilhadas; é atribuído na pilha do sistema cablada e para ele aponta uma ΕΙΤΕ (Executable image table en-try - Entrada da tabela imagem executável) haverá quatro apostos por programa (um por zona). Os apostos permitem que o siste ma encontre todas as palavras PTW que apontam para uma página quando se remove a mesma. A estrutura do aposto apt inclui: n procs número de processos que usam o aposto v base (zona base vpn) primeira página virtual desta zona n pages numero de paginas na zona users mapa dos bits dos utilizadores do aposto pp info(o: :nnp) o restante da estru tura é uma matriz da informação do process so per npp n ptws aptep dimensão da matriz número de palavras PTW ligadas neste instante apontador para APTE para esta página processo (fig. um processo; con A entrada da tabela do 48H) contém a informação necessária para gerir 221 CL? tém informação acerca do espaço de endereços virtuais do procejs so. Cada entrada da tabela de páginas inclui: first pmb pta apontador para o primeiro pmb numa lista de pmb para este processo map root tbl phys Endereço físico de map físico addr map root ptr phys Endereço virtual de map físico pdr ptr Endereço da zona de dados do processo per A estrutura do bloco do mapa do processo (fig. 481) é usada para estabelecer o mapa de um espaço virtual do processo no espaço da memória real, e inclui: nextp Apontador para o pmb seguinte para este pro cesso base vpn número da página virtual base, primeiro o nú mero da página virtual base deste pmb (os seis bits menos significativos serão ZERO) map addr endereço físico do map pme entradas do mapa do processo (0-63), sendo o restante da estrutura uma matriz de informação da página per. O índice para esta matriz é constituído pelos seis bits menos significativos do vpn indicadores usado cópia de bit usado em mem a página está em memória não usado (1) linha divisória esta página é uma página diviso ria cablado cablar esta página quando chegar copy on write copiar a página quando escrita patched a página é uma página de código corrigida ufence página divisória do utilizador aptep apontador para ΑΡΤΕ para esta página A tabela de gestão do processo (fig. 48i}) contém informação usada pelo listador, incluindo uma lista de apontadores ptep para todos os processos no sistema, o número de páginas disponíveis no sistema e o número de páginas entre- 222 gues.
A palavra da tabela física (PTW) da fig, 48 K inclui: acl PPn ac2 u código de acesso da PTW número da página física da página desejada código de acesso à palavra PTW esta PTW é usada 3. Processo de arranque 0 sistema S/88 inclui um procedimento de arranque que liga a energia do sistema e faz iniciação dos módulos de programas e de dados que estão incluídos num ficheiro de arranque.
No arranque automático, a memória só pa ra leitura, programável (PROM) (181) (fig. 12) , executa diagnójj ticos e faz ensaios automáticos quer nos componentes do sistema S/88 quer nos do S/370. Terminadas essas tarefas, a PROM (181) lê um programa de utilização que carrega o sistema operativo a partir de um disco mãe (não representado). 0 código de arranque do módulo iniciali za todos os dispositivos e discos configurados e ajusta o relógio a partir do relógio calendário do sistema. Este ficheiro contém comandos que o sistema operativo executa como parte do procedimento de arranque de um módulo. Este procedimento inclui funções de: leitura de ficheiros de tabelas que especificam configura ções de cartões, discos e dispositivos ligados ao módulo; identificação dos módulos dentro do sistema; e arranque de vários processos de serviço do sistema. 0 ficheiro do módulo fornece dados sufi cientes para criar um novo sistema e pode ser modificado pelo utilizador para o adaptar aos seus requisitos. Para capturar uma área S/370 (162-164) a partir da memória principal S/88, são inseridas certas declarações no ficheiro de comandos do código de arranque do módulo. Por exemplo, se partirmos da hipóte 223
se de que temos a configuração da fig. 10, com três processadores S/370 (21,23), (25,27) e (29,31) e três áreas de memória S/370 (162), (163) e (164) para os referidos processadores, in-troduzem-se as seguintes declarações no ficheiro de comandos do código de arranque do módulo:
Arrancar o processador S/370 Nã. 1 VM 8 megaoctetos
Arrancar o processador S/370 NQ. 2 AIX 4 megaoctetos
Arrancar o processador S/370 NQ. 3 VSE 16 megaoctetos. 4. Rotina de serviço S/370
Todo comando de arranque S/370 faz com que seja executada uma rotina dos meios de programação para "roubar" um vloco do espaço de memória da memória (16), para o processador S/370 particular, Nã. 1, N° 2 ou NQ. 3. É então car regado, por um programa inicial, o sistema operativo S/370 no espaço de memória real "roubado". As funções da rotina dos meios de programação são a captura de áreas de memória da memória S/88 e "reposição" dessas áreas quando for apropriado. São usadas cinco sub-rotinas para desempenhar essas funções: a) A sub-rotina S/370 "Displace Storage" extrai um bloco da me mória física das tabelas do sistema operativo S/88. 0 endereço de base do bloco estará num limite de megaoctetos, sen do a sua dimensão um número inteiro de megaoctetos.
Uso declarar S/370 displace-stor entry(binary (15), binary (15), binary (15); chamar S/370 displace stor (n blks, ppn, error code);
Argumentos - n blks (entrada) número de megaoctetos contíguos desejados ppn (saída) 0 número da página física da primeira página de 4K inferior ou superior da memória real no bloco. Os oito bits menos significativos de ppn serão 0 e o endereço real de base do bloco será 4096 ppn. error-code (saída) insufficient-free - Não há suficientes blocos livres contíguos disponíveis para deslo- 224 ci·-·
*FW car pelo menos um MB. provided-less - 0 número de MB deslocados é menor que o pedido. b) A sub-rotina Replace Storage devolve um bloco de memória fí sica para as tabelas do sistema operativo S/88
Uso declarar S/370 replace-stor entry (binary (15), binary (15) ninary (15); chamar S/370 replace-stor (n-blbks, ppn, erro-code);
Argumentos n-blks (entrada) 0 número de megaoctetos contíguos que estão a ser devolvidos ppn (entrada) 0 número das páginas físicas de base do bloco. Os oito bits menos significativos de ppn têm de ser 0. error-code (saída) cannot-free-connected - Tem de usar S/370 Close Storage antes de tentar repor a memória em VOS. c) A sub-rotina S/370 Open Storage liga uma parte ou toda a me mória física anteriormente deslocada para o espaço de endereços virtuais do chamador e devolve o número de páginas virtual. Estabelecem-se todas as apte e pme apropriadas e estabelece-se a distribuição de posições de virtuais para físicas. 0 código de acesso é "Read/Write" e a memória é cablada. uso declarar S/370 open-stor entry (binary (15), binary (15) binary (15) binary (15); chamar S/370 open-stor(n-blks, ppn vpn error-code); 225
Argumentos n-blks (entrada) 0 número de megaoctetos contíguos pedidos. ppn (saída) 0 número da página física da primeira página de 4K na zona.
Os oitos bits menos significativos de ppn serão 0. vpn (saída) O número de página virtual da primeira página de 4K na zona. Os oito bits menos significativos de vpn serão 0 e o endereço virtual é 4096 vpn erro-code (saída)
Um código de erro devolvido. S/370 Close Storage A sub-rotina S/370 Close Storage desliga a memória física anteriormente aberta do espaço de endereços virtuais dos chamadores. As ΑΡΤΕ e PME apropriadas se rão devolvidas para o sistema operativo S/88 e a distribuição de posições de memória virtuais para físicas é censurada. A memória física é devolvida à rotina S/370 Displace Storage.
Uso declarar S/370 close-stor entry (Binary (15) (binary(15) (binary (15) call S/370 close-stor (n-blocks vpn, error-code);
Argumentos n-blks (entrada) 0 número de megaoctetos contíguos que estão a ser devolvidos vpn (entrada) O número de página virtual da primeira página de 4K na zona que está a ser devolvida. 226 error-code (saída)
Um código de erro devolvido. e) Gain Freedom é uma sub-rotina que é chamada pelo programa START370. Ela coloca o programa START70 no modo supervisor S/88, de modo que podem efectuar-se as quatro sub-rotinas anteriores. Um vez que START370 esteja no modo supervisor, os apontadores de vectores podem ser modificados para retirar blocos de memória do sistema operativo S/88 e atribuir novamente a memória a cada processador S/370.
Esta sub-rotina é usada para alterar as atribuições de memória e para alterar os vectores manuais para o nível de interrupção 6 dos processadores S/88. Não é dado conhecimento aos utilizadores desta chamada, nem acesso â mesma, por razões de segurança.
Uso declarar S/370 gain-freedom entry (binary (15) binary 15); chamar S/370 gain-freedom (give-take, error-code);
Argumentos give-take (entrada)
Um valor de 0 reenvia o chamador para o estado de aplicação do utilizador, e qualquer outro valor coloca o chamador no estado supervisor, error-code (saída)
Um código de erro devolvido.
As fases de funcionamento das sub-rotinas anteriores são as seguintes: S/370 Displace Storage 1) Ganhar a liberdade e bloquear a lista livre de matrizes de mme 2) Buscar a lista livre para a sequência maior de mme li vres adjacentes 3) arredondar as duas extremidades para limites de MB e calcular o numero de blocos (nblks), o número de blocos de 4 KB, em sequência 4) Se nblks >n_blks, ajustar nblks a n_blks (número de 4 KB pedido) e modificar o limite ppn de base 227
5) Retirar a sequência escolhida de mme da lista livre 6) Subtrair npages da contagem disponível do sistema 7) Desbloquear a lista de mme_arrays e renunciar â liber dade 8) Pôr: ppn = ppn de base rc = erro se nblks <n_blks rc = 0 se não houver qualquer erro. S/370 Replace Storage 1) Verificar que todas as entradas não estão ligadas, ajustar os indicadores para zero e encadear entre si as mme de maneira apropriada. Devolver erro, se existir qualquer problema 2) Gain_freedom e bloquear a lista de mme_arrays 3) Buscar a lista livre para procurar a boa localização para introduzir as mme a. Primeira candidata junto do ppn de base b. Segunda candidata no fim da lista 4) Introduzir todo o bloco na lista livre 5) Adicionar npages de novo nas contagens disponíveis no sistema 6) Desbloquear a lista mme_arrays e renunciar â liberdade. S/370 Open Storage 1) Procurar a entrada da tabela deste processo e procurar um furo na sua memória virtual, num limite pmb, suficientemente grande para o n_blks de MB. Assegurar -se de que há mme deslocadas suficientes para o servi ço pedido. Devolver erro se houver algum problema. 2) Se necessário, atribuir espaço cablado para os pmb e as apte 3) Estabelecer toda a estrutura mme cabladas e ligadas mme.aptep- <apte pme.aptep- <.apte todos os indicadores estão ajustados apropriadamente apte.ptep-< pte 4) Ligar a cadeia pmb construída de novo com a cadeia 228 pmb de tarefas.
Close Storage 1) Procurar a entrada da tabela deste processo e procurar os pmb construídos por stopen_storage. Retroceder se não se encontrar nenhum. 2) Desligar estes pmb da cadeia de pmb do processo. 3) Para cada apte, chamar setup_j?tw para censurar a distribuição de posições real 4) Devolver o espaço cablado para pmb e apte para o sistema operativo. 5) Devolver as mme para a rotina DISPLACE_STORAGE.
Gain Freedom 1) Obter o endereço do argumento give-take 2) Passar â fase 7, se se renunciar à liberdade
Se fases seguinte ganham a liberdade 3) Executar uma transferência (13), que faz com que o sistema operativo regresse ao chamador enquanto no e£3 tado supervisor. 4) Obter o endereço da pilha do utilizador e permutar com o apontador da pilha do sistema. 5) Conservar o endereço da pilha do sistema no apontador da pilha do utilizador 6) Regressar ao chamador no estado supervisor na pilha do utilizador
As fases seguintes renunciam ã liberdade. 7) Reaver o endereço da pilha do sistema e fazer a permu ta com o apontador da pilha do sistema 8) Recolocar o endereço da pilha do utilizador no aponta dor da pilha do utilizador 9) Modificar a pilha de modo que o processador de transferências retorne â fase 11 10) Retornar ao processador das transferências 11) O processador das transferências retorna ao utilizador 12) Retornar ao chamador no estado do utilizador da pilha do utilizador. 229
Ι!ώ 5. Retirar a sequência de mine escolhida da lista livre FIRST MME pertence â primeira mme na se quência que deve ser retirada, o ppn de base contém o seu ppn (número da página física). LAST MME pertence ã última entrada mme na sequência. Se a FIRST MME estiver na cabeça da lista (o seu campo mme anterior igual a zero) o apontador da lista livre é ajustado igual ao campo next_mme da LAST MME; assim, a mme se guinte da LAST MME está agora na cabeça da lista. Por outro lado, o campo da mme seguinte da mme anterior ã FIRST MME é ajustada igual ao campo next_mme da LAST MME. SE houver mme a seguir a LAST MME (o seu campo mme seguinte não zero), o campo mme anterior da mme a seguir a LAST MME é ajustado igual ao cam po da mme anterior da FIRST MME.
6. Escrita da base e da dimensão da memória para a STCI
Depois de ter sido "roubada" do sistema operativo S/88, a memória ê dividida entre os processadores S/370, de acordo com os requisitos estabelecidos no ficheiro de configuração. Forma-se uma matriz de configuração da memória nu clear S/88 contendo o ppn básico e o n blks para cada processador S/370. 0 termo n blks significa o número de mega-octetos contíguos de memória. É igual ao número de mme (não retiradas) roubadas, dividido por 256. Quando se inicia a tarefa EXEC370 para cada processador S/370 no seu processador S/88 respectivo, ela usa os valores do ppn de base e de n blks correspondentes para reunir uma palavra da interface STCI. Esta palavra é depois escrita no endereço virtual 007E01FC (no espaço de endereços da memória local (210) provocando a inicialização dos registadores (404) e (405) (fig. 32B) da STCI transparentes ao sistema opera tivo S/88. O mecanismo de desacoplamento (216) e a lógica (253) da interface BCU, descrito mais atrás com referência ãs fig. 19A, 20, é usado para inicializar os registadores . (404,405)
Porém, na forma de realização preferida, 230
Λ ·<*—‘-^eznescRzeaii ββ® como se mostra na fig. 32B, os registadores (404,405) são acoplados directamente à linha de dados do processador S/88 (161D) (em vez de à linha omnibus de dados (223) local BCU). A lógica de descodificação (280) da lógica (216) descodifica o endereço virtual referido atrás para bloquear AS proveniente dos meios físicos S/88 e devolver DSACK para o processador (62) . Os regijs tadores (404) e (405) são activados através da linha de selec-ção STCI (458) proveniente da lógica (253). Os bits 27-20 da pa lavra da interface STCI formam o endereço "básico" da STCI e os bits 23-20 formam o valor da "dimensão" da memória S/370. Os bits 19-0 são zeros.
Funções de inicialização para as interrupções S/88 iniciadas pelo S/370 Há vários cenários para dirigir as interrupções S/370 para o ou os processadores de interrupções residentes no S/88 sem o conhecimento do sistema operativo S/88. Descrevem-se três deles.
Um primeiro processo implica a modifica ção do núcleo do sistema operativo S/88, introduzindo o código do processador de interrupções S/370 no processador de interrup ções do primeiro nível do sistema operativo S/88, de modo que ele é reunido como parte desse módulo objecto. A tabela de vec-tores de interrupção está contida na fonte de assemblagem do processador de interrupções e os vectores usados pelo S/370 são modificados na fonte para apontar para o código do processador de interrupções S/370.
Este processo difere grandemente do pro cesso S/88 arquitectado da seguinte maneira: 1) Cada dispositivo de interrupção deve ser introduzido no ficheiro que o identifica, o nome do seu trajecto, o endereço do seu cartão, etc. para o sistema operativo S/88. 2) Quando o processador de interrupções do primeiro nível rece be a interrupção, ele estabelece as pilhas formatadas apropriadas, conserva todos os registos e registadores da máqui na, verifica a validade da interrupção e passa a interrup- 231
ção para um processador de interrupções "de segundo nível", que chama o código de interrupção do dispositivo escrito e£3 pecificamente pelo programador. 3) Quando tiver terminado o código de interrupção, ele devolve o controlo para o processador de interrupções do sistema operativo que toma a seu cargo os ambientes de restauração. O primeiro processo atrás referido contorna tudo isto. Reunindo os vectores de interrupção S/370 para apontar para a rotina de interrupção S/370, evitámos todo o pro cessamento de interrupção normal efectuado pelo sistema operati vo S/88 e nao temos de identificar o S/370 através do ficheiro do dispositivo. Isto é na realidade um desacoplamento dos meios de programação, visto que o código foi antes modificado pelos meios físicos. Este primeiro processo é o mais rápido e o menos dispendioso para conseguir a função de interrupção desejada. Po rém, este processo ê susceptível de uma manutenção adicional pa ra cada libertação subsequente do sistema operativo S/88. Ele exige pelo menos uma ligação nuclear e, se se tiver alterado o processador de interrupções, o código de interrupções S/370 tem de ser reinserido e de novo reunido o processador de interrupções .
Um segundo processo implica modificações dos vectores de interrupção do sistema operativo depois da inicialização do sistema, sendo este o processo implicado na descrição do mecanismo de interrupção por meios físicos da fig. 20.
Este segundo processo exige a colocação do código de interrupção S/370 no espaço de endereços virtuais do sistema operativo S/88 (na forma de realização preferida, precisamente por baixo de 007EOOOO) e a modificação dos vectores de interrupção apropriados no processador de interrupções do núcleo do sistema operativo. Este trabalho é feito pela roti^ na de inicialização S/370 depois de o sistema operativo se ter inicializado (ao mesmo tempo que a rotina de inicialização S/370 "rouba" memória). Como a rotina de inicialização está a modificar a área de memória do núcleo do sistema operativo S/88, ele tem de "ganhar liberdade" da maneira descrita para "roubar" memória na descrição anterior. Este segundo processo não exige a 232
!ί· ‘'—vt Www.. -'·> modificação da manutenção de cada núcleo do sistema operativo S/88 desenvolvido de novo. Porém, as interrupções S/370 não são funcionais até depois de o sistema operativo S/88 estar de pé e a funcionar.
Um terceiro processo implica a apresentação em meios físicos do conteúdo dos vectores de interrupção, sendo esta uma alternativa preferida poque não exige qualquer alteração no núcleos do sistema operativo S/88, isto é, não se faz qualquer alteração da tabela de vectores.
Este terceiro processo exige a colocação da rotina de interrupção S/370 no espaço de endereços virtuais do sistema operativo S/88 e/ou na memória local BCU, como um endereço conhecido de memória só para leitura (ROS). 0 ou os endereços da rotina de interrupção têm de estar disponíveis para os meios físicos S/370, de preferência em memórias ROS. 0 ce nãrio seguinte é dado para ilustrar este processo: 1) 0 S/370 (por exemplo o controlador DMAC (209) na BCU (156)) activa o pedido de interrupção. 2) A unidade de processamento S/88 (62) activa a confirmação de interrupção, os impulsos de sincronização de dados e os impulsos de sincronização de endereços. 3) A BCU coloca um número de vector de interrupção (poderia ser tudo zeros, para fácil reconhecimento ou desvio para o espaço de vectores da nossa ROS) na linha omnibus de dados (223) e activa a confirmação de impulsos de sincronização. Este número de vector não tem, excepto para a paridade váli. da, qualquer consequência para o processador (62). 4) Eventualmente o processador (62) efectuarã um ciclo de leitura da memória para obter o vector de interrupção de 4 oc-tetos. 5) A BCU reconhece este acesso específico da memória (pelo endereço virtual), desacopla o processador (62) da memória de acesso e apresenta o seu próprio vector de interrupção de 4 octetos (encaminhado a partir da memória ROS). A memória ROS do S/370 contém tantos vectores quantos os necessários, vários para o DMAC, um para a sincronização da ROS, etc.. , Este terceiro processo permite o desaco plamento durante a sincronização do cartão, para fins de 233 sincronização dos meios físicos S/370, etc.. Contudo, este processo exige mais meios físicos.
Ganho da liberdade sem modificar o sistema operativo S/88
Foi indicado atrás, em "Rotina de serv;L ço de arranque S/370" um processo que descreve como o programa de aplicação pode ganhar a liberdade, isto é, obter o estado su pervisor. Esse processo implica a escrita de uma rotina de chamada de serviço especial do sistema operativo "instrução de transferência 13" a adicionar ao núcleo do sistema operativo S/88.
Esta rotina de interrupção de transferência 13 não faz mais que "chamar" o programa criando a transferência na localização imediatamente a seguir à instrução da transferência. Como a rotina de interrupção de transferência es tá no estado supervisor, o programa em questão mudará para o es tado supervisor. Para retomar o estado de programa de aplicação; o programa de aplicação modifica o endereço de retorno ã pilha de interrupções e passa da "chamada" para a transferência 13 pa ra o código de interrupções de transferência 13, que sai da interrupção usando o endereço modificado da pilha de interrupções, Este processo implica a adição de uma rotina de interrupção ao sistema operativo S/88.
Um segundo processo elimina a modificação do sistema operativo em questão. Define-se um registador es_ pecial (não representado) no espaço de endereços da memória de comando BCU que, quando gravado pelo programa de aplicação, pro voca uma nova interrupção BCU, utilizando o terceiro processo para realização de interrupções atrás indicado. A rotina de interrupção de aplicação faz-se residente na memória só para leitura da BCU (não representada) e funciona da mesma maneira que o código da transferência (13) . A rotina de Ganho da Liberdade atrás descrita funciona exactamente da mesma maneira, excepto que grava o registador da BCU especial em vez de criar uma instrução de transferência 13. 234 «pMae*6*sr.
Roubo de memória sem modificar o sistema operativo S/88
Utilizando esta segunda forma de realização de Ganho da Liberdade, o "roubo de memória" não exige a reunião de qualquer código fonte de S/88 ou a ligação do núcleo do sistema operativo S/88. 0 endereço da cabeça da lista livre está disponível para o programa de aplicação.
Ligação da energia e sincronização de unidades simples e unidades emparelhadas (21,23) (Fig. 49,50)
Unidade de processamento S/88 como Processador de Serviço para a Unidade de Processamento S/370
1. INTRODUÇÃO
Esta secção descreverá resumidamente, com referência às fig. 49 e 50, alguns dos registadores, retentores e lógica dos meios físicos que determinam o estado de, e controlam e ajustam o ambiente para a sincronização de unidades parceiras, tais como (21,23) da fig. 7.
Adicionalmente, descrever-se-ão certas funções de microcõdigo para efectuar a inicialização, a sincronização e a ressincronização de unidades simples ou emparelhadas, Dirige-se a atenção primeiro para o sistema S/88 (a forma de realização preferida) que funciona essencialmente sem altera ção, relativamente â inicialização e à sincronização das unidades S/88, quer em ambientes de unidades simples, quer emparelha das. Este processo de funcionamento será descrito apenas resumi damente. Além disso, serão aqui repetidas certas partes da descrição da patente de Reid. A verificação de erros é efectuada ao mesmo tempo que cada elemento de processamento S/88 (60,62) (fig. 8) da unidade (21) excita a linha omnibus A (42) e a linha omnibus B (44). Esta operação concorrente está em contraste com as unidades 1/0 no módulo processador (9) que realiza pratd. • camente uma verificação de erros antes de excitar a estrutura . de linhas omnibus. A unidade de processamento (21) opera desta 235
maneira porque a distribuição de tempos na mesma ê suficientemen te importante para que qualquer atraso no funcionamento seja in desejável para o caudal de transmissão do sistema. Um erro nota do pela lógica de verificação durante o tempo em que a unidade de processamento está a actuar na estrutura de linhas omnibus faz com que a unidade aplique, quer um sinal de erro na linha omnibus A, quer um sinal de erro na linha omnibus B, à linha om nibus X (46), durante a fase seguinte do relógio do sistema.
Durante a mesma fase de relógio, a unidade de processamento central avariada (por exemplo a (21)) ac-ciona uma interrupção de manutenção de nível 1, na linha omnibus X (46), que é recebida pela unidade de processamento central parceira (por exemplo a (23)). No fim dessa fase de relógio, a unidade avariada sai de linha, tornando-se incapacitada para enviar outros sinais para a estrutura de linhas omnibus (30), excepto em resposta a uma interrogação a partir da unidade de processamento central parceiro. Este funcionamento fora de linha automático assegura que qualquer ciclo de leitura ou de escrita será abortado, quer para a unidade de memória (16, 18), quer para um dispositivo periférico através da unidade de controlo durante o qual se detectou um erro, quer no endereço, quer nos dados, para as linhas omnibus A ou B. Além disso, qual^ quer transferência de dados durante o mesmo ciclo de operação é repetida utilizando apenas a unidade de processamento central parceira.
Mais especificamente, o comparador (12f compara os dados de entrada que a secção de processamento (12a) recebe da linha omnibus A (42) com os dados de entrada que a secção de processamento (12b) recebe da linha omnibus B (44). Compara também os sinais de função, de endereço e de dados (incluindo a paridade) que a secção de processamento (12a) aplica aos emissores-receptores com sinais correspondentes, que a secção de processamento (12b) produz. Os sinais de distribuição de tempos e de controlo da secção (12a) são comparados com os sinais correspondentes provenientes da secção (12b). Esta compara ção de sinais de controlo internos verifica as operações inter-. nas dos elementos de processamento (60,62) e facilita a detec-1 ção pronta de avarias, sendo útil para o diagnóstico e a manu- 236
tenção da unidade do processador.
Em qualquer instante em que um ou mais sinais de entrada correspondentes para o comparador (12f) difiram, o comparador produz um sinal de Erro de Comparação, que é aplicado ao andar de controlo (86) . 0 erro pode ser o resultado de introdução de dados, um erro de exclusão de dados, um erro de função ou um erro de controlo. Pode também ser ou um erro de ciclo ou um erro de controlo devido a tempos ou sinais de controlo diferentes. A detecção de um erro por circuitos de contro lo de paridade produz um erro de paridade, que é aplicado ao an dar de controlo (86). 0 andar de controlo (86) responde ao sinal Compare Invalid e o ao sinal Parity Invalid para produzir, na fase de relógio seguinte (N + 1), um Erro de Processador. Ve rifica-se uma excepção a este funcionamento se o sinal Compare Invalid for devido a uma comparação inválida de sinais de dados durante uma operação de leitura. Nesse caso, o andar de controlo (86) produz o sinal de Erro de Processador apenas se não se tiver produzido nenhum Erro de linha Omnibus com a fase de tempo seguinte. Um sinal de Erro de Linhas Omnibus indica uma condição de avaria na estrutura de linhas omnibus (30) e portanto identifica que a comparação inválida de dados de entrada foi o resultado de uma avaria na parte de linha omnibus A ou na parte de linha omnibus B da estrutura de linhas omnibus (30) e não na secção de processamento (12a), nem na (12b).
Uma função do sinal de Erro do Processa dor consiste em desactivar os circuitos lógicos e portanto parar substancialmente o funcionamento na secção de processamento (12) da unidade (21) . Além disso, o sinal de erro na Linha Omni_ bus A e o sinal de Erro na Linha Omnibus B são aplicados na linha omnibus X (46) para sinalizar para todas as unidades no módulo (9) que devem ignorar a informação colocada na linha omnibus durante a fase imediatamente anterior, por exemplo, para ignorar a transferência na linha omnibus CPU. É aplicado um sinal de interrupção de nível 1 na linha omnibus X (46) para notjl ficar a unidade de processamento parceira (23) que alguma unida de no módulo detectou um erro que produziu uma avaria.
No início da fase (N + 2), o andar (86) ainda em resposta ao sinal de avaria, termina o estado asserti- 237 'λ ο: vo de direcção das linhas omnibus. Esta acção é acompanhada pela terminação dos sinais de Erro das linhas Omnibus. Quando a secção de processamento (12) se desliga do estado Director, ele desactiva todos os excitadores das linhas omnibus nos emissore£ -receptores (12e). Os excitadores dos emissores-receptores S/370 (13) são também desactivados através do controlo comum (75), sempre que esses emissores-receptores (12e) forem desactivados. Analogamente, no caso de ser produzido um sinal de Erro do Processador por um andar de controlo (75) da unidade (21) , os emi^ sores-receptores (12e), através do andar de controlo (86), e os emissores-receptores (13) são também desactivados.
Assim, as unidades de processamento (21,23) podem activar a estrutura de linhas omnibus apenas quan do no estado Director, como é necessário para produzir o sinal Bus Enable que é aplicado aos activadores. 0 sinal de Erro do Processador muda prontamente, isto é, no fim da fase temporal seguinte, o estado Director. No caso de a secção de processamen to (12) da unidade (21) produzir um sinal de Erro de Processador, a secção de processamento S/88 da unidade parceira (23) continua a funcionar substancialmente sem interrupção. Quando o sinal de Erro do Processador se verificar durante uma operação de escrita, a unidade processadora parceira (23) repete a transferência de dados. Quando o Erro de Processador surgir durante uma operação de leitura, a unidade parceira lê os dados repetidos que a memória aplica à estrutura de linhas omnibus nu ma fase temporal subsequente.
Além disso, a unidade de processamento parceira (23) responde â interrupção do nível 1, que é uma interrupção de baixa prioridade, para iniciar uma rotina de diagnóstico. No caso de do Erro do Processador parecer ser um feno meno transitório, isto é, se a rotina de diagnóstico não identjL ficar nem localizar qualquer avaria ou condição de erro, a unidade de processamento (21) pode ser restaurada para funcionamen to sem manutenção. Numa forma de realização preferida, a ocorrência da avaria transitória é registada e se for repetida um certo número de vezes, que pode ser arbitrado, a unidade de pro cessamento é retirada electricamente de serviço ou operação sem diagnósticos ulteriores. 238
Cada secção de processamento (12) das unidades (21,23) inclui circuitos lógicos, tipicamente no andar (86) de estados e controlo do processador, para levar as duas unidades parceiras à sincronização por arranque e paragem. A secção (12) atinge a sincronização por arranque e paragem sem a transição pelo estado Director. Cada secção (12) tem de estar no estado Director para aplicar sinais à estrutura de linhas om nibus. A sequência de inicialização armazenada em cada PROM (181) inclui tipicamente instruções para levar as secções emparelhadas ao sincronismo e para assegurar que nenhuma secção de processamento está inicialmente, isto é, depois de ser ligada, no estado Director.
As secções de processamento (12) das unidades (21,23) não estão em sincronização, inicialmente, na sequência de inicialização e uma unidade atinge o estado Director durante o ciclo multifásico antes do outro. A unidade que obtém o estado Director controla a operação de inicialização da outra unidade para a levar ao estado Director num instante se-leccionado.
Quando a secção de processamento (12) da unidade (21) for inicializada, ela nega um sinal interno de Verificação de Erro, impedindo assim que um sinal de Paridade Inválida ou um sinal de Comparação Inválida de produzir um sinal de Retenção do Processador. Em vez disso, a secção (12) exe cuta uma rotina de ensaio, tipicamente armazenada na PROM (181) que experimenta todas as condições que podem produzir um sinal de Erro de Processador. Ã medida que se vai criando cada condição potencialmente de avaria, a secção de processamento faz o ensaio para ver se é de factor produzido o sinal de participação da avaria correspondente. A ausência do sinal de Verificação de Erros inibe assim a unidade de processamento de atingir o estado Director, com o resultado de que as avarias produzidas durante a rotina de experiências lógicas não interrompem a unidade de processamento e não são comunicadas a estrutura de linhas omnibus (30) . A rotina de ensaio na PROM (181) afirma o si^ nal de Verificação de Erro e activa o processador para assumir . o estado Director apenas quando se completar com êxito essa ro-1 tina de verificação. 239
As unidades de processamento S/370 (a forma de realização preferida) têm tipicamente meios físicos proporcionados para as funções de inicialização e serviço do processador através de um acesso "pela porta das traseiras" aos vários componentes e à lógica em cada micropastilha. Como isto é bem conhecido, apenas se descreve resumidamente.
Rotinas de programas para o ensaio auto mático e a inicialização são igualmente bem conhecidas, não sen do necessário descrevê-las aqui em pormenor. 0 que se realça nesta secção é o mecanismo por meio do qual o ensaio automático e a inicialização do S/370 é conseguido através do S/88, sem que os sistemas operativos, nem do S/370, nem do S/88, tenham conhecimento das permutas. As rotinas de ensaio automático e inicialização (STIO) para o S/370 são colocadas na PROM (181) (fig. 19C), na forma de realização preferida, juntamente com as rotinas para a sincronização dos elementos de processamento S/370 nas unidades parceiras, O S/88 funciona portanto como pro cessador de serviço do S/370. As atribuições 1/0 nas posições de memória do código S/88 na PROM (181) são proporcionadas no caso de certos estados S/88, ou outros conteúdos de registos, serem necessários para a realização do código S/370. A maneira como este código trata a sincronização consiste em transferir uma cópia com as posições na memória do conjunto de registadores no interior de uma unidade de processamento parceira primária (ou directora), tal como (21) (uma unidade que esteja a funcionar apropriadamente) para o conjunto dos registadores no interior da unidade de processamento parceira secundária (ou dirigida), por exemplo (23) (uma unidade que ainda não está a funcionar apropriadamente).
Antes de descrever os pormenores do tra jecto de acoplamento do S/88 ao S/370 para o mecanismo de sincronização, vai dar-se uma breve vista de olhos pela estrutura e o ambiente do módulo (9) da fig. 7. As características do sis^ tema operativo S/88 tais como a tolerância das avarias e a imagem de sistema único são preservadas para ambas as estruturas S/88 e S/370. 0 módulo (9) é constituído por uma ou mais unidades de processamento S/370 simples, tais como (21), ou pares de unidades de processamento duplicadas, tais como (21,23). Podem 240 incluir-se unidades S/88 simples ou duplicadas, tais como (12) ou (12,14) no módulo para executar apenas programas S/88.
Cada unidade de processamento S/370 inclui dois elementos processadores S/370, tais como (85,87) e dois elementos processadores S/88 tais como (62,64), como se mostra na fig. 7, sendo os pares de elementos de processamento operados com sincronização por arranque e paragem, como uma uni dade de processamento lógica simples. As unidades emparelhadas formam um dispositivo redundante, operado em arranque e paragem, entre si, para proporcionar uma unidade de processamento lógica com auto-verificação completamente tolerante das avarias.
Cada um dos elementos processadores S/370 (85,87) de um par é, em parte, um conjunto de micro pasti_ lhas S/370, tal como (150) (fig. 11). Os conjuntos de micropas-tilhas S/370 e o seu equipamento físico associado estão montados num cartão tipo S/38, tal como (101) (fig. 9A) para acoplamento com a estrutura de linhas omnibus S/88 (30); e estão acoplados a elementos de processamento S/88 respectivos através de circuitos lógicos de interface (89) e (91) (fig. 8). Nesta secção, o par de conjuntos de micropastilhas S/370 e o seu equipamento físico associado numa unidade de processamento, tal como (21), serão designados como uma entidade S/370 e os seus elemen tos de processamento S/88 correspondentes, tais como (60,62) e os equipamentos físicos associados serão designados por entidade S/88. As entidades S/370 executam programas de aplicação e chamam entidades S/88 para executar as operações I/O S/370, con forme for necessário, utilizando os dispositivos I/O e os programas S/88, de modo que os sistemas operativos, quer do S/88, quer do S/370, não têm conhecimento um do outro.
2. SINCRONIZAÇÃO DOS MEIOS FÍSICOS TOLERANTES DAS AVARIAS
Uma das características únicas e mais significativas das unidades de processamento S/88-S/370 é a sin cronização auto-determinada de qualquer unidade de processamento, tal como (21) , por um parceiro que simultaneamente está em processamento (23) . A entidade S/88 de cada unidade tem a capa- 241
cidade e a responsabilidade da sincronização de um parceiro novo ou avariado. Quando uma entidade S/88 de uma unidade assume esta responsabilidade, designa-se como a "directora". A sua par ceira, que sofre a sincronização, é designada por "dirigida". A estrutura de meios físicos/meios de microprogramas S/88 determina quando é necessária a sincronização e quem sincroniza quem. Os meios físicos/meios de microprogramas S/88-S/370 interligados utilizam esta mesma inteligência para seguir a condução do S/88 nas decisões de sincronização. Isto é, em qualquer instante, em que o S/88 determina que uma entidade S/88 (secundária) exige sincronização com a sua parcejl ra (directora), permite-se que essa sincronização progrida até um ponto apropriado depois de a entidade dirigida S/88 ter sido "afastada"; depois, a execução é desviada para a entidade S/370 correspondente. As entidades S/370 são sincronizadas pelos elementos processadores S/88 executando códigos provenientes da PROM (181) para extrair o estado Director S/370 e restaurar esse estado em ambos os parceiros S/370.
Uma qualquer do par de entidades parceji ras pode assumir o papel de directora ou de dirigida na sincronização das unidades de processamento, quer o pedido seja feito por uma Ligação Inicial da Energia, pelo aparecimento de uma no va unidade parceira ou por perda de sincronismo (qualquer dos casos forçando uma interrupção). Em cada caso, a entidade S/88 dirigida reconhece o seu estado e depende da entidade S/88 directora para a sincronização.
As entidades S/88 directora e dirigida assumem os seus papeis respectivos como resultado dos seus esta dos respectivos no instante em que ocorre a interrupção de manu tenção. As entidades S/88 de todas as unidades de processamento detectam e processam a interrupção, admitindo cada uma delas que é uma unidade dirigida até ser estabelecida uma unidade directora, sem avaria. A unidade directora afasta então qualquer dirigida que se mantém em sincronização de arranque e paragem, retomando cada uma delas o ambiente pré-esvaziado da directora (depois de retornar da interrupção).
Analogamente, as entidades S/88 desaco-plarão os processadores do resto da lógica, utilizam esses pro- 242 cessadores para emular o funcionamento do sistema operativo S/370 para estabelecer um estado pré-esvaziado idêntico no inte rior do par de parceiros S/370, restabelecendo depois o ambiente de execução normal e permitirão que o par de parceiros S/370 comecem a execução em arranque e paragem.
Uma situação que não exige sincronização:
Uma unidade de processamento simples é ligada a energia, isto é uma unidade tal como (21);
As situações que exigem sincronização sao:
Unidades de processamento duplicadas (por exemplo 21,23) são ligadas ã energia: A unidade (21) é inserida enquanto a sua parceira (23) processa normalmente; e
Uma unidade de microprocessamento tal como (21) detecta uma comparação com resultado negativo na sua parceira (23) e tenta a recuperação. A entidade S/88 tem facilidades de equipamentos físicos apropriados para estabelecer a sincronização. A secção de processamento S/370 tem meios físicos suficientes e os meios de programação ajudam a permitir que uma entidade diri_ gida seja inicializada exactamente no mesmo estado que a entida de directora. Isso inclui características tais como registadores de estados de leitura/escrita, registadores de modos suscejD tíveis de ser lidos, memórias "cache" susceptíveis de ser limpas, relógios susceptíveis de ser parados e aneis de contagem, etc..
Quando uma entidade S/370 que opera nor malmente na unidade (21) deve ser posta em sincronismo com a sua entidade S/370 correspondente numa unidade parceira (23), é necessário levar a unidade parceira S/370 ao mesmo estado que a unidade que opera normalmente. Este processo é simplificado na forma de realização preferida, emitindo uma QUEUE SELECT UP MES SAGE dos processadores S/88 (60,62) (sob o controlo do microcõ-digo S/370 de inicialização e sincronização na PROM (181)) para os processadores S/370 (85,87). Esta mensagem interrompe as aplicações do utilizador para não fazer outros pedidos de servi^ 243
r ço através do Sistema Operativo, para as BCU, tais como (156) durante o tempo de sincronização. Permite também que se complete a execução de todas as operações 1/0 incompletas.
Isso leva a entidade S/370 que funciona normalmente a um estado que é copiado para a memória (162), para ser usado pelas duas entidades S/370, depois da "separação" ("kickoff"). Nesta altura todos os registadores, contadores, apontadores e memórias tampões (contexto) no processador S/370, a memória "cache" S/370, a DLAT e o adaptador de linhas omnibus S/370 são copiados para a memória (162) , numa pilha ordenada. Quando o processo de sincronização se inicia, todos os quatro processadores físicos terão o contexto S/370 restaurado, carre-| gando esse contexto em todos os quatro processadores a partir da pilha comum. Ambos os processadores serão carregados com dados idênticos para os seus registadores, contadores e memórias tampão, iniciando então a execução do programa em sincronismo de arranque-paragem ou sincronismo completo. A entidade de processamento S/370 proporciona dois processos para aceder aos vários registadores e "memórias "cache" para sincronização. Um é o processo normal de leitura/escrita programado pelo utilizador, usando registadores (560,561) (fig. 49) que acoplam a linha omnibus de dados BCU lo cal (223) aos canais 0 e 1 do adaptador (154). O outro é uma so lução em série "pela porta traseira", a Facilidade de Suporte Integrada (ISF)/Interface de Suporte Integrada (USI) (540,541). Emulando a interface/protocolo SISF/USI em série do processador de serviço do conjunto de micropastilhas S/370, o mecanismo de sincronização das entidades S/88 podem aceder a qualquer e a to das as facilidades associadas com a entidade S/370. Quando for necessária a sincronização de uma ou mais entidades S/370, podem empregar-se ambos os processos. O trajecto normal é usado quando ele existir e o trajecto USI é usado nos casos restantes. É importante notar que esta parte do processo de sincronização e inicialização (isto é, para as enti dades S/370) tem de ser transparente para o sistema operativo S/88 que não tem conhecimento da presença da, ou da ligação a, . uma entidade S/370. Esta transparência é conseguida de uma ma-^ neira genericamente semelhante ã descrita atrás em relação às 244 k
li A
<T J
Jit__; operações 1/0 S/370. Isto é, a lógica de descodificação (280) descrita com referência à fig. 20, detecta um endereço 007EXXXX de cada vez que devem transferir-se dados entre o processador S/88 (62) e a lógica da fig. 49. Quando este endereço for desco difiçado pela lógica (280), ele acopla a linha omnibus do processador S/88 (1161A,161D) ao endereço BCU local e âs linhas om nibus de dados (247,223) através dos circuitos (217,218), como se descreveu antes. A lógica de descodificação dos endereços (562) dos registadores descodifica os bits de ordem inferior do endereço na linha omnibus (247) , para seleccionar um dos circu_i tos lógicos (549,550) ou registadores (560,561) para a transferência de dados com o processador (62).
Além disso, as interrupções nas linhas (562) e (563) são dirigidas para a lógica de interrupções S/88 (212) da fig. 20, através do circuito OU (292a). O sinal de pe-! dido de interrupção é activado na linha (562) quando se tiverem recebido dados na lógica (549) provenientes das micropastilhas S/370 para transferência para o processador (62). Um sinal de pedido de interrupção na linha (563) notifica o processador sobre ter-se completado a transferência de dados da lógica (550) para uma micropastilha S/370. Um pedido de interrupção na linha (562) notifica o processador (62) de que se receberam dados pela lógica (549) provenientes de uma micropastilha S/370 para a transferência para os processadores (62). Os pedidos de interrup ção são mantidos nas linhas (562) e (563) até aparecer um sinal IACK nas linhas (258c) e (258d), respectivamente. Os números de vectores para estas interrupções são derivados da lógica (564, 565) quando excitados por sinais IACK (258d) e (257e), respecti vamente, vindos da fig. 20. Os números dos vectores são usados pelo elemento processador (62) para aceder ãs rotinas de tratamento de interrupções respectivas. A facilidade de suporte integrada (ISF) (540) (fig. 49) representa uma entrada "pela porta traseira" pa ra a lógica no conjunto de micropastilhas (150). A ISF consiste numa linha omnibus de suporte (541) de 5 linhas que liga âs interfaces de suporte das unidades (USI) integradas nas micropas-. tilhas (85) e (151-154). Na fig. 49 está representada uma parte * da USI (542) . 245 A linha omnibus de suporte (541) representa uma interface em série com as seguintes 5 linhas: BIT OUT (dados para o conjunto de micropastilhas) linha (543) BIT IN (dados do conjunto de micropastilhas) linha (544) ADRESS MODE (controlo) (linha 545) SHIFT GATE (controlo) linha (547) A linha ADDR_MODE (545) sinaliza a trans ferência em série (deslocamento) quer de bits de endereço (nível superior) ou bits de dados (nível inferior) nas linhas BIT OUT/BIT IN (543,544). As linhas BIT OUT e BIT IN linhas (543, 544) são a interligação entre os registadores de deslocamento (SR), tais como (548), no interior de uma micropastilha e os re gistadores de deslocamento, (tais como (549,550). O número de bits deslocados entre um registador interno (548) e um dos registadores externos (549,550) é determinado pelo número de impulsos aplicados â porta de deslocamento (SHIFT GATE), linha (546) . O SET PULSE é usado para sincronizar as actividades internas das micropastilhas com base nos endereços ou nos padrões de dados precisamente deslocados para o interior da micropastilha. SET PULSE é activado depois de terminado o deslocamento para sinalizar a disponibilidade da informação do lado da micropastilha, por exemplo no registador (548). Isto significa que as actividades baseadas na informação podem ser iniciadas por exemplo a partir deste momento. O exemplo seguinte ilustra o funcionamento. Uma função de arranque é atribuída a um padrão de endere ço específico. Este endereço é deslocado para o interior de registadores, tais como (548), de cada micropastilha. Quando todos os bits do endereço tiverem sido transferidos, o descodifi-cador de endereços (551) , numa das micropastilhas, detecta o seu endereço. Ã transferência do endereço segue-se o SET PULSE. A descodificação e o SET PULSE formam um impulso de arranque in terno na saída da porta (552) . A parte específica da micropastilha de uma USI contém cadeias de controlos e dados, derivados da concepção específica da micropastilha. Para reter o estado corren- 246 te dos elementos de memória não afectados por uma operação de deslocamento, os relógios funcionais têm de ser parados antes da iniciação de quaisquer actividades USI. Os acessos à USI que necessitam da paragem do relógio como prê-requisito são definidos como "estáticos''. Os acessos dinâmicos ou funções são as operações que podem ser executadas enquanto as micropastilhas estão em funcionamento. 0 SET PULSE é usado para sincronizar as funções para as distribuições de tempos internas da micropasti-lha. As funções são descodificadas a partir do padrão de endere ços ou do padrão de dados no registador SERDES, adicionalmente encaminhadas por portas pela linha ADDR MODE (modo de endereço ou de dados):
Ajustar o estado da micropastilha no SERDES Ajustar o registador de modos no SERDES Carregar o registador de modos a partir do SERDES Ajustar o retentor de Pedido de Transferência de Suporte (SPR)
Repôr o retentor de Pedido Controlado do Processador (PCR] Funções dinâmicas adicionais, como for necessário para apoiar as micropastilhas individuais A linha omnibus de cinco fios em série
(541) da ISF, que proporciona um acesso "pela porta traseira" para as várias entidades endereçáveis no interior do conjunto de micropastilhas S/370 (150) está acoplada â Interface de Suporte das Unidades (USI) de cada micropastilha, por exemplo USI (542) da pastilha (85). A USI (542) proporciona um Registador de Endereços de 8 bits (566) e um Seriador/Desseriador (SERDES) (548) . O registador de endereços USI (566) recebe o endereço da micropastilha e o endereço da entidade objectivo no interior da pastilha, enquanto o SERDES (548) é o mecanismo actual de emis-são/recepção. A USI também proporciona lógica de sincronização para o mecanismo de deslocamento de entrada/deslocamento de saí da ("shift-in/shift-out).
Cada micropastilha no interior do conjunto de micropastilhas S/370 (150) é associada a um endereço ISF/USI de 4 bits (de ordem superior), por exemplo PE (85), ao controlador da memória "cache" (153), ao relógio (152), ao ada£ 247
'-Sr. tador (154), ao coprocessador em vírgula flutuante (151) e ã in terface STCI (155), sendo atribuídos os valores hexadecimais 2, 4,6,8 e A e B, respectivamente. Os 4 bits de ordem inferior do endereço ISF/USI definem a entidade da micropastilha interna (por exemplo, registador, função ou cadeia), endereçada pelos 4 bits de ordem inferior. 0 esquema de comunicações ê constituído por Cadeias de Deslocamento (denominadas também Cadeias de Funções) que, por sua vez, são constituídas por campos que identificam o comando, a micropastilha da fonte, a micropastilha do destino, os dados e a entidade objectivo no interior das micro-pastilhas. As cadeias de deslocamento são como segue:
Bits 0-7 - Função/Comando 8-11 - Unidade (de controlo) da fonte 12-15 - Unidade (detectada/controlada) objectivo 16-23 - Mensagem/dados 24-27 - Registador (escrito) controlado 26-31 - Registador (lido) detectado.
Estas Cadeias de Função são designadas por Cadeias de Deslocamento por causa da natureza em série da ISF/USI e pelo facto de as cadeias terem de ser "deslocadas" pa ra dentro/para fora da lógica (549,550) e dos registadores SERDES, tais como (548). O CAmpo de Comando da Cadeia de Função pode conter um Comando de Escrita/Controlo (E61) ou um Comando de Leitura/Detecção (F61). Um exemplo de uma Cadeia de Função é como segue: E602XX10 = Escrever para o Registador de Modo do processa dor (85) onde E6 = comando = escrever 0 = endereça da fonte - PE (62) para ensaio 2 = Destino - PE (85) XX = mensagem (dados) 1 = Registador Controlado (registador de modos) 0 = Registador de Detecção (nenhum, visto que o comando é uma "escrita")
As soluções para estabelecer a sincroni zação aqui descritas usam o código de programas S/88 armazenado 248 na PROM (181). 0 código faz determinações associadas com cada uma das quatro situações anteriores e ajusta indicadores em con formidade. As rotinas de sincronização utilizam então os indica dores para controlar o trajecto do código para efectuar a sincronização e/ou a inicialização apropriadas. Dois exemplos:
Determinar se ou não a memória num cartão particular S/88 estava comprometido por uma Falha de Energia e deve ser inicializado a partir do seu parceiro.
Determinar se ou não um cartão S/88 par ticular deve assumir o papel de DMPU (Defauted Master Processing Unit - Unidade de processamento directora sem avaria).
As subsecções seguintes (3 a 6) apresen tam duas realizações diferentes do mecanismo de sincronização. Uma é assistida por meios físicos e permite um processo com um menor "tempo para ficar pronto". Ele exige, evidentemente, circuitos de controlo adicionais pelo menos na entidade S/370 e po de ser melhorado para além da capacidade definida, expondo fisi^ camente certos circuitos de controlo S/88 à "interface" S/370. Esta "interface" é, na realidade o "acessãrio parasita" dos cir cuitos S/370 para os circuitos S/88. A outra forma de realização aqui defini da é apenas o microcõdigo, que permite o tratamento da sincroni zação S/370 pelas entidades do processador S/88 na emulação de um Processador de Serviço S/370. Esta técnica pode ser usada quando não forem críticos a eficácia e "tempo para ficar pronto" . 3. Numa Unidade de Processamento Simples (21) é ligada a ener-gia a) Realização em meios físicos
Esta situação pode ser provocada por qualquer das condições: 1. Esta unidade entra em linha em consequência de uma inicialjl zação da ligação da energia. 2. Esta unidade entra em linha em consequência de uma Recupera ção de Avaria da Alimentação de Energia.
Para as duas condições, o curso do cõdi 249
go e o mesmo: A entidade S/88 da unidade (21) executa uma porção da sua rotina de Ensaio Automático e Inicialização (STIR) e depois procura determinar se ou não o conteúdo da sua memória (16) associada estava comprometida (Estado de Avaria De Alimentação de Energia). Se sim, regressará ao trajecto de alimentação normal na rotina STIR. Se não, tentará determinar se tem uma unidade de processamento parceira ou σο-residente que possa ser a DMPU. Se encontrar uma, ela assumirá a responsabili dade de DMPU e tantará sincronizar quaisquer outras unidades de processamento. A entidade S/370 da unidade (21) simplesmente segue a direcção da entidade S/88. Isso faz-se pelo processador S/88 (62), executando o código residente na PROM (181) do S/88, completando o Ensaio Automático normal e depois determinando se é uma Ligação da Energia Inicial ou uma "Recupe ração da Falha de Energia". Se for uma Ligação da Energia, continua com a inicialização normal; depois, admitindo que é a DMPU, tenta gerar um sinal SYNC. 0 sinal é captado pela lógica S/370, que força uma interrupção de nível 6 para o processador S/88 (62). A interrupção de nível 6 formará os vectores para o microcódigo de sincronização S/370 na PROM (181) S/88 (fig. 19A) (que é disposta nas posições num mapa do espaço de endereços S/88).
Entretanto, a partir da Ligação da Ener-gia/Inicialização, o PE S/370 (85) executou a sua própria rotina STIR, depois suspensa no seu Ponto de Sincronismo. Durante este tempo, o relógio S/370 (152) também se inicializou. A Sub-rotina de Serviço de Interrupção de nível 6 (ISS) (isto é, o mi crocódigo de sincronização S/370) usa a interface ISF/USI da fig. 44 para emular o Processador de Serviço S/370. Este Emulador SP produzirá Correntes de Funções para invocar a função IML da memória de comando S/370 (171), embora não ocorra qualquer transferência de código efectiva (o microcódigo está na PROM (181) S/88). A fase seguinte da Emulação IML é a difusão do sinal de sincronização SYNC para a entidade S/370 (processadores (85) e (87)), fazendo com que a unidade de processamento (21) comece a execução. A fase final da rotina ISS é o Retorno da In 250 ti Ir CZtt.: íhjss - -r.·' Λ'1 -ί* ^ ~ fl*aoa;xr.tsS^S«=5í3eSl^ terrupção, fazendo com que a unidade de processamento comece a execução da carga IPL.
Como parte da execução "podule_start-up, .cm" da unidade de processamento S/88 será emitida uma corrente de Funções emulada do processador de serviço "IPL Button Pushed' para a unidade de processamento para efectuar a função IPL, car regando a memória principal S/370 a partir de um disco. A fase final da IPL é então passar o controlo para o endereço especifi cado na posição 0. B. Forma de realização com apenas o Microcódigo A entidade S/88 da unidade (21) executa o seu Ensaio Automático e a Rotina de Inicialização (STIR) e de pois determinará se é uma Ligação Inicial da Energia (IPO) ou uma Recuperação de uma Falha de Energia (PFER). Se for uma IPO, o código determina que a unidade (21) é uma entidade simples e procede ã carga do Sistema Operativo e executa a rotina de "arranque" .
Se for lima PFR, o código determina se ou não está incluída a sua memória associada. Se foi, o código prossegue como se se tratasse de uma IPO. Se a memória for encontrada com o seu conteúdo intacto, o código PFR continua com as tarefas de re-arranque normais.
Em qualquer dos casos anteriores, a fun ção de sincronização torna-se uma operação "simulada", pois não há parceiro associado para ser sincronizado. 4. Nas Unidades de Processamento Duplicadas (21,23) é ligada a energia - Forma de realização em meios físicos
Esta situação pode ser provocada por uma ou as duas condições seguintes: 1. Estas unidades entram em linha como resultado de uma ligação da energia/inicialização 2. Estas unidades entram em linha como resultado de uma recupe ração da energia avariada. - 251 -
UL vs:.^=:r A entidade S/88 de cada unidade de processamento (21,23) executa uma parte da sua rotina de Ensaio Au tomático e Inicialização (STIR) e depois procura determinar se ou não o conteúdo da sua memória (16) associada foi comprometido (estado de falha de energia). Se sim, regressará ao trajecto normal na rotina STIR de ligação da energia. Se não, tentará de terminar se tem uma unidade de processamento parceira ou co-re-sidente que possa ser a DMPU ou se sim ou não é a DMPU. Se for, tomará a responsabilidade de DMPU e tenta sincronizar quaisquer outras unidades de processamento. Se não for a DMPU, prosseguirá para o Sync Point e aguardará o sinal SYNC.
Cada entidade S/370 simplesmente segue a direcção da entidade S/88. A entidade S/88, que executa o código residente na sua PROM (181), completa o Ensaio Automático normal e depois determina se é uma Ligação da Energia ou a Recu peração de uma Falha de Energia. Se for uma Ligação da Energia, continua a inicialização normal; depois prossegue para o Sync Point. Se for uma Recuperação de uma Falha de Energia, i examinada a memória "cache" para determinar se sim ou não é válida. Se for, pode ter de actualizar a sua memória parceira, se essa memória "cache" foi encontrada inválida. Se a sua própria memória "cache" estiver inválida tem de depender da sua parceira ac tualizá-la com o conteúdo válido da memória "cache". Se nenhuma das parceiras puder assegurar a memória válida têm de, como um par, continuar a Ligação de Energia e Inicialização normal. Enquanto as entidades S/88 do par de unidades de processamento se aproxima do SYnc Point, cada entidade S/88 determina se ou não tem de assumir a responsabilidade de DMPU. Se verificar que é a DMPU, ela tenta produzir um sinal SYNC. 0 sinal Sync é capturado pela lógica S/370 e força uma interrupção de nivel 6 para a entidade S/88. A interrupção formará os vectores para o microcódigo de sincronização S/370 na PROM (181) (que está nas posições no espaço de endereços S/88) . Entretanto, a partir da Ligação da Energia/In_i cialização, a entidade S/370 (por exemplo os elementos de processamento (85,87)) executou a sua própria rotina STIR e depois suspendeu a execução no seu Sync Point. Se for uma Recuperação de Falha de Energia, a entidade S/370 prossegue por um processo 252
Ra wuaaur, ijust·· análogo ao processo da entidade S/88 para determinar até onde tem de retroceder-se na rotina de inicialização para garantir a integridade da memória e a sincronização. Durante este tempo, o relógio S/370 inicializou-se a si próprio.
Vai agora fazer-se uma descrição resumi_ da de um mecanismo preferido para a captação do impulso SYNC S/88 pelos processadores S/370, com referência âs fig. 20, 49, 50.
Os processadores S/88 obtêm a sincronização pelo envio, por um do par de processadores S/88 da unidade (23), de um sinal SYNC OUT na linha (570) (fig. 50). Se a unidade parceira foi inicializada e efectuou o ensaio automático e determinou não estar BROKEN, ela tem um nível do sinal na linha BROKEN (571), que é invertido pelo circuito (572) para en caminhar o sinal SYNC OUT através da porta AND INVERT (AI) (573)
No sistema S/88 original (por exemplo o módulo (10)), o sinal SYNC era aplicado à linha SYNC IN (580) do excitador (d) do processador S/88 de uma unidade (14) através da linha (577) e do inversor (574). É também aplicado â linha SYNC IN (575) do processador S/88 de verificação da unidade (12), através da linha omnibus C e do inversor (576) para iniciar a "separação" de todos os quatro processadores S/88 de uni_ dades (12,14) em arranque e paragem.
Nas unidades S/370-S/88 aperfeiçoadas, tais como (21,23), a saída (577) do circuito (573) é desligada das linhas SYNC IN (580) e (575) para impedir a separação dos processadores S/88. Em vez disso ê ligada através da linha (581) para ajustar um flip-plop (FF) (582) na BCU (156) da unidade parceira (21), fig. 48. Também ajusta um flip-flop corresponden te na BCU parceira (não representada) na unidade (21) . A descrjÍ ção refere-se apenas a um S/370 e ao equipamento físico associa do na unidade (21) , mas compreender-se-ã que as duas entidades S/370 operam de maneira semelhante. O flip-flop (582) aplica um sinal de in terrupção de nível 6 ao processador S/88 (62) através da linha (583), dos circuitos OU (292a e 292b) (fig. 20), da lógica de interrupção (293) e das linhas IPO-2. Esta acção é designada por "captura" do sinal SYNC S/88 pelo S/370. 253
Admite-se que as entidades S/370 da uni^ dade (21) executarem com êxito as suas rotinas de ensaio automá tico e inicialização (STIR) e estão prontas para a separação.
Como atrás de descreveu com referência à fig. 20, relativamente ao outro DMAC e interrupções BCU de ní vel 6, o processador S/88 (62) inicia um ciclo de confirmação da interrupção em resposta a um sinal SYNC na linha (583). O cõ digo de funções e os sinais do nível de prioridade provenientes dos processadores (62) são descodificados na lógica (281), faz--se um pedido da linha omnibus local pela linha (190) através da saída (283) da lógica de descodificação (281) e da porta (291) , da linha (287) e do circuito OU (284).
Quando for concedido um ciclo da linha omnibus ao processador (62) na linha (191) ele (juntamente com I sinais na linha SYNC (583), na linha AS (270) e na linha de de£3 codificação (283)) activa a porta E (295-4), para aplicar um si nal na linha IACK (258f). Este sinal é aplicado à lógica dos bits do vector (584) (fig. 49) para aplicar um número de vector apropriado ao processador S/88 através da linha omnibus local S/88 (233), dos emissores-receptores (218) e da linha omnibus do processador (161D). O sinal na linha (258f) também repõe o flip-flop (582).
Se a função STIR S/370 jã estiver comple ta, como se admitiu, o processador S/88 (62) executa um ciclo de leitura para obter o número do vector, que é depois usado pe lo processador (62) para aceder â primeira instrução de uma rotina de interrupção para a sincronização S/370. A última instrução da rotina de sincronização gera um comando SYNC que aplica um sinal SYNC ã linha (586) (fig. 50).
Este sinal é aplicado âs linhas SYNC (580) e (575) para "separar" os processadores S/88 (bem como os S/370) das unidades parceiras (21,23) em arranque-paragem.
Como uma parte da execução de "module start up em" será enviada uma sequência de funções emulada SP "IML Button Pushed" para as entidades S/370 nas unidades (21, . 23). Em vez de executar toda a operação de carga IPL completa 1 dos acessos aos DASD, etc., esta carga IML cmtocircuitarã os 254 processos 1/0 e fará a carga a partir da memória principal S/88. 0 código EXEC370 terá já buscado o código IPL a partir dos DASD e colocado o mesmo na memória principal S/88, aguardando a IPL. A fase final da IPLL é então passar o controlo para o endereço especificado pela posição 0. B. Forma de realização apenas como microcõdigo
Quer para os cartões PU a que se ligou a energia em consequência de uma ligação inicial (IPO), quer em consequência de uma Recuperação de uma Falha de energia (PFR).
Considerando primeiramente o caso da IPO:
Em consequência do sinal Power Good S/88 que está a ser declarado pelo IPO, uma interrupção de manu tenção invoca o código da PROM (181) S/88. Este código sincroni za a entidade S/88 da unidade (21) , depois chama a rotina STIR S/370, também residente na PROM (181). A rotina STIR S/370 determina que, tratando-se de uma IPO, não foram carregadas facilidades suficientes para permitir que ela se inicialize e se sincronize, requerendo as facilidades do S/88 e do seu Sistema Operativo. Como consequência disso, a rotina STIR S/370 regressa, sem qualquer outra acção, ao código da PROM (181) S/88 que procede ã carga do Sistema Operativo. Como parte da inicializa-ção do Sistema Operativo, é chamado um módulo "Start up". Este módulo também chama a rotina STIR S/370 residente na PROM (181). Nesta altura, a rotina STIR determina que estão disponíveis as facilidades e utiliza as mesmas para sincronizar então a própria "Initial Mncrocode Load" (IML).
Em segundo lugar para o caso de uma PFR:
Como consequência do sinal S/88 Power Good declarado pelo IPO, uma Interrupção de Manutenção invoca o código S/88 da PROM (181). Este código sincroniza a entidade S/88 da unidade (21), depois chama a rotina STIR S/370, também residente na PROM (181). A rotina STIR S/370 determina que, sen do uma PFR, estão disponíveis as facilidades necessárias e procede à sincronização e â inicialização da unidade S/370 ou uni- 255
dade (21). 5. É introduzido um parceiro (23) enquanto a outra unidade (21j funciona normalmente A. Forma de realizagão com meios físicos
Será enviada uma interrupção de nível 6 para a entidade S/88 da unidade corrente (21) após a inserção de um novo cartão. Enquanto a nova unidade de processamento está a executar a sua rotina STIR, a unidade de processamento cor rente reconhecerá a interrupção de nível 6. 0 nível 6 ocupa-se do processo de arquivar o ambiente de tarefas prê-esvaziadas, determinando se a nova unidade de processamento está em linha; e, quando ela estiver, repõe a interrupção. Como uma função de reposição da interrupção, as duas unidades procederão â sincronização por arranque e paragem, retomando a tarefa pré-esvazia-da. B. Forma de realização só com o microcódigo
Como consequência de se introduzir o no vo cartão, uma Interrupção de Manutenção invoca o código S/88 na PROM (181) . Este código re-sincroniza a entidade S/88 da uni dade (21), chama depois a rotina STIR S/370, também residente na PROM (181). A rotina STIR S/370 determina que, sendo isto se melhante a uma PFR, estão disponíveis as facilidades necessárias e procede â sincronização e à inicialização da entidade S/370 da unidade (21). 6. Um parceiro detecta uma falha de comparação A. Forma de realização por meios físicos A unidade de processamento avariada será forçada para a sua rotina STIR, enquanto a unidade de process sarnento que funciona normalmente será interrompida por uma in-• terrupção de nível 6. A sub-rotina de Serviço de Interrupção de . nível 6 executará o processo de arquivar o ambiente de tarefas - 256 -
pré-esvaziadas, determinando se a nova unidade de processamento está em linha e, se estiver, retornará da interrupção. Como uma função do retorno da interrupção, as duas unidades prosseguirão na sincronização por arranque e paragem, retomando a tarefa pré -esvaziada. Se a unidade de processamento avariada falhar na saída da sua rotina STIR correctamente (por exemplo uma vez ou num número escolhido de tentativas), a unidade de processamento que funciona normalmente ajustará, após um tempo apropriado, um sinal BROKEN para a parte S/88 da unidade de processamento avariada e as suas várias facilidades referentes aos estados. I B. Forma de realização com apenas o microcõdigo
Como consequência da detecção de uma fa lha na comparação, e estando o cartão fora de linha, uma Interrupção de Manutenção invoca o código S/88 na PROM (181), Este código re-sincroniza a entidade S/88 da unidade (21), depois | chama a rotina STIR S/370, também residente na PROM (181). A ro tina STIR S/370 determina que, sendo semelhante a uma PFR, estão disponíveis as facilidades necessárias e procede à sincrond. zação e à inicialização da entidade S/370 da unidade (21). Resultará uma nova falha de comparação sendo repetida a mesma ac-ção. Depois de um número pré-determinado de iterações, o cartão será posto fora de linha definitivamente e participada uma avaria.
Formas de realização alternativas 1. Utilização noutros (não S/88) sistemas tolerantes das ava-rias
Na forma de realização preferida, os meios físicos tolerantes das avarias têm, como se tem verificado, pelo menos três características. Há um isolamento eléctrico instantâneo de uma unidade substituível no campo, sem a propaga ção de erros de dados para outro elemento do sistema. Ê proporcionado um código de reconfiguração dinâmica para retirar ou • adicionar componentes, como se tornar necessário ou quando os . componentes se avariarem. Proporciona-se a capacidade para des- 257 ligar a energia e ligar a energia a um subsistema ou unidade substituível no campo, sem a perda do sistema, isto é a capacidade de enfichar unidades com a alimentação ligada. 0 utilizador não nota qualquer perda de funcionamento ou de eficácia.
Compreender-se-á que os presentes aperfeiçoamentos podem ser usados em diferentes ambientes tolerantes das avarias, tais como sistemas tolerantes de avarias nos meios de programação sem certos dos requisitos estritos anterio res.
Um exemplo de um outro sistema (sem cer tos dos requisitos estritos anteriores) com o qual pode usar-se o presente aperfeiçoamento está descrito na patente US 4 356 55C, intitulada "Microprocessar System", publicado em 26 de Outubro de 1982, em nome de James A. Katman, et al. Na fig. 1 desta patente três subsistemas de processamento operam assincronamente uns com os outros e estão acoplados a linhas omnibus duplicadas, Se um sistema se avariar, os restantes dois continuam a execução do programa. Todos os erros são determinados em pontos de verificação no programa, em vez de instantaneamente, como na forma de realização preferida segundo a presente invenção.
Os processadores, tais como os processa dores S/370, estranhos aos subsistemas da patente, podem ser li gados aos referidos subsistemas de uma maneira análoga ã representada na presente invenção relativamente ao S/88. Utilizando e controlando linhas seleccionadas nos subsistemas da patente de uma maneira semelhante ã descrita com referência à linha de impulsos de sincronização de endereços (AS) da presente invenção, os processadores dos subsistemas podem ser desacoplados pa ra permitir a sua utilização como controladores de 1/0 para os processadores estranhos parasitas ligados. 2. Transferências de dados directa entre controladores 1/0 S/88
Na forma de realização preferida, admite-se que a memória "cache" (340) pode ser a memória exclusiva para alguns dados I/O válidos (em vez da memória (162) , que armazena todos os dados válidos de dados I/O), como é o caso ac-tualmente nos sistemas de memória "cache" S/370. Na forma de - 258 -
realização da fig. 51, na qual-'Sg''admite que a memória (162) ar mazena todos os dados 1/0 válidos, as transferências de dados 1/0 podem ter lugar directamente entre um dispositivo 1/0 S/88, tal como um controlador de discos (20) e a memória S/370 (162) para uma operação mais eficiente.
Contudo, desta forma de realização alternativa, a BCU (156) pode ainda ser usada para transferir comandos 1/0 S/370 para o S/88. Os endereços da memória S/370 associadas com os comandos têm de ser alterados para endereços fl sicos S/88 pelo código EXEC370, enquanto que os comandos são convertidos para comandos S/88.
Durante as transferências de dados da memória (162) para dispositivos 1/0, um processo é primeiro lim par a secção da memória "cache", relacionada com a operação I/O. para a memória (162) antes de efectuar a operação I/O.
Durante as transferências de dados dos dispositivos I/O para a memória (162), a secção da memória "cache" relacionada com a operação 1/0 é invalidada antes de efectuar a operação I/O.
Se for necessária uma conversão de dados, a função pode ser executada no ou nos controladores dos dispositivos I/O, por rotinas semelhantes âs usadas pelo EXEC 370 no interior do processador S/88 (62). A conversão de dados pode também ser efectuada pela chamada pela aplicação EXEC370 de rotinas de con versão no sistema operativo S/88, tais como a conversão de ASCI" para EBCDIC. 3. Desacoplamento dos dois processadores de um par ligado directamente A fig. 52 ilustra o fluxo de dados para uma forma de realização alternativa, na qual ambos os processadores de um par de processadores acoplados directamente são de-sacoplados dos seus meios físicos associados, de preferência de uma maneira genericamente análoga â descrita com referência ao processador S/88 (62) da forma de realização preferida para 259 transferir comandos e/ou dados entre os processadores de uma ma neira transparente aos seus sistemas operativos.
Dois processadores (640) e (641) estão acoplados entre si através de linhas omnibus (642) e (643) dos processadores, circuitos excitadores/receptores (DRV/RCVR) (644) e (645) e uma unidade de memória local comum (646) . Os processa dores (640) e (641) podem ter a mesma arquitectura ou arquitectu ras diferentes e o mesmo sistema operativo ou sistemas operativos diferentes. Cada processador (640) e (641) pode ter os seus próprios meios físicos (não representados), incluindo a memória principal e dispositivos I/O para o processamento normal de pro gramas sob o controlo dos sistemas operativos respectivos. Nenhum dos sistemas operativos tem conhecimento da existência do processador associado com o outro sistema operativo nem do acoplamento com esse processador.
Mas quando o processador (640) desta forma de realização alternativa for controlado por um programa de aplicação para enviar comandos e/ou dados para o processador (641) , de preferência ele coloca um endereço pré-determinado na linha omnibus de endereços do processador (647) que é descodifi cado pela lógica (648) para fazer com que os circuitos (644) acoplem a linha omnibus (642) â memória local (646) através da linha omnibus local (652) para a transferência de comandos e da dos do processador (640) para a memória (646). A descodificação do endereço também desacopla o processador (640) dos seus meios físicos associados para tornar a transferência transparente para o sistema operativo do processador (640) . O desacoplamento da lógica (649) interrompe o processador (641) quando os comandos e/ou os dados 1/0 destinados ao processador (641) tiverem sido transferidos para a memória local (646). 0 processador (641) (através do seu dispositivo de tratamento de interrupções do programa de aplicação) é desacoplado dos seus meios físicos e lê os comandos e/ou os dados da memória (646) para a sua memória principal (não representada) , de uma maneira transparente ao seu sistema operativo. Se os comandos e/ou os dados exigirem conversão, o processador (641) utiliza o microcódigo de emulação na memória (650) para executar a conversão requerida. O processador (641) processa en 260
tão os comandos convertidos sob o controlo do seu sistema opera tivo.
Compreender-se-á que o "desacoplamento" dos processadores (640) e (641) pode permitir a transferência contínua de um segmento substancial de comandos e/ou de dados para e da memória local (646) antes do reacoplamento" de cada processador aos seus meios físicos ser permitido. Deste modo, conseguir-se-ão transferências de dados rápidas e eficientes.
Os comandos e/ou os dados podem ser transferidos no sentido oposto, do processador (641) para o pro cessador (540), de uma maneira análoga. Os comandos e/ou os dados podem ser convertidos quando necessário pelo microcódigo de emulação situado na memória (651) e os comandos convertidos podem ser processados no processador (640) sob o controlo do seu sistema operativo.
Esta forma de realização alternativa di fere num aspecto significativo da forma de realização preferida isto ê, o processador "indicador" da transferência de dados é desacoplado dos seus meios físicos para emitir dados para o pro cessador "receptor". Isso exige a função adicional do controlo da transferência para um programa de aplicação semelhante ao EXEC370/ETIO da forma de realização preferida quando se tiver que efectuar uma função I/O (transferir comandos e/ou dados para outro processador).
Os meios para efectuar a transferência de controlo para certas operações I/O de um sistema operativo para um programa de aplicação dependerão das características do sistema.
Por exemplo, na forma de realização pre ferida, o S/370 executa uma instrução I/O de Arranque, que é processada pelo sistema operativo de uma maneira normal sem "de sacoplamento" do processador S/370 dos seus meios físicos associados.
Na forma de realização alternativa da fig. 52, para os casos em que o processador S/370 (640) emite comandos e/ou dados para o processador (641), pode usar-se um OP CODE inválido seleccionado em vez da instrução Start I/O. A descodificação do OP Code inválido seleccionado transfere o con 261 ^ -5 --- -**·-»! *'**'»'» ·**·** trolo para um programa de aplicação especial que "desacopla" o S/370 dos seus meios físicos para a transferência de informação com o processador (641), através da memória (646) .
Para impedir o excesso de escrita por um processador de dados transferidos pelo outro processador para a memória (646), o processador (640) pode ser controlado para escrever em apenas uma secção específica da memória (646) e o processador (641) é controlado para apenas ler a partir da re ferida secção. 0 processador (641) tem permissão para escrever apenas numa segunda secção da memória (646) e o processador (640) pode ler apenas a partir da referida segunda secção. Os processadores (640) e (641) são inibidos de escrever para, res-pectivamente, as referidas primeira e segunda secções.
Os mecanismos de desacoplamento e inter rupção são operados de maneira transparente para os sistemas operativos dos dois processadores (640) e (641), como se descre veu com referência ao processador S/88 (62) da forma de realiza ção preferida.
As funções de emulação podem ser executadas por programas de aplicação (em vez de por microcódigo na memória local), da mesma maneira que se descreveu relativamente ao EXEC370, na forma de realização preferida.
Podem usar-se técnicas de inquirição em vez do mecanismo de interrupção para transferir dados entre os processadores (640,641); porém, tais técnicas seriam ineficientes.
Compreender-se-á que, como cada um dos processadores (640) e (641) pode realizar operações I/O para o outro processador, qualquer dos processadores pode adquirir cer tas características do ambiente I/O do outro.
Também se compreenderá que uma aplicação num processador pode comunicar para uma aplicação igual ou diferente num segundo processador sem usar os serviços do siste ma operativo de qualquer dos sistemas processadores.
Em algumas das reivindicações é usada a expressão "programa ou código de aplicação", no seu sentido con vencional, tal como é interpretado pelos entendidos na técnica do processamento de dados, isto é, tipicamente distinto do códi 262
J go do sistema operativo, da seguinte maneira: 1. Os programas de aplicação estão no topo de um sistema opera tivo e tipicamente têm de chamar o sistema operativo para serviços tais como Leitura, Escrita e Controlo de 1/0, hora do dia, etc.. 2. 0 código de aplicação arranca ou ê iniciado por um utilizador e é carregado através de serviços do sistema operativo. 3. 0 sistema operativo controla a chamada dos programas de aplí cação para e da memória. 4. 0 sistema operativo atribui memória principal aos programas de aplicação. Porém, um tal código de "aplicação” tem agora que executar funções adicionais. "Estranho" é usado em algumas das reivindicações para definir aparelhos que não são do conhecimento de um sistema operativo porque não são definidos nas tabelas de configuração do sistema operativo e portanto o sistema operativo não tem qualquer dispositivo actuador para o aparelho, não podendo controlar o mesmo. Porém, um programa especial de aplicação que é executado no sistema operativo tem conhecimento do aparelho e pode exercer controlo sobre o aparelho.
Nas reivindicações, "discernir" é usado no sentido de que um sistema operativo não tem conhecimento de aparelhos estranhos ligados a um processador no qual o sistema operativo ê executado, ou que são tomadas acções pelo processador que são isoladas do sistema operativo para impedir que o sistema operativo rejeite tais acções.
Na memória descritiva, o termo "transpa rente" foi usado com frequência com este mesmo sentido.
Embora a presente invenção tenha sido apresentada e descrita particularmente com referência a uma for ma de realização específica. Os entendidos na matéria compreenderão que as alterações e alternativas atrás sugeridas e várias outras alterações de forma e de pormenor podem ser introduzidas sem nos afastarmos dos ensinamentos da presente invenção. Pretende-se por isso que a descrição anterior e os desenhos anexos sejam interpretados como ilustrativos e não limitativos, preten dendo-se também que as reivindicações anexas cubram todas as a_l terações e modificações que estejam dentro dos verdadeiros espí. 263
Ví rito e objectivos da presente invenção. 264
ÍNDICE
Fundamento da invenção ................................ 3 INtrodução ............................................ 3
Sumário da invenção ................................... 3
Breve descrição dos desenhos .......................... 4
Descrição da forma de realização preferida ............ 9
Introdução ...................................... 9 1. Operação de um processador normalmente não tole rante para as avarias num ambiente tolerante para as avarias ..................................... 16 2. Desacoplamento de um processador do seu equipamento físico associado para apresentar comandos e dados provenientes de um outro processador a si próprio ........................................ 19 3. Apresentação de interrupções a um sistema tranjs parente para o sistema operativo .................. 23 4. Partilha de uma memória real entre dois ou mais processadores que executam sistemas operativos de memória virtual diferente ...................... 25 5. Imagem de um sistema único ........................ 30 6. Sumário ........................................... 36
Introdução do sistema/88 da técnica anterior ...... 37 Módulo S/370 tolerante de avarias (9) interliga do através de HSDI; redes ......................... 46
Descrição geral das unidades emparelhadas (21, 23) do processador ................................ 47
Acoplamento de elementos de processamento S/370 e S/88 (85/62) (fig. 11 e 12) ..................... 52
Interface (89) entre processador e processador .... 59 1. Adaptador I/O (154) ..................... 59 2. Linha omnibus dos canais 0 e 1 do adaptador I/O ........................... 68 3. Unidade de controlo de linhas omnibus (156) - Descrição geral ................. 74 4. Controlador do acesso directo à memó ria (209) ............................... 75 265
'/TO2SS «8»*
5. Unidade de controlo de linhas omnibus - Descrição pormenorizada ............... 83 a) Registadores de interface para tran^ ferência de dados de alta velocidade . 83 b) Lógica de desacoplamento da BCU e de interrupção .......................... 85 c) Atribuição de posições de endereços na memória na BCU ................... 95 d) Operação das linhas omnibus de endereços e dados locais ................. 99 e) Endereçamento do processador S/88 e do controlador DMAC para/da memória (210) ................................ 101
f) Operação do contador de octetos BCU (BSM) RD/WR.......................... 103 g) Sequências de transmissão com passa gem de testemunho BCU (156)/Adaptador (154) ............................ 107
Elemento processador S/370 (85) ....................... 109
Linha omnibus do processador e comandos da linha omnibus do processador .......................... 118
Unidade de gestão da memória S/370 (81) ............... 124 1. Controlador da memória "cache" (153) ........ 124 2. STCI (155) 126 a) Introdução ................................ 126 b) Fases da linha omnibus do sistema ........ 130 c) Característica da interface STCI ......... 134 d) Operações de memorização de dados ........ 142 e) Operações de busca de dados .............. 148
Suporte de 1/0 S/370 .................................. 153
Operações de I/O S/370. Vista geral dos meios de microprogramas .................................. 156
Concepção do microcódigo do sistema ................... 166 1. Introdução .................................. 166 2. Interface de programa ETIO/EXEC370 .......... 167 3. Protocolo do microcódigo S/370, EXEC370 ..... 174 4. Fluxos de instruções entre o microcódigo S/370 e EXEC370 ............................. 177 266
Funcionamento da unidade de controlo da linha omnibus BCU (156) ............................. 186 1. Introdução ................ 186 2. Fluxo da sequência Start 1/0 S/370. Descrição geral e pormenorizada .............. 189 3. Fluxo da sequência de transferência de dados 1/0 S/370. Descrição geral .......... 193 a) Operações de escrita 1/0 ............... 194 b) Operação de leitura 1/0 ................ 199 c) Fluxo de sequência de transferência de mensagens de prioridade elevada S/370 .. 204 d) Comando BCU STATUS ..................... 208 e) Reposição programada da BCU............ 209
Emulação do formato da pista de contagem, chave e dados ......................................... 210 1. O sistema objecto ......................... 210 2. O sistema objectivo ....................... 212 3. O formato de emulação ..................... 213 4. Funções de emulação ....................... 214
Partilha da memória real (16) pelo S/88 e o S/370 ... 215 1. Introdução ................................ 215 2. Distribuição de posições da memória S/88 (16) ...................................... 217 3. Processo de arranque ................... 223 4. Rotina de serviço S/370 ................... 224 5. Retirar a sequência de mme escolhida da lista livre ............................... 230 6. Escrita da base e da dimensão da memória para a STCI ............................... 230
Funções de inicialização para as interrupções S/88 iniciadas pelo S/370 .......................... 231
Ganho da liberdade sem modificar o sistema operativo S/88 ....................................... 234
Roubo de memória sem modificar o sistema operativo S/88 .......................................... 235
Ligação da energia e sincronização de unidades simples e de unidades emparelhadas (21,23) .... 235 267
Unidade de processamento S/88 como processador de serviço para a unidade de processamento S/370 ........................................ 235 1. Introdução ............................... 235 2. Sincronização dos meios físicos tolerantes das avarias .......................... 241 3. Numa unidade de processamento simples é ligada a energia ......................... 249 a. Realização em meios físicos ........... 249 b. Forma de realização com apenas o microcódigo ........................... 251 4. Nas unidades de processamento duplicadas (21,23) é ligada a energia ............... 251 a. Forma de realização com meios físicos . 251 b. Forma de realização com o microcódigo - 255 5. É introduzido um parceiro (23) enquanto a outra unidade (21) funciona normalmente. 256 a. Forma de realização com meios físicos . 256 b. Forma de realização só com o microcódigo .................................. 256 6. Um parceiro detecta uma falha de comparação .................................... 256 a. Forma de realização por meios físicos . 256 b. Forma de realização com apenas o microcódigo ........................... 257
Formas de realização alternativas .................. 257 1. Utilização noutros (que não o S/88) sistemas tolerantes das avarias .......... 257 2. Transferências de dados directa entre controladores 1/0 S/88 ................... 258 3. Desacoplamento dos dois processadores de um par ligado directamente .................. 259 268
Claims (1)
- REIVINDICAÇÕES - 13 - Combinação, num sistema de informação, caracterizada por compreender um primeiro sistema de processamento de dados que possui uma unidade de memória principal e que opera segundo um primeiro sistema operativo virtual de acor do com uma primeira estrutura de instruções, um segundo sistema de processamento de dados que opera num segundo sistema operativo de acordo com uma segunda arquitectura de instruções e acoplado à referida unidade de memória principal, meios no referido primeiro sistema de processamento de dados para atribuir uma parte da referida unidade de memória prin cipal, indescernível para ambos os sistemas operativos, para uso exclusivo do segundo sistema de processamento de dados e pa ra o seu sistema operativo; e meios nos primeiro e segundo sistemas de processamento de dados que incluem um meio de registador que define a referida parte atribuída da memória principal, para aceder â referida porção atribuída em resposta à execução de instruções em ambos os sistemas de processamento de dados. - 2§ - Combinação de acordo com a reivindicação 1, caracterizada por compreender meios que inibem o primeiro sistema operativo de atribuir ulte-riormente a referida parte atribuída da memória principal. - 3B - 269- 38 - Combinação de acordo com a reivindicação 1, caracterizada por os referidos meios de atribuição compreenderem ainda um programa de aplicação do referido primeiro sistema, operado selectivamente no modo de supervisão, para atribuir a referida parte da memória principal ao referido segundo sistema, indes-cernível para ambos os sistemas operativos. - 48 - Combinação de acordo com a reivindicação 2, caracterizada por os referidos meios de acesso incluírem um programa de aplicação no referido primeiro sistema de procejs sarnento para aceder â referida parte atribuída da memória principal de acordo com a execução das instruções 1/0 do segundo sistema de processamento. Combinação de acordo com a reivindicação 2, caracterizado por os referidos meios de acesso incluírem meios no primeiro sistema de processamento, excluindo o primeiro sistema operativo e incluindo meios que armazenam dados de endereço que definem a parte atribuída da memória principal, acedendo à referida parte atribuída para transferir dados 1/0 do segundo sistema de processamento para e da referida parte atribuída. - 6ã - 270 6ã Combinação, num sistema de processamento de informação, caracterizada por compreender um primeiro sijs tema de processamento de dados com uma unidade de memória principal e operando num primeiro sistema operativo virtual de acor do com uma primeira arquitectura de instruções, um segundo sistema de processamento de dados operando num segun do sistema operativo virtual de acordo com uma segunda arquitec tura e acoplamento à referida unidade de memória principal, meios no referido sistema de processamento de dados para atribuir uma parte da referida unidade de memória principal, indis-cerníveis para ambos os sistemas operativos, para uso exclusivo do segundo sistema de processamento de dados e do seu sistema operativo; e meios no segundo sistema de processamento de dados, incluindo um meio de registador que define a referida parte atribuída da memória principal, para aceder ã referida parte atribuída em resposta ã execução de instruções na segunda unida de de sistema operativo. - 79 - Combinação de acordo com a reivindicação 6, caracterizada por compreender ainda meios que inibem o primeiro sistema operativo de atribuir alte-riormente a referida parte atribuída da memória principal. - 83 - Combinação de acordo com a reivindicação 6, caracterizada por os referidos meios de atribuição compreenderem ainda um programa de aplicação no referido primeiro sistema, operando 271selectivamente no modo de supervisão para atribuir a referida parte de memória principal ao referido segundo sistema, indis-cernível para ambos os sistemas operativos. - 9ã - Combinação de acordo com a reivindicação 6, caracterizada por compreender ainda meios que incluem um programa de aplicação no referido primeiro sistema de processamento para aceder à referida parte atribuída de memória principal de acordo com a execução de instruções 1/0 do segundo sistema de processamento. - 10a - j Mecanismo de acesso partilhado a uma me mõria, caracterizado por compreender um primeiro sistema de processamento de dados que possui uma primeira unidade de processamento, uma unidade de memória principal a vários dispositivos 1/0 que operam num primeiro sistema operativo virtual de acordo com uma primeira arquitectura, incluindo um gestor de memória para a referida memória principal, um segundo sistema de processamento de dados que inclui uma segunda unidade de processamento acoplada à referida unidade de memória e operando num segundo sistema operativo virtual de acordo com uma segunda arquitectura, meios efectivos durante a inicialização do primeiro sistema para alterar o gestor da memória para a captura do primeiro siste ma operativo de uma parte da referida unidade de memória princi pal, indiscernlvel a ambos os sistemas operativos, para uso exclusivo da segunda unidade de processamento e para o seu sistema operativo, . meios de registador, 1 meios efectivos durante a referida inicialização para transfe- 272rir para os referidos meios de registador, indiscerníveis para os dois sistemas operativos, informação de endereços que definem a referida parte capturada da unidade de memória principal, e meios no segundo sistema que incluem os referidos meios de registador para aceder à referida parte capturada durante a execu ção das instruções pela segunda unidade de processamento. - lia - Mecanismo de acordo com a reivindicação 10, caracterizado por os referidos meios de captura compreenderem ainda um programa de aplicação no referido primeiro sistema operado selectivamente no modo de supervisão para a referida captura da referida parte de memória a partir do referido gestor da memória. - 12§ - Mecanismo de acordo com a reivindicação 10, caracterizado por compreender meios que inibem o primeiro sistema operativo de aceder à referida parte atribuída de memória principal, e meios que incluem um programa de aplicação no referido primeiro sistema de processamento de dados para aceder à referida parte atribuída da memória principal para a transferência de dados I/O entre os primeiro e segundo sistemas de processamento de da dos. - 13ã - Mecanismo de acesso partilhado a uma me 273mória, caracterizado por compreender um primeiro sistema de pro cessamento de dados com uma primeira unidade de processamento, uma unidade de memória operativa e vários dispositivos 1/0 que operam num primeiro sistema operativo virtual de acordo com uma primeira arquitectura, um segundo sistema de processamento de dados que inclui uma segunda unidade de processamento acoplada à referida unidade de memória e adaptada para operar num segundo sistema operativo virtual de acordo com uma segunda arquitectura, meios que incluem um programa de aplicação executado em modo de supervisão na referida primeira unidade de processamento enquan to o referido segundo sistema é mantido numa condição de reposição, para capturar a partir do primeiro sistema operativo uma parte da referida unidade de memória principal, indiscernível para ambos os sistemas, para uso exclusivo da segunda unidade de processamento e do seu sistema operativo, meios de registador, meios controlados por um programa de aplicação executado na pri meira unidade de processamento para transferir para os referidos meios de registador informação de endereços que define a re ferida parte capturada da unidade de memória principal de uma maneira indiscernível para o primeiro sistema operativo, e meios no segundo sistema, incluindo os referidos meios de regijs tador para aceder à referida porção capturada durante a execução de instruções pela referida segunda unidade de processamento. - 143 - Mecanismo de acordo com a reivindicação 13, caracterizado por compreender ainda meios que inibem o primeiro sistema operativo de aceder â referida parte atribuída de memória principal e meios que incluem um programa de aplicação no referido primeiro sistema de processamento para aceder à referida parte atribuída da memória principal para a transferência de dados 1/0 entre os 274primeiro e segundo sistemas de processamento de dados. - 15β - Combinação, com um sistema de processamento de dados que possui um primeiro sistema que inclui uma primeira unidade de processamento e uma unidade de memória prin cipal operando num primeiro sistema operativo de acordo com uma primeira arquitectura de instruções, caracterizada por compreen der: um segundo sistema que inclui uma segunda unidade de processamento que opera num segundo sistema operativo de acordo com uma segunda estrutura de instruções, meios que fazem o acoplamento da segunda unidade de processamen to ã referida memória principal, meios que incluem um programa de aplicação executado no modo de supervisão na referida primeira unidade de processamento durante a inicialização do sistema para capturar, sem discernimento pelo primeiro sistema operativo, uma porção da referida unidade de memória principal para o uso exclusivo da segunda unidade de processamento e do seu sistema operativo, meios de registador, meios controlados por um programa de aplicação executado na referida primeira unidade de processamento para transferir para os referidos meios de registador informação de endereços que de fine a referida porção capturada da unidade de memória principal sem discernimento por qualquer dos sistemas operativos, e meios no segundo sistema que incluem os referidos meios de registador, para aceder a referida parte capturada através dos re feridos meios de acoplamento durante a execução das instruções pela referida segunda unidade de processamento. - 16ã - 275 16Β Mecanismo de acordo com a reivindicação 10, caracterizado por compreender ainda: meios que inibem o primeiro sistema operativo de aceder à referida parte atribuída da memória principal, e meios que incluem um programa de aplicação no referido sistema de processamento de dados para aceder â referida parte atribuída de memória principal para transferir dados I/O entre o primeiro e o segundo sistema de processamento de dados. - 17a - Mecanismo compartilhado de acesso à memória, caracterizado por compreender: um primeiro sistema de processamento de dados que inclui uma primeira unidade de processamento, uma unidade de memória principal e vários dispositivos I/O que operam num sistema operativo virtual de acordo com uma primeira arquitectura, um segundo sistema de processamento de dados que inclui uma segunda unidade de processamento acoplada à referida unidade de memória e operando num segundo sistema operativo de acordo com uma segunda arquitectura, meios efectivos durante a inicialização do primeiro sistema para capturar a partir do primeiro sistema operativo uma parte da referida unidade de memória principal, indescernível para ambos os sistemas operativos, para uso exclusivo da segunda unidade de processamento e do seu sistema operativo, meios de registador, meios efectivos durante a referida inicialização para transferir para os referidos meios de registador, indescerníveis para ambos os sistemas operativos, informação de endereços que definem a referida parte capturada da unidade de memória principal, e meios no segundo sistema de processamento, incluindo os referi- 276 jvv ^ ^ ~ .....i... ^dos meios de registador, para aceder â referida parte capturada durante a execução de instruções pela referida segunda unidade de processamento. - 18ã - Mecanismo de acordo com a reivindicação 17, caracterizado por os referidos meios de captura compreenderem ainda: meios que inibem o primeiro sistema operativo de aceder à referida parte atribuída de memória principal. - 19§ - Mecanismo de acordo com a reivindicação 18, caracterizado por os referidos meios de captura compreenderem ainda: um programa de aplicação no referido primeiro sistema operados selectivamente no modo de supervisão para capturar a referida parte da memória principal para o referido segundo sistema in-descernível para ambos os sistemas operativos. - 209 - Mecanismo de acordo com a reivindicação 19, caracterizado ainda por compreender: meios incluindo um programa de aplicação no primeiro sistema de processamento para aceder ã referida parte da unidade de memória principal para a transferência de dados I/O entre os primei, ro e segundo sistemas de processamento. 277- 21§ - Processo de captura de uma secção da me mória principal a partir de um primeiro sistema de processamento de dados, incluindo um primeiro elemento de processamento, sendo a referida memória principal e os aparelhos de 1/0 operados num primeiro sistema operativo, para uso por um segundo ele mento de processamento com meios de acoplamento do segundo elemento de processamento à referida memória principal e operando sob o controlo de um segundo sistema operativo, de uma maneira I indescernível para ambos os sistemas operativos, caracterizado | por compreender as fases de: dividir a memória num certo número de blocos de dimensões fixas de memória contígua; criar no primeiro sistema um mapa de memória com entradas correspondentes a cada bloco, ligar entre si, numa lista livre no primeiro sistema, as entradas correspondentes aos blocos não presentemente atribuídos para ser usados num processo, pela introdução em cada entrada de um indicador para a entrada seguinte na lista; ordenar a lista livre para ligar entre si, na ordem sequencial de endereços, as entradas para uma grande área de memória cont^L gua; colocar um programa de aplicação, adaptado para ser executado no primeiro sistema de processamento de dados, no modo de super visão; alterar os indicadores da lista livre sob o controlo do referido programa de aplicação executado no modo de supervisão para retirar da lista livre um grupo de entradas que definem uma área contígua de memória com uma dimensão pré-determinada; colocar dados de endereço correspondentes à área definida de me mória em registadores associados com os referidos meios de aco-plamento para permitir apenas o acesso da área definida de memó ria pelo referido segundo elemento de processamento durante a execução do programa sob o controlo do segundo sistema operati-. vo. 278^KSQSaBSSs ’í3£pí't<'- 22§ - Método para a captura de uma secção da memória principal a partir de um primeiro sistema de processamento de dados, incluindo um primeiro elemento de processamento, sendo a referida memória principal e os aparelhos de 1/0 operados num primeiro sistema operativo, para uso por um segundo ele mento de processamento que tem meios de acoplamento do segundo elemento de processamento à referida memória principal e operan do sob o controlo de um segundo sistema operativo, de uma manei^ ra indiscernível para ambos os sistemas operativos, caracteriza do por compreender as fases de: criar uma lista de entradas, correspondentes aos blocos não usa dos de memória, usados pelo primeiro sistema operativo para atri buir blocos de memória a processos, alterar a referida lista sob o controlo de um programa de aplicação executado no modo de supervisão no primeiro elemento de processamento para retirar da lista um grupo de entradas corre^ pondente a uma área contígua de memória de dimensão pré-determi_ nada, tornando assim a referida área contígua não disponível pa ra o sistema operativo, armazenar o endereço correspondente à referida área contígua em registadores associados com os referidos meios de acoplamento para permitir o acesso da área contígua pelo referido segundo elemento de processamento durante a execução do programa sob o controlo do segundo sistema operativo. - 23§ - Processo de acordo com a reivindicação 22, caracterizado por ambos os sistemas operativos serem siste mas operativos virtuais. 279 24ã Processo de acordo com a reivindicação 23, caracterizado por as entradas da lista de entradas serem I^l gadas entre si inserindo em cada entrada um indicador para a en trada adjacente seguinte na lista. - 253 - Processo de acordo com a reivindicação 24, caracterizado por as entradas estarem dispostas por ordem para definir por ordem de endereços sequencial blocos que compreendem áreas contíguas de memória. - 263 - Processo de acordo com a reivindicação 25, caracterizado por se alterarem selectivamente certos indica dores na lista para retirar da lista o referido grupo de entradas correspondente â referida área contígua de memória com dimensão pré-determinada. A requerente reivindica a prioridade do pedido norte-americano apresentado em 17 de Maio de 1989, sob o número de série 07/353,113. 280 Lisboa, 16 de Maio de 1990.281
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US07/353,113 US5144692A (en) | 1989-05-17 | 1989-05-17 | System for controlling access by first system to portion of main memory dedicated exclusively to second system to facilitate input/output processing via first system |
Publications (1)
Publication Number | Publication Date |
---|---|
PT94055A true PT94055A (pt) | 1991-11-29 |
Family
ID=23387812
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
PT94055A PT94055A (pt) | 1989-05-17 | 1990-05-16 | Memoria principal fisica unica compartilhada por dois ou mais processadores que execytam sistemas operativos respectivos |
Country Status (9)
Country | Link |
---|---|
US (2) | US5144692A (pt) |
EP (1) | EP0398695B1 (pt) |
JP (1) | JP2618072B2 (pt) |
AT (1) | ATE170643T1 (pt) |
BR (1) | BR9002304A (pt) |
CA (1) | CA2009548C (pt) |
DE (1) | DE69032607T2 (pt) |
PT (1) | PT94055A (pt) |
SG (1) | SG45151A1 (pt) |
Families Citing this family (78)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5838946A (en) * | 1990-04-14 | 1998-11-17 | Sun Microsystems, Inc. | Method and apparatus for accomplishing processor read of selected information through a cache memory |
AU628264B2 (en) * | 1990-08-14 | 1992-09-10 | Oracle International Corporation | Methods and apparatus for providing a client interface to an object-oriented invocation of an application |
US5479640A (en) * | 1990-08-31 | 1995-12-26 | International Business Machines Corporation | Memory access system including a memory controller with memory redrive circuitry |
JPH0833818B2 (ja) * | 1990-09-04 | 1996-03-29 | インターナショナル・ビジネス・マシーンズ・コーポレイション | コンピュータ・システムの操作方法 |
JP2945498B2 (ja) * | 1991-04-12 | 1999-09-06 | 富士通株式会社 | システム間通信方式 |
US5590288A (en) * | 1991-07-30 | 1996-12-31 | Restaurant Technology, Inc. | Distributed data processing system and method utilizing peripheral device polling and layered communication software |
JPH05233570A (ja) * | 1991-12-26 | 1993-09-10 | Internatl Business Mach Corp <Ibm> | 異オペレーティング・システム間分散データ処理システム |
US6286013B1 (en) * | 1993-04-01 | 2001-09-04 | Microsoft Corporation | Method and system for providing a common name space for long and short file names in an operating system |
US5504904A (en) * | 1994-02-23 | 1996-04-02 | International Business Machines Corporation | Personal computer having operating system definition file for configuring computer system |
US5666523A (en) * | 1994-06-30 | 1997-09-09 | Microsoft Corporation | Method and system for distributing asynchronous input from a system input queue to reduce context switches |
US5557783A (en) * | 1994-11-04 | 1996-09-17 | Canon Information Systems, Inc. | Arbitration device for arbitrating access requests from first and second processors having different first and second clocks |
US5630045A (en) * | 1994-12-06 | 1997-05-13 | International Business Machines Corporation | Device and method for fault tolerant dual fetch and store |
US5640526A (en) * | 1994-12-21 | 1997-06-17 | International Business Machines Corporation | Superscaler instruction pipeline having boundary indentification logic for variable length instructions |
US5742829A (en) * | 1995-03-10 | 1998-04-21 | Microsoft Corporation | Automatic software installation on heterogeneous networked client computer systems |
US6466962B2 (en) | 1995-06-07 | 2002-10-15 | International Business Machines Corporation | System and method for supporting real-time computing within general purpose operating systems |
US5632013A (en) * | 1995-06-07 | 1997-05-20 | International Business Machines Corporation | Memory and system for recovery/restoration of data using a memory controller |
US5812775A (en) * | 1995-07-12 | 1998-09-22 | 3Com Corporation | Method and apparatus for internetworking buffer management |
US5651002A (en) * | 1995-07-12 | 1997-07-22 | 3Com Corporation | Internetworking device with enhanced packet header translation and memory |
US5825774A (en) * | 1995-07-12 | 1998-10-20 | 3Com Corporation | Packet characterization using code vectors |
US5796944A (en) * | 1995-07-12 | 1998-08-18 | 3Com Corporation | Apparatus and method for processing data frames in an internetworking device |
US5748633A (en) * | 1995-07-12 | 1998-05-05 | 3Com Corporation | Method and apparatus for the concurrent reception and transmission of packets in a communications internetworking device |
US5905729A (en) | 1995-07-19 | 1999-05-18 | Fujitsu Network Communications, Inc. | Mapping a data cell in a communication switch |
WO1997010656A1 (en) | 1995-09-14 | 1997-03-20 | Fujitsu Network Communications, Inc. | Transmitter controlled flow control for buffer allocation in wide area atm networks |
US5754788A (en) * | 1995-12-28 | 1998-05-19 | Attachmate Corporation | Method and system for reconfiguring a communications stack |
AU1697697A (en) | 1996-01-16 | 1997-08-11 | Fujitsu Limited | A reliable and flexible multicast mechanism for atm networks |
US5845094A (en) * | 1996-06-11 | 1998-12-01 | Data General Corporation | Device access controller and remote support facility for installation of cabling in a multiprocessor system |
US6279098B1 (en) * | 1996-12-16 | 2001-08-21 | Unisys Corporation | Method of and apparatus for serial dynamic system partitioning |
US6681239B1 (en) * | 1996-12-23 | 2004-01-20 | International Business Machines Corporation | Computer system having shared address space among multiple virtual address spaces |
US6341301B1 (en) | 1997-01-10 | 2002-01-22 | Lsi Logic Corporation | Exclusive multiple queue handling using a common processing algorithm |
US5966547A (en) * | 1997-01-10 | 1999-10-12 | Lsi Logic Corporation | System for fast posting to shared queues in multi-processor environments utilizing interrupt state checking |
US5922057A (en) * | 1997-01-10 | 1999-07-13 | Lsi Logic Corporation | Method for multiprocessor system of controlling a dynamically expandable shared queue in which ownership of a queue entry by a processor is indicated by a semaphore |
US5926833A (en) * | 1997-03-24 | 1999-07-20 | International Business Machines Corporation | Method and system allowing direct data access to a shared data storage subsystem by heterogeneous computing systems |
EP0923023A4 (en) * | 1997-04-16 | 2007-04-25 | Sony Corp | CONTROL ARRANGEMENT AND METHOD FOR A RECORDING MEDIUM |
US6772419B1 (en) * | 1997-09-12 | 2004-08-03 | Hitachi, Ltd. | Multi OS configuration system having an interrupt process program executes independently of operation of the multi OS |
US6275984B1 (en) * | 1998-11-20 | 2001-08-14 | Sega Of America, Inc. | System and method for delaying indirect register offset resolution |
US6418505B1 (en) * | 1998-12-17 | 2002-07-09 | Ncr Corporation | Accessing beyond memory address range of commodity operating system using enhanced operating system adjunct processor interfaced to appear as RAM disk |
FI109154B (fi) * | 1999-04-16 | 2002-05-31 | Vesa Juhani Hukkanen | Laite ja menetelmä tietoturvallisuuden parantamiseksi |
US6397382B1 (en) * | 1999-05-12 | 2002-05-28 | Wind River Systems, Inc. | Dynamic software code instrumentation with cache disabling feature |
US6298437B1 (en) * | 1999-05-25 | 2001-10-02 | Sun Microsystems, Inc. | Method for vectoring pread/pwrite system calls |
US6735765B1 (en) * | 1999-12-07 | 2004-05-11 | Storage Technology Corporation | Sharing data between operating systems |
US6574753B1 (en) | 2000-01-10 | 2003-06-03 | Emc Corporation | Peer link fault isolation |
US6842811B2 (en) * | 2000-02-24 | 2005-01-11 | Pts Corporation | Methods and apparatus for scalable array processor interrupt detection and response |
JP2001244952A (ja) * | 2000-02-29 | 2001-09-07 | Sony Corp | 通信制御装置 |
US7234144B2 (en) * | 2002-01-04 | 2007-06-19 | Microsoft Corporation | Methods and system for managing computational resources of a coprocessor in a computing system |
US7228207B2 (en) * | 2002-02-28 | 2007-06-05 | Sabre Inc. | Methods and systems for routing mobile vehicles |
US7302548B1 (en) | 2002-06-18 | 2007-11-27 | Cisco Technology, Inc. | System and method for communicating in a multi-processor environment |
US7013362B1 (en) | 2003-02-21 | 2006-03-14 | Sun Microsystems, Inc. | Systems and methods for addressing memory |
US7747660B1 (en) * | 2003-03-24 | 2010-06-29 | Symantec Operating Corporation | Method and system of providing access to a virtual storage device |
EP1467282B1 (en) * | 2003-04-09 | 2008-10-01 | Jaluna SA | Operating systems |
US8612992B2 (en) * | 2003-04-09 | 2013-12-17 | Jaluna Sa | Operating systems |
EP1503286B1 (en) * | 2003-07-30 | 2014-09-03 | Jaluna SA | Multiple operating system networking |
JP2007509387A (ja) * | 2003-09-30 | 2007-04-12 | ジャルナ エスアー | オペレーティングシステム |
US20050091467A1 (en) * | 2003-10-22 | 2005-04-28 | Robotham Robert E. | Method and apparatus for accessing data segments having arbitrary alignment with the memory structure in which they are stored |
US7857701B2 (en) | 2004-03-12 | 2010-12-28 | Microsoft Corporation | Silent sign-in for offline games |
US7587537B1 (en) | 2007-11-30 | 2009-09-08 | Altera Corporation | Serializer-deserializer circuits formed from input-output circuit registers |
JP5116151B2 (ja) | 2004-11-05 | 2013-01-09 | ドロボ, インコーポレイテッド | 仮想ホットスペアを用いて動的に拡張可能かつ縮小可能な故障許容格納システム |
US7873782B2 (en) | 2004-11-05 | 2011-01-18 | Data Robotics, Inc. | Filesystem-aware block storage system, apparatus, and method |
US20060185687A1 (en) * | 2004-12-22 | 2006-08-24 | Philip Morris Usa Inc. | Filter cigarette and method of making filter cigarette for an electrical smoking system |
US7545272B2 (en) | 2005-02-08 | 2009-06-09 | Therasense, Inc. | RF tag on test strips, test strip vials and boxes |
JP5139658B2 (ja) * | 2006-09-21 | 2013-02-06 | 株式会社ニューフレアテクノロジー | 描画データ処理制御装置 |
JP4857201B2 (ja) * | 2007-06-20 | 2012-01-18 | キヤノン株式会社 | 情報処理装置 |
US7990797B2 (en) * | 2009-02-11 | 2011-08-02 | Stec, Inc. | State of health monitored flash backed dram module |
US8566639B2 (en) * | 2009-02-11 | 2013-10-22 | Stec, Inc. | Flash backed DRAM module with state of health and/or status information accessible through a configuration data bus |
US7830732B2 (en) * | 2009-02-11 | 2010-11-09 | Stec, Inc. | Staged-backup flash backed dram module |
WO2010093356A1 (en) * | 2009-02-11 | 2010-08-19 | Stec, Inc. | A flash backed dram module |
US8977831B2 (en) * | 2009-02-11 | 2015-03-10 | Stec, Inc. | Flash backed DRAM module storing parameter information of the DRAM module in the flash |
US8169839B2 (en) * | 2009-02-11 | 2012-05-01 | Stec, Inc. | Flash backed DRAM module including logic for isolating the DRAM |
US20100205349A1 (en) * | 2009-02-11 | 2010-08-12 | Stec, Inc. | Segmented-memory flash backed dram module |
US7983107B2 (en) * | 2009-02-11 | 2011-07-19 | Stec, Inc. | Flash backed DRAM module with a selectable number of flash chips |
US9043279B1 (en) * | 2009-08-31 | 2015-05-26 | Netapp, Inc. | Class based storage allocation method and system |
US8819447B2 (en) * | 2010-03-10 | 2014-08-26 | Sprint Communications Company L.P. | Secure storage of protected data in a wireless communication device |
US9754634B2 (en) | 2011-11-23 | 2017-09-05 | Smart Modular Technologies, Inc. | Memory management system with power source and method of manufacture thereof |
US9405578B2 (en) * | 2014-07-11 | 2016-08-02 | Accenture Global Services Limited | Intelligent application back stack management |
US9477516B1 (en) | 2015-03-19 | 2016-10-25 | Google Inc. | Concurrent in-memory data publication and storage system |
JP7153435B2 (ja) * | 2017-10-12 | 2022-10-14 | ラピスセミコンダクタ株式会社 | 不揮発性メモリのデータ書換方法及び半導体装置 |
US11442634B2 (en) * | 2018-04-12 | 2022-09-13 | Micron Technology, Inc. | Replay protected memory block command queue |
KR102485487B1 (ko) * | 2018-07-18 | 2023-01-06 | 에스케이하이닉스 주식회사 | 반도체장치 |
CN113580399A (zh) * | 2021-07-01 | 2021-11-02 | 唐山晶琢科技有限公司 | 一体化的多线切割机罗拉轴支架 |
Family Cites Families (44)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4004277A (en) * | 1974-05-29 | 1977-01-18 | Gavril Bruce D | Switching system for non-symmetrical sharing of computer peripheral equipment |
US4228496A (en) * | 1976-09-07 | 1980-10-14 | Tandem Computers Incorporated | Multiprocessor system |
US4099234A (en) * | 1976-11-15 | 1978-07-04 | Honeywell Information Systems Inc. | Input/output processing system utilizing locked processors |
JPS547252A (en) * | 1977-06-20 | 1979-01-19 | Hitachi Ltd | Program control system |
US4315321A (en) * | 1978-06-16 | 1982-02-09 | The Kardios Systems Corporation | Method and apparatus for enhancing the capabilities of a computing system |
US4244019A (en) * | 1978-06-29 | 1981-01-06 | Amdahl Corporation | Data processing system including a program-executing secondary system controlling a program-executing primary system |
US4316244A (en) * | 1978-11-08 | 1982-02-16 | Data General Corporation | Memory apparatus for digital computer system |
US4245344A (en) * | 1979-04-02 | 1981-01-13 | Rockwell International Corporation | Processing system with dual buses |
US4325116A (en) * | 1979-08-21 | 1982-04-13 | International Business Machines Corporation | Parallel storage access by multiprocessors |
US4315310A (en) * | 1979-09-28 | 1982-02-09 | Intel Corporation | Input/output data processing system |
US4354225A (en) * | 1979-10-11 | 1982-10-12 | Nanodata Computer Corporation | Intelligent main store for data processing systems |
JPS5833972B2 (ja) * | 1979-11-12 | 1983-07-23 | 富士通株式会社 | 計算機システム間通信方式 |
US4400775A (en) * | 1980-02-28 | 1983-08-23 | Tokyo Shibaura Denki Kabushiki Kaisha | Shared system for shared information at main memory level in computer complex |
US4368514A (en) * | 1980-04-25 | 1983-01-11 | Timeplex, Inc. | Multi-processor system |
US4412281A (en) * | 1980-07-11 | 1983-10-25 | Raytheon Company | Distributed signal processing system |
ZA821999B (en) * | 1981-03-31 | 1983-05-25 | British Telecomm | Computor or processor control systems |
US4533996A (en) * | 1982-02-23 | 1985-08-06 | International Business Machines Corporation | Peripheral systems accommodation of guest operating systems |
US4597084A (en) * | 1981-10-01 | 1986-06-24 | Stratus Computer, Inc. | Computer memory apparatus |
US4453215A (en) * | 1981-10-01 | 1984-06-05 | Stratus Computer, Inc. | Central processing apparatus for fault-tolerant computing |
ATE25779T1 (de) * | 1981-10-01 | 1987-03-15 | Stratus Computer Inc | Digitale datenverarbeitungsanlage mit zuverlaessigkeits-bus-protokoll. |
JPS58102380A (ja) * | 1981-12-11 | 1983-06-17 | Hitachi Ltd | 仮想記憶管理方法 |
JPS5955565A (ja) * | 1982-09-24 | 1984-03-30 | Fujitsu Ltd | マルチフア−ムウエア方式 |
JPS5999576A (ja) * | 1982-11-30 | 1984-06-08 | Toshiba Corp | 画像情報記憶検索システム装置 |
US4679166A (en) * | 1983-01-17 | 1987-07-07 | Tandy Corporation | Co-processor combination |
US4591975A (en) * | 1983-07-18 | 1986-05-27 | Data General Corporation | Data processing system having dual processors |
US4564903A (en) * | 1983-10-05 | 1986-01-14 | International Business Machines Corporation | Partitioned multiprocessor programming system |
US4727480A (en) * | 1984-07-09 | 1988-02-23 | Wang Laboratories, Inc. | Emulation of a data processing system |
US4660130A (en) * | 1984-07-24 | 1987-04-21 | Texas Instruments Incorporated | Method for managing virtual memory to separate active and stable memory blocks |
US4677546A (en) * | 1984-08-17 | 1987-06-30 | Signetics | Guarded regions for controlling memory access |
US4754394A (en) * | 1984-10-24 | 1988-06-28 | International Business Machines Corporation | Multiprocessing system having dynamically allocated local/global storage and including interleaving transformation circuit for transforming real addresses to corresponding absolute address of the storage |
US4674038A (en) * | 1984-12-28 | 1987-06-16 | International Business Machines Corporation | Recovery of guest virtual machines after failure of a host real machine |
US4799145A (en) * | 1985-04-03 | 1989-01-17 | Honeywell Bull Inc. | Facility for passing data used by one operating system to a replacement operating system |
US4722048A (en) * | 1985-04-03 | 1988-01-26 | Honeywell Bull Inc. | Microcomputer system with independent operating systems |
US4868738A (en) * | 1985-08-15 | 1989-09-19 | Lanier Business Products, Inc. | Operating system independent virtual memory computer system |
JPS6243703A (ja) * | 1985-08-21 | 1987-02-25 | Fanuc Ltd | 数値制御システム |
US4747040A (en) * | 1985-10-09 | 1988-05-24 | American Telephone & Telegraph Company | Dual operating system computer |
JPS62120565A (ja) * | 1985-11-20 | 1987-06-01 | Nec Corp | 主記憶領域の割付け制御方式 |
US4787026A (en) * | 1986-01-17 | 1988-11-22 | International Business Machines Corporation | Method to manage coprocessor in a virtual memory virtual machine data processing system |
US4920481A (en) * | 1986-04-28 | 1990-04-24 | Xerox Corporation | Emulation with display update trapping |
US4797810A (en) * | 1986-06-26 | 1989-01-10 | Texas Instruments Incorporated | Incremental, multi-area, generational, copying garbage collector for use in a virtual address space |
US4816990A (en) * | 1986-11-05 | 1989-03-28 | Stratus Computer, Inc. | Method and apparatus for fault-tolerant computer system having expandable processor section |
US5093913A (en) * | 1986-12-22 | 1992-03-03 | At&T Laboratories | Multiprocessor memory management system with the flexible features of a tightly-coupled system in a non-shared memory system |
US4967353A (en) * | 1987-02-25 | 1990-10-30 | International Business Machines Corporation | System for periodically reallocating page frames in memory based upon non-usage within a time period or after being allocated |
US5027271A (en) * | 1987-12-21 | 1991-06-25 | Bull Hn Information Systems Inc. | Apparatus and method for alterable resource partitioning enforcement in a data processing system having central processing units using different operating systems |
-
1989
- 1989-05-17 US US07/353,113 patent/US5144692A/en not_active Expired - Lifetime
-
1990
- 1990-02-07 CA CA002009548A patent/CA2009548C/en not_active Expired - Fee Related
- 1990-05-16 EP EP90305308A patent/EP0398695B1/en not_active Expired - Lifetime
- 1990-05-16 PT PT94055A patent/PT94055A/pt not_active Application Discontinuation
- 1990-05-16 AT AT90305308T patent/ATE170643T1/de not_active IP Right Cessation
- 1990-05-16 SG SG1996000711A patent/SG45151A1/en unknown
- 1990-05-16 DE DE69032607T patent/DE69032607T2/de not_active Expired - Fee Related
- 1990-05-17 JP JP2125649A patent/JP2618072B2/ja not_active Expired - Lifetime
- 1990-05-17 BR BR909002304A patent/BR9002304A/pt not_active IP Right Cessation
-
1993
- 1993-09-30 US US08/128,760 patent/US5363497A/en not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JP2618072B2 (ja) | 1997-06-11 |
US5363497A (en) | 1994-11-08 |
EP0398695A3 (en) | 1994-02-02 |
DE69032607D1 (de) | 1998-10-08 |
DE69032607T2 (de) | 1999-05-27 |
CA2009548A1 (en) | 1990-11-17 |
JPH0374756A (ja) | 1991-03-29 |
SG45151A1 (en) | 1998-01-16 |
US5144692A (en) | 1992-09-01 |
ATE170643T1 (de) | 1998-09-15 |
CA2009548C (en) | 1996-07-02 |
EP0398695A2 (en) | 1990-11-22 |
EP0398695B1 (en) | 1998-09-02 |
BR9002304A (pt) | 1991-08-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
PT94055A (pt) | Memoria principal fisica unica compartilhada por dois ou mais processadores que execytam sistemas operativos respectivos | |
EP0398694B1 (en) | Fault tolerant data processing system | |
US5701502A (en) | Isolating a central processing unit from the operating system controlling said unit and its associated hardware for interaction of the unit with data handling apparatus alien to the operating system | |
US5113522A (en) | Data processing system with system resource management for itself and for an associated alien processor | |
EP0398693B1 (en) | Method and apparatus for adding a data processing function to a data processing system | |
US5369749A (en) | Method and apparatus for the direct transfer of information between application programs running on distinct processors without utilizing the services of one or both operating systems | |
US5369767A (en) | Servicing interrupt requests in a data processing system without using the services of an operating system | |
KR920008439B1 (ko) | 데이타 처리 시스템과 데이타 처리 시스템에 시스템 특성을 추가로 제공하는 방법 및 그 기구 | |
US7668923B2 (en) | Master-slave adapter | |
EP0398697B1 (en) | Interprocessor communication |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
BB1A | Laying open of patent application |
Effective date: 19900521 |
|
FC3A | Refusal |
Effective date: 19960313 |