Ao examinar algumas CPUs personalizadas, notei que as frequências em que elas operam são relativamente baixas em comparação com as CPUs modernas (da ordem de vários MHz). Existe uma razão de engenharia eletrônica para essa limitação, por exemplo, para tábuas de pão? Em caso afirmativo, como determinar a frequência máxima possível de atingir com seu projeto?
15
Respostas:
Isso tem a ver principalmente com os comprimentos de interconexões e atrasos de propagação pelos portões. Se reduzirmos a CPU à sua essência, é uma máquina de feedback. Vários circuitos lógicos combinatórios calculam algumas funções booleanas sobre o estado atual da máquina, e essas funções determinam o novo estado, que é travado por circuitos sequenciais quando chega uma nova borda do relógio. Todos os circuitos combinatórios apresentam atrasos. O período do relógio não pode ser mais curto que o tempo que leva para o caminho mais lento através desses portões para produzir um resultado estável, porque um único bit incorreto interrompe o show.
Além disso, a lógica seqüencial possui requisitos de tempo. Antes que o limite do relógio chegue, há um tempo mínimo de configuração para que as entradas tenham que ser estáveis e, posteriormente, elas devem ser estáveis por algum tempo de espera. Se estes forem violados, o estado se tornará lixo.
Os atrasos na propagação são causados por fatores como a rapidez com que as capacitâncias parasitas podem carregar, a rapidez com que a corrente pode se acumular diante de uma indutância e a rapidez com que os dispositivos de silício podem mudar. Por exemplo, um transistor bipolar com uma base menor pode alternar mais rápido que um com uma base maior, portanto, um transistor minúsculo em um chip será mais rápido que um discreto.
Em uma resposta anterior que excluí, escrevi sobre os efeitos da linha de transmissão. Mas não considero que esses efeitos nem entrem em cena nas velocidades de que estamos falando, porque, digamos, a 10 Mhz, o comprimento de onda ainda é de cerca de 30 metros. Portanto, na escala de uma placa de circuito de tamanho comum, pulsos na escala de tempo de alguns megahertz ainda atingem todas as partes de uma rede de cobre simultaneamente.
Portanto, se você cria uma CPU com componentes discretos, simplesmente não está conseguindo os componentes pequenos com tempos de comutação rápidos e a mesma proximidade que minimiza as capacitâncias e indutâncias perdidas.
Não obstante, as máquinas antigas de componentes discretos na década de 1960 funcionavam um pouco mais rápido do que essas máquinas caseiras. Demorou algum tempo e astúcia para chegar lá. Por exemplo, o IBM 360 Model 44 (1964) rodava em 4 Mhz. Isso ainda pode ser a "velocidade homebrew", mas o CDC 7600 lançado alguns anos depois em 1969 ultrapassou os 36 Mhz. O artigo da Wikipedia http://en.wikipedia.org/wiki/CDC_7600 fornece uma dica sobre alguns dos truques que foram usados, por exemplo:
"Como sempre, o design da Cray também se concentrou na embalagem para reduzir o tamanho, encurtar os caminhos do sinal e, assim, aumentar a frequência operacional. ... [E] esse módulo de circuito consistia na verdade em até seis placas de PC, cada uma com resistências subminiaturas, diodos e transistores. As seis placas foram empilhadas e depois interconectadas ao longo de suas bordas, criando um módulo muito compacto, mas basicamente irreparável. "
Portanto, as CPUs da homebrew não são necessariamente construídas para o seu verdadeiro potencial devido a alguns efeitos confusos relacionados à qualidade e ao layout da construção. Ainda assim, qualquer pessoa que construa uma CPU a partir de circuitos integrados individuais e componentes discretos rodando em vários megahertz deve ser aplaudida.
fonte
Como um ex-aluno do ensino médio que construiu um computador para fins especiais com a série 7400 TTL, que ganhou algum tipo de prêmio na feira de ciências, observei essas coisas que o impediam de funcionar o mais rápido possível:
Capacitância dispersa na tábua de pão. Alguns pF entre cada par adjacente de conectores. Isso limitou os tempos de subida / descida das bordas do pulso e, em alguns locais, adicionou diafonia. Este foi provavelmente o maior fator.
Variações de chips de sacolas. (Alguém se lembra do Poly-Paks?) 74LSxx, 74Hxx, 74xx com diferentes atrasos de propagação e outras características, impossibilitava que os sinais permanecessem sincronizados em velocidades de clock mais altas do que alguns MHz.
Cheapo chips de memória estática, novamente a partir de uma sacola ou outra fonte sem qualidade. Eles simplesmente não podiam ler ou escrever de maneira confiável além de uma certa taxa.
Minha instrumentação de teste estava limitada a geradores de sinal de homebrew, um osciloscópio de largura de banda de 5 MHz e circuitos digitais temporários, equipados com júri. Difícil de verificar a integridade do sinal, o tempo, as amplitudes dos sinais digitais que foram filtrados em passa-baixo em forma instável.
Hoje, seria difícil encontrar um escopo de 5MHz, a menos que seja um comprador antigo. Fichas melhores de todos os tipos são fáceis de obter, mesmo em pacotes DIP espaçados de 0,1 ", exceto que eu não vejo muito o caminho das sacolas há muito tempo. As tábuas de soquete, no entanto, não mudaram muito. A capacitância dispersa ainda é uma ameaça para a velocidade de qualquer projeto digital criativo.
Evitar placas de ensaio usando um PCB de homebrew é a melhor maneira de evitar capacitância perdida, mas é claro que exige mais esforço e tempo.
fonte
Eu acho que a principal razão é que, à medida que você aumenta a frequência, a impedância das conexões da sua placa de ensaio aumenta e limita a velocidade final do seu circuito.
Toda conexão na sua placa de ensaio tem uma indutância baixa, mas diferente de zero. À medida que sua frequência aumenta, você precisa levar esses efeitos em consideração. A impedância dos fios pode ser encontrada por:
onde L é a indutância do fio. Eventualmente, Z se tornará alto o suficiente para que a corrente não flua e seu circuito pare de funcionar. Encontrar o valor numérico exato para esse número será muito complicado, principalmente porque as tábuas de pão têm traços um ao lado do outro e isso altera um pouco a impedância de cada fio a partir desta fórmula. Se você realmente deseja um número (impreciso), pode tentar aqui calcular a indutância (e, portanto, a impedância) de seus fios. Se você souber a corrente mais baixa da qual uma peça pode operar, poderá determinar a frequência máxima antes de atingir esse limite.
fonte
Outros responderam o "porquê". Veja como determinar a velocidade máxima.
fonte
Além de todas as razões elétricas que limitam a velocidade, há também uma no nível lógico:
Você não pode usar tantos recursos para fazer as coisas funcionarem mais rapidamente, como operação em pipeline com previsão de ramificação, aritmética mais rápida e outros enfeites. Os caches também não fazem muito sentido se não forem mais rápidos que a memória principal.
fonte
Para máquinas homebrew, tudo se resume a dois fatores. O atraso de propagação dos chips que você está usando e o número de chips que você precisa usar no caminho mais longo através do design da sua CPU.
Por exemplo, um 74HC574 (registro de 8 bits) possui um atraso máximo de propagação de cerca de 41ns (retirado de sua folha de dados). Agora, digamos que o caminho mais longo através do design de sua CPU exija que ele passe por 8 chips diferentes. Adicione os atrasos de propagação para cada um dos 8 e vamos imaginar que se trata de 333ns. Com 1000ns sendo o mesmo que 1Mhz, você daria uma velocidade máxima de 3Mhz.
Na prática, convém restringir-se a algo mais lento como 2Mhz, a fim de garantir um design estável. Mesmo que você ache que perderá o tempo apenas uma vez por bilhão de ciclos, ainda estará com problemas. 10 bilhões divididos por 3 milhões significa que você executa erroneamente uma vez a cada 3.333 segundos, ou seja, uma vez por hora. Falha na sua máquina a cada hora não é bom!
Para acelerar, você pode usar chips mais rápidos e / ou alterar o design para reduzir o número de chips no caminho mais lento. A velocidade mais rápida que você vê é de cerca de 4Mhz, o que lhe dá 250ns para concluir cada ciclo.
fonte