[Jornada do Desenvolvedor] #1 - Arquitetura de Computadores

Introdução à Arquitetura de Computadores

Vamos lá! No material Arquitetura de Computadores de Allan Francisco Forzza Amaral (e-Tec Brasil, 2010) fala que:

Computador é uma máquina (conjunto de partes eletrônicas e eletromecânicas) capaz de sistematicamente coletar, manipular e fornecer os resultados da manipulação de dados para um ou mais objetivos. Por ser uma máquina composta de vários circuitos e componentes eletrônicos, também é chamado de equipamento de processamento eletrônico de dados.

O esquema básico de um processamento de dados (manual ou automático) resulta em um produto acabado: a informação. Assim, os dados precisam ser processados para que algum resultado tenha significado para alguém ou para o próprio computador.

Ou seja, o computador, esse metal que utilizamos, também chamado de processamento eletrônico de dados, é usado para coleta, manipulação e fornecimento de dados. Certo? Ok!

Mostra também que esse processamento traz um resultado (produto acabado), que é a informação. Um exemplo, seria uma soma! Você informa dois valores e ele retorna o “resultado”! Isso?!

Então o tão conhecido computador é utilizado “simplesmente” processar dados.

Hardware e Software

A famoso Hardware e Software. Acho que isso não é novidade para niguém. Um sistema de computador é composto por esses dois elementos.

De forma resumida, Hardware é nome que se dá para a parte física do computador (o que pode tocar), como teclado, caixa de som, placas, fios, etc…

Software é o nome que se dá a parte lógica, como programas, que dão vida ao computador.

Um exemplo seria como o cérebro, o órgão cérebro, que você pode pegar é o Hardware, o software seria uma lembrança, memória ou pensamento.

O material ainda reforça:

“Sem um software adequado às suas necessidades, o computador, por mais bem equipado e avançado que seja, é completamente inútil.”

Hardware:

Unidades de Entrada e Saída

Os dispositivos de E/S (Entrada e Saída) são constituídos, geralmente, de duas partes: o controlador e o dispositivo propriamente dito.

Vamos lá!

O controlador é um chip ou um conjunto de chips que controla fisicamente o dispositivo; ele recebe comandos do sistema operacional (software), por exemplo, para ler dados dos dispositivos e para enviá-los (TANEMBAUM, 2003).

Unidades de entrada são, portanto, dispositivos físicos que capturam os dados a serem processados. Os dados podem ser do tipo texto, vídeo ou áudio. Para cada tipo de dado temos um dispositivo de entrada especifico para sua leitura: teclado, mouse, scanner, etc.

Unidades de saída apresentam os resultados finais do processamento. Para
o usuário, os dispositivos de saída são tão normais que quase não são percebidos: monitores de vídeo, impressoras, plotter, telas de terminais bancários, impressoras de extratos, painéis de senha, monitores de vídeo, etc.

Existem também alguns dispositivos que podem ser classificados com ambas as denominações, entrada e saída, por exemplo: unidades de disco (discos rígidos, disquetes, unidades leitoras e gravadoras de CD e DVD), unidades de armazenamento USB (Universal Serial Bus – Barramento Serial Universal) conhecidos como pen drives –, telas touch-screen, etc.

Memória

O computador deve ser dotado de alguma forma de armazenamento (temporário ou permanente) para que os dados coletados ou processados possam ser armazenados. Ele precisa de uma memória!

A essa estrutura damos o nome genérico de memória (não está contextualizado aqui o tipo da memória). A memória armazena, essencialmente, os bits.

A menor unidade de informação em um computador é o bit, que pode assumir os valores 0 ou 1. Como um único bit é insuficiente para representar informações mais complexas, eles são agrupados e combinados. Num primeiro agrupamento, são reunidos em conjuntos de oito bits, recebendo a denominação de Byte.

Como a unidade byte (unidade de medida de armazenamento) também é, consideravelmente, pequena quando indicamos valores mais extensos, utilizamos múltiplos do byte: quilobyte, megabyte, gigabyte, terabyte, etc.

1 Quilobyte = 1 KB = 1024 Bytes,
1 Megabyte = 1 MB = 1024 Kbytes,
1 Gigabyte = 1 GB = 1024 Mbytes, e
1 Terabyte = 1 TB = 1024 Gbytes.

Unidade Central de Processamento (UCP)

A CPU (Central Processing Unit ou Unidade Central de Processamento), microprocessador ou processador é a parte do computador que interpreta e
executa as instruções contidas no software. Na maioria das CPUs essa tarefa
é dividida entre uma unidade de controle que dirige o fluxo do programa e
uma ou mais unidades que executam operações em dados.

O ciclo básico de execução de qualquer CPU é buscar a primeira instrução da memória, decodificá-la para determinar seus operandos e qual operação executar com os mesmos, executá-la e então buscar, decodificar e executar a instrução subsequente (TANEMBAUM, 2003).

A CPU é constituída pelos seguintes componentes: a ULA (Unidade de Lógica e Aritmética), a UC (Unidade de Controle) e os registradores. Isso é importante!

A ULA é responsável por realizar as “contas” (cálculos matemáticos) e pelo uso de lógica de comparação. A UC representa um “coordenador” que controla as buscas das instruções e sincroniza sua execução. Os registradores basicamente armazenam temporariamente os resultados
dos processamentos.

Um tipo de registrador especial é o contador de programa, que contém o endereço de memória da próxima instrução que a CPU vai buscar. Assim, esse registrador vai ser atualizado para conter sempre o endereço da próxima instrução a ser processada.

Software

Um programa de computador pode ser definido como uma série de instruções ou declarações, em forma inteligível pelo computador, preparada para obter certos resultados.

Um programa pode ser chamado de software, porém esse termo pode ser utilizado também para um grupo de programas ou para todo o conjunto de programas de um computador. Podemos classificar os software ou programas de várias formas.

Conclusões:

  • A diferença entre hardware e software;
  • Qual a função da memória e como o tamanho interfere no funcionamento do computador;
  • Diferenciar as unidades de medidas de armazenamento (ex: quantos MB existem em 2,5 GB?);
  • Saber as funções da Unidade Lógica e Aritmética (ULA).

Isso seria um resumo sobre Computador. Vou pular toda a história. Você pode ler no Wikipédia.

Sistemas numéricos

Agora vamos estudar sobre Aritmética computacional e Representação de dados.

Nesse tema precisamos:

  • Compreender a linguagem numérica utilizada pelos computadores;
  • Compreender as formas numéricas que se apresentam num sistema computacional;
  • Compreender as formas de conversão de bases dos sistemas reconhecidos pelo homem e pela máquina;
  • Compreender os principais tipos de dados e sua representação interna;
  • Compreender o formato de apresentação dos dados no âmbito computacional.

Conceitos básicos: dado, informação e representação

Dado: Dado é forma isolada de representação de um valor. Informação é agrupamento de dados que fornecem algum tipo de mecanismo de tomada de decisão. Representação é formato da gravação do dado (analógico ou digital).

Na natureza, todo tipo de informação pode assumir qualquer valor compreendido em um intervalo de – ∞ a + ∞. Você consegue distinguir, por exemplo, uma cor vermelha que esteja um pouco mais clara de outro tom
de vermelho. Esse tipo de informação é informação analógica.

Computadores lidam apenas com informações digitais, não abrindo espaço para dados estruturados de forma analógica, que podem assumir valores indefinidos.

A lógica digital utiliza apenas valores pré-estabelecidos (0) e (1). A lógica analógica admite a existência de valores infinitos.

Sistemas de Numeração

O sistema de numeração decimal está tão presente no nosso cotidiano que
nem notamos sua presença. O kg (quilograma), o M (metro), o Km/h (quilômetro por hora), tudo isso é medido numa forma que compreendemos no modelo decimal.

Entretanto, este não é o modelo utilizado pelos computadores, pois as posições de memória basicamente conseguem representar apenas 0 ou 1 (como se estivesse ligado ou desligado). Por isso, existem outras notações, como a binária e a hexadecimal.

Decimal

Quando falamos do número 123, imaginamos certo número de itens que
esse número representa e esquecemos o seu significado matemático.

Binário

O sistema binário funciona exatamente da mesma forma. O sistema decimal possui dez dígitos (de 0 a 9); o binário possui apenas dois (0 e 1). Fazemos potência de 10 para calcular o número no sistema decimal, então faremos potência de 2 para o sistema binário.

Hexadecimal

O sistema hexadecimal representa os números em base 16. É usado na informática, pois os computadores costumam utilizar o byte como unidade básica da memória e com um byte podemos representar 256 valores possíveis, o que abrange todo alfabeto (maiúsculas e minúsculas), os números e vários caracteres especiais.

Como no sistema decimal dispomos de apenas dez dígitos, devemos incluir seis letras para representar o hexadecimal.

Na relação entre sistema binário e decimal, cada algarismo hexadecimal
corresponde a um número binário de 4 bits. Por exemplo, no hexadecimal
acima temos:

3 = 0011 = 3 decimal
E = 1110 = 14 decimal
0 = 0000 = 0 decimal

Agora precisamos saber converter esses sistemas, tanto de binário para decimal, como vice-versa.

Formatos de representação de dados

A linguagem humana utiliza palavra que contem um número variável de caracteres. Por exemplo, numa conta com lápis e papel, o único limite para o término de uma conta (por exemplo, uma divisão que resulta uma dízima
periódica) é o tamanho da folha (embora possamos emendar as folhas e continuar o cálculo).

Em computação precisa-se ter atenção aos limites impostos pelas quantidades de bits representados num cálculo ou comparação (ações executadas pela ULA) e também os seus tipos.

Um dos aspectos mais importantes do processo de representação dos dados em um computador se refere à quantidade de algarismos que cada dado deve possuir na sua representação interna, que afetará a capacidade de inúmero componentes do sistema.

Como exemplo, podemos citar um projetista de processador, que poderá definir o elemento de números inteiros de 32 algarismos (usualmente chamado de 32 bits).

Tipo caractere

A representação interna de informação em um computador é realizada pela
especificação de uma correspondência entre o símbolo da informação e um grupo de algarismos binários (bits).

Isso porque o computador, possuindo somente dois símbolos (0 ou 1) para representação, requer mais de um bit para identificar todos os possíveis símbolos que constituem as informações usadas pelo homem e que precisam ser armazenadas e processadas na máquina.

Para podermos representar todos os caracteres alfabéticos e decimais é utilizado um método denominado de codificação. Nesse modelo, cada símbolo (caractere) da nossa linguagem é atribuído a um conjunto de bits que o identifica de forma única.

Tipo lógico
O tipo de dados lógico permite utilizar variáveis que possuem apenas dois valores para representação, ou seja, FALSO (bit 0) ou VERDADEIRO (bit 1). Para a manipulação dos valores lógicos são utilizados os operadores:

a) Operador lógico AND (E): o resultado da operação será VERDADE se, e
somente se, todas as variáveis de entrada forem VERDADE, ou seja, 1.

b) Operador lógico OR (OU): é definido de modo que o resultado da operação será VERDADE se um operando for VERDADEIRO.

c) Operador lógico NOT: também conhecido como inversor, de modo a produzir na saída um valor oposto ou inverso.

Esses operadores lógicos são frequentemente vistos em linguagens de programação e em lógicas de programação.

Utiliza-se a simbologia (+) da matemática para representar o resultado da
operação lógica OR. Obviamente, neste caso, a lógica computacional da soma de 1 + 1 utilizando um operador OR é igual a 1, e não a 2, como na
aritmética decimal.

Lógica Digital e Sistemas Lógicos

Esse tema é preciso entender:

  • Sistemas de Numeração;
  • Funções, portas lógicas e circuitos lógicos;
  • Álgebra de Boole.

Eu encontrei o livro Elementos De Eletronica Digital, por Ivan Valeije Idoeta e Francisco Gabriel Capuano com conteúdo bem completo.

Organização de Computadores

No nível mais alto, um computador é composto pela CPU, memória e dispositivos de E/S. Para executar programas esses componentes precisam estar relacionados e interconectados de alguma maneira.

Modelo de Von Neumann

Todos os projetos de computadores atuais são fundamentados nos conceitos desenvolvidos pelo matemático John Von Neumann, no Instituto de Estudos Avançados de Princeton. Esse projeto, conhecido como Arquitetura Von Neumann é baseado em três conceitos básicos:

a) os dados e as instruções são armazenados em uma única memória de
leitura e escrita;
b) o conteúdo dessa memória é endereçado pela sua posição, independente do tipo de dados nela contido;
c) a execução de instruções ocorre de modo sequencial, exceto quando o
programa altere a instrução para a seguinte.

De forma geral, esse conceito permite não precisar fazer modificações no
hardware para cada aplicação que se deseja executar, já que ele usa o conceito de programa armazenado.

Com a arquitetura de Von Neumann pode-se definir um código para cada propósito e utilizar o hardware de propósito geral capaz de interpretar esses códigos. Assim, utiliza-se o método de programação, que é uma sequência de códigos e instruções, chamada, como você já sabe, de software.

No exemplo da Figura 4.1 temos um modelo expandido da visão de Von Neumann:
a) o processador desdobra-se em: Unidade de Controle (UC), necessária ao sincronismo da tarefa; ULA (Unidade Lógica e Aritmética), responsável pelos cálculos e os registradores, para armazenar temporariamente os resultados;
b) a memória, responsável por armazenar o resultado final da operação;
c) dispositivos de entrada e saída para a comunicação do sistema com o
meio externo.

Os componentes do modelo são interligados por meio de uma arquitetura de barramentos.

Conclusão

Claro que não vou entrar em tantos detalhes. Se não vou ficar 1 ano escrevendo conteúdo! Mas o básico que precisamos é isso!

Importante saber como o computador é organizado, como funciona a interpretação e os seus componentes.

Referências

[LIVRO] Introdução à arquitetura de computadores – MJ Murdocca, VP Heuring – 2001 – gta.ufrj.br.

[PDF] Introdução à Arquitetura de Computadores – R Manola, I ao Computador – inf.ufes.br.

O barramento da Figura 4.2 é uma estrutura interna que deve operar a
velocidades altas e interligar os principais componentes do modelo de Von
Neumann. Veremos mais sobre barramentos nas próximas seções.

MACHADO, Francis B. Arquitetura de sistemas operacionais. 4º Ed. Rio de
Janeiro. LTC. 2007.

MONTEIRO, Mario A. Introdução à Organização de Computadores. 5ª ed.
– Rio de Janeiro: LTC, 2007.

MORIMOTO, Carlos E. Hardware, o Guia Definitivo. Porto Alegre: GDH Press e Sul Editores, 2007.

STALLINGS, Willian. Arquitetura e Organização de Computadores: Projeto
para o Desempenho. Tradução de Carlos Camarão de Figueiredo e Lucília de
Figueiredo. São Paulo: Prentice Hall, 2002.

TANEMBAUM, Andrew S. Sistemas Operacionais Modernos. 2ª ed. Tradução
de Ronaldo A.L. Gonçalves e Luis A. Consularo. São Paulo: Prentice Hall, 2003.

CMC Dias – Revista Acadêmica: ciências agrárias e …, 1994 – repositorio.utfpr.edu.br.

[PDF] Elementos de Lógica Digital II- FS Osório – wiki.icmc.usp.br.

[LIVRO] Sistemas digitais: fundamentos e aplicações- T Floyd – 2009 – books.google.com.

[LIVRO] Circuitos digitais – AC de Lourenço – 1986 – books.google.com.

Elementos De Eletronica Digital– Ivan Valeije Idoeta, Francisco Gabriel Capuano.