Quais são os diferentes tipos de arquiteturas de computadores?


20

Estou revisando o livro "Elementos de sistemas de computação". Este livro ensina como construir um computador inteiro a partir do zero. Enquanto eu estava apenas navegando nos capítulos sobre arquitetura de computadores, notei que tudo estava focado na arquitetura de Von Neumann. Fiquei curioso para saber quais são as outras arquiteturas e quando e onde elas são usadas.

Sei apenas dois, um é Von Neumann e o segundo é Harvard. Também sei sobre o RISC, que é usado no uC do AVR.


2
Há um terceiro, que é modificado em Harvard. Uma Harvard pura não seria capaz de usar o mesmo armazenamento para manter programas e dados. Portanto, quase todas as implementações de Harvard foram modificadas para permitir que a memória de instruções seja endereçada como dados.
28510 gorila

11
ótima pergunta
Tipo anônimo

Respostas:


27

Existem muitos tipos diferentes de arquiteturas de computadores.

Uma maneira de categorizar arquiteturas de computadores é pelo número de instruções executadas por relógio. Muitas máquinas de computação leem uma instrução de cada vez e a executam (ou se esforçam muito para agir como seeles fazem isso, mesmo que internamente gostem de coisas superescalares e fora de ordem). Eu chamo essas máquinas de "von Neumann", porque todas elas têm um gargalo de von Neumann. Essas máquinas incluem arquiteturas CISC, RISC, MISC, TTA e DSP. Essas máquinas incluem máquinas acumuladoras, registradoras e empilhadoras. Outras máquinas leem e executam várias instruções por vez (VLIW, superescalar), que quebram o limite de uma instrução por relógio, mas ainda atingem o gargalo de von Neumann em um número um pouco maior de instruções por relógio. No entanto, outras máquinas não são limitadas pelo gargalo de von Neumann, porque pré-carregam todas as suas operações uma vez na inicialização e depois processam os dados sem mais instruções. Essas máquinas não-Von-Neumann incluem arquiteturas de fluxo de dados,

Outra maneira de categorizar arquiteturas de computadores é pela conexão (ões) entre a CPU e a memória. Algumas máquinas possuem uma memória unificada, de modo que um único endereço corresponde a um único local na memória e, quando essa memória é RAM, é possível usá-lo para ler e gravar dados ou carregar esse endereço no contador do programa para executar o código. Eu chamo essas máquinas de máquinas de Princeton. Outras máquinas possuem vários espaços de memória separados, de modo que o contador de programa sempre se refere à "memória de programa", independentemente do endereço carregado, e as leituras e gravações normais sempre vão para "memória de dados", que é um local separado, geralmente contendo diferentes informações mesmo quando os bits do endereço de dados são idênticos aos bits do endereço de memória do programa. Essas máquinas são "Harvard pura" ou "

Algumas pessoas usam uma definição restrita de "máquina de von Neumann" que não inclui as máquinas de Harvard. Se você é uma dessas pessoas, qual termo você usaria para o conceito mais geral de "uma máquina que possui um gargalo de von Neumann", que inclui máquinas de Harvard e Princeton, e exclui a NÃO-VON?

A maioria dos sistemas embarcados usa a arquitetura Harvard. Algumas CPUs são "Harvard puro", que é talvez o arranjo mais simples para a construção de hardware: o barramento de endereço para a memória do programa somente leitura é exclusivamente conectado ao contador do programa, como muitos Microchip PICmicros anteriores. Além disso, algumas máquinas Harvard modificadas também colocam constantes na memória do programa, que pode ser lida com uma instrução especial "ler dados constantes da memória do programa" (diferente da instrução "ler da memória de dados"). O software executado nos tipos acima de máquinas Harvard não pode alterar a memória do programa, que é efetivamente ROM para esse software. Alguns sistemas incorporados são "auto-programáveis", geralmente com memória de programa na memória flash e um "bloco de exclusão da memória flash" especial e uma instrução especial "bloco de gravação da memória flash" (diferente da instrução normal "gravação na memória de dados"), além da instrução "ler dados da memória do programa". Vários Microchip PICmicros e AVRs Atmel mais recentes são máquinas Harvard modificadas e auto-programáveis.

Outra maneira de categorizar as CPUs é pelo relógio. A maioria dos computadores é síncrona - eles têm um único relógio global. Algumas CPUs são assíncronas - elas não têm relógio - incluindo o ILLIAC I e o ILLIAC II, que foram os supercomputadores mais rápidos do mundo.

Ajude a melhorar a descrição de todos os tipos de arquiteturas de computadores em http://en.wikibooks.org/wiki/Microprocessor_Design/Computer_Architecture .


2
Uau, que vergonha por reter esse conhecimento por tanto tempo DEPOIS que eu fiz a pergunta.
Rick_2047

3
@ Rick - Parece que essa resposta levou muito tempo para compor. Seja grato que davidcary reservou um tempo para responder à sua pergunta! Algumas pessoas não estão operando no mesmo horário que você.
Kevin Vermeer

2
@reemrevnivek que era para ser um cara de piada.
Rick_2047

Seria bom se essa resposta fosse marcada como uma resposta do wiki da comunidade.
Trygve Laugstøl 16/03/11

8

CISC é o "oposto" do RISC. Enquanto o RISC prefere ter instruções simples que são fáceis para o compilador otimizar e geralmente do mesmo tamanho, o CISC gosta de instruções complexas de tamanhos variados.

Por exemplo, uma instrução pop no CISC modifica o ponteiro da pilha e coloca os dados da pilha em outro registro. No entanto, um processador RISC lê os dados com uma instrução e modifica o ponteiro da pilha com uma segunda instrução. (geralmente; existem algumas exceções, como o PowerPC, que pode atualizar o ponteiro da pilha e enviar dados para a pilha, mas isso é uma exceção)

Como as instruções RISC são do mesmo tamanho, é mais fácil escrever desmontadores. Projetar o processador também é mais fácil, porque o pipeline não precisa levar em consideração os tamanhos variados das instruções. No entanto, a densidade de código CISC tende a ser melhor, tanto porque as instruções complexas exigem menos bytes para representar o mesmo número de operações, quanto porque o comprimento variável da instrução permite alguma "compressão".

Existem também outras arquiteturas exóticas, como VLIW / EPIC. Esse tipo de arquitetura foi projetado com o processamento paralelo em mente. No entanto, eles não se saíram muito bem, porque colocam uma carga muito pesada no compilador para otimizar, enquanto outras arquiteturas têm janelas de instruções sofisticadas que aliviam alguma carga de otimização do compilador.


11
se você gosta, aceite.
Kortuk

5

Bem, existe algo como o ENIAC, onde você tem ALUs essencialmente individuais e as "programou" conectando a saída de um alu à entrada de outro alu que executaria a próxima operação nessa variável intermediária. Seus "registros" e armazenamento são os fios que conectam os demais.

Eu comprei recentemente o livro "Os Primeiros Computadores - História e Arquiteturas (História da Computação)", que em parte se concentra neste tópico exato. Não recomendo a compra deste livro, embora seja apenas uma coleção de trabalhos acadêmicos, difíceis de ler e suspeito que provavelmente tenham sido publicados (de graça) em outros lugares. (Eu desisti antes de terminar a introdução)

Uma vez que a memória foi inventada e se tornou prática, meio que nos acomodamos às duas populares Von Neumann e Harvard. Executar a re-fiação, cartões perfurados, fita de papel ou coisas assim tornou-se menos prático. E há uma pilha baseada (a zpu, por exemplo), que eu suspeito que provavelmente se enquadre na categoria Harvard e não na sua.

E as plataformas von neumann que são inicializadas a partir de um flash somente leitura (em uso normal) em uma interface de memória e têm ram de dados de leitura / gravação em outra (que às vezes pode operar em paralelo), mas da perspectiva dos programas estão em uma espaço de endereço? Ou aqueles que possuem várias memórias / interfaces internas e externas, todos operando em paralelo, mas são von neumann por estarem no mesmo espaço de endereço.

E de que serve uma plataforma harvard em que o processador não pode acessar a memória de instruções como dados para alterar / atualizar o gerenciador de inicialização ou para o carregador carregar o próximo programa a ser executado? Por que não é uma arquitetura von neumann? O processador executando e operando na mesma memória na mesma interface provavelmente de uma maneira seqüencial (busca de instruções e gravações de memória não acontecendo ao mesmo tempo)?

As duas arquiteturas populares baseadas em memória são mais próximas do que diferentes nas implementações atuais IMO.

Onde caem as gpu? Ou os negócios em que trabalho, processadores de rede (NPUs). Onde você tem essas microengenharia (processadores) de finalidade especial relativamente pequenas que são executadas a partir de uma ram de programa semelhante à harvard (endereçável, mas você simplesmente não quer fazer isso por razões de desempenho), opere em vários ram de dados, cada um com seu próprio espaço de endereço separado (processador separado instruções para cada espaço), (os espaços de memória operando em paralelo) e através desses carneiros entregam dados intermediários para que o próximo cálculo seja feito pela próxima micro-máquina em um alu com fio (eniac) como moda? Como você chamaria isso? Npus e gpus são apenas arquiteturas de harvard modificadas?


"de que serve uma plataforma Harvard em que o processador não pode ... carregar o próximo programa a ser executado?" Muitas CPUs possuem um programa fixo que não pode ser alterado pelo software em execução nessa CPU. Uma vantagem desse arranjo é que torna impossível "bloquear" o sistema com um bug que grava na memória aleatória, ou com uma atualização incorreta do software, ou mesmo com uma boa atualização do software e uma falha de energia em tempo oportuno. Isso dificulta a atualização do software - mas, na verdade, quantas vezes você mudou o software no microondas?
davidcary 11/09/10

2
No microondas, nenhum, mas passo bastante tempo codificando microcontroladores e recarregando o software várias vezes ao dia. Estando limitado a sistemas pequenos, sem erros e baseados em rom, o problema de alvenaria é facilmente resolvido usando von neumann. Os sistemas que você descreve têm pouca utilidade para o ganho de desempenho dos barramentos separados, o outro recurso da arquitetura harvard. Então, o que eu queria dizer era que a arquitetura harvard simplesmente não escala bem sem uma maneira de carregar programas, tornando-a um pouco obsoleta.
old_timer 12/09/10

11
Hmm, eles chamam de córtex-m3 harvard quando realmente não é, o mesmo que avr (eles chamam de harvard modificado). Tenho certeza de que existem alguns processadores de arquitetura harvard pura (o PIC) e costumavam ser mais puros de von neumann, mas a maioria é harvard modificado ou von neumann modificado (acesso a dados e instruções em paralelo), tornando-os mais iguais do que diferentes. É para onde eu estava indo na minha resposta: a pura colheita e o puro von neumann estão rapidamente se tornando obsoletos. O pôster quer saber o que mais há por aí, bem, quase tudo por aí.
old_timer

4

As arquiteturas de von Neumann e Harvard podem ser usadas com processadores RISC, como o AVR e ARM. O AVR usa Harvard, enquanto alguns chips ARM usam von Neumann e outros usam Harvard.


-1 para classificar você abaixo das respostas mais interessantes.
Oskar Skog
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.