- Arquiteturas de Processador
- Arquitetura do conjunto de instruções RISC e CISC
- Computação de conjunto de instruções complexas (CISC)
- Computação de conjunto de instruções reduzidas (RISC)
O sistema integrado é o coração e o núcleo da maioria dos produtos eletrônicos disponíveis no mercado. É a implementação da engenharia em que o hardware encontra o software. Estamos rodeados por um mundo de sistemas embarcados, com minicomputadores em fechaduras biométricas, aviões, carros, pacemakers, etc. Estes sistemas limitados de recursos, pequenos, inteligentes e potentes ajudam-nos nas nossas tarefas diárias.
Já pensou em como nosso corpo está funcionando, o sistema nervoso, o cérebro e a capacidade de multitarefa. Se você combinar todas essas funções, terá uma imagem aproximada de um sistema biológico embutido. Nosso cérebro esconde os detalhes complexos de seu funcionamento que ocorrem dentro dele, mas ainda nos permite controlá-lo ao máximo potencial. A mesma complexidade vale para o processador ou controlador usado em sistemas embarcados. Eles ocultam detalhes complexos e nos fornecem uma interface de alto nível para trabalhar. Para o nível de abstração, pode-se relacionar como o código para adicionar dois números em uma linguagem de programação de alto nível faz com que os registros nos chips manipulem bits e forneçam uma saída de volta para o usuário.
Arquiteturas de Processador
A unidade de processamento central, referente ao microprocessador e microcontrolador, realiza tarefas específicas com o auxílio de uma Unidade de Controle (UC) e uma Unidade Lógica Aritmética (ALU). Como as instruções são entregues da RAM, a CPU atua com a ajuda de suas duas unidades auxiliares, criando variáveis e atribuindo-lhes valores e memória. É muito importante saber como a CPU realiza toda essa ação com o auxílio de sua arquitetura. Se você quiser saber mais sobre como funciona um microcontrolador, pode ler este artigo básico sobre microcontrolador.
Cada CPU possui uma memória associada para armazenar o programa e os dados. O programa e os dados trabalham com a CPU para obter a saída. O Programa fornece as instruções enquanto os dados fornecem as informações a serem trabalhadas. Para acessar o programa e os dados a CPU usa barramentos, esses barramentos são fios, mais precisamente esses são os rastreamentos de fios como você pode ter visto nas placas de circuito impresso. Ao longo desses anos, os microcontroladores e microprocessadores evoluíram adaptando várias arquiteturas, com base na aplicação ou nos requisitos de design, a seleção do microcontrolador é influenciada pelo tipo de arquitetura nele utilizada. Vamos dar uma olhada nas arquiteturas populares.
Arquitetura Von-Neumann / Princeton
A maneira pela qual a CPU obtém acesso ao programa e aos dados informa sobre a arquitetura da CPU. Anteriormente, um único barramento era usado para obter acesso ao programa e aos dados. Este tipo de arquitetura é conhecido como Arquitetura Von Neumann ou simplesmente Arquitetura Princeton. Um único barramento para obter o código e os dados significa que eles se atrapalham e diminuem a velocidade de processamento da CPU porque cada um teve que esperar que o outro concluísse a busca. Essa limitação também é conhecida como condição de gargalo de Von-Neumann.
Arquitetura Harvard
Para acelerar o processo, foi proposta a Arquitetura Harvard. Nesta arquitetura, barramentos de dados separados para dados e programa estão presentes. Isso significa que essa arquitetura propôs o uso de quatro barramentos
- Um conjunto de barramento de dados que transporta os dados para dentro e para fora da CPU.
- Um conjunto de barramentos de endereços para acessar os dados.
- Um conjunto de barramento de dados para transportar código para a CPU.
- Um barramento de endereços para acessar o código.
O uso de barramento de endereço e barramento de dados separados significa baixo tempo de execução para a CPU, mas isso vem com o custo de complexidade no projeto da arquitetura. A arquitetura de Von Neumann pode parecer um pouco preguiçosa, mas tem a vantagem de seu design simples.
A arquitetura Harvard é muito fácil de implementar quando a CPU e as unidades de memória compartilham o mesmo espaço ou a RAM e a ROM são embutidas (no chip) com a unidade de processamento, como em um microcontrolador onde as distâncias são em mícrons e milímetros. No entanto, a mesma arquitetura é difícil de implementar onde a memória que contém o código é externa à unidade de processamento, como aquela em x86 IBM PCs. Um conjunto de rastreamentos de fios separados para os dados e endereço na placa-mãe tornaria a placa complexa e cara. Vamos entender isso com um exemplo de processador.
Um processador com barramento de dados de 64 bits e barramento de endereço de 32 bits precisaria de aproximadamente 100 barramentos (96 para o barramento de dados e endereço e alguns outros para os sinais de controle) para a implementação da arquitetura Von-Neumann. A mesma estrutura, se implementada com a arquitetura Harvard, custaria aos traços de fio duplo aproximadamente 200 com um grande número de pinos saindo do processador. É pela mesma razão que não vemos a arquitetura Harvard pura implementada para PCs e estações de trabalho. Em vez disso, uma arquitetura Harvard modificada é usada na qual a hierarquia da memória com a memória cache da CPU é usada para separar o programa e os dados. A hierarquia de memória separa o armazenamento com base na hierarquia do tempo de resposta dos processos.
Arquitetura do conjunto de instruções
Como o programa (código) é carregado na memória do sistema (RAM), ele é buscado pela CPU (referindo-se tanto ao microprocessador quanto ao microcontrolador) para agir sobre os dados, é muito semelhante ao que damos instruções quando treinamos o cão para certas ações e comandos. À medida que essas instruções são acionadas, certos transistores vão de um nível lógico a outro para fazer isso acontecer. Basicamente, com a ajuda de instruções, o programador humano se comunica com o processador. Cada CPU tem seu próprio conjunto de instruções, uma coleção de instruções com base em sua arquitetura e recursos.
A CPU entende essas instruções na combinação de 0 e 1, também conhecidas como opcode. Para um programador humano, é realmente difícil lembrar a combinação de 0 e 1 para cada instrução associada à CPU. Para facilitar o trabalho de um programador humano, temos interfaces de alto nível dessas instruções e o compilador as converte na forma de 0 e 1 para seu processamento. Também no conjunto de instruções de cada CPU, ele possui um número limitado de instruções que pode entender.
Desempenho da CPU
Você pode ter ouvido o termo taxa de clock da CPU relacionado ao desempenho da CPU. As CPUs geralmente têm uma taxa de clock em MHz (Mega-Hertz) ou GHz (Giga-Hertz) como uma taxa de clock de 25 GHz. O número associado à taxa de clock informa quantas vezes o clock dentro da CPU bate em ciclos por segundo. A praticidade da taxa de clock pode ser compreendida pelo fato de que as instruções são executadas com base em ciclos de clock da CPU, que é proporcional ao número de programas que a CPU pode rodar de cada vez.
O desempenho da CPU depende do número de instruções que estão escritas no programa, quanto mais as instruções, mais o tempo que a CPU leva para executá-las. Também depende do número de ciclos de clock em que cada instrução é executada, certas instruções precisam de mais ciclos de clock para serem executadas do que outras, portanto, atrasam o desempenho da CPU. As instruções em um programa e os ciclos necessários para executar cada instrução são inversamente proporcionais entre si. Mudar um afetará o outro. Este é o ponto onde a indústria de CPU está dividida.
Arquitetura do conjunto de instruções RISC e CISC
Como dito acima, a execução de um programa e o desempenho da CPU dependem do número de instruções em um programa em que as instruções são propostas a essa CPU particular como parte do conjunto de instruções e o segundo fator é o número de ciclos de clock em qual cada instrução é executada. Com base nesses dois fatores, há atualmente dois conjuntos de instruções disponíveis. O mais antigo é o Complex Instruction Set Computing (CISC), enquanto o outro é o Reduced Instruction Set Computing (RISC). Vamos discutir cada uma dessas arquiteturas em detalhes para entender a diferença entre as arquiteturas RIC e CISC.
Computação de conjunto de instruções complexas (CISC)
CISC significa Complex Instruction Set Computing. O principal motivo do CISC é reduzir o número de instruções que um programa executa, isso é feito combinando muitas instruções simples como modo de endereço, carregamento, etc. e para formar uma única instrução complexa. A instrução CISC inclui uma série de instruções simples, bem como algumas instruções especiais que levam mais de um ciclo de clock para serem executadas. As instruções CISC podem funcionar diretamente na memória sem a intervenção de registradores, o que significa que elimina a necessidade de algumas instruções básicas como carregamento de valores e o requisito de memória (RAM). As instruções CISC enfatizam mais o hardware do que o software, o que significa que, em vez de colocar carga nos compiladores,O CISC usa transistores como hardware para decodificar e implementar instruções. No entanto, como as instruções são complexas e consistem em várias etapas, elas são executadas em mais ciclos de clock.
Uma analogia simples para relacionar é quando você é instruído a abrir o livro e ler a 2ª página do 3º capítulo. Nesta série de atividades, você executa várias etapas, como encontrar o livro em sua bolsa, depois arrastar a página para o capítulo 3 e, em seguida, ir para a 2ª página do capítulo e começar a ler. A série de uma etapa se combinada em uma única instrução de leitura da página 44 (que é o número da 2ª página do 3º capítulo), obtemos uma instrução CISC.
Computação de conjunto de instruções reduzidas (RISC)
O primeiro chip integrado foi projetado por Jack Kilby em 1958, que era um oscilador e em 1970 o primeiro microprocessador comercial saiu da Intel. Embora no início dos processadores não houvesse CISC. Mas com as demandas de computação pesada, a arquitetura CISC estava se tornando mais complexa e difícil de manusear. Um redesenho total da arquitetura CISC conhecido como RISC saiu da IBM por John Coke. Assim, para diferenciar entre as duas arquiteturas, os termos RISC e CISC foram introduzidos.
RISC significa computação de conjunto de instruções reduzido. O principal motivo do RISC era introduzir uniformidade no tamanho e na execução das instruções. Isso foi feito introduzindo um conjunto de instruções simples que poderia ser executado como uma instrução por ciclo, isso é feito quebrando instruções complexas como carregar e armazenar em instruções diferentes, onde cada instrução leva aproximadamente um ciclo de clock para ser executada. A arquitetura RISC inclui instruções simples do mesmo tamanho que podem ser executadas em um único ciclo de clock. As máquinas baseadas em RISC precisam de mais RAM do que CISC para manter os valores enquanto carrega cada instrução nos registradores. A execução de uma única instrução por ciclo dá às máquinas baseadas em RISC a vantagem do pipelining(pipelining é o processo no qual a próxima instrução é carregada antes da primeira instrução ser executada, o que aumenta a eficiência da execução). A arquitetura RISC enfatiza