Limitação de frequência para CPUs homebrew

15

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?

Eugen
fonte
Como ... chips VLSI caseiros? Eu imagino que é uma limitação de custo. A precisão que o equipamento multimilionário oferece simplesmente não pode ser duplicada em casa e, como resultado, os chips devem ficar mais lentos.
Nate
4
@ Nate, eu imagino que ele esteja se referindo a CPUs multi-chip caseiros construídos a partir de TTL. Por exemplo: homebrewcpu.com
Alfred Centauri
@ Nate Atualizei minha pergunta para ser mais específica.
Eugen
@AlfredCentauri - sim, você está certo;)
Eugen

Respostas:

16

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.

Kaz
fonte
Dependendo da complexidade do caminho dos dados, eu pensaria que um dispositivo de homebrew deve ser capaz de sincronizar a 20 MHz ou mais sem dificuldade usando a tecnologia moderna e técnicas convencionais. Não é multi-GHz, mas não é um desleixo total. Suspeito, porém, que na maioria dos casos em que são usadas CPUs caseiras, a facilidade de solução de problemas é mais importante que a velocidade. Aliás, o cristal de relógio principal da máquina de fliperama original da marca Pong (R) era de 14,3818 MHz, embora tenha sido dividido bem cedo; Eu acho que a única coisa afetada por algo que a velocidade é a linha central do campo de jogo.
Super12
1
Muitas CPUs caseiras usam EPROMs para armazenar microcódigo, mas também para implementar lógica complexa e / ou tabelas verdadeiras (muitas delas até têm uma ALU feita de uma ou mais ROMs). A velocidade de acesso das ROMs pode limitar significativamente a velocidade máxima da máquina, mas são populares porque facilitam a depuração, o redirecionamento e o ajuste do processador sem necessidade de religação significativa.
Alexios19:
15

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.

DarenW
fonte
4

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:

Esta fórmula

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.

Nate
fonte
Você poderia explicar a relação entre a iminência e a velocidade do circuito?
Eugen
Então, como isso explica que CPUs como o Intel Core I7 funcionam a velocidades de 2,5 GHz e as CPUs construídas em placas de ensaio não conseguem atingir essa velocidade? Inicialmente, pensei que havia uma conexão com o comprimento do fio entre os chips da CPU e da RAM.
Eugen
Não para negar as leis da física, mas não acho que a indutância seja realmente o principal limitador da velocidade. Depois, fios semelhantes de comprimentos semelhantes são usados ​​em rádios homebrew e em outros projetos, em frequências muito mais altas. Um só tem que ter cuidado com impedâncias correspondentes, comprimentos, layouts, acoplamentos acidental Evitar, etc.
darenw
1
@ DarenW: Indutância e capacitância perdidas são realmente os problemas. Em um sistema de rádio, você normalmente possui apenas um fio de comprimento não trivial. Em uma implementação de processador, você tem centenas, com indutância mútua, dependendo do espaçamento. As interações dependentes da frequência são incontroláveis ​​devido à complexidade. A impedância característica depende fortemente de coisas como a distância dos traços do solo ... que não são bem controlados em uma tábua de pão.
Ben Voigt
1
Acho que você está certo, acho que provavelmente deveria ser apenas reatâncias em geral. A capacitância resultará em problemas semelhantes, mas para coisas como subidas / descidas difíceis e mudanças de estado. As equações para encontrar a impedância são semelhantes e, se ele quiser uma resposta numérica, essas provavelmente poderão ser aplicadas de maneira semelhante.
Nate
3

Outros responderam o "porquê". Veja como determinar a velocidade máxima.

  1. Para cada flip-flop, procure o relógio para Q.
  2. Total do comprimento de todos os fios do flip-flop para o próximo flip-flop. Vire esse comprimento para o tempo. O fio é ~ 2/3 da velocidade da luz
  3. Total de atrasos de qualquer porta, inclusive através de RAM assíncrona.
  4. Aproveite o tempo de configuração no próximo flip-flop.
  5. Adicione 1-4. Este é o seu período mínimo de relógio. Inverta para obter frequência.
  6. Considere a inclinação do relógio. Se o relógio chegar ao segundo ff antes do primeiro, adicione a inclinação com 1-4.
  7. Se o relógio chegar ao segundo segundo antes do primeiro, calcule o mínimo de 1-3. Verifique se eles estão abaixo do tempo de espera exigido pelo segundo ff mais a inclinação do relógio.
Brian Carlton
fonte
De que comprimento de fio você está falando: o comprimento da fonte de alimentação aos pinos de saída da CPU, pinos da saída de CPU aos chips de RAM ...? Também não estou muito claro o que você quer dizer no primeiro passo.
Eugen
2
@ Eugen - eu acho (mas não minha área de especialização) que ele está se referindo ao seu atraso de propagação interna - tempo que vai do clock até a saída estável.
precisa
1

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.

starblue
fonte
1

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.

Phil Wright
fonte