O mainframe IBM 1401 (à esquerda) no Museu de História do Computador imprime um fractal Mandelbrot em uma impressora 1403 (à direita)Existem dois mainframes IBM 1401 em funcionamento no
Museu de História da Computação para
demonstração , mas há algumas semanas um deles falhou repentinamente na impressora. Ajudei a consertar, mas era mais difícil do que esperávamos. No processo, tive que estudar a lógica da verificação de erros na impressora, no buffer de impressão e até nos sinais de baixo nível de memória de ferrite. Este artigo é sobre nossa investigação e como ainda encontramos um transistor de germânio com defeito.
O mainframe IBM 1401 foi lançado em 1959 e tornou-se o
best-seller de meados
dos anos 60: mais de 10.000 sistemas foram instalados. O computador foi alugado por US $ 2.500 por mês (cerca de US $ 20.000 a preços atuais): um preço muito baixo que permite que até empresas de médio porte o usem para folha de pagamento, contabilidade, cobrança e muitas outras tarefas. O IBM 1401 é composto de pequenas placas de circuito (chamadas de cartões SMS) conectadas a blocos chamados de racks de portas. A foto abaixo mostra 1401 com uma das cestas abertas. Dezenas de cartões SMS marrons são visíveis.
O computador IBM 1401 com uma das cestas abertas, onde você pode ver muitos cartões SMS. O ventilador na capa resfria os cartõesUm dos principais fatores para as vendas da IBM 1401 é a impressora de linha de alta velocidade IBM 1403, que produz 10 linhas por segundo (a IBM alegou que era quatro vezes mais rápida que outras impressoras, mas os concorrentes contestam essa alegação). A impressora 1403 imprimiu excelentemente: somente as impressoras a laser da década de 1970 conseguiram superar essa qualidade.
1 A IBM afirma que "ainda hoje continua sendo o padrão de qualidade para impressão de impacto em alta velocidade".
Close-up da cadeia literal (de cabeça para baixo) de uma impressora IBM 1403 LineA impressora 1403 usava uma corrente longa com letras (na foto acima), que giravam sobre papel e fita de tinta em alta velocidade. Um martelo e um eletroímã são instalados em cada uma das 132 posições de impressão. Em um determinado momento, quando o símbolo desejado passou pelo martelo, o eletroímã o empurrou para a parte de trás do papel, como resultado do papel e da fita baterem na letra de uma corrente, imprimindo um símbolo.
2
O mecanismo de impressão da impressora de linha IBM 1401. No Guia de referência 1401 , página 11Infelizmente, a impressora do Museu de História do Computador tinha um problema: toda vez que a linha era impressa, o computador parava devido ao erro "Verificação de impressão". Felizmente, o museu tem um grupo de voluntários que ajudam a manter o sistema em boas condições de funcionamento. Entre os especialistas que participaram da solução desse problema estão Ron Williams, Frank King, Mark Verdell, Karl Clunch, Michael Marinu, Robert Garner e Alexey Toptygin. Quando cheguei ao resgate, Ron havia escrito um programa de teste simples que tentava repetidamente imprimir uma linha; ele entrou no modo manual e desativou a verificação de erros. A impressora imprimiu os caracteres conforme o esperado. Portanto, sugerimos que o problema esteja na lógica das mensagens de erro dentro do computador. A estratégia era encontrar o sinal de erro, rastreá-lo até a fonte - e determinar a causa.
Começamos examinando o circuito de trava, que contém a condição para um erro de verificação de impressão e o envia ao computador. Para encontrar o circuito, verificamos a documentação: diagramas de fiação gerados por computador chamados Diagramas Lógicos Automatizados (ALDs). Abaixo está uma pequena seção do ALD com um gatilho de verificação de impressão (PR CHK LAT). Cada retângulo no ALD corresponde ao esquema no cartão SMS e as linhas mostram a conexão dos cartões entre si. A descriptografia do texto dentro do campo à direita indica uma
placa 2JMX que implementa a função “2 + AO”, que em termos modernos é um circuito lógico
AND-OR com inversão . O texto em cada campo também indica a localização do cartão: sua cesta, neste caso 01A6, e a posição do cartão dentro (F10). Assim, para testar a saída da trava (indicada por H) com um osciloscópio, abrimos a cesta 01A6, encontramos a placa F10 e conectamos o osciloscópio ao pino H.
Descobrimos que o pino H emite um sinal baixo (erro) quando os pinos F e G são energizados, que é o comportamento correto da trava. O pino G (PR CK SAMPLE) é essencialmente um pulso de clock para o status de erro de amostra, enquanto o pino F é o próprio sinal de erro. Nossa próxima tarefa foi determinar o que causa o sinal de erro no pino F.
Fragmento de um circuito lógico automatizado (ALD) de um computador IBM 1401 mostrando uma trava de verificação de impressão (PRT CHK LAT). Esta página é assinada como 36.37.21.2Na documentação, também existem esquemas no nível lógico. Eles são um pouco mais fáceis de entender do que as conexões físicas nos diagramas ALD. O fluxograma abaixo mostra o diagrama de erros da impressora. À direita, o sinal de erro de verificação de impressão (PRT CHK ERROR) sai da trava (PR CHK LAT), que contém o sinal de erro. (Esta é a mesma trava que no diagrama ALD acima, como é evidente nos nomes dos sinais). À esquerda, são combinados vários estados de erro diferentes para formar um sinal de erro fornecido à trava. (Observe que os símbolos lógicos da IBM não correspondem aos padrões. Um semicírculo é uma porta OR, não um I. Um triângulo é uma porta I. O "i" no retângulo é um inversor).
Diagrama lógico da lógica de verificação de erros no IBM 1401/1403. Em “Manuais de instruções lógicas”, página 77, “Controles do buffer de impressão”Várias condições podem causar um erro de verificação de impressão
3 , e achamos que a verificação da operação do martelo (fogo do martelo) é o candidato mais provável. Lembre-se de que na impressora 132 há um martelo para imprimir uma sequência de caracteres. Para verificá-los, são fornecidas duas matrizes de memória especiais. (1401 usa 4.000 caracteres,
4 núcleos de memória
; cada bit de memória é um pequeno anel de ferrite que, dependendo da magnetização, armazena 1 ou 0. Uma grade de 4000 núcleos forma uma matriz de memória. Muitas matrizes são empilhadas umas sobre as outras, formando um bloco de memória). Cada vez que o computador decide iniciar o martelo, ele o grava na memória de ferrite na matriz de verificação igual. Quando o martelo realmente dispara, o pulso atual do eletroímã armazena o bit na matriz de disparo.
5 Em cada ciclo de varredura, o computador compara as duas matrizes principais para verificar a operação correta / incorreta dos martelos e, em caso de não conformidade, gera um erro de verificação.
Um close dos eletroímãs no IBM 1403. O eletroímã (ao receber um impulso através de seus pares de fios) desenha uma armadura de metal, que controla o martelo, o papel e a fita opostos à letra. Foram instalados 132 marretas, uma para cada coluna, em duas linhas de 66 peçasApós algumas manipulações complicadas
6 descobrimos que o problema não está em verificar a operação dos martelos, mas em outra verificação: "linha de impressão concluída" (linha de impressão completa, PLC). Ele verifica se, para cada linha em cada coluna, não é impresso mais de um caractere. Aqui, a terceira matriz especial de memória é usada - a matriz "impressão de linha está concluída". Cada vez que um caractere é impresso, o bit correspondente é definido. (Para um caractere vazio ou não imprimível, o bit é definido por um circuito separado). No final da linha (ao digitalizar 49), todos os núcleos da matriz são verificados. Se algum deles for zero, ou seja, a impressora não pôde imprimir esta coluna, uma mensagem de erro será exibida. (Na lógica anterior, você pode ver o sinal PLC CHECK e a lógica que o gera).
Os testes com um osciloscópio (abaixo) mostraram que o PLC CHECK (amarelo) é acionado porque o sistema pensa que o segundo caractere é impresso na mesma coluna. O sinal ciano é o bit (invertido) do PLC do núcleo (PR LINE COMP LATCH); cada pulso inferior indica a impressão de um caractere nesta coluna. Um pulso rosa (PRINT COMPARE) indica que um novo caractere está sendo impresso. O problema é que os sinais ciano e rosa são reduzidos simultaneamente, indicando um caractere existente e um novo caractere na coluna. Isso produz um pulso azul de emergência (PLC CHECK), que inicia um pulso amarelo (PRINT CHK ERROR from tratch). Este diagrama é mostrado no diagrama lógico anterior rotulado como “Tentando imprimir a posição duas vezes”.
Sinal do osciloscópio ao depurar uma impressora IBM 1401Por que o sistema pensa que dois caracteres são impressos em uma coluna? Isso pode ser por vários motivos. Na impressão, vimos que, na realidade, a impressora exibe apenas um símbolo esperado no papel; portanto, o circuito para imprimir o símbolo aparentemente funciona corretamente (PRINT COMPARE, único pulso rosa na parte superior). Verificamos o esquema de caracteres vazio / não imprimível e ele detectou corretamente colunas vazias e não vazias. Portanto, o problema mais provável é ler 1 do núcleo da memória (linha ciano na parte superior, PR LINE COMP LATCH), quando deve haver 0. Mas qual é o problema real: magnetização incorreta do núcleo ou valor de saída incorreto?
O diagrama lógico abaixo mostra o mecanismo para gravar na memória Print Line Compare. O PR LINE COMP INH à direita é um sinal (invertido) gravado no núcleo.
8 Ao digitalizar 49 (ciclo de verificação após a impressão de todos os 48 caracteres), a tensão é aplicada a esta linha, limpando a memória. Se um caractere for impresso, um sinal PRINT COMPARE EQUAL é emitido. As portas lógicas à esquerda definem um caractere em branco ou não imprimível. E se o bit 1 (PR LINE COMP LATCH) já estiver no núcleo, o bit 1 será sobrescrito no núcleo.
Lógica lógica para verificar a finalização da linha no IBM 1401/1403. Em “Manuais de instruções lógicas”, página 77, “Controles do buffer de impressão”Descobrimos que esse circuito registrava valores falsos 1 no núcleo porque lê valores falsos 1 no núcleo. Mas assim fomos em um círculo: não está claro que o problema inicial esteja na leitura ou na escrita. Para resolver o problema, configuramos o osciloscópio para digitalizar a impressão 49 quando os bits do PLC são redefinidos e, em seguida, olhamos para a próxima digitalização de impressão, que lê os bits limpos. Vimos 0 sendo gravado (ou seja, PR LINE COMP INH de alta tensão), mas inesperadamente vimos que 1 retornou (trava PR LINE COMP). Percebemos: algo está acontecendo em um nível baixo na memória de ferrite.
Vale ressaltar que no sistema 1401 padrão, os bits de controle da impressora são armazenados no módulo principal da memória de ferrite, mas nosso sistema utiliza uma "memória impressa" separada para aumentar a produtividade. O problema de desempenho está relacionado à maneira como a impressora usa a memória: toda vez que o martelo é oposto à letra desejada na fita, o computador lê o símbolo correspondente da memória e inicia o eletroímã se o símbolo no armazenamento corresponder ao símbolo sob o martelo. E acontece que a memória é usada continuamente no processo de impressão - e o computador não pode fazer nenhum cálculo durante a impressão. Portanto, eles introduziram uma memória impressa separada com 132 núcleos, que atua como um buffer de impressão.
7 Ao usar esse buffer, a sequência de impressão é copiada rapidamente da memória principal para a memória de impressão. Depois disso, o computador pode continuar computando usando a memória principal. Foi cobrada uma taxa mensal por cada opção adicional IBM 1401: a memória de impressão custa US $ 386 por mês.
Esta é uma cesta de placas de circuito com chips de buffer de impressão. Os feixes de fios amarelos são conectados ao bloco de memória no canto superior direitoA foto acima mostra uma cesta com placas que implementam a função de um buffer impresso. O módulo de memória principal é um bloco no canto superior direito com fios amarelos. (Núcleos de ferrite separados podem ser vistos na foto abaixo). A memória de ferrite requer um grande número de circuitos auxiliares. Para selecionar um endereço, os cartões de condutor geram sinais X e Y. Para magnetizar o núcleo, o sinal é combinado com um pulso de clock, então o cartão de controle amplifica o sinal e o envia através do barramento de interrogação, que passa por todos os núcleos da matriz.
9 Ao ler, o núcleo induz um pulso no fio do sinal. Esse pulso é amplificado pelo cartão de controle e o bit é armazenado na trava. Inúmeras placas no cesto de memória impresso são fornecidas para funções auxiliares nesse processo.
Núcleos no buffer de impressão. A fiação é diferente da memória de ferrite comum, porque cada martelo está diretamente conectado ao núcleo de verificação. A qualidade da imagem é baixa devido à cobertura plástica sobre os núcleosExaminamos o amplificador de sinal e as placas de trava no lado de leitura da memória de ferrite. Acabou que eles funcionaram corretamente, então mudamos para o lado da gravação. O cartão de controle de barramento
HN parecia um candidato à falha porque opera em alta tensão. Mudamos o cartão - mas a impressora ainda não conseguiu iniciar. Depois tentei examinar a entrada deste cartão - e descobri que não havia sinal em uma linha.
Gráfico do osciloscópio de uma placa CHWW ruim com uma porta lógica AND-NOT: rosa (3) e azul (4) correspondem aos sinais de entrada, a saída ciana (2) fica presa em alta tensãoO sinal ausente foi gerado por uma
placa do tipo
CHWW , uma porta lógica NAND, que combina o sinal do barramento inibido com um pulso de clock antes de enviá-lo para a placa de controle. Conectei o osciloscópio à entrada e saída da válvula e fixei os parâmetros de sinal mostrados na ilustração acima. Esse traço fala por si: a saída (ciano 2) permanece alta mesmo quando as duas entradas (rosa 3 e azul 4) alteram o valor de baixo para alto. É imediatamente evidente que a válvula está com defeito. Isso explica tudo: com um valor bloqueado, apenas os valores 1 são gravados na matriz do PLC. Após a impressão do caractere, o circuito lê o valor 1 da memória, pensa que o caractere já foi impresso, a verificação do PLC falha - e ocorre um erro de verificação da impressão.
A impressora funciona com sucesso, imprimindo uma potência de duasSubstituímos este cartão - e a impressora começou a imprimir sem erros (foto acima). Isso prova que finalmente descobrimos o problema; acabou por ser uma porta simples de AND-NOT no fundo da memória de ferrite do buffer impresso. Um cartão com defeito é mostrado abaixo. Ele possui três portas NAND (
partes ) na
lógica diodo-transistor (que a IBM chama de CDTL - Lógica de diodo de transistor complementar). Cada válvula com dois sinais de entrada usa um transistor de germânio (um elemento redondo de metal) e dois diodos (componentes de vidro listrado à direita). À esquerda estão os resistores de carga (listrados) e indutores (bege).
Placa IBM 1401 CHWW com defeito. Possui três portas NAND. O transistor inferior esquerdo está com defeito e foi substituídoTestei uma placa com um gerador de sinal e descobri que duas das três portas estavam funcionando e a terceira estava presa em um sinal de alta saída, confirmando as observações em 1401. Em seguida, verifiquei os transistores no modo de teste de diodo em um multímetro. Em bons transistores, a tensão caiu para 0,23 V. (Pode parecer um valor baixo, mas lembre-se de que são transistores de germânio, não de silício). Para comparação, a tensão em um transistor com defeito diminuiu apenas para 0,95 V. Finalmente, removemos os transistores e os testamos em uma
caractere Tektronix 577 vintage. Pensamos que um transistor ruim seria muito fraco para controlar a trava, mas acabou sendo completamente morto - uma linha completamente plana na caracterografia.
Abrimos o transistor em um torno e olhamos para dentro. Ele usa a liga de germânio
IBM 083 NPN (o germânio era usado antes do silício). O transistor consiste em um pequeno substrato de germânio (um quadrado de metal brilhante na foto abaixo) que forma a base. O emissor e o coletor de dois fios são conectados por pontos de liga de estanho. Sob o microscópio, parece que os pontos de liga estão corroídos e o fio emissor não parece conectado de maneira confiável: suspeitamos que essa seja a principal causa da falha.
Dentro do transistor com defeito de germânio está o IBM 083. O quadrado prateado no centro é um substrato de germânio conectado aos pinos da base. O ponto no meio é a liga de estanho do coletor, que é conectada por um fio ao pino do coletor à esquerda. Um ponto menor do outro lado da matriz de germânio forma um emissor conectado ao contato à direitaConclusões
Acabou sendo mais difícil estudar esse problema do que a maioria dos problemas da IBM 1401. Mas conseguimos encontrar o motivo, substituir a placa defeituosa e dar vida à impressora. Uma vantagem do IBM 1401 em comparação com os sistemas modernos é que não é uma caixa preta: você pode olhar dentro de qualquer circuito, até transistores individuais. Nesse caso, conseguimos encontrar o transistor danificado que causou o mau funcionamento do sistema e até determinar que ele provavelmente foi morto por corrosão.
Notas e links
1. Um dos motivos da alta qualidade de impressão da IBM 1403 foi o uso de uma cadeia flexível, e não de ripas com letras. Muitas impressoras anteriores usavam tiras de fontes que se moviam verticalmente para selecionar caracteres; portanto, qualquer erro de deslocamento ou sincronização alterava a posição vertical dos caracteres, resultando em texto ondulado feio. Em 1403, uma cadeia de letras girava horizontalmente, e a mudança consistia apenas em uma mudança quase imperceptível na distância entre os caracteres.
↑2. Podemos esperar que 132 tacos sejam combinados com 132 letras na corrente e funcionem imediatamente, mas o sistema não funciona assim. Em vez disso, as marretas e as letras estão localizadas de maneira um pouco diferente; portanto, apenas um martelo é combinado com a corrente de cada vez, e um pequeno movimento da corrente leva ao alinhamento do outro martelo com outra letra. (De fato, eles formam um nonius) Em particular, a cada 11,1 microssegundos o circuito se move 0,001 polegadas. Isso leva a um novo alinhamento do martelo e o tipo de letra. Por razões mecânicas, cada terceiro martelo é alinhado até o final da linha (1, 4, 7, ...); isso é chamado de subescaneamento e leva 555 microssegundos. Mais duas digitalizações permitem acionar cada martelo em uma linha, formando uma digitalização de 1.665 milissegundos. 48 digitalizações permitem que cada martelo imprima cada caractere e, em seguida, a 49ª digitalização é usada para verificar se há erros (para um cálculo mais detalhado do tempo, consulte as “Instruções de Operação” , página 37.).O mecanismo de verificação e verificação pode parecer excessivamente complexo. Mas ele consegue combinar o rápido "mundo eletrônico" com o "mundo mecânico" mais lento. Em particular, combine o martelo com a letra a cada 11,1 microssegundos. O computador lê o caractere nesta coluna a partir do núcleo da memória, compara-o com a letra e, se corresponder, inicia o martelo. É importante aqui que o ciclo de memória do núcleo coincida com o tempo de alinhamento do martelo, o que permite ler o símbolo do núcleo para cada alinhamento do martelo. Se você estiver interessado em saber como o mecanismo de impressão funciona, existe essa animação .Uma das nuances é que um golpe de martelo leva 1,52 milissegundos ( “Guia de Operação”, p. 32). Portanto, é necessário executá-lo não quando ele realmente estiver alinhado com a letra, mas 1,52 milissegundos antes deste ponto. ↑3. Algumas verificações rigorosas sobre o funcionamento correto da impressora parecem redundantes. Mas, para um computador comercial, os erros de impressão podem ser desastrosos: imagine que os números na folha de pagamento ou nos formulários fiscais estejam incorretos. Os computadores científicos da IBM não tiveram tantas verificações de erro quanto os computadores comerciais, supondo que os cientistas notassem problemas. ↑4. A IBM 1401 armazena 4.000 caracteres na memória de ferrite do núcleo, não em 4096, porque é uma máquina decimal (ou seja, um código decimal binário) com endereços decimais. A memória pode ser expandida até 16.000 caracteres com uma unidade de expansão de memória do tamanho de uma máquina de lavar louça. Eu já escrevi sobre o reparo deste dispositivo. E aqui você pode ler mais sobre a memória de ferrite 1401. ↑5. A gravação na memória de cada golpe de martelo não é realizada por um computador. Em vez disso, cada martelo é fisicamente conectado diretamente a um núcleo de memória específico; 132 fios conectam eletroímãs aos núcleos. Quando o martelo é acionado, o impulso do eletroímã passa pelo fio através do núcleo correspondente, magnetizando-o (esses fios são visíveis nas fotografias dos núcleos no artigo). ↑6. Era difícil determinar qual sinal causou o erro de entrada F devido à lógica de "fiação" de 1401. Como os transistores eram caros naqueles dias, a IBM usava vários truques para reduzir seu número. Um dos truques é montar OU em vez de uma válvula. Os sinais eram simplesmente combinados; portanto, se um dos dois tivesse um nível alto, o mesmo resultado seria obtido para a linha comum. Portanto, não podíamos apenas detectar os sinais aplicados ao pino F - eles estavam todos conectados. Em vez disso, tive que desligar os cartões para testar cada sinal individualmente. ↑7. Existem 12 matrizes de memória no buffer impresso, ou seja, ele armazena 12 bits em cada local. Como na memória comum, 6 bits são ocupados por cada caractere BCDIC, mais um bit para o rótulo da palavra (metadados indicando a localização dos campos) e um bit de paridade. Além disso, as quatro matrizes no buffer impresso são projetadas para detectar erros: a matriz de sinal da operação dos martelos, a matriz de verificação de conformidade (martelos de gravação que devem funcionar), a matriz de conclusão da impressão de linha (PLC, colunas de gravação com caracteres impressos) e a matriz de verificação de erros (colunas que causou um erro). ↑8. A gravação em núcleos de ferrite parece estar acontecendo ao contrário: um sinal alto no barramento de inibição corresponde à gravação 0. Isso ocorre devido à maneira como os núcleos funcionam. Para alterar o estado magnético do núcleo, é necessário um forte impulso; e um pulso com metade da tensão não o afeta. Os núcleos são dispostos em uma grade com as linhas de endereço X e Y, que fornecem um sinal para a seleção de um núcleo específico. Muitas matrizes são empilhadas umas sobre as outras, cada uma por um bit. Um sinal com meia tensão é fornecido ao longo de cada linha, portanto, apenas na interseção das linhas necessárias X e Y há corrente suficiente para magnetizar o núcleo para o estado 1. Cada matriz possui um barramento de interdição que passa por todos os núcleos da matriz. Ao gravar 1, o barramento não recebe corrente, o que magnetiza o núcleo no endereço especificado, conforme descrito acima. Para escrever 0 na matriz,meia corrente é aplicada ao barramento na direção oposta. Como resultado, nenhum dos núcleos recebe corrente suficiente para alternar, e o núcleo no endereço desejado permanece no estado 0. Portanto, devido à instalação correta dos barramentos, 0 e 1 podem ser gravados nos endereços desejados.↑9. Para obter informações sobre verificações de impressão, consulte “Lógica de comando” na página 98. Para obter informações sobre a impressora 1403, consulte “Descrição dos componentes IBM 1403” , “ Manual de manutenção da impressora 1403” e “Guia de operação da impressora 1403” . Veja também este pequeno artigo sobre a impressora 1403 na revista IEEE Spectrum. Para obter uma descrição detalhada do IBM 1401, consulte "IBM 1401: Uma Teoria Moderna do Trabalho" . ↑