> For the complete documentation index, see [llms.txt](https://bit-by-bit.gitbook.io/embedded-systems/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://bit-by-bit.gitbook.io/embedded-systems/sistemas-microcontrolados/visao-geral-da-organizacao-de-um-sistema-computacional.md).

# Visão geral da organização de um sistema computacional

Um computador digital é uma combinação de dispositivos e circuitos digitais que realizam uma sequência programa de operações \[7, 8]. A sequência de operações é chamada de programa \[5]. Resume-se a um conjunto de instruções codificadas e dados que serão processados para alcançar o objetivo computacional pretendido, sendo ambos armazenados na memória \[5, 7]. Considerando isso, a função do computador é acessar a memória para obter e processar as operações indicadas. Para tal, um sistema computacional possui um conjunto de estruturas para possibilitar que esses procedimentos possam ser executados.

![](https://3269117709-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LGWtnbRF0hQ-zc4ofA7%2F-LGqMNyxe0w87VNPyA0q%2F-LGqMSFu7k5RachU8IYo%2FCicloInstru%C3%A7%C3%A3o.png?alt=media\&token=e540ad09-d5d2-4f67-9cb9-2c2b7a498c7c)

Um dos principais componentes de um sistema computacional é o processador \[6]. Tem função de realizar cálculos, processar e enviar requisições para dispositivos periféricos e efetuar todos os processos que permitem o funcionamento do sistema \[3]. Embora seja o principal componente, o processador deve ser capaz de interagir com dispositivos periféricos como memórias, dispositivos de entrada e saída, conversores de sinais, entre outros.

Embora os sistemas computacionais tenham suas peculiaridades, a estrutura interna pode ser generalizada em algumas unidades especificas. Sabendo disso, um sistema computacional pode ser representado por cinco blocos convencionais: a unidade lógica e aritmética - ULA, a unidade de memória, a unidade de controle - UC, e as unidades de entrada e saída \[7].

![](https://3269117709-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LGWtnbRF0hQ-zc4ofA7%2F-LGlNLLN8xoWMr2pkVr4%2F-LGlNPdgxNydEDBDr49V%2FSistemaComputacionalGen%C3%A9rico.png?alt=media\&token=323f4f41-ceaa-46c4-bfbd-6cdefc214979)

### Definição de memória

A memória pode ser definida como um conjunto de elementos que armazenam informação. Em uma memória semicondutora, o elemento básico é chamado célula de memória \[1]. A célula de memória é capaz de armazenar a informação de 1 bit, isto é, apresenta dois estados estáveis, 1 ou 0. Além disso, deve possibilitar que a informação seja definida (gravada) e verificada (lida).

![](https://3269117709-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LGWtnbRF0hQ-zc4ofA7%2F-LGlNLLN8xoWMr2pkVr4%2F-LGlNXojjmsC712XeRF0%2FCelMemoria.png?alt=media\&token=ee0c712c-66c7-47df-b606-65b6c64f4aba)

Um conjunto de células de memória formam uma palavra, por exemplo: 8 bits formam uma palavra de um byte. De modo geral, a memória consiste de um grupo de palavras, sendo cada uma identificada de maneira unívoca por um endereço. Uma característica da palavra é a sua capacidade de armazenar informação, isto é, a quantidade de bytes – ou bits - que a palavra representa.

![](https://3269117709-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LGWtnbRF0hQ-zc4ofA7%2F-LGlNLLN8xoWMr2pkVr4%2F-LGlNiLbbTDfkwEtUpk9%2FMem%C3%B3ria.png?alt=media\&token=7dd900fb-de29-41df-9a34-035451ab6c22)

### Sistema de interconexão

A conexão entre todos esses módulos é realizada pelo sistema de interconexão, também chamado de barramento \[1, 6]. Por meio do barramento os módulos do sistema podem se comunicar, isto é, trocar informações. Para tal, deve admitir os seguintes tipos de transferências \[1]:

* Memória para processador;
* Processador para memória;
* E/S para processador;
* Processador para E/S;
* E/S de ou para a memória.

Em geral, um barramento é organizado como um grupo de vias – conexões físicas – em que cada via é capaz de transmitir sinais representando o binário 1 e o binário 0. Existem três tipos de barramentos em um sistema.

Barramento de Dados:

* caminho para movimentação de dados entre os módulos;
* Largura é uma das chaves do desempenho (8,16,32 bits).

Barramento de Endereço:

* Determinam a origem ou o destino dos dados no barramento de dados;
* Largura determina capacidade máxima de memória.

Barramento de Controle:

* Informações de tempo e controle;
* Sinais de leitura/escrita de memória, requisições de interrupção.

### Estrutura da unidade de processamento

Internamente, o processador – unidade central de processamento - é dividido em duas unidades, cada uma com um propósito específico. Compõe-se basicamente de uma ULA e uma UC. Tem como função principal buscar e executar instruções \[1].

A ULA é capaz de operar os dados binários, executando operações simples sobre um ou mais operandos \[5]. Já a unidade de controle é utilizada para coordenar as operações entre as outras unidades, determinando o fluxo de operações do sistema \[1,5].

É importante também citar que a UCP possui registradores especiais e registradores de propósito geral. Registrador refere-se a um elemento de memória com uma determinada capacidade de armazenamento.

![](https://3269117709-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LGWtnbRF0hQ-zc4ofA7%2F-LGlNLLN8xoWMr2pkVr4%2F-LGlNsXHmrQrY-7ZFDhi%2FUCP.png?alt=media\&token=4956682e-bc79-4bd4-8a25-107c8c08a90d)

Em algumas arquiteturas há somente um registrador de propósito geral, chamado de acumulador \[5]. O acumulador tem função de servir como operando da ULA, e para armazenar o resultado da operação realizada. Em arquiteturas com vários registradores de propósito geral, todos podem servir a mesma função do acumulador.

Os registradores especiais desempenham funções específicas na unidade controle \[1, 4, 5, 7]:

* Contador de programa – Esse registrador tem como função apontar o endereço de memória da próxima instrução que será buscada e executada.
* Registrador de instrução – Utilizado para armazenar a instrução codificada que é lida da memória no endereço apontador pelo contador de programa.
* Registrador de estado – Sempre que uma operação é executada pelo processador algumas informações são armazenadas nesse registrador, por exemplo, se uma operação na ULA resultou em zero.
