memória para o computador mais simples possível (Pi0K)

13

Eu gostaria de construir o computador mais simples possível. Eu não me importo com velocidade ou armazenamento, na verdade, ter velocidade lenta e armazenamento baixo é uma enorme vantagem, pois quero construí-lo a partir de transistores (idealmente, relés!) E quero um LED para cada estado. Ele será programado através de um Raspberry Pi que hospedará uma câmera para que você possa ver cada ciclo de clock em execução (sim, ele será executado em Hz e não em GHz). Será um design aberto com a intenção de que as escolas possam comprar as peças, entender e melhorar o design. Portanto, o orçamento total deve estar bem abaixo de 400 libras, de preferência cerca de 100 libras.

Eu pesquisei isso por muitos anos e tenho boas idéias para a CPU (registros mínimos, microcódigo em switches DIP e operações lógicas / aritméticas seriais de bits para reduzir a contagem de transistores). O que não consigo descobrir é como obter a memória, gostaria de 1024 a 8096 bits.

O melhor que posso apresentar são dois decodificadores de um bit de 6 bits que dão acesso a uma grade de capacitores de 64 x 64. Ou eles têm uma carga neles ou não, e a leitura reforçaria esse estado. Não haveria LEDs nos capacitores, pois a atualização dessa 'DRAM' seria da ordem de minutos (o que é uma pena, pois essa seria a única parte a não mostrar o estado).

Outras idéias incluem alguma forma de unidade de fita (mecanismo compacto de cassete: ótimo armazenamento, muito complexo, sem busca), memória de tambor (a fita em torno de um feijão pode: difícil demais para o funcionamento da mecânica), memória mecânica (roda da bicicleta e rolamentos de esferas: erros de bits demais), memória do núcleo (núcleos grandes de ferrite duro: ainda é muito complicado acertar na escala necessária), fita / cartão (ainda podemos comprar os leitores de fita), disco rotativo com orifícios perfurados em ordem binária e alguns magnéticos memória para armazenamento (muito complexa para construir).

Por fim, o objetivo é publicar um design que possa ser construído em um ano letivo em que todas as partes de uma CPU e memória sejam 'visíveis', para que você possa ver a instrução buscar, decodificar em microcódigo e endereçar todos os recursos de decodificação / registro / lógica / endereço. acontecendo ao longo de minutos.

Se alguém tiver idéias para uma memória realmente barata (<< 100 libras), onde fica claro exatamente como funciona, informe-me.

Tony

O estado atual do jogo está em http://www.blinkingcomputer.org/

Tony Robinson
fonte
Basta procurar no Google por pessoas que já fizeram isso e coisas semelhantes; os designs estão aí; você pode criar uma lista técnica e descobrir que provavelmente precisará de um pouco mais de dinheiro e tempo.
PlasmaHH
Eu sugeriria que ir ao nível do transistor pode ser um pouco demais para um projeto da escola. Eu acho que a integração em pequena e média escala do CMOS seria muito mais viável e provavelmente mais compreensível (portões, registros, buffers, decodificadores, etc.). Você pode incluir algo que demonstre como os portões são feitos de transistores, os chinelos são feitos de portões, etc.).
Tut
1
Apenas uma idéia: você deve tornar a memória (programa) facilmente modificável manualmente, para que as pessoas possam "programar" manualmente com as mãos :-).
Oyvind
Primeiro, decida o que você deseja que o computador possa fazer. Isso determinará quanta memória você precisa e qual deve ser o conjunto de instruções.
Tony Ennis
Obrigado a todos. PlasmaHH: Sim, é um enorme desafio fazer isso com restrições de dinheiro e tempo, é por isso que ninguém mais o fez ainda. Tut: Eu realmente quero ver cada sinal. As pessoas verão como os portões lógicos são construídos a partir dos transistores. oywind: Sim, será programável por meio de um Raspberry Pi com uma interface da web que você pode escrever seu próprio código e vê-lo em execução com uma webcam. Tony Ennis: Eu quero construir o computador mais simples que mostre todos os sinais - isso demonstrará todos os aspectos e exigirá arquiteturas não padronizadas, como uma ALU serial de bits.
Tony Robinson

Respostas:

9

Muitas pessoas construíram computadores com transistores, CIs, relés e até tubos de vácuo discretos. Eles variam de máquinas de 4 bits até 32 bits. Os 4-bitters, é claro, serão os mais simples que você pode criar e fazer qualquer coisa. O primeiro microprocessador foi o 4004 de 4 bits da Intel .

Começaria pesquisando no Google por " computadores domésticos de 4 bits " (sem as aspas).

Aqui está uma placa de um computador transistorizado de 4 bits:

insira a descrição da imagem aqui

No que diz respeito à memória, alguns desses projetos que, de outra forma, usam transistores discretos, "enganam" e usam chips SRAM. Eles são incrivelmente baratos para quantidades moderadas de memória, 32KB custa US $ 3,28 e não requerem relógios nem atualizações.

Mesmo que o resto do seu computador use relés, usá-los para a memória será proibitivamente caro.

Se você consegue sobreviver com 1K bits, pode construir um com flip-flops transistorizados; 2048 2N3904 custará 3 ¢ cada (US $ 60 no total, mais os outros componentes que serão ainda mais baratos - resistem por 1/2 centavo etc.). Você pode comprar PCBs por US $ 10 cada e, em seguida, contratar uma criança para enchê-los.

Retransmitir computadores data todo o caminho de volta para o final dos anos 1930, e um dos primeiros foi o Harvard Mark I . É onde o nome daí que vem arquitetura Harvard (espaço e dados separados do programa, em comparação com a arquitetura von Neumann que combina os dois).

O computador de revezamento de fabricação caseira mais famoso é o de Harry Porter.

insira a descrição da imagem aqui

Confira os vídeos do computador em execução. Lembra-me de uma antiga central telefônica eletromecânica.

Aqui está uma parte de outro computador de retransmissão caseiro chamado Zusie :

insira a descrição da imagem aqui

Muitas luzes piscando.

E finalmente, aqui está um link para um vídeo de um somador de 4 bits, composto por 24 relés. Adicionadores como este são o coração da ALU (unidade lógica aritmética) em um computador.

tcrosley
fonte
Desculpe, o "eu pesquisei isso por muitos anos" foi enterrado no segundo parágrafo. Editei o título do post para declarar claramente que é a memória com a qual me preocupo. Se você conseguir sobreviver com 1K bits, poderá criar um com flip-flops transistorizados; 2048 2N3904 custará 3 ¢ cada (US $ 60 no total, mais os outros componentes que serão ainda mais baratos - resistem por 1/2 centavo etc.). Você pode comprar PCBs por US $ 10 cada e, em seguida, contratar uma criança para enchê-los.
Tony Robinson
ctd ... isso é mais próximo do que eu havia convidado, mas você precisa decodificar o endereço e eu colocaria mais transistores por célula de memória. Talvez uma célula de memória 'DRAM' de um transistor e um capacitor também seja possível dentro do orçamento.
Tony Robinson
@ TonyRobinson Tentei abordar o uso da memória (como você reconheceu), mas também estava tentando fornecer informações sobre seu desejo de transformar um computador em transistores e / ou relés discretos, e para ilustrar que vários foram bem-sucedidos nisso. Boa sorte em seus empreendimentos.
tcrosley
6

Se você quer uma memória simples , não procure mais do que um flip-flop . Com dois transistores e quatro resistores, você pode ter um pouco de memória. Você também pode fazer um flip-flop com dois portões NOR com acoplamento cruzado ou apenas comprar um IC com um monte de flip-flops nele.

De fato, o cache muito rápido da CPU é basicamente um monte de chinelos, integrados à CPU.

Phil Frost
fonte
2
A DRAM consome mais energia, pois precisa ser atualizada constantemente, enquanto a SRAM usa apenas uma pequena corrente inativa quando inativa. A razão para o uso de capacitores é porque ele requer apenas um transistor por bit, permitindo densidades de memória muito mais altas.
Tom Carpenter
Você está certo - eu tinha em mente simples chinelos RTL. Vou editar para esclarecer.
Phil Frost
1
Os CIs estão fora - eles escondem o que realmente está acontecendo. Quero que todos os sinais sejam expostos o mais longe possível. Realmente não me importo com energia - não vejo a energia como um problema, ela será conectada a um Raspberry Pi para que a energia esteja disponível. Um DRAM de transistor pode ser uma maneira muito melhor de ir do que minha matriz de idéias de capacitores, como sugeriu o post anterior - vou ter que descobrir quais transistores são necessários para manter o vazamento de carga suficientemente baixo (preciso de tempos de atualização no ordem dos minutos). Senão, sim, chinelos parecem a próxima melhor ideia.
Tony Robinson
@TonyRobinson "Ele será conectado a um Raspberry Pi para que a energia esteja disponível." - ...talvez. Depende da potência máxima disponível por meio de um Raspberry Pi e de qual família lógica você planeja usar. (Eu esperaria que um PSU de banco médio pudesse fornecer um pouco mais de energia)
user253751
2

Concordo que seria muito legal ter um sistema de computador completo com um LED para cada estado, visível ao olho humano.

O computador de retransmissão TIM 8 usa 8 capacitores, 2 diodos e um relé SPDT por byte em seus 12 bytes de memória principal RAM (memória de dados). (O TIM 8 possui 16 bytes de memória variável se você incluir registradores).

O computador de retransmissão TIM 8 usa fita perfurada para a memória do programa.

insira a descrição da imagem aqui

insira a descrição da imagem aqui

É possível substituir esses diodos por LEDs, para que haja um breve pulso mostrando os dados entrando ou saindo de um byte de RAM? Talvez se o DRAM do sistema atualizar com rapidez suficiente, varrendo todos os bytes de RAM, todos os bits de estado parecerão visíveis nesses LEDs (embora tecnicamente apenas um byte de LEDs seja ativado a qualquer momento). (Esses teriam que ser LEDs de alta corrente se quisermos CARREGAR e ARMAZENAR dados desses capacitores para registros baseados em relé).

É possível colocar um resistor e um LED em cada capacitor de armazenamento de bits, mostrando simultaneamente todos os bits de estado? (Esses teriam que ser LEDs de baixa corrente e capacitores fisicamente grandes, se quisermos que o capacitor retenha os dados por tempo suficiente para uma taxa de atualização razoável. Alguns LEDs podem ser facilmente vistos com apenas 1 mA de corrente. Com uma atualização de 1 segundo capacitores de ciclo e (adivinhação) carregados inicialmente a 12 V, embora (adivinhação) uma carga de 7 V no capacitor seja suficiente para carregar o hardware a jusante, então o capacitor precisa de uma classificação de C ~ = i * t / V = ​​1 mA * 1 s / (12 V - 7 V) = 200 uF.).

Obviamente, isso será muito maior e levará mais trabalho humano para montar do que praticamente qualquer memória principal baseada em circuito integrado.

davidcary
fonte
1

Por que você não usa apenas uma CPU simples de 8 bits (por exemplo, 6502) e uma quantidade muito pequena de memória (registradores de CPU, RAM de IC e uma quantidade muito pequena de armazenamento externo (por exemplo: FD, HD ou disco flash, etc.) .) e, em seguida, basta explicar com os slides o seguinte:

  1. Os componentes de hardware, subcomponentes e suas funções
  2. O sistema operacional, programas do sistema e programas do usuário
  3. Carga e execução de um programa simples para adicionar 2 números, armazenar o resultado em cada tipo de memória e exibi-lo em uma exibição de vídeo.

Se você deseja manter o dispositivo o mais simples e barato possível, use um sistema de desenvolvimento de microcontroladores como seu sistema básico ou até mesmo um Arduino é simples e barato o suficiente. Nenhum dos alunos vai construir um relé simples ou um computador com tubo de vácuo - nem alguém realmente quer que eles façam isso. Eles devem começar com um bom livro e um Arduino para o entendimento básico da programação. Depois, se eles quiserem ler / controlar dispositivos externos, poderão se aprofundar em programação específica ou em engenharia.

Aqui está um bom projeto para você considerar para obter idéias:
http://www.instructables.com/id/How-to-Build-an-8-Bit-Computer/?ALLSTEPS

DIYser
fonte
Embora hoje em dia o chamemos de " W65C02S "
Ignacio Vazquez-Abrams
Obrigado, venho de 6502 dias (BBC micro, mas também trabalhei no ZX80). Concordo que há muito o que aprender nesse nível. Na verdade, eu estava apenas relendo o Guia Avançado do Usuário para Microcomputadores da BBC . Eu realmente quero estar um nível abaixo disso, você vê uma instrução de 5 bits, ela salta através de um pequeno conjunto de microcódigos que configuram alguns registros e linhas de barramento e chama uma ALU serial para que você possa ver toda a lógica acontecendo pouco a pouco. É por isso que será o mais lento de todos os tempos.
Tony Robinson
Sim - isso será mais lento. Você examinou os detalhes neste URL: instructables.com/id/How-to-Build-an-8-Bit-Computer/?ALLSTEPS É realmente muito bom e permite algumas personalizações exclusivas para o seu sistema.
DIYser
0

Eu concordo que seria muito legal ter um sistema de computador completo com um LED para cada estado, visível ao olho humano, em vez de escondido dentro de uma misteriosa caixa preta.

Você pode considerar o uso de um barramento de memória paralelo de bits mais ou menos padrão - talvez algo como o STEbus (barramento IEEE-1000) .

Você pode considerar o uso de vários ICs como 74HC273 ou 74LS373 ou 74HC564 para armazenar os dados, para que o estado atual dos dados dentro do chip esteja sempre visível nos LEDs conectados aos pinos de saída paralela. Em seguida, use buffers octais de três estados (como o 74HC241 ou 74LS245) ou muxes, também conectados a esses pinos de saída paralelos, para canalizar os dados para o barramento. Você acaba com alguns chips decodificadores um de N e 2 chips por 8 bits de armazenamento. "Isso permite que você ... veja quais dados são realmente armazenados em cada byte de RAM." - SAP-1 do Pong Guy, computador o mais simples possível, com RAM de componente discreto . O mesmo arranjo é usado para os registros na CPU Fourbit de Jaromir ou para os registros na CPU espaguete de 8 bits de Kyle .

Os preços atuais (2016) da Mouser.com são de cerca de US $ 0,11 / bit no qty 10 para esse arranjo (uma trava de armazenamento octal mais um buffer octal de 3 estados por 8 bits) e US $ 0,05 / bit para novos LEDs no qty 500. 2 ^ 9 bytes = 512 bytes = 2 ^ 12 bits = 4096 bits, isto é (aproximadamente)

  • $ 205 em LEDs
  • $ 450 em chips de armazenamento e buffer
  • $ ??? os chips decodificadores 1-de-N para selecionar o chip de armazenamento ou buffer apropriado; o custo de placas, fios, mão de obra e etc.

Talvez você possa construir (aproximadamente) 64 bytes de memória de dados (a mesma quantidade de memória de dados que um Atmel ATTINY13 ou um Microchip PIC16F570) por aproximadamente US $ 90 (que pode caber no seu orçamento de US $ 150 ~ = £ 100).

Você pode ver por que é tentador substituir todos esses chips de armazenamento e buffer e a maioria dos chips decodificadores por um chip SRAM paralelo de 32Kx8 pronto para uso, oferecendo muito mais armazenamento por menos de US $ 10. (Aliança AS6C1008-55PCN, Cypress CY7C199CN-15PXC, etc.)

Pode ser por isso que a maioria das CPUs caseiras, desde as pequenas CPU Nibbler 4 Bit até o impressionante computador de retransmissão RC-3 http://www.computerculture.org/2012/09/rc-3-relay-computer/ http: / /www.computerculture.org/projects/rc3/ , estão conectados a um chip SRAM de caixa preta para memória principal.

Com algo como um barramento de memória padrão, talvez você possa ter várias placas de memória diferentes conectadas à CPU ao mesmo tempo:

  • Alguns bytes de armazenamento variável completamente visível e alguns bytes de ROM de programa com fio completamente visível, o que deve ser suficiente para alguns programas de demonstração interessantes.
  • Um chip SRAM que pode ser conectado ocasionalmente para armazenar programas ou dados ou ambos, quando você ainda não construiu memória completamente visível o suficiente para armazená-los.
davidcary
fonte
0

Aqui está outra sugestão para um projeto semelhante que pode valer a pena: construir uma máquina de Turing . É a máquina de computação mais simples possível

Dirk Bruere
fonte