A história emocional dos processadores para os primeiros computadores dos anos 70 ao início dos anos 90

Passei a programar em montadores de diferentes processadores. O último da lista é o Xilinx MicroBlaze. Decidi postar algumas das minhas observações sobre as características desses pedaços quase mágicos de ferro, que, como a chave mágica de Pinóquio, nos abriram portas na terra mágica da realidade virtual e da criatividade em massa. Sobre os recursos dos sistemas modernos x86, x86-64, ARM, ARM-64, etc. Não vou escrever, talvez outra vez - o tópico é muito amplo e complexo. Portanto, pretendo terminar com o Intel 80486 e o ​​Motorola 68040. Também queria incluir o IBM / 370 com o qual estava lidando. Esses sistemas estavam muito longe das massas de usuários, mas ao mesmo tempo tiveram um enorme impacto na tecnologia de computadores. Eles simplesmente não tinham tempo suficiente alocado no tópico, não usavam chips de processador e, por algum motivo, pareciam ter desaparecido completamente. Eu realmente espero que meus materiais atraiam a atenção de conhecedores que possam acrescentar algo que eles não pensaram ou não sabiam.

Como material ilustrativo, estou anexando minha pequena pedra da Rosetta - programas para calcular o número π em diferentes processadores e sistemas usando um algoritmo de obturador, afirmando ser a mais rápida de suas implementações.


Intel 8080 e 8085


O primeiro processador real de um chip, fabricado na primeira metade de 1974, ainda está sendo fabricado e está sendo utilizado. Clonada muitas vezes em todo o mundo, na URSS tinha a designação KR580VM80A. Os modernos processadores Intel para PCs ainda revelam com facilidade sua afinidade por esse produto de relíquia. Eu mesmo não escrevi códigos para esse processador, mas, estando familiarizado com a arquitetura do z80, arriscaria trazer alguns dos meus comentários.

O sistema de instruções 8080, como outros processadores Intel para PCs, dificilmente pode ser chamado de ideal, mas é universal, bastante flexível e possui vários recursos muito atraentes. De seus concorrentes, o Motorola 6800 e o MOS Technology 6502, 8080 diferiam favoravelmente em um grande número de registros, embora um tanto desajeitados, fornecendo ao usuário uma bateria A de 8 bits, um semi-acumulador de 16 bits e um registro de índice HL rápido em tempo parcial, indicador de pilha SP de 16 bits , bem como mais dois registradores de 16 bits, Sun e DE. Os registros BC, DE e HL podem ser usados ​​como registros de 6 bytes. Além disso, o 8080 tinha suporte para um conjunto quase completo de sinalizadores de status: carry, sign, zero, e até paridade e semi-transferência. Algumas das instruções do conjunto de instruções 8080 são campeãs de velocidade. Por exemplo, o comando XCHG troca o conteúdo dos registros DE e HL de 16 bits em apenas 4 ciclos de clock - foi excepcionalmente rápido! Várias outras equipes, embora não tenham estabelecido recordes tão vívidos, também estiveram entre as melhores por um longo tempo:

  • XTHL - trocando o conteúdo do registro HL e os dados no topo da pilha, 18 ciclos de relógio - parece muito, mesmo em um 8086 de 16 bits real, esse comando leva 22 ciclos de relógio, e para um 6800 ou 6502 é até difícil imaginar esse comando;
  • DAD - adicione ao semi-acumulador HL o valor de outro registrador de 16 bits (BC, DE ou mesmo SP), 10 ciclos de clock. Esta é uma adição real de 16 bits com a configuração do sinalizador de transporte. Se você adicionar HL consigo, obterá um deslocamento à esquerda rápido de 16 bits ou multiplicação 2 vezes, uma operação chave para multiplicação e divisão completas;
  • PUSH e POP - coloque na pilha e remova do valor de 16 bits da pilha, respectivamente, do registro ou no registro. Realizado em 11 e 10 ciclos. Essas são as operações mais rápidas do 8080 para trabalhar com memória e, no desempenho delas, há um incremento ou decréscimo automático de SP. PUSH pode ser usado, por exemplo, para preencher rapidamente uma memória com um padrão com valores de 3 registros (BC, DE, HL). Não há comandos para trabalhar com quantidades de 8 bits com uma pilha;
  • LXI - carregando uma constante de 16 bits no registrador (HL, DE, BC, SP) por 10 ciclos de relógio;
  • RNZ, RZ, RNC, RC, RPO, RPE, RP, RM - retornos condicionais da sub-rotina, permitidos para tornar o código mais limpo, eliminando a necessidade de escrever ramificações condicionais extras. Essas equipes foram abandonadas na arquitetura x86; é possível que, em vão, o código com ele seja mais agradável.

Esse processador foi usado no primeiro computador pessoal Altair 8800, que se tornou muito popular após a publicação da revista no início de 1975. A propósito, uma publicação semelhante na URSS só aconteceu em 1980 e sua relevância correspondente apenas em 1986.


Primeiro quase pc

O Intel 8080 se tornou a base para o desenvolvimento do sistema operacional CP / M profissional em massa, que dominou os microcomputadores para trabalho profissional até meados da década de 1980.

Agora sobre as deficiências. O 8080 requer três fontes de tensão de -5, 5 e 12 volts. Trabalhar com interrupções é complicado e lento. E, em geral, o 8080 é bastante rápido, se o compararmos com os concorrentes que logo apareceram. O 6502 pode ser até três vezes mais rápido ao operar na mesma frequência que o 8080.

Mas na arquitetura do 8080, acabou sendo uma visão correta do futuro, a saber, fato desconhecido nos anos 70 de que os processadores serão mais rápidos que a memória. Os registros 8080 DE e BC são mais um protótipo de caches modernos operados à mão do que os registros de uso geral. O 8080 começou com uma frequência de 2 MHz e concorrentes com apenas 1, o que suavizou a diferença de desempenho.

É difícil chamar o 8080 de processador de 8 bits a 100%. Obviamente, ele tem uma ALU de 8 bits, mas existem muitas instruções de 16 bits mais rápidas do que usar apenas análogos de 8 bits. E para algumas equipes, não existem análogos de 8 bits. A equipe do XCHG em essência e horários é 100% de 16 bits. Existem registros reais de 16 bits. Portanto, ouso chamar 8080 parcialmente de 16 bits. Seria interessante calcular o índice de capacidade do processador a partir da totalidade dos sinais, mas até onde o autor sabe, ninguém fez esse trabalho.

O autor não sabe o motivo pelo qual a Intel recusou o suporte direto ao desenvolvimento de PCs de 8 bits com seus processadores. A Intel sempre se distinguiu pela complexidade e ambiguidade da política. Sua conexão com a política, em particular, é ilustrada pelo fato de que, durante muito tempo, a Intel operava fábricas em Israel e até o final dos anos 90 era secreta. A Intel praticamente não tentou melhorar o 8080, a frequência do relógio foi aumentada para apenas 3 com um pequeno MHz. De fato, o mercado de 8 bits foi transferido para a Zilog com um processador 8080 z80 relacionado, capaz de confrontar com sucesso o principal concorrente, o "terminador" 6502.

Na URSS e na Rússia, o clone doméstico 8080 tornou-se a base de muitos computadores de massa que permaneceram populares até o início dos anos 90. É claro que este é o Radio-86RK, Mikrosh, Orion-128 multicolorido, Vector e Corvette. No entanto, os clones baratos e aprimorados do zX Spectrum z80 derrotaram as Guerras Clônicas.


Este é um PC real.

No início de 1976, a Intel lançou o processador 8085, compatível com o 8080, mas muito superior ao seu antecessor. Já tornou desnecessária a fonte de alimentação de -5 e 12 volts e o diagrama de conexão foi simplificado, o trabalho com interrupções foi aprimorado, a frequência do relógio foi usada de 3 a 6 MHz muito sólidos, o sistema de comando foi expandido com várias instruções úteis: subtração de 16 bits, mudança de 16 bits para a direita em apenas 7 ciclos (isso é muito rápido), rotação de 16 bits para a esquerda através do sinalizador de transferência, carregamento de um registro de 16 bits com um deslocamento de 8 bits (este comando também pode ser usado com o ponteiro da pilha SP), escreva o registro HL no endereço DE semelhante a h HL flui através do DE. Todas as instruções acima, com exceção da mudança para a direita, são executadas em 10 ciclos - às vezes é significativamente mais rápido que seus equivalentes ou emulação no z80. Mais algumas instruções foram adicionadas e até dois novos sinalizadores de bandeira. Entre os novos sinalizadores, vale a pena notar o sinalizador de estouro, embora o trabalho com ele praticamente não tenha suporte. Além disso, muitas instruções para trabalhar com dados de bytes foram aceleradas. Isso foi muito significativo, pois em muitos sistemas com 8080 ou z80 foram introduzidos ticks de atraso, que, devido à presença de ticks extras no 8080, podiam prolongar o tempo de execução quase duas vezes. Por exemplo, em um computador doméstico, as instruções de vetor do tipo registrador de registro foram executadas por 8 ciclos de clock e, se houvesse 8085 ou z80, essas mesmas instruções seriam executadas em apenas 4 ciclos de clock. A instrução XTHL é ainda dois passos mais rápida. Com as novas instruções, você pode escrever um código para copiar o bloco de memória, mais rápido que os comandos LDI / LDD do processador Z80! No entanto, algumas instruções, por exemplo, incremento e decremento de 16 bits, PUSH e retornos condicionais se tornaram mais lentos por relógio.

O 8085 possui suporte interno para trabalhar com interrupções, o que, em muitos casos, permite que você faça isso sem um controlador de interrupção separado no sistema e uma porta de entrada / saída serial. Como já observado, em 8085 eles não adicionaram suporte completo ao sinalizador de estouro, portanto a aritmética dos números com um sinal permaneceu um pouco incompleta.

No entanto, posso repetir novamente a fórmula "por razões desconhecidas do autor". A Intel se recusou a promover o 8085 como processador principal. Somente nos anos 80 surgiram vários sistemas baseados em 8085. O primeiro em 1981 foi o antecessor e quase rival do IBM PC - IBM System / 23 Datamaster. Então, em 1982, foi lançado um computador muito rápido, com excelentes gráficos, o Zenith Z-100, no qual 8085 trabalhava a 5 MHz. Em 1983, a empresa japonesa Kyotronic criou uma joelheira KC-85 de muito sucesso, cujas variantes também foram produzidas por outras empresas: a Tandy produziu o TRS-80 modelo 100, NEC - PC-8201a, Olivetti - M-10. No total, foram liberadas mais de 10 milhões de cópias desses computadores! Na URSS / RF no início dos anos 90, com base no clone doméstico IM1821VM85A, houve tentativas de melhorar alguns sistemas, por exemplo, o computador Vector. Surpreendentemente, o processador principal do rover Sojourner, que atingiu a superfície de Marte em 1997, era 8085 com uma frequência de 2 MHz!

De fato, a Intel deu ao z80 uma cor verde. Alguns anos depois, na batalha pelo mercado de 16 bits, a Intel se comportou de maneira completamente diferente, iniciando um processo para proibir as vendas dos processadores v20 e v30 nos Estados Unidos. Curiosamente, os processadores mencionados da empresa japonesa NEC poderiam mudar para o modo de compatibilidade binária total com o 8080, o que os tornou os processadores mais rápidos da arquitetura 8080.

Outro segredo da Intel é a recusa em publicar um sistema de comando estendido, incluindo suporte para novos sinalizadores. No entanto, um dos fabricantes oficiais desses processadores publicou todo o sistema de equipes. Quais são as razões para uma rejeição tão estranha? Só se pode adivinhar. Talvez o Zilog tenha desempenhado um papel semelhante ao que a AMD possivelmente representou, e tenha criado a aparência de competição, e o 8085 possa derrubar o Zilog? Talvez o ponto esteja no desejo de manter o sistema de comando mais próximo do 8086 então projetado? O último parece duvidoso. O Intel 8086 foi lançado mais de 2 anos após o lançamento do 8085 e é difícil acreditar que em 1975 seu sistema de comando já era conhecido. E, em qualquer caso, a compatibilidade com o 8080 e o 8085 a 8086 é possível apenas com o uso de um processador macro, às vezes substituindo um comando do 8080/8085 por vários. Além disso, as duas novas instruções publicadas 8085 em 8086 não são viáveis. É especialmente difícil explicar por que a Intel não publicou informações sobre novas equipes após o lançamento do 8086. Só podemos supor que era mais uma questão de marketing. Piorando artificialmente as especificações do 8085, obtivemos um 8086 mais espetacular nesse cenário.

Motorola 6800 e parentes próximos


Os processadores Motorola sempre se distinguiram pela presença de vários "destaques" muito atraentes, enquanto ao mesmo tempo a presença de algumas soluções arquitetônicas que são absurdas em abstração e baixa praticidade. O principal "destaque" de todos os processadores em questão é a segunda bateria de registro cheia e muito rápida.

O 6800 foi o primeiro processador do mundo que precisava de apenas uma fonte de energia (5 volts) - foi uma inovação muito útil. Devido à exclusividade do registro de índice de 16 bits, que é complicado para uma arquitetura de 8 bits, o Ho 6800 acabou sendo inconveniente para a programação e o uso pelo produto. Foi lançado em 1974, não muito depois de 8080, mas nunca se tornou a base de nenhum sistema de computador conhecido. Curiosamente, os desenvolvedores do 6502, Chuck Peddle e Bill Mensch, consideraram o 6800 errado, "grande demais". No entanto, ele e suas variantes foram amplamente utilizados como microcontroladores. Talvez valha a pena notar que a Intel fabrica processadores desde 1971, que colocam a Motorola na posição de vantagem, para a qual o 6800 foi o primeiro processador. E se você comparar o 6800 não com o 8080, mas com o seu antecessor 8008, o 6800 será muito mais preferível. A Motorola quase alcançou a Intel com 68000/20/30/40. Você também pode notar que, nos anos 70, a Motorola era uma empresa muito maior que a Intel.

Também foram produzidas 6800 variantes: 6801, 6802, 6803, 6805, ... A maioria delas são microcontroladores com memória interna e portas de entrada / saída. O 6803 é um 6801 simplificado e foi usado muito tarde (1983) para seu computador de classe Tandy TRS-80 MC-10 e seu clone francês Matra Alice, que eram comparáveis ​​ao Commodore VIC-20 (1980) ou Sinclair ZX81 (1981). O sistema de instruções 6801/6803 foi significativamente aprimorado, foram adicionadas instruções de 16 bits, multiplicação ... Uma instrução incomum de ramificação incondicional (BRN - ramificação nunca) apareceu, que nunca é executada! Algumas instruções tornaram-se um pouco mais rápidas.

O 680x suporta totalmente o trabalho com números inteiros assinados, o z80 e o 6502 o suportam pior, enquanto o 8080 e o 8085 quase não têm esse suporte. No entanto, no software de 8 bits, esse suporte raramente era necessário.

O 6809 foi lançado em 1978, quando a era de 16 bits já havia começado com o 8086 e possui um sistema de comando muito desenvolvido, incluindo a multiplicação de baterias de dois bytes para obter um resultado de 16 bits em 11 ciclos (para comparação, o 8086 requer 70 ciclos para uma operação semelhante) . Duas baterias podem, em vários casos, ser agrupadas em uma de 16 bits, o que fornece instruções rápidas de 16 bits. O 6809 possui dois registradores de índice e um número recorde de métodos de endereçamento entre processadores de 8 bits - 12. Entre os métodos de endereçamento, existem apenas chips de 8 bits, como índice com auto-incremento ou decremento, em relação ao contador de instruções, índice com deslocamento. O 6809 tem uma oportunidade interessante de usar dois tipos de interrupções: você pode usar interrupções rápidas com economia parcial parcial de registros e interrupções com economia total de registros - o 6809 possui três entradas para sinais de interrupção FIRQ (máscara rápida), IRQ (máscara), NMI (máscara). Às vezes, também é conveniente usar instruções rápidas para ler e definir todos os sinalizadores de uma só vez.

No entanto, as operações de memória exigem mais de 6502 ciclos de relógio.Os registros de índice permaneceram dinossauros desajeitados de 16 bits em um mundo de 8 bits, algumas operações são simplesmente chocantes devido à sua lentidão, por exemplo, transferir uma bateria de byte para outra leva 6 ciclos e a troca seu conteúdo é 8 ciclos (compare com o 8080, onde ocorre uma troca de 16 bits em 4 ciclos)! Por alguma razão, dois ponteiros de pilha são oferecidos imediatamente, talvez tenha sido a influência da arquitetura de impasse VAX-11 - em uma arquitetura de 8 bits com 64 KB de memória, parece muito estranho. E mesmo a presença de uma instrução com o nome interessante SEX não pode resolver todos os problemas do 6809. Em geral, o 6809 ainda é um pouco mais rápido que o 6502 na mesma frequência, mas requer a mesma velocidade de memória. Consegui fazer a divisão para o 6809 com um dividendo de 32 bits e um divisor de 16 bits (32/16 = 32,16) por pouco mais de 520 ciclos, para 6502 não consegui atingir menos de 650 ciclos. A segunda bateria é uma grande vantagem, mas outros recursos do 6502, em particular a transferência invertida, reduzem essa vantagem apenas para os 25% indicados. Mas a multiplicação por uma constante de 16 bits acabou sendo mais lenta que a tabela 6502 com uma tabela 768 bytes. O 6809 permite escrever códigos bastante compactos e rápidos usando o endereçamento da página instalada (página direta), mas esse endereçamento torna os códigos bastante confusos. A essência desse endereçamento é definir o byte alto do endereço de dados em um registro especial e especificar apenas o byte baixo do endereço nos comandos. O mesmo sistema com apenas um valor de byte alto fixo é usado no 6502, onde é chamado de endereçamento de página zero. O endereçamento da página instalada é um análogo direto do uso do registro de segmento DS em x86, não apenas para segmentos de 64 KB, mas para segmentos de apenas 256 bytes. Outra arquitetura rebuscada do 6800 é o uso da ordem de bytes de alto a baixo (Big Endian), que diminui as operações de 16 bits de adição e subtração. O 6809 não é totalmente compatível com os códigos de instrução 6800. 6809 foi o último processador de 8 bits da Motorola; em desenvolvimentos posteriores, decidiu-se usar o 68008.

Pode-se supor que a Motorola gastou muito dinheiro para promover o 6809. Isso ainda é verdade com a menção deste processador. Cerca de 6809 existem muitas análises favoráveis, diferindo em algumas nebulosas, generalizações e imprecisões. 6809 foi posicionado como um superprocessador baseado em microprocessador de 8 bits. Quase os sistemas operacionais Unix, OS-9 e UniFlex foram feitos para ele. Apple Macintosh , , 68000. , 6809 – , 6502 ( ) z80 ( ). , , Motorola 6809 6502.

6809 . – Tandy Color Tandy Coco, Dragon-32/64. 80- Tandy Coco , . 6809 - 80- Thomson, - . 6809 : Commodore SuperPET 9000 TUBE- BBC Micro. , , . . , Vectrex, – .


3

680x « » (Halt and Catch Fire – HCF), , , . , (reset). . 6800 , , , .. !

8080, 8085 z80 6809 8-. 6309 8-, Toshiba ( , , 1982) , 6809. , , 6809 . , 1988 Usenet. , , . . , 32- 16- (32/16=16,16) 34 , . 16- 32- 28 . 6 + 3n, n – , , . . . , - . 0. - , 6309 – 8- 64 .

6309 6809, Tandy . , e 6309.

MOS Technology 6502 WDC 65816


. . . :

  • - Motorola, - Intel;
  • MOS Technology;
  • 6502 .

Tudo começou com o fato de a Motorola, por razões completamente desconhecidas, recusar-se a apoiar a iniciativa, jovens engenheiros que se propunham a melhorar o geralmente medíocre processador 6800. Eles tiveram que deixar a empresa e continuar seu trabalho na pequena mas promissora empresa MOS Technology, onde logo prepararam dois processadores 6501 e 6502 fabricados usando a tecnologia NMOS. O primeiro era compatível com o 6800, mas por outro lado eram idênticos. A equipe 6501/6502 conseguiu introduzir com sucesso a nova tecnologia de fabricação de chips, o que reduziu radicalmente o custo de novos processadores. Em 1975, a MOS Technology poderia oferecer US $ 6502 por US $ 25, enquanto o preço inicial do Intel 8080 e Motorola 6800 era em 1974 US $ 360. Em 1975, Motorola e Intel reduziram os preços, mas ainda estavam perto de US $ 100. Os especialistas em tecnologia MOS alegaram que seu processador é até 4 vezes mais rápido que o 6800. Isso me parece duvidoso: o 6502 pode trabalhar com memória muito mais rapidamente, mas a segunda bateria do 6800 acelerou muito muitos cálculos. Eu posso estimar que o 6502 foi, em média, mais rápido do que 2 vezes. A Motorola iniciou uma ação contra seus ex-funcionários - eles alegadamente usaram muitos dos segredos tecnológicos da empresa. Durante o processo, foi possível estabelecer que um dos engenheiros que deixaram a Motorola emitiu alguns documentos confidenciais no 6800, agindo de forma contrária às configurações de seus colegas. Ainda não se sabe se foi sua própria ação ou se houve algumas forças orientadoras atrás dele. Por esse e outros motivos não totalmente claros, a Motorola obrigou a MOS Technology, cujas capacidades financeiras eram muito pequenas, a pagar uma quantia significativa de US $ 200.000 e a abandonar a produção de 6501. A Intel em uma situação semelhante ao Zilog agiu de maneira bastante diferente. Embora deva-se admitir que a MOS Technology às vezes era muito arriscada ao tentar usar o grande dinheiro gasto pela Motorola para promover o 6800 para seus próprios fins.

Mais adiante, aparecem a lendária empresa Commodore e seu igualmente lendário fundador, Jack Tramiel, à sombra da figura do principal financiador da empresa que determina sua política - um homem chamado Irving Gould. Jack recebeu um empréstimo de Irving e, com esse dinheiro, usando vários, para dizer o mínimo, táticas inescrupulosas, forçou a MOS Tecchnology a se tornar parte do Commodore. Depois disso, talvez contrariamente aos desejos de Tramel, que cedeu a Hood, o desenvolvimento do 6502 praticamente parou, embora em 1976 tenha sido possível produzir protótipos 6502 com frequências de operação de até 10 MHz, embora uma mensagem sobre isso tenha aparecido apenas depois de muitos anos de uma pessoa chamado Bill Mensch (ele fazia parte da equipe que deixou a Motorola), que repetidamente fez declarações barulhentas, mas em grande parte vazias, e teve um papel bastante ambíguo no destino de 6502. O desenvolvedor principal do 6502, Chuck Peddle, foi removido para sempre do desenvolvimento de processadores. O 6502 continuou a ser produzido não apenas no Commodore, mas também na empresa criada por Bill Mensch, Western Design Center (WDC). É curioso que nenhuma equipe anterior do 6502 tenha trabalhado com ele no futuro.

O drama por volta de 6502 não terminou aí. Em 1980, apareceu um pequeno artigo anônimo na revista AIM65 Interactive da Rockwell, afirmando que todos os 6502 carregam um bug perigoso chamado JMP (xxFF). O tom do artigo sugere algo completamente fora do comum. Posteriormente, essa atitude mudou para a posição da Apple sobre esse assunto e se tornou uma espécie de mainstream. Embora, estritamente falando, não houvesse "bug". Obviamente, um dos recursos, bastante apropriado e até útil entre os microprocessadores, pode parecer um bug irritante para um especialista que se acostumou aos confortáveis ​​processadores de grandes sistemas daqueles anos. Mas, de fato, esse comportamento, que magoa os sentimentos de alguém, foi descrito na documentação oficial de 1976 e nos livros didáticos de programação que apareceram antes do aparecimento do artigo mencionado. O "bug" foi eliminado por Bill Mensch, que produziu 6502 (CMOS 6502) presumivelmente em 1983, ou seja, após o lançamento do 65816. Enquanto a Intel, a Motorola e outros fabricantes de processadores de 16 bits das novas gerações, o 6502 foi aprimorado apenas microscopicamente e tornado artificialmente parcialmente incompatível consigo mesmo. Além de eliminar o "bug", várias alterações foram feitas, o que, em particular, levou a uma alteração durante a execução de várias instruções, que se tornaram mais lentas a cada batida, mas, ao mesmo tempo, em um sentido acadêmico absurdo, tornaram-se mais corretas. Mas devo admitir que várias novas instruções foram esperadas e úteis. Por outro lado, a grande maioria das novas instruções ocupava apenas o espaço do código, adicionando quase nada aos recursos do 6502, o que deixava menos novos códigos para possíveis atualizações adicionais. O Commodore e a Ricoh japonesa (fabricante dos consoles de jogos NES mais populares) não aceitaram essas alterações. O próprio autor deste material encontrou várias vezes o problema desse "bug". Sem saber nada sobre ele, ele escreveu programas para o Commodore. Em seguida, ele transferiu um deles para sistemas em que um conjunto de comandos 6502 foi usado. Incompatibilidade surgiu, tive que mudar os códigos, fazer uma compilação condicional. O código para 6502 acabou sendo mais volumoso e lento. Em seguida, ele levantou essa questão no fórum 6502.org, onde a maioria dos participantes é do mundo Apple. Perguntei se alguém poderia dar um exemplo quando o "bug" indicado travou o programa. Recebi apenas comentários emocionais e gerais; nenhum exemplo concreto foi proposto.

Bug !!!

O 65C02 foi licenciado para muitas empresas, em particular NCR, GTE, Rockwell, Synertek e Sanyo. Usado no Apple II, começando com os modelos IIe, embora muitos IIe usassem o NMOS 6502. A variante 65C02 6512 também foi usada nos modelos posteriores da BBC Micro. A Atari usou o NMOS 6502. Além do CMOS 6502, a Synertek e a Rockwell também produziram o NMOS 6502. A propósito, o NMOS 6502 possui seu próprio conjunto de instruções não documentadas, cuja natureza é completamente diferente dos comandos “secretos” 8085. Em 6502, essas instruções apareceram como um efeito colateral da tecnologia usada, portanto a maioria deles é bastante inútil, mas vários, por exemplo, carregam ou descarregam dois registradores com um comando ao mesmo tempo e outros podem tornar o código mais rápido e mais compacto.

Houve outras tentativas de atualizar o 6502. No mesmo ano de 1979, apareceu um artigo que os computadores da Atari estavam se preparando para produzir o processador 6509 (que não deve ser confundido com o processador com o mesmo nome da empresa Commodore que apareceu mais tarde), que deveria acelerar a execução de comandos em 25% e muitos novos. instruções. Mas, por razões desconhecidas na precisão, a produção deste processador não ocorreu. O Commodore realizou apenas atualizações microscópicas. Lá, em particular, eles mudaram para a tecnologia HMOS e a produção de núcleos estáticos, o que tornou possível a desaceleração dos processadores. Do ponto de vista da programação, o mais interessante é o processador 6509, que, embora de forma muito primitiva, com a ajuda de apenas duas instruções especialmente alocadas para esse fim, permite endereçar até 1 MB de memória. No super popular Commodore 64 e 128, havia 6510/8510 processadores e nas menos bem sucedidas 264 séries - 7501/8501. Esses processadores tinham apenas 6 e 7 portas de E / S incorporadas, respectivamente, enquanto o 7501/8501 não suportava interrupções desmascaráveis. A Rockwell produziu a variante 65C02 com seu conjunto de instruções de operações estendidas de 32 bits (semelhante às instruções do z80 bits), no entanto, tanto quanto eu sei, esses processadores não foram usados ​​em computadores e essas instruções de bits eram mais propensas a serem usadas apenas em sistemas embarcados. Esta extensão, a propósito, foi produzida por Bill Mensch.

A última cena do drama com a participação do 6502 foi indicada na prevenção de computadores baseados no 6502 com frequência de 2 MHz para o mercado norte-americano na primeira metade dos anos 80. Isso afetou a estrangeira-inglesa BBC Micro, sua empresa de produção Acorn fabricou um grande lote de computadores para os Estados Unidos, mas, como se viu, em vão. Algum tipo de bloqueio funcionou e os computadores tiveram que ser urgentemente refeitos para os padrões europeus. Os computadores semi-americanos, mas formalmente canadenses, Commodore CBM II (1982), apesar de alguns problemas (em particular, de acordo com os padrões para equipamentos elétricos), ainda eram permitidos. Talvez devido ao fato de eles não possuírem modos gráficos e nem texto colorido - nem mesmo o elegante design da Porsche poderia compensar isso. O último na lista de perdedores foi o 100% americano Apple III (1980) - sabe-se que Steve Jobs, como o gerente da Apple em geral, fez muito para impedir que esse computador acontecesse. Os empregos exigiam especificações claramente impossíveis e gerenciamento - prazos irrealistas. Será que algum dia descobriremos seus motivos? O Apple III Plus, lançado em 1983, conseguiu eliminar as falhas do Apple III, mas o gerenciamento da Apple fechou o projeto em 1984, devido à falta de vontade de competir com o computador Macintosh. Somente em 1985, quando a era da tecnologia de 8 bits começou a sair, o Commodore 128 apareceu, que podia usar 6502 em um de seus modos com uma velocidade de clock de 2 MHz. Mas aqui também ficou mais uma piada, já que esse modo praticamente não era suportado e praticamente não havia programas para isso. Somente na segunda metade da década de 80, nos Estados Unidos, começaram a produzir aceleradores de consoles para o Apple II e, desde 1988, o modelo Apple IIc + com um processador de 4 MHz. Por que isso aconteceu? Talvez porque 6502 a 2 ou 3 MHz (e esses já foram produzidos no início dos anos 80) em várias tarefas e, em particular, com jogos, pudesse competir com sucesso com sistemas baseados em Intel 8088 ou Motorola 68000. Em 1991, a Commodore Corporation fechou Um projeto C65 interessante, embora tardio, baseado em um processador 4510 com uma frequência de 3,54 MHz. 4510 - este é o 6502 mais rápido, fabricado apenas em 1988, foi realizado finalmente mencionado otimização anterior dos ciclos, o que deu um aumento de 25% na velocidade. Assim, o processador em C65 é próximo em velocidade aos sistemas com 6502 a 4,5 MHz. Surpreendentemente, este 6502 mais rápido, com um conjunto expandido de instruções (em alguns detalhes, essa extensão se mostrou mais bem-sucedida do que em 65816) nunca foi usado em nenhum lugar desde então.

O C128 e o Apple III Plus tinham uma unidade de gerenciamento de memória (MMU), que permitia usar várias pilhas e zero páginas, endereçando mais de 64 KB de memória etc. No C128, o MMU foi artificialmente aparado para funcionar com apenas 128 KB de memória. Para a BBC Micro, foram produzidos consoles com 6502 a 3 MHz (1984) e 4 MHz (1986).


Anti-publicidade - vários PETs da Porsche no apartamento do vilão da Pérola do Nilo (1985) - a era apenas da Apple em Hollywood ainda não chegou

Agora, algumas palavras sobre o sistema de instruções 6502. A principal característica desse processador é que ele foi fabricado o mais rápido possível, praticamente sem ciclos de clock extras, especialmente numerosos nos processadores 8080/8085 / z80 / 8088/68000. De fato, foi a ideologia dos processadores de arquitetura 6502 RISC que apareceu mais tarde e sob a influência direta. A mesma ideologia domina, começando com 80486, e entre os processadores Intel. Além disso, o 6502 reagiu o mais rápido possível às interrupções, o que o tornou muito útil em alguns sistemas embarcados. O 6502 possui uma bateria e dois registradores de índice; além disso, os primeiros 256 bytes de memória podem ser usados ​​em comandos especiais como memória mais rápida ou como um conjunto de registradores de 16 bits (cuja funcionalidade é quase idêntica aos registradores BC e DE em 8080 / z80) para métodos de endereçamento bastante poderosos. Algumas instruções aritméticas (turnos, rotação, incremento e decremento) podem ser usadas diretamente com a memória, sem o uso de registradores. Não há instruções de 16 bits - é um processador 100% de 8 bits. Todos os principais sinalizadores são suportados, exceto a arquitetura característica do sinalizador de paridade Intel. Há mais algumas bandeiras incomuns do 10º modo inútil. Os processadores Intel e Motorola usam instruções corretivas especiais para trabalhar com números decimais, e o 6502 pode alternar para o modo 10, o que torna sua vantagem de velocidade com 10 números ainda mais significativa do que com os binários. É impressionante que, para a multiplicação da tabela 6502 de operandos de 8 bits, obtenha um resultado de 16 bits em menos de 30 ciclos de clock, com o tamanho da tabela auxiliar em 2048 bytes. Lentamente, o 6502 produz operações de cópia em massa da memória - a partir de 14 ciclos de clock por byte.

O 6502 pode funcionar em paralelo com outro dispositivo, por exemplo, outro 6502. Até onde eu sei, esses sistemas de processador duplo nunca foram produzidos. Em vez do segundo processador, geralmente era usado um controlador de vídeo, que compartilhava memória com o 6502.

O 65816 foi lançado pela WDC em 1983. Curiosamente, Bill Mensch recebeu especificações da Apple. Obviamente, este foi um grande passo em frente, mas obviamente atrasado e com grandes falhas arquitetônicas. O 65816 não foi considerado por ninguém como concorrente dos principais processadores Intel ou Motorola - já era um outsider secundário, que já havia sido programado para estabelecer uma perda adicional de posição. O 65816 teve duas vantagens importantes - era relativamente barato e quase compatível com o ainda muito popular 6502. Nos anos subsequentes, Bill Mensch nem sequer tentou melhorar de alguma forma sua ideia, fazer otimização de loop, substituir o endereço da página zero pelo extenso usando o registro Z ( isso foi feito em 4510), para adicionar pelo menos multiplicação ... O WDC apenas aumentou as frequências máximas de clock, atingindo os meados dos anos 90 para 14 MHz (este processador foi usado no popular acelerador da C64 SuperCPU a uma frequência de 20 MHz). No entanto, mesmo agora (2019!), O WDC oferece 65816, por algum motivo, apenas nos mesmos 14 MHz. O 65816 pode usar até 16 MB de memória, mas os métodos de endereçamento usados ​​para isso parecem longe do ideal. Por exemplo, os registros de índice podem ter apenas 8 ou 16 bits, a pilha pode ser colocada apenas nos primeiros 64 KB de memória; somente aí você pode usar o conveniente endereço curto da página instalada (página direta - generalização da página zero), trabalhar com memória acima de 64 KB comparativamente desajeitado, ... 65816 possui uma ALU de 16 bits, mas um barramento de dados de 8 bits; portanto, nas operações aritméticas, é apenas 50% mais rápido que o 6502. No entanto, o 65816 foi lançado em mais de um bilhão. Obviamente, várias instruções 65816 complementam claramente as falhas na arquitetura 6502, por exemplo, instruções para copiar em massa a memória por 7 ciclos de clock por byte. Você também pode adicionar que o 65816 usa quase todos os códigos de instrução (255 de 256). O último código não utilizado é para instruções longas e futuras que nunca apareceram.

O Apple IIx, no desenvolvimento do qual Steve Wozniak participou ativamente, deveria usar o 65816, mas foi possível estabelecer a produção desse processador apenas em 1984 e os primeiros lotes do 65816 estavam com defeito, o que causou atrasos excessivos e, como resultado, encerrou o projeto inteiro.

Há também uma opção 65816 65802, que usa um barramento de endereço de 16 bits e é compatível com os conectores 6502. Houve atualizações para o Apple II com base neste processador, mas você pode obter uma pequena aceleração com essa atualização apenas em programas especialmente escritos para ele.

O 6502 foi usado em um grande número de sistemas de computadores, sendo os mais populares o Commodore de 8 bits, Atari, Apple, NES. Curiosamente, o 6502 foi usado como controlador de teclado no computador Commodore Amiga, e dois 6502 a 10 MHz foram usados ​​no Apple Macintosh IIfx de alto desempenho. Aqui não se pode deixar de mencionar os consoles de jogos Atari, fabricados de 1977 a 1996, - eles foram vendidos aproximadamente 35 milhões! O 65816 foi usado no popular computador Apple IIgs, no console de jogos Super NES e também no raro computador inglês Acorn Communicator.

Em 1984, um artigo sobre uma cópia ruim do computador da Apple] [feita na URSS] apareceu na revista Byte no contexto de fotos com faixas vermelhas, Lenin e soldados em marcha. Este artigo citou um preço curioso para este computador - US $ 17.000 (este é um número absurdo, o preço real era de cerca de 4.000 rublos) e, ironicamente, apontou que os fabricantes soviéticos teriam que baixar drasticamente o preço se quisessem vender seu produto no Ocidente. A ágata foi usada principalmente na educação escolar. Os modelos mais antigos do Agate eram quase 100% compatíveis com a Apple] [e tinham algumas extensões bastante úteis.

Você só pode tentar fantasiar sobre o que aconteceria se o 6502 pudesse se desenvolver no mesmo ritmo que seus concorrentes. Parece-me que a transferência gradual da memória de página zero para os registros e a expansão gradual do sistema de instruções com a otimização simultânea dos ciclos permitiriam ao 6502 "terminador" permanecer na liderança em termos de velocidade até o início dos anos 90. A introdução do modo 16 e 32 bits permitiria o uso de grandes quantidades de memória e comandos mais rápidos. Seus concorrentes poderiam ter algo a que se opor?

Gostaria de terminar com algumas considerações filosóficas gerais. Por que o 6502 foi freado e desprovido de um futuro muito mais brilhante? Talvez devido ao fato de ele realmente conseguir espremer grandes empresas e criar uma realidade completamente nova. Mas a equipe 6502 foi criada para isso? Em vez disso, eles só queriam fazer um processador melhor.

Já muito mais tarde, no início do século XXI, com a ajuda de processos impostos por motivos absurdos, a empresa Lexra, que produziu vários processadores inovadores por 5 anos, foi derrotada. Essa triste história lembra um pouco o que aconteceu com a MOS Technology.

Zilog z80


Esse processador, juntamente com o 6502, tornou-se o principal processador dos primeiros computadores pessoais. Não há eventos dramáticos na história de sua aparência e uso. Há apenas alguma intriga na falha do Zilog em tornar a próxima geração de processadores. O Z80 começou a produzir em 1976 e suas variantes ainda estão sendo produzidas. - z80.

. 6502, Z80, (Federico Faggin), , Intel. z80 Z8000 80- , . , , . , , z80, Zilog Z8.

Z80 – , 8080. . , 8080 , . , Zilog 8080, , z80. Intel x86 GNU, - . Z80 , Intel 8086. , z80 , , 8086, . z80, 6502, , .. , « », « », – , 8086, 6800 PDP-11 .

z80 21 , . EXX, 48 , BC, DE, HL , 4 ! 32- ARM 6 . , . :

  • 16- c 16- 15 ;
  • 8 ;
  • , BC, DE, SP, IX,IY, HL;
  • , - 8- ;
  • , ;
  • (JR);
  • .


, . 16- IX IY, . , IX IY Z80 6800 Z80! , Z80 - , .

8080 z80 . 16- ADD , , -.

8080. z80 , ( 8080) . 2, .

Z80 , CMOS, . , 16- I IY. Z80 , , .

, z80 , 8080 16-. z80 - , , z80 4-! z80 8080 – .

z80 6502, . , . z80 , . z80 4 , 6502 6809 1.3 . , , 6502 2.4 2.6 , z80. . , , z80 – , , . , z80 6502 2.2 . , 4- . z80 . z80, PUSH, 6502, . z80 1.5 . , 32- 16- z80 1.7 . , . , , ZX Spectrum c z80 3.5 MHz 64 6502 1 . , z80 6502 , , - Amstrad CPC/PCW 3.2 , 4. 6502 . , , , z80 25-40% , 6502. , 2 z80 6 , 6502 2 .

Z80 . Tandy TRS-80, — ZX Spectrum, Amstrad CPC PCW. , Amstrad PCW 90- 90-. MSX. C128 z80, – , 1985 , 8- z80, 2 , 1.6 . , 8080 70-. CP/M .


90-, z80 , ZX Spectrum

z80 – BBC Micro c TUBE- z80B 6 , 1984. , , « ». Apple ][ 1979. Z80H 8 . , Microsoft 1980 . Amstrad PCW16, 1994, CMOS Z80 16 .

MSX TurboR (1990) R800, z80. R800 16- 32- . 16- , 768 . , R800 — Z800, , , 7.16 M. , R800 28.64 !

Zilog Z80 . Z80 2.5 , Z80A 4 – , Z80 . Z80B 1980, , , BBC Micro (1989) Sam Coupé. Z80H 80- 8 – . , Zilog , , , Z80 9 , , , .

z80 Zilog , 16- Intel. 1978, 8086 Z8000, z80. Intel , , Motorola – 68000 Z8000, Z8000 , , Unix. , IBM Z8000 IBM PC, Zilog Exxon, IBM. - Z8000 Zilog 1980 Exxon. 32- . 1986 Z80000, Z8000, . , , Zilog , , Zilog - , Exxon.

, Zilog , Z80, Intel, . , , AMD, Cyrix, VIA.

Z80 1985, Z800. , Zilog Z80000 Z800 . 1986, z80000 Z280, Z800, , , , – Intel 486DX2 486DX4 . Z280 , . , – Z280, , , . , Z280 Intel 80286, , 50% 80286 . , Z280 5 , .

Hitachi, 1985 -Z80, HD64180, Intel 80186, 512 , , Z80 . HD64180 . Zilog HD64180 Z64180. Zilog , , 1 1986 . Z180 , 33 . MSX2, . , Z280 Z180 , 80286 80186 . 1994 Z180 32- Z380, z80 Intel 80386 Motorola 68020 – Zilog 10 . 21 Z180 - eZ80 6502. , , , DVD-, ,…

Texas Instruments TMS9900


. 16- . 1976 . (Big Endian). Motorola 6800 68000 IBM/370. (Little Endian).

TMS9900 16- : , . 32 16 . - 6502. , TMS9900 . Z80, . , , (), , , . RISC- . , . . , . TMS9900 , 16.


16- –

. . X . , 8 , – 14, (16*16=32) 52 (32/16=16,16) 124 70-.

TMS9900 -5, 5 12 – . 1979 IBM, IBM PC. TMS9900 ( 64 , , ) Intel 8088. Texas Instruments TMS9900 8- , TMS-9980, 33% .

TMS9900 TI99/4 TI99/4A, «» Commodore VIC-20 1983. , Texas Instruments 1983 $49 ( 1979 $1150!) . Commodore+4, 1986, $49 1989 . T99/4A 1984, , - . 16-. 256 (!) 16- . - 8- . 16- -0010. , TI99/4 TI99/4A 3 – -0010.

TI-99/4 TI99/4A TMS9918, MSX, . Yamaha , , TI-99/4 TI99/4A!

TI99/4 – , .

DEC PDP-11


70- 10- DEC. DEC , IBM , IBM . . PDP-11 . PDP-11 70- 90-. . , -60/81/85, -1/2/3, -0010/0011 (0010 – , ).

, DEC VAX-11, . 70- DEC PDP-11, , 16- . PDP-11 70-.

PDP-11 , , , LSI-11, F-11, J-11. 70- DEC T-11. , , , , . Atari. T-11 , z80. 18011, 18012, 18013,… DEC, DEC. .

PDP-11 , , , . PDP-11 Motorola 68000.

PDP-11 16-. 8 ( – R7) – 16 , ( ) 16- , 1- 3- 16- . ( , , XOR) – . – . 80- , Intel x86 -. PDP-11, . , , 90- . , , - . PDP-11 , ,

MOV @(R0)+,@-(R1) 

significa o mesmo que o operador de linguagem C / C ++

 **–r1 = **r1++; 

, em que r0 e r1 são declarados como

 signed short **r0, **r1; 

Outro exemplo, um comando

 MOVB @11(R2),@-20(R3) 

corresponde a

 **(r3-20) = **(r2+11); 

onde r2 e r3 são declarados como

 char **r2, **r3; 

Nas arquiteturas populares de hoje, uma equipe não pode prescindir dessa equipe; pelo menos 10 equipes provavelmente serão necessárias. Você também pode obter o endereço relativo ao valor atual do contador de comandos. Vou dar outro exemplo com o endereçamento mais simples. A equipe

 ADD #16,11(R4) 

na arquitetura Intel x86 pode ser mapeado

 ADD [BX+11],16 

Nos montadores de DEC, é habitual escrever operandos da esquerda para a direita, ao contrário da Intel, onde eles escrevem da direita para a esquerda. Há motivos para acreditar que o montador GNU para x86 foi feito sob a influência do montador PDP-11.

Os comandos de multiplicação e divisão são apenas simbólicos e não estão disponíveis em todos os processadores. A aritmética de número decimal também é opcional - esta é a aritmética comercial da terminologia DEC. Como curiosidade de completa ortogonalidade, darei um exemplo de comando

 MOV #11,#22 

que após a execução se transforma

 MOV #11,#11 

- Este é um exemplo de uso de uma constante imediata como um operando. Outra equipe curiosa é o comando MARK exclusivo, cujo código deve ser inserido na pilha e nunca pode ser usado explicitamente. Rotinas de chamada na arquitetura PDP-11 também são um tanto peculiares. O comando correspondente primeiro salva o registro alocado (pode ser qualquer) na pilha, depois salva o contador de instruções nesse registro e só depois grava o novo valor no contador de instruções. O comando de retorno do subprograma deve fazer o oposto e saber qual registrador foi usado ao chamar o subprograma. Efeitos muito estranhos e imprevisíveis podem ser obtidos usando o contador de comandos como um registro normal.

É interessante que, entre os programadores do PDP-11, tenha sido desenvolvida uma cultura de trabalho direto com códigos de máquina. Os programadores poderiam, por exemplo, trabalhar sem um desmontador ao depurar. Ou mesmo escreva pequenos programas diretamente na memória sem montar!

Obviamente, o tempo da equipe não difere em características de alta velocidade. Foi surpreendente uma vez descobrir que no computador doméstico do BK o comando de transferência de registro para registro leva até 12 ciclos (10 ciclos ao usar o código da ROM), e comandos com dois operandos com endereçamento indireto duplo são executados por mais de 100 ciclos. O Z80 faz a transferência de registrador de 16 bits para 8. No entanto, a lentidão do BC é causada não tanto pelo processador, mas pela baixa qualidade da memória doméstica, sob cujas características o BC teve que ser adaptado. Se uma memória suficientemente rápida for usada, o BC também enviará 16 bits de registro por 8 ciclos de clock. Uma vez houve muita controvérsia, o que é mais rápido que o BC ou o Spectrum? É preciso dizer imediatamente que o Spectrum é um dos computadores pessoais de 8 bits em massa mais rápidos ao usar os 32 KB superiores de memória. Portanto, não é surpreendente que o Spectrum seja mais rápido que o BC, mas não muito. E se o BC trabalhasse com memória sem freios, provavelmente seria um pouco mais rápido.

A densidade do código também é um ponto fraco da arquitetura do PDP-11. Os códigos de instrução devem ser múltiplos do comprimento da palavra-máquina - 2 bytes, o que é especialmente desagradável ao trabalhar com argumentos de bytes ou comandos simples, como definir ou redefinir um sinalizador.

As tentativas de criar um computador pessoal baseado na arquitetura do PDP-11 são interessantes. Um dos primeiros PCs do mundo que apareceram apenas um pouco depois da Apple] [e Commodore PET, e um pouco mais cedo que o Tandy TRS-80, foi o Terak 8510 / a, que tinha gráficos em preto e branco e a capacidade de baixar uma versão incompleta do Unix. Esse PC era muito caro e, até onde eu sei, era usado apenas no sistema de ensino superior dos EUA. Desde 1978, o computador foi produzido na forma de um kit para montagem do Heathkit H11. O próprio DEC também tentou criar seu próprio PC, mas de maneira muito inconsistente. A DEC, por exemplo, lançou um PC baseado no z80 e no 8088, obviamente jogando contra seus principais desenvolvimentos. O pessoal baseado na arquitetura PDP-11 DEC PRO-325/350/380 apresentava algumas incompatibilidades bastante artificiais com a arquitetura subjacente, o que dificultava o uso de parte do software. A melhor personalização das tecnologias de minicomputadores foi na URSS, onde foram feitos BK, DVK, CC NTs ... Aliás, o Electronics-85 é um clone bastante preciso do DEC PRO-350. Além disso, o processador CP1600, semelhante à arquitetura PDP-11, foi usado nos consoles de jogos Intellivision, populares no início dos anos 80.


Computador doméstico doméstico de 16 bits (1985) - quase compatível com PDP-11

O K1802BM2, usado no DVK, é cerca de duas vezes mais rápido que o K1801BM1, o K1801BM3 é ainda mais rápido e com velocidade próxima à Intel 8086.

Nos modelos PDP-11 mais antigos e nos computadores domésticos próximos a eles, o processador pode endereçar até 4 MB de memória, mas não mais que 64 KB podem ser alocados a um programa. Em termos de velocidade, esses processadores também estão próximos de 8086 em termos de número de operações por megahertz, embora ainda seja mais lento que isso.

CPU para DEC VAX-11


Os sistemas VAX-11 eram bastante populares nos anos 80, especialmente no ensino superior. Agora é difícil entender alguns dos conceitos descritos nos livros daqueles anos sem conhecer a arquitetura desses sistemas. Os VAX-11s eram mais caros que os PDP-11s, mas eram mais orientados para a programação universal e ainda significativamente mais baratos que os sistemas IBM / 370. Para a arquitetura VAX, um processador V-11 foi fabricado em meados dos anos 80 e, até aquele momento, os conjuntos de processadores eram usados.

A arquitetura VAX-11 é de 32 bits, utiliza 16 registradores, dentre os quais, como no PDP-11, há um contador de comandos. Duas pilhas devem ser usadas, uma das quais é usada para armazenar quadros de subquadro. Além disso, um dos registradores é designado para trabalhar com argumentos de funções chamadas. Assim, 3 de 16 registros são alocados para pilhas. O sistema de comando VAX-11 não pode deixar de surpreender com sua enormidade e a presença de comandos muito raros e frequentemente únicos, por exemplo, para trabalhar com campos de bits ou vários tipos de filas, para calcular CRC, multiplicar 10 linhas ... Muitos comandos estão em versões de três endereços (ARM) e em dois endereços (como x86), mas há comandos de quatro endereços, por exemplo, a divisão estendida do EDIV. Claro que há suporte para trabalhar com números reais.

Mas o VAX-11 é um sistema muito lento para sua classe e preço. Até o 6502 super simples de 4 MHz pode superar os mais lentos da família VAX-11/730 e os sistemas VAX-11 mais rápidos - gabinetes enormes e “conjuntos de móveis inteiros” - estão no nível de desempenho dos primeiros ATs para PC. Quando o 80286 apareceu, ficou claro que os dias do VAX-11 estavam contados e mesmo a frenagem com a introdução de sistemas baseados no 80286 não podia mais mudar nada fundamentalmente. Os britânicos mais diretos da Acorn, tendo fabricado a ARM em 1985 sem ocultar nada, disseram que a ARM é muito mais barata e visivelmente mais rápida. O VAX-11, no entanto, permaneceu relevante até o início dos anos 90, ainda tendo algumas vantagens sobre um PC, em particular, sistemas mais rápidos para trabalhar com discos.

O VAX-11 é provavelmente o último sistema de massa em que a conveniência de trabalhar na montadora foi considerada mais importante que a velocidade. Em certo sentido, essa abordagem mudou para as linguagens de script modernas e populares.

A foto mostra o VAX-11/785 - este também é um computador (1984) - o mais rápido entre os VAX-11s, em termos de velocidade do processador é comparável ao IBM PC AT ou ARM Evaluation System

Surpreendentemente, há muito pouca literatura disponível nos sistemas VAX-11. Como se algum tipo de lei estranha sobre o esquecimento estivesse em vigor. Vários episódios próximos à política e correlacionados com a história da URSS estão relacionados à história dessa arquitetura. É possível que a rejeição real do desenvolvimento da arquitetura do PDP-11 tenha sido causada por seu baixo preço e pelo sucesso de sua clonagem na União Soviética. E a clonagem do VAX-11 custou uma ordem de magnitude de grandes recursos e levou a um beco sem saída. O interesse no VAX-11 foi criado usando, por exemplo, sorteios como o famoso Kremlin Vax em 1º de abril de 1984, no qual o então líder da URSS Konstantin Chernenko se ofereceu para beber vodka na ocasião de se conectar à rede Usenet. Outra piada foi que alguns chips VAX-11 foram impressos com uma mensagem em russo quebrado sobre o quão bom o VAX-11 é. :)

Alguns modelos VAX-11 foram clonados na URSS no final dos anos 80, mas muito poucos desses clones foram produzidos e quase nunca foram usados.

Vários sistemas VAX-11 estão disponíveis para uso na rede. E isso os compara favoravelmente com os sistemas IBM / 370 com os quais eles competem.

Intel: 8086 a 80486


Certamente, um dos melhores processadores fabricados nos anos 70 é o 8086, além do 8088 quase analógico mais barato. A arquitetura desses processadores é agradavelmente distinguida pela ausência de empréstimos mecânicos e adesão a teorias abstratas, consideração e arquitetura equilibrada, equilíbrio e foco em maior desenvolvimento. Entre as deficiências da arquitetura x86, ela pode ser chamada de algumas dificuldades e uma tendência a um crescimento extensivo no número de instruções.

Uma das soluções engenhosas de projeto do 8086 foi a invenção de registradores de segmentos. Isso, por assim dizer, alcançou simultaneamente dois objetivos: portabilidade "gratuita" de programas de até 64 KB de tamanho (era uma quantidade bastante decente de memória de computador para um programa até meados dos anos 80) e capacidade de endereçamento de até 1 MB de espaço de endereço. Você também pode observar que o 8086, como o 8080 ou o z80, também possui um espaço de endereço especial para portas de E / S de tamanho de 64 KB (y 8080 e 8085, esse volume é de 256 bytes). Existem apenas quatro registradores de segmento: para código, para pilha e dois para dados. Portanto, 64 * 4 = 256 KB de memória estão disponíveis para uso rápido, mas isso ocorreu muito em meados dos anos 80. De fato, não há problema com o tamanho do código, pois você pode usar as chamadas chamadas longas de subprogramas carregando e salvando o endereço completo de dois registros. Há apenas um limite de 64 KB no tamanho de um subprograma - isso é suficiente para muitos aplicativos modernos. A impossibilidade de endereçar rapidamente matrizes de dados maiores que 64 KB cria um certo problema - ao usar essas matrizes, você precisa carregar o registro de segmento e o próprio endereço sempre que acessado, o que reduz a velocidade de trabalho com matrizes tão grandes por várias vezes.

Os registros de segmento são implementados de tal maneira que sua presença é quase imperceptível nos códigos de máquina, o que facilitou sua recusa quando chegou a hora.

A arquitetura 8086 manteve sua proximidade com a arquitetura 8080, o que permitiu comparativamente pouco esforço para transferir programas de 8080 (ou mesmo z80) para 8086, principalmente se o código fonte dos programas estivesse disponível.

As equipes 8086 não diferem na alta velocidade de execução, mas são bastante comparáveis ​​com os concorrentes, por exemplo, o Motorola 68000, que apareceu um ano depois. Um dos novos produtos, que acelera levemente o 8086 geralmente sem pressa, foi a vez das equipes.

O 8086 usa oito registradores de 16 bits, alguns dos quais podem ser usados ​​como registradores de dois bytes e outros como indexadores. Assim, os registros 8086 são um tanto heterogêneos, mas são bem balanceados e os registros são muito convenientes de usar. Essa heterogeneidade, a propósito, permite que você tenha códigos mais densos. O 8086 usa os mesmos sinalizadores que o 8080, além de alguns novos. Por exemplo, apareceu um sinalizador típico da arquitetura do PDP-11 - execução passo a passo.

O 8086 permite que você use modos de endereçamento muito interessantes, por exemplo, um endereço pode ser composto da soma de dois registradores e uma mistura constante de 16 bits, na qual o valor de um dos registradores de segmento é sobreposto. Apenas dois ou mesmo um termo pode ser deixado de fora da soma do endereço. Isso no PDP-11 com um comando não funcionará. A maioria das instruções do 8086 não permite os dois operandos do tipo memória; um dos operandos deve ser um registrador. Mas existem comandos de string que apenas sabem como trabalhar com memória usando dois endereços. Os comandos de string permitem fazer cópias rápidas em bloco (17 medidas por byte ou palavra), pesquisar, preencher, carregar e comparar. Além disso, comandos de cadeia podem ser usados ​​ao trabalhar com portas de E / S. A idéia do 8086 de usar prefixos de comando é muito interessante, permitindo a utilização de funcionalidades adicionais frequentemente muito úteis sem complicação significativa dos esquemas de codificação de comando.

O 8086 possui um dos melhores entre todos os sistemas de organização de trabalho com a pilha. Usando apenas dois registradores (BP e SP), o 8086 permite resolver todos os problemas ao organizar chamadas para rotinas com parâmetros.

Entre as equipes, há multiplicação e divisão simbólica e sem sinal. Existem até comandos de ajuste decimal exclusivos para comandos de multiplicação e divisão. É difícil dizer que há claramente algo que falta no sistema de comando 8086. Pelo contrário, o oposto. Dividir um dividendo de 32 bits em um divisor de 16 bits para obter um restante de 32 bits privado e 16 bits pode exigir até 300 ciclos de clock - não particularmente rápido, mas várias vezes mais rápido que essa divisão em qualquer processador de 8 bits (exceto 6309) e comparável em velocidade a 68000. A divisão por x86 tem um recurso inesperado - muda as bandeiras de sinais imprevisivelmente ...

Vale acrescentar que na arquitetura x86, a equipe XCHG herdada do 8080 permaneceu, o que foi aprimorado. Além disso, os processadores posteriores começaram a usar as instruções XADD, CMPXCHG e CMPXCHG8B, que também podem executar trocas atômicas de argumentos. Essas instruções são um dos recursos do x86; é difícil encontrá-las em processadores de outras arquiteturas.

Podemos resumir que o 8086 é um processador muito bem-sucedido, combinando a conveniência da programação e o anexo às limitações de memória, características de seu tempo. O 8086 foi usado relativamente raramente, dando lugar ao 8088 mais barato, o lugar de honra para ser o primeiro processador para a principal arquitetura de PCs de nossos dias, a arquitetura IBM PC. O 8088 usava um barramento de dados de 8 bits, o que o tornava um pouco mais lento, mas tornou possível construir sistemas mais acessíveis aos clientes com base nele.

Curiosamente, a Intel se recusou fundamentalmente a fazer melhorias em seus processadores, preferindo desenvolver suas próximas gerações. Um dos maiores segundos subcontratados da Intel (NEC), a corporação japonesa NEC, que no início dos anos 80 era muito maior que a Intel, decidiu melhorar os 8088 e 8086, liberando os processadores V20 e V30, compatíveis com eles no soquete e até 30% mais rápido. A NEC até ofereceu a Intel para se tornar sua subcontratada! A Intel lançou um processo contra a NEC, que, no entanto, não conseguiu vencer. Por alguma razão, esse grande confronto entre Intel e NEC foi completamente ignorado pela Wikipedia.

80186 e 80286 apareceram em 1982. Portanto, pode-se supor que a Intel tinha duas equipes de desenvolvimento quase independentes. O 80186 é um 8086 aprimorado por vários comandos e tempos mais curtos, além de vários circuitos integrados típicos da arquitetura x86: gerador de relógio, temporizadores, DMA / DAP, controlador de interrupção, gerador de atraso, etc. Esse processador parece simplificar bastante a produção computadores baseados nele, mas como o controlador de interrupção interno se mostrou incompatível com o IBM PC por algum motivo, ele quase nunca foi usado em um PC. O autor conhece apenas o sistema BBC Master 512 baseado no computador BBC Micro, que não usava os circuitos internos, nem mesmo o timer, mas havia vários outros sistemas usando o 80186. A memória endereçável do 80186 permaneceu da mesma maneira que em 8086 com um tamanho de 1 MB. A empresa japonesa NEC produziu análogos 80186, que eram compatíveis com o IBM PC.

80286 teve tempos ainda melhores do que 80.186, entre os quais apenas a divisão fantástica (32/16 = 16,16) para 22 compassos é especialmente notável - desde então, a divisão não aprendeu a fazer mais rápido! O 80286 suporta o trabalho com todas as novas equipes 80186, além de muitas equipes para trabalhar em um novo modo protegido. O 80286 foi o primeiro processador com suporte interno para o modo protegido, o que permitiu organizar a proteção da memória, o uso correto de instruções privilegiadas e o acesso à memória virtual. Embora o trabalho no novo modo tenha criado muitos problemas problemáticos (o modo protegido foi feito sem êxito) e tenha sido relativamente raramente usado, foi um grande avanço. Nesse novo modo, os registradores de segmentos adquiriram uma nova qualidade, permitindo o uso de até 16 MB de memória endereçável e até 1 GB de memória virtual por tarefa. O grande problema do 80286 foi a incapacidade de alternar do modo protegido para o modo real, no qual a maioria dos programas funcionava na época. Usando a instrução LOADALL “secreta” não documentada, foi possível usar 16 MB na memória e no modo real.

Em 80286, o cálculo de endereços em operandos de instruções começou a ser realizado por esquemas separados e deixou de retardar a execução de comandos. Isso acrescentou recursos interessantes, por exemplo, com a equipe

 LEA AX,[BX+SI+4000] 

em apenas 3 ciclos, foi possível realizar duas adições e transferir o resultado para o registro AX!

Registros segmentados no modo protegido tornaram-se parte de um sistema completo de gerenciamento de memória (MMU). No modo real, esses registros forneceram apenas parcialmente a funcionalidade MMU.

O número de fabricantes e sistemas específicos que usam 80286 é enorme, mas, é claro, os primeiros foram computadores IBM PC AT com indicadores de desempenho quase fantásticos entre os computadores pessoais. A partir desses computadores, a memória começou a ficar para trás na velocidade do processador, havia estados de atraso, mas parecia algo temporário.

80286, 8086/8088, 100% , . , POPF 80286 , ( REP ES:MOVSB) 8086/8088 . POPF 80286.

80286 , 64 . 80386, 1985, , 4 . , 8086 8086. . 80386 , 80286. 80386 32- . , . (barrel shifter), . , - . , 80286. , , , , 80286. , 16- 80286 - , 80386 .

80386 , , . , :

  • , , , z80;
  • BSF BSR;
  • , MOVSX MOVZX;
  • SETxx;
  • SHLD, SHRD.

x86 80386 , – . 80386 ( 32- ) , , ( ) , , .

4- , , , .

, 80286, . , flat- 4 , . flat-, .

80386 Intel , IBM PC, Motorola, . 80386 90-, 25 40 . C 80386 IBM IBM PC . , , , 80386 1986 Compaq.

, 80386 . , 80386 , 1970, 1980.

80386. . , . 80386 , . IBTS XBTS. 80386DX/SX, AMD, Intel ( ), , EAX, POPAD PUSHAD , BX. . , . .

ARM . , ARM . Intel 80486. Intel – .

80486 ARM . - . , , 8088! , 8 , -. , , CMPXCHG – IBTS XBTS (, 80386). – , 32- BSWAP. – . .

80486 . , 80486, VX FT, Apricot – 1989 18 40 , – 60 ! Intel ARM Acorn. IBM 80486 1990, PS/2 90 $17000.

Intel , . , 8086. , , AAD AAM , ( Pentium 15 !). AND/OR/XOR , , AND BX,7 (83 E3 07). , , , 80386. , 8086 80286 , . ADD/ADC/SBB/SUB, . , , , (?) . – . , , SAL/SHL ( D0 E0, D0 F0 D1 E0, D1 F0) . , , . , . , Intel , ? SALC 1995 20 ! ICEBP 10 1985 1995. LOADALL LOADALLD – , 80286 80386 . UD1 (0F B9), . .

8088 8086, 80286 .

Motorola: 68000 68040


Motorola – , - Intel .

68000 1979 8086. 16 32- ( 17), . 16 , , , . , 68000 , , . 1 – . 68000 , 8086 – 68000 . , 68k 2 , 86 – 1. , , 68000 , 8086. 16 – 8 , - x86. 16-, 32- , . - – 4 , 8086 – 2. 68000 80- , Intel 8088, 68000 , .

, Motorola, 68000 . , ( , ). . - , MOVE, . , , 68000, , 68010. , , CLR 0 MOVE . , , , . 8086, . , 4 8086 . 68000 PDP-11, 60-.

Motorola - 86 ARM. , 68000 8086, 20-30%. 680x0, , - , , x86. , eab.abime.net , 68k , x86.

, 68000 – , . : Apple Macintosh, 90-, Commodore Amiga, Atari ST. 68000 , Unix, , Tandy 16B. , IBM PC System 9000 68000, PC.

68010 , 1982, Intel 80286, -. 68010 68000, - , 68000 68010 . 68000 . 68010 , 10% 68000. , 68010 80286 80186. 80186, 68010 .

68008 1982 8088. 68000, 8- , . 68008, 68000, , 50% , 68000. , 68008 , 8088, - 20% , 8086.

Clive Sinclair Spectrum QL – , - Atari ST . , QL (Quantum leap – ) , , ( Amstrad, QL).

68000, , , 16, 24.

1984, 68020 Motorola . . , ! 32- 68020EC 24- . 32- . , 256 , , , . (64/32=32,32) (32*32=64), 80 45 . , , (32/16=16,16) 45 ( 140 68000). , ! , , – x86 80386. , , – PDP-11 .

, , 10- , , - . , . 80286, 68020 , . 68020 - 80286. . 68020 (MMU) .

68020 Apple Macintosh II, Macintosh LC Commodore Amiga 1200. Unix.

80386 MMU 32- , Motorola 2. 68030, 1987, , Motorola . 68030 , – . , 68030 , . , , 68030 80386 . , 68030 50 , 80386 40 , 68030 .

68030 Apple Macintosh II, Commodore Amiga 3000, Atari TT, Atari Falcon .

68040 Motorola Intel. 80486, . Motorola, , - . 68040 , 80486. lowendmac.com/benchmarks 68040 2.1 68030, , 68040 80486 . 68040 . – 68LC040, . , , !

Motorola . Motorola, , 68000/68010, Intel 8087 c 1980. 68020/68030 68881 - 68882. 68882 68881.

, Intel x86 – , , , 4 . , .

National Semiconductor 32016


32- , 1982. VAX-11 , - DEC National Semiconductor (NS) VAX-11.

– . , . .

NS32016 VAX-11, , . 24-, 16 . 32016 . ( ), , , ( ) L (less), – . , Motorola 680x0. - F. , (!) . , , (L) , .

32- . , , , , ( - ), ( - ), , . NS32016 68000.

32016 BBC Micro . 1984 . 6, 8 10 . . 32016 , Acorn, - Unix Panos Acorn . BBC Micro MMU – , . .

, , .

Acorn ARM


6502, , , Acorn, ARM-1, 1985, , Intel, 80386. ARM . , ARM MMU , , 80386 . ARM , . 100 .

ARM 1983 , Acorn 32016, , 6502 , , . 80286, , Intel, Acorn, . 80286 80386 , . , Intel , Acorn , ARM.

ARM , , BBC Micro. , . . 1986 BBC Micro c ARM Evaluation system, 4 ( ), ( 4000 , .. 6000 ). , , . . , Unix – Unix, MMU, Unix PDP-11, 68000, 80186 8088. , 90- Acorn Archimedes Linux. Unix ARM Acorn ARM .


ARM

Acorn 1985 . Acorn ARM , , , - 32016. Acorn Communicator. , IBM PC Master 512, . , , Acorn Olivetti , Intel 8086 80286, . , Acorn, Olivetti .

Olivetti Acorn ARM2 , Archimedes, 1987. , Olivetti IBM PC Acorn.

ARM 16 32- ( , ). , R15, PDP-11 . 1 . , , , . , ARM . , , . , . , , . ARM – , 26-, . . 64 , . , , , 4- . 4- , 16- . ARM 3-. RISC - . ARM (Barrel Shifter), . , R0 65 c R1

 ADD R1, R0, R0 shl 6 

, 63 –

 RSB R1, R0, R0 shl 6 

, , , . ARM : . 16 ( ), . , , . , , . ARM . , . ARM 6809 , . , , .

ARM , x86. ARM . ARM 80386, , RSB ( ), BIC (AND , PDP-11), 4- MLA ( ), LDM STM ( , MOVEM 68k). ARM 3-, 80386 2 . ARM – , R14 R15. ARM 3-4 80386 , 80386 2-3 ARM. , IBM PC XT Acorn Archimedes 8 , PC XT. Commodore Amiga 68000 7 , 10-15% PC XT. , NeXT 25 68030 8 ARM. Apple Möbius - Apple ][, , Apple ][, 68k , !

ARM . 8 , . 32- 4 . , , , , 12-. ARM , , . , . ARM (MMU) – , , Apple 90-. ARM . ARM , x86. ARM: . ,
 R1 shl 7 
– R1 7 –
 R1, shl 7 
.

1989 ARM3 . 1990 ARM Acorn Apple VLSI ARM Holding. ARM Acorn-Olivetti. Acorn , ARM Holding . Acorn ARM Holding Apple ARM Newton .

ARM , 80486 10-20%! Intel Pentium. DEC StrongARM 1996, Intel, ARM-. , .

ARM , . , ARM Holding Apple 90- .

,


, 8- 70- 80- . 8- 6502 . Intel Motorola , .

, Amiga Atari ST 4 20- 24- , 6502, 68000. , 6502 10 .

Amstrad PCW, Commodore CBM II, z80 , , 10 .

, ARM 1982, ?

, , ?

Source: https://habr.com/ru/post/pt410591/


All Articles