Introdução Resumida de Sistemas e Processos Alpha. Neal Crook, Digital Equipment (Editor: David Mosberger <mailto:davidm@azstarnet.com>) V0.11, 6 June 1997 Este documento é uma visão geral das CPUs Alpha existentes, chipsets e sistemas. Existe alguma tendência de equipamento, refletindo minha própria área de experiência. Embora eu seja um funcionário da Digital Equipment Corporation, esta não é uma autoria oficial da Digital e algumas opiniões expressadas são minhas e não da Digital. ______________________________________________________________________ Índice geral 1. COMO FAZER Alpha 1.1 O que é Alpha 2. O que é um Semicondutor Digital? 3. CPUs Alpha 4. Performance do 21064 vs Performance 21066 5. Algumas Notas Sobre Velocidades de Processadores 6. Os chipsets 7. Os Sistemas 8. Bytes e Correlatos 9. PALcode e Correlatos 10. Portando 11. Maiores Informações 12. Referências ______________________________________________________________________ 11.. CCOOMMOO FFAAZZEERR AAllpphhaa 11..11.. OO qquuee éé AAllpphhaa "Alpha" é o nome dado à arquitetura RISC de 64 bits da Digital. O projeto Alpha foi iniciado na Digital em meados de 1989, com o objetivo de disponibilizar um caminho de migração dos usuários VAX para uma plataforma de alta performance. Esta não foi a primeira plataforma RISC produzida pela Digital, mas foi a primeira lançada no mercado. Quando a Digital anunciou o Alpha, em março de 1993, ela decidiu ainda entrar no mercado de semicondutores através da venda de microprocessadores Alpha. Alpha em algumas ocasiões é chamada de Alpha AXP, por obscuras e antigas razões que não merecem ser perseguidas. É suficiente saber-se que se tratam da mesma coisa. 22.. OO qquuee éé uumm SSeemmiiccoonndduuttoorr DDiiggiittaall?? Veja em http://www.digital.com/info/semiconductor/ Semicondutor Digital (DS) é a unidade de negócios da Digital Equipment Corporation (Digital - nós não gostamos do nome DEC) que comercializa semicondutores no mercado. Os produtos da Digital incluem CPUs, suporte ao conjunto de chips, conexões PCI-PCI e chips de periféricos PCI para comunicações e multimídia. 33.. CCPPUUss AAllpphhaa Existem atualmente duas gerações de CPUs que implementam a arquitetura Alpha: · EV4 · EV5 Opiniões diferem sobre o significado de "EV" (nota do editor: o verdadeiro significado é "Electro Vlassic"), mas o número representa a primeira geração da tecnologia Digital de CMOS que foi implementada. Então EV4 foi inicialmente implementada como CMOS4. Com o passar do tempo, uma CPU tende a tornar-se um modelo intermediário substituído por uma nova geração de processadores menores. Há uma grande diferença entre diminuir o tamanho de uma CPU em uma tecnologia específica e implementar um novo modelo a partir do nada (porém não detalharemos estes aspectos neste momento). Há alguns outros pontos genéricos aqui: há a CMOS4S (redução ótica em CMOS4) e a CMOS5L. Os reais interessados em tecnologia estarão interessados em saber como a CMOS4 pode estar em um processador de 0,75 mícron, CMOS5 em 0,5 mícron e SMOS6 em um de 0,35 mícron. Um mapeamento de CPU para chips nos fornecerá os seguintes resultados: 2211006644--115500,,116666 EV4 (originalmente), EV4S (now) 2211006644--220000 EV4S 2211006644AA--223333,,227755,,330000 EV45 2211006666 LCA4S (EV4 core, com EV4 FPU) 2211006666AA--223333 LCA45 (EV4 core, mas com EV45 FPU) 2211116644--223333,,330000,,333333 EV5 2211116644AA--441177 EV56 2211226644 EV6 <http://www.mdronline.com/report/articles/21264/21264.html> O EV4 é um código "duplo processado" (pode lidar com 2 instruções por ciclo de CPU), com um núcleo superconectado com unidades de inteiros, pontos flutuantes e previsão de uso. É totalmente sobreposto e tem caminhos internos de dados de 64 bits e pequenos caches duplos de 8 Kb, sendo uma para instruções e outro para dados. Os caches possuem sistema de gravação direta, nunca contendo dados inválidos (ainda não tratados). O EV45 traz algumas melhorias em relação ao núcleo do EV4: traz uma ligeira melhoria da unidade de ponto flutuante, caches de 16 Kb, uma para dados, outro para instruções (validados por algoritmos de paridade). Nota do Editor: Neal Crook indicou-nos em um mail à parte que as mudanças na unidade de ponto flutuante (FPU) melhorou a performance da divisão. A FPU do EV4 necessita de 34 ciclos para uma divisão de precisão simples e 63 ciclos para um divisão de dupla precisão (que não seja dependente de dados). A EV45 necessita tipicamente de 19 ciclos (no máximo 34) para precisão simples e tipicamente 29 ciclos (63 ciclos no máximo) para uma divisão de dupla precisão (dependente dos dados). O EV5 é um código "quadri processador", também superconectado, totalmente sobreposto, etc... Ele tem pequenos caches de 8 Kb, um para instruções, outro para dados. Estes caches são de gravação imediata. Ele traz ainda um cache de segundo nível acoplado ao processador, com 96 Kb de área disponível, o qual tem três formas de associação e gravação (por exemplo, pode conter dados não atualizados). A melhoria da performance EV4-EV5 é maior do que somente o incremento obtido por ciclos de CPU. Assim como um cache maior e o processamento de quatro instruções a cada ciclo, há melhorias na microarquitetura para reduzir a produção ou o consumo de latência em alguns caminhos.- O núcleo EV56 é fundamentalmente a mesma microarquitetura similar a EV5, mas adiciona algumas novas instruções para cargas e armazenamentos de 8 e 16 bits. Estes devem ser utilizados principalmente por programas controladores de dispositivos. O núcleo do EV56 está implementado no CMOS6, o qual é um processador de 2.0 Volts. O 21064 usa o código EV4, com uma interface de barramento de 128 bits. Este suporta conexões "simples" com caches de segundo nível, com uma tamanho de bloco de 256 bits (2 conjuntos de dados no barramento). A velocidade do Bcache é totalmente configurada por software. O 21064 pode ser configurado ainda para usar um barramento externo de 64 bits (não estou certo se algum produto saído de fábrica utiliza este modo). O 21064 não impõem qualquer política de Bcache, mas é configurado atualmente com uma política de gravação posterior. O 21064 contém conectores que permitem hardwares externos manterem coerência com o Bcache e caches internos, apesar desta funcionalidade ser complexa. O 21066 usa o código EV4 e integra um controlador de memória e uma ponte PCI. Para economizar pinos, o controlador de memória tem um barramento de 64 bits (mas o cache interno tem um bloco de tamanho de 256 bits assim como no 21064, ou seja um bloco preenche 4 buffers no barramento). O controlador de memória suporta um Bcache e DRAM externos, cujos ciclos são totalmente configurados por software e podem ser controlados pela resolução do ciclo de CPU. Tendo quatro áreas para preencher e complementar um bloco de cache não é tão mal quanto possa parecer, devido ao fato do acesso do DRAM ser feito em formato de páginas. Infelizmente o controlador de memória não suporta nenhuma das DRAMs mais recentes ((SDRAM, EDO or BEDO) ou cache síncrono de RAM. O barramento PCI é totalmente compatível com a rev. 2.0 e chega a 33 Mhz. O 21164 tem um barramento de 128 bits e suporta leituras parciais com até dois ciclos adicionais a qualquer tempo (o que permite cem por cento de utilização do barramento sob condições fantasticamente perfeitas, ou seja, pode-se teoricamente transferir 128 bits de dados a cada ciclo do barramento). O 21164 suporta conexões simples de cache de terceiro nível externo (Bcache) e tem os conectores que permitem a sistemas externos manterem total compatibilidade com todos os caches. Adicionalmente, o design de multiprocessadores simétricos são "simples". O 21164A foi anunciado em outubro de 1995. Ele utiliza o código EV56. Ele tem uma pinagem nominalmente compatível com o 21164, mas requer poder adicional para rodar, pois todos os pinos de energia que totalizam +3.3V no 21164 foram divididos em dois grupos; um deles prove 2.0 V de energia para o núcleo da CPU e o outro grupo provê 3.3 V para as células de entrada e saída. Ao contrário de implementações mais antigas, os pinos do 21164 não são tolerantes a 5 V. O resultado desta mudança reside no fato de sistemas 21164 não serem atualizáveis para 21164A. O processador tem ainda alguns pinos para suportar as novas cargas e armazenamento 8 e 16 bits. Ele ainda incrementa o suporte a 21164 no uso da SRAM síncrona no uso de Bcache externo. 44.. PPeerrffoorrmmaannccee ddoo 2211006644 vvss PPeerrffoorrmmaannccee 2211006666 O processador 21064 e 21066 tem o mesmo código de CPU (EV4). Caso o mesmo programa seja executado em ambos os processadores, de mesma velocidade, então a diferença de performance é proveniente somente do resultado da banda de memória e Bcache do sistema. Qualquer código que tenha uma alta taxa de acertos do cache interno terá performance similar. Há dois grandes inimigos do desempenho: 1. Código que use intensamente a gravação. Mesmo com os buffers de gravação do 21064 e 21066, que amenizam esta situação, códigos com estas características serão limitados pela capacidade de gravação do barramento. Pode ser incrementado através dos caches construídos nos processadores que são sensíveis ao processo de gravação. 2. Códigos que tratem flutuantes como inteiros. A arquitetura Alpha não permite as transferências de registrador a registrador de inteiros para pontos flutuantes. Tal conversão deve ser feita na memória (e adicionalmente, devido ao cache no processador que é sensível à gravação, via Bcache). Nota do editor: parece que EV4 e EV5 podem executar a conversão através do cache (Dcache) primário, considerando-se que a memória já esteja no cache. Nestes casos, a seqüência de conversão irá atualizar o Dcache e posteriormente fará a carga sob certas circunstâncias, onde será capaz de atualizar o valor do cache-d, evitando uma pesquisa onerosa ao Bcache. Parece ser particularmente melhor executar as instruções stq/ldt ou stt/ldq em segundo plano, o qual é um contador "intuitivo"). Caso se façam algumas comparações entre o 21064A e o 21066A, há um fator adicional devido às diferenças de tamanho entre Icache e Dcache entre os dois chips. Agora o 21164 resolve todos os problemas: atinge as mais altas bandas do barramento (apesar de ter o mesmo número de pinos de sinais, tendo porém duas vezes mais pinos que um 21064, mas todos os adicionais são referentes à energia e aterramento - sim é verdade!) e os caches de gravação posterior. O único problema resultante é "quanto isto custa?" 55.. AAllgguummaass NNoottaass SSoobbrree VVeelloocciiddaaddeess ddee PPrroocceessssaaddoorreess Todas as CPUs Alpha atuais usam relógios de alta velocidade, uma vez que a sua micro arquitetura foi desenhada para o chamado pequeno- ciclo. Nenhum destes barramentos tem que executar a velocidades horríveis como resultado: · em 21066(A), 21064(A), 21164, o ciclo do cache fora do processador (Bcache) é completamente programável para a resolução do ciclo de CPU. Por exemplo, em uma CPU de 275 Mhz, o acesso à leitura do Bcache pode ser controlado em uma resolução de 3.6 ns. · em 21066(A), o ciclo DRAM é completamente programável para o ciclo de CPU (não o ciclo do PCI, mas sim o da CPU). · em 21064(A), 21164(A), a freqüência do barramento é um múltiplo da freqüência de ciclo de CPU. Muitas das placas mãe 21064 usam um barramento de 33 Mhz. · Sistemas que usam o 21066 podem utilizar qualquer freqüência em um barramento PCI no que se referente a CPU. Geralmente, PCIs usam 33 Mhz. · Sistemas que usam chipset APEC sempre tem o barramento de sistema de CPU igual à freqüência do barramento PCI. Isto significa que ambos os barramentos tendem a rodar em 25 Mhz ou 33 Mhz (uma vez que estas são as freqüências utilizadas pelas CPUs e barramentos). Em sistemas APEC, a freqüência da controladora DRAM é totalmente programável em termos de freqüência do barramento de CPU. Alguns usuários comentam que obtiveram performances sofríveis em 21066 uma vez que o controlador de memória 21066 pode ser executado somente em velocidades de 33 Mhz. Na verdade, em sistemas super rápidos 21064A que têm controladores de memória podem ser executados somente nesta velocidade. 66.. OOss cchhiippsseettss Digital comercializa dois conjuntos de processadores. O chipset 2107X (também conhecido como APECS) em um suporte 21064(A). E o 2117x (conhecido como ALCOR) em um suporte 21164. Há ainda o chipset 2117xA (conhecido como ALCOR 2) em um suporte 21164. Ambos os chipsets provêm controladores de memória e pontes PCI para suas CPU. APECS provê uma ponte PCI de 32 bits, ALCOR uma e 64 bits a qual (de acordo com os requerimentos da especificação PCI) podem suportar dispositivos de 32 ou 64 bits. APECS consiste de 6 partes, chips de 208 pinos (4, em partes de 32 bits de dados (DECADE), 1 controladora de sistema (COMANCHE), 1 controladora PCI (EPIC)). Ele provê uma controladora DRAM em um barramento de 128 bits e uma interface PCI. Executa ainda o trabalho de manter a memória coerente quando um dispositivo PCI usa DMA na ou fora da memória. ALCOR consiste de 5 chips ((4, partes de 64 bits (Troca de Dados, DSW) - 208 pinos PQFP e 1 controladora (Controle, endereços de E/S, CIA) - uma plástica do PGA de 383 pinos). Provê uma controladora DRAM (barramento de memória de 256 bits) e uma interface PCI. Ele ainda desenvolve todo o trabalho de suporte a Bcache externo e de manutenção da coerência de memória quando um dispositivo PCI usa DMA na ou fora da memória. Não há chipset de suporte ao 21066, uma vez que a controladora de memória e a ponte PCI são integradas diretamente no chip. 77.. OOss SSiisstteemmaass O grupo da engenharia de aplicações na Digital produz desenhos de exemplo usando CPUs e chipsets de suporte. São placas mãe do tamanho de PC-AT, com todas as funcionalidades normalmente encontradas em placas mãe de Pentium de última geração. Originalmente estes desenhos tencionavam ser utilizados como pontos de partida para terceiros para produzirem novas placas. Estes desenhos de primeira geração são chamadoas Placas de Avaliação (Ebs). E como o esforço de engenharia requerido para se construir uma placa mãe cresceu substancialmente (devido às altas velocidades e a necessidade de encontrar emissões de rádio freqüência e atendimento a determinadas normas), a ênfase foi deslocada para prover placas mães que possam ser construídas em escala. Os grupos de sistemas da Digital produziram diversas gerações de máquinas usando processadores Alpha. Alguns destes sistemas usam suporte lógico que é desenhado pelos grupos e alguns dos chipsets em formato de "commodity" pela Digital. Em alguns casos, os sistemas são uma combinação de ambos. Vários outros construtores de sistemas usam processadores Alpha. Algumas destas empresas partem de desenhos de sistema a partir do zero, e outros usam chipsets de suporte da Digital, clones ou exemplos modificados de desenhos da Digital ou simplesmente empacotam sistemas usando placas construídas e testadas pela própria Digital. O EB64: o desenho usando 21064 com controladora de memória implementada usando lógica programável. E/S provida pelo uso de lógica programável a interface 486<-> e chip ponte ISA. Ethernet embutida na placa mãe, Super E/S (2S, 1P, FD), Ethernet e ISA. Tamanho PC-AT. Pode ser executada a partir de fontes de energia padrões de PCs. O EB64+: utiliza 21064 ou 21064A e APECs. Tem expansão AS e PCI (3 ISA, 2 PCI, um par em cada barramento compartilhado). Suporte 36 bits DRAM SIMs. Barramento ISA gerado pela Intel SaturnE/S e ponte PCI-ISA. SCSI embutida (NCR 810 em PCI), Ethernet (Digital 21040), teclado, MOUSE (estilo PS2), SuperE/S (2S, 1P, FD),RTC/NVRAM. Inicialização ROM em EPROM. Tamanho PC-AT. Pode ser executada a partir de fontes de energia padrões de PCs. O EB66: utiliza 21066 ou 21066A. O subsistema de E/S é idêntico ao EB64+. Tamanho PC AT baby. Pode ser utilizada com fontes de energia padrão PC. O esquema do EB66 foi publicado como um cartaz comercial de marketing como o "primeiro processador no mundo com PCI pré-construído" (há duas versões deste cartaz - eu desenhei os circuitos e escrevi a chamada para a primeira versão e alguns americanos escreveram a segunda). O EB164: Usa 21164 e ALCOR. Tem expansão ISA e PCI (3 conectores de barramento ISA, 2 PCI de 64 bits (um dos quais é compartilhado com o conector ISA) e 2 conectores PCI de 32 bits). Usa Bcache SIMMs adicional. Subsistema de E/S provê SuperE/S (2S, 1P, FD), teclado, MOUSE (estilo PS2), RTC/NVRAM. Inicialização ROM está em flash. Placa mãe do tamanho PC-AT. Requer 3.3 V de saída de força. O AlphaPC64 (conhecido como Cabriolet): derivado como EB64+ mas como uma placa em tamanho pequena, com inicialização ROM via Flash, com SCSI ou Ethernet embutidas na placa. 3 conectores ISA, 4 PCI (um par em conectores compartilhados) usando SIMMs Bcache. Requer 3.3 V de saída de força. O AXPpci33 (conhecido como NoName), é baseado no EB66. Este desenho é produzido pelo grupo de OEM da Digital (TOEM). Usa um processador 21066 executando 166MHz ou 233MHz. Tem também um tamanho pequeno e pode ser executado com alimentação de energia padrão PC. Tem 5 conectores ISA e 3 PCI (um par em um conector compartilhado). Há duas versões, com conectores PS/2 ou DIN grandes para o teclado. Outras placas mãe baseadas em 21066: muitas das outras placas mãe baseadas em 21066 no mercado são também baseadas na EB66 - não há atualmente muitas opções de sistemas no mercado quando o desenho do 21066 foi desenvolvido, uma vez que todo o controle é feito pelo processador. Multia (conhecida como Universal Desktop Box): é um sistema muito compacto baseado em 21066. Inclui 2 conectores PCMCIA, gráfico21030 (TGA), Ethernet 21040e NCR 810 SCSI em conjunto com unidade de disquete, 2 portas seriais e uma porta paralela. Tem uma capacidade de expansão limitada (um conector PCI) devido ao seu tamanho compacto. Há algumas restrições no uso do conector PCI. Note-se que há Multia baseado em 21066A e Pentium. DEC PC 150 AXP (conhecida como Jensen): este é um sistema Digital muito antigo, uma das primeiras versões de sistemas Digital. É mencionada somente porque um número relativamente grande de máquinas estão disponíveis no mercado de Segunda mão. O Jensem tem o formato torre que utiliza um procedimento um 21064 150 Mhz (versões posteriores tem processadores mais evoluídos). Ele usa lógica programável para a interface 486 EISA com uma ponte E/S para a CPU. Outros sistemas 21064(A): há 3 ou 4 desenhos de placas mãe (não se incluindo sistemas Digital) e uma série de outros que são reconhecidamente derivados do desenho do EB64+, incluindo-se: · EB64+ (alguns comerciantes empacotam e vendem sem nenhum modificação), no formato AT.. · Placas mãe Aspen Systems: derivada do EB64+; formato baby-AT. · Placa servidora Aspen Systems: muitos conectores PCI (inclusive ponte). · AlphaPC64 (conhecida como Cabriolet), formato baby AT. Outros sisistemas 21164(A): a única que eu conheço não é simplesmente um clone da EB164 e sim um sistema desenvolvido pela DeskStation. Este sistema é implementado usando-se memória e controladora de E/S proprietária da Desk Station. Não sei como o Linux se comporta neste equipamento. 88.. BByytteess ee CCoorrrreellaattooss Quando a arquitetura Alpha foi criada, foi a única entre as RISC que disponibilizava carga e armazenamento 8 e 16 bits. Ela suporta ainda 32 e 64 bits armazenamento e carga (chamadas palavra longa e palavra quádrupla pela Digital). Os arquitetos (Dick Sites e Rich Witek) justificam as suas decisões citando as seguintes vantagens: 1. Suporte a byte no cache e no subsistema de memória tendem a reduzir a velocidade a 32 e 64 bits. 2. Suporte a byte dificulta a construção de correção de erros em circuitos de alta velocidade no subsistema de cache e memória. Alpha compensa isto através da disponibilização de poderosas instruções para manipulação de bytes e grupos de bytes em registros de 64 bits. Testes de performance padrão para operações de expressões texto (como por exemplo o benchmark da Byte) mostram a performance do Alpha com excelentes resultados na manipulação deste tipo de dado. A ausência de carga e armazenamento de bytes mostra o impacto de alguns semáforos de software e impacta no desenho de sus sistemas de E/S. A solução da Digital para o problema é o uso de algumas linhas de endereços de baixa ordem para especificar o tamanho dos dados durante a transferência de E/S e os decodifica através dos bytes. Estes chamados Endereços Adicionais provocam a perda de espaço de endereços e têm como conseqüência o fato da área de E/S não ser contígua. Note- se que o espaço de E/S neste contexto, refere-se a todo os recursos do sistema presentes no barramento PCI e inclui ainda o espaço PCI de memória e sua área de E/S. Com a introdução do 21164A, a arquitetura Alpha foi codificada de forma a conter o endereçamento de byte. Executando-se estas novas instruções em CPUs mais antigas provocará uma exceção de código OPCDEC PALcode, gerando um impacto direto na performance. As ramificações deste fato residem no fato de que o uso destas novas instruções devem ser restritas a alguns programas de controle de dispositivos ao invés de serem utilizadas em aplicações. Este novo sistema de carga e armazenamento de byte é decididamente o futuro no suporte a chipsets, uma vez que será capaz de suportar áreas de E/S contíguas. 99.. PPAALLccooddee ee CCoorrrreellaattooss Este é o local que conterá uma seção explicando PALcode. Eu a escreverei se houver demanda para tal. 1100.. PPoorrttaannddoo A habilidade de qualquer máquina baseada em Alpha executar Linux é limitada somente pela habilidade do leitor de obter as informações nos detalhes devidos para a execução desta tarefa. Uma vez que há portes do Linux para placas E66, EB64+ e EB164, todos os sistemas baseados em 21066, 21064/APECS ou 21164/ALCOR podem executar Linux com pouca ou nenhuma modificação. A maior diferença entre quaisquer destas placas mãe é a forma de roteamento das interrrupções. Há três fontes de interrupções: · dispositivos embutidos · dispositivos PCI · dispositivos ISA Todos os sistemas usam uma ponte de E/S baseada em Sistema Intel (SIO) que atua como uma ligação entre PCI e ISA (o barramento principal de E/S é PCI, ISA é um barramento secundário usado para manter a compatibilidade com dispositivos legados de baixa velocidade de E/S). O SIO contém um tradicional par de 8259s. Alguns sistemas (por exemplo o Noname) roteia todas as suas interrupções através de SIO que as direciona para a CPU. Alguns sistemas têm um controlador de interrupções em separado e roteiam todas as interrupções PCI mais as interrupções SIO (saída do 8259) através deste, e todas as interrupções ISA através do SIO. Outras diferenças entre os sistemas incluem: · quantidade de conectores · quantidade de dispositivos PCI embutidos · se eles usam Flash ou EPROM 1111.. MMaaiioorreess IInnffoorrmmaaççõõeess Todas as placas de avaliação da Digital e desenhos de placas mãe são livres de licenças e todo o kit de documentação de um desenho custa cerca de \backslashUS$50. Isto inclui todos os esquemas, fontes dos componentes programáveis, tabelas de dados para CPU e chipset de suporte. A documentação está disponível nos distribuidores da Digital Semiconductor. Não estou sugerindo que muitas pessoas devem correr e adquirir este kit, porém desejo informar onde este tipo de informação pode ser encontrada. Espero que estas informações sejam úteis. Comentários, atualizações e sugestões para melhoria deste documento pode ser enviadas para neal.crook@reo.mts.digital.comNeal Crook. 1122.. RReeffeerrêênncciiaass http://www.research.digital.com/wrl/publications/abstracts/TN-13.html Bill Hamburgen, Jeff Mogul, Brian Reid, Alan Eustace, Richard Swan, Mary Jo Doherty e Joel Bartlett. Caracterização de Sistemas de Iluminação Orgânica. DEC WRL, Nota Técnica 13, Abril 1989.