Fundamentos de Hardware e Software em Computação

Classificado em Computação

Escrito em em português com um tamanho de 13,76 KB

Processadores: O Cérebro do Computador

Um processador é um circuito integrado que realiza os cálculos e a tomada de decisão de um computador. Pode-se dizer que o processador é o cérebro do computador.

Tarefas Executadas pelo Processador

  • Busca instrução na memória;
  • Executa instrução;
  • Escreve o resultado em um registrador;
  • Entre outras.

Microprocessadores RISC

Computadores com Conjunto Reduzido de Instruções (RISC) utilizam um pequeno conjunto de instruções altamente otimizado.

  • Grande número de registradores para evitar grande quantidade de interação com a memória.
  • Execução em um ciclo de clock, otimização de cada instrução aliada à técnica de pipelining.
  • Pipelining é uma técnica que permite a execução de partes de instruções simultaneamente, tornando o processo mais ágil.
  • Unidade de controle hardwarizada (baseada em hardware).

Microprocessadores CISC

Computadores com Conjunto Complexo de Instruções (CISC) possuem características como:

  • Fáceis de programar.
  • Permitem uso eficiente de memória.
  • As máquinas eram programadas única e exclusivamente em linguagem de máquina e eram lentas e caras, o que justificava a filosofia CISC.
  • Possuem um número pequeno de registradores devido ao fato de as instruções poderem operar diretamente na memória.
  • Possuem lógica de decodificação de instrução complexa, originada pela necessidade de suportar múltiplos modos de endereçamento.

RISC vs. CISC: Uma Comparação Detalhada

Implementação de Controle

  • CISC: Microprogramação
  • RISC: Hardware

Comprimento das Instruções

  • CISC: Variável
  • RISC: Fixo

Número de Registradores

  • CISC: Baixo (4 a 16)
  • RISC: Alto (32 a 128)

Instruções em Processadores

Instruções são comandos usados pelos processadores para tratar determinada informação.

  • Processadores RISC: São capazes de executar instruções simples e, por terem menos circuitos internos, são capazes de operar em temperatura mais elevada.
  • Processadores CISC: São capazes de executar instruções mais rapidamente por conta do hardware disponível. Possuem um processamento de milhões de instruções por segundo.

Em testes realizados recentemente, resultaram em processadores bem equiparados, não havendo grandes vantagens de um sobre o outro. Atualmente, os processadores são equipados com tecnologias RISC e poucos recursos CISC, sendo também chamados de processadores híbridos.

Pipelining: Otimizando o Processamento

Pipelining é uma técnica que permite que o processador divida o ciclo de processamento em etapas menores. Uma vez que cada uma destas etapas é executada por uma parte especializada da CPU, a execução simultânea permite o melhor aproveitamento do hardware.

Grafeno: O Material do Futuro na Computação

Grafeno é um material formado por uma fina camada de grafite, que possui uma estrutura hexagonal de átomos bem distribuídos, gerando uma fina camada de carbono. O diferencial deste material é sua resistência, maior do que a do aço, além de ser mais leve, transparente e conduzir calor e eletricidade melhor que qualquer outro componente existente. Ou seja, pode substituir os componentes dos dispositivos muito em breve.

Computação Quântica: Uma Nova Era de Processamento

Ciência que estuda o uso da mecânica quântica para processamento computacional, com o objetivo de desenvolver o computador quântico. Este possui a informação básica qubit, o que significa que o computador pode assumir os valores 0 ou 1 ao mesmo tempo. Esse fenômeno de assumir os dois valores ao mesmo tempo pode ser observado em laboratório através de um experimento chamado divisão de raio.

RAID: Redundância e Desempenho em Discos

RAID (Redundant Array of Independent Disks) é um conjunto de discos (físicos) vistos como um único drive lógico pelo sistema operacional, com a finalidade de ganhar segurança e desempenho. É formado por 6 níveis comuns.

RAID 0: Striping para Desempenho

São dados distribuídos através de todos os discos sem redundância, utilizando distribuição Round-Robin (balanceamento de carga) e overhead envolvido no cálculo de paridade, mais conhecido como striping (distribuição).

Exemplo:

Obs: Não é um “RAID” verdadeiro porque não é tolerante a falhas.

Recomendado para:

  • Produção e edição de Vídeo
  • Edição de Imagens
  • Aplicações de pré-impressão
  • Qualquer aplicação que requeira grande largura de banda (bandwidth)

RAID 1: Espelhamento para Segurança

Conhecido como espelhamento e duplicação (gravação para ambos os discos). Tem como característica principal distribuir os dados através dos discos.

Outra característica é a simples troca de disco defeituoso por um outro novo sem a perda dos dados, pois foi feito um espelhamento do outro disco bom.

Recomendado para:

  • Contabilidade
  • Folha de pagamento
  • Financeira
  • Qualquer aplicação que requeira altíssima disponibilidade

RAID 2: Correção de Erros (Obsoleto)

Cada bit da palavra é adicionado a um disco e cada palavra possui seu código de recuperação de erros Hamming escrito nos discos de Error Correcting Code (ECC).

Porém, o RAID 2 ficou obsoleto, pois as novas tecnologias de disco já possuem este tipo de correção internamente.

RAID 3: Transferência Paralela com Paridade

É uma forma de transferência em paralelo com paridade, similar ao RAID 2.

Cada bloco de dados é segmentado e escrito nos discos, e a paridade dos segmentos é gerada no momento de gravação, gravando no disco de paridade e verificação de leitura.

Cada bit de paridade é simplesmente colocado para cada conjunto de bits correspondente.

Exemplo:

Obs: Requer o mínimo de 3 drives de disco para implementar e somente um disco é redundante, não importando o tamanho do arranjo.

Recomendado para:

  • Produção e transmissão de Vídeo (ao vivo)
  • Edição de Imagens e de Vídeo
  • Qualquer aplicação que requeira alto poder de processamento

RAID 4: Paridade Compartilhada

Uma forma de gravar os dados independentemente com o disco de paridade compartilhado. Cada bloco inteiro é escrito em um disco de dados e a paridade dos blocos é gerada no momento da gravação, gravando no disco de paridade e verificada na leitura.

Obs: Requer no mínimo 3 drives para implementar e a reconstrução dos dados é difícil e ineficiente no caso de haver falhas de discos.

RAID 5: Paridade Distribuída

A gravação é feita de forma independente com blocos de paridade distribuídos.

Cada bloco de dados completo é escrito em um disco de dados e a paridade é gerada para os blocos da mesma faixa, sendo gerada na gravação, gravada no local distribuído e verificada na leitura.

Obs: A faixa de paridade é alocada por Round-Robin, evita o gargalo do RAID 4 no disco de paridade, falha de disco tem médio impacto no processamento, projeta o controlador mais complexo, usa um sistema de paridade para manter a integridade dos dados e é o nível de RAID mais versátil.

Recomendado para:

  • Servidores de arquivo e aplicação
  • Servidores de banco de dados
  • Servidores de Web, e-mail
  • Servidores de intranet

RAID 6: Dupla Paridade Distribuída

É formado por discos de dados independentes com 2 esquemas de paridade distribuídos. Seria uma extensão do RAID 5 com dois esquemas de paridade independentes (Paridade Bidimensional). Requer um mínimo de quatro discos. Neste RAID, o número de bits de paridade é dobrado. Podem ocorrer falhas em até dois discos que os dados não serão perdidos, pois ficam espalhados em todos os discos.

RAID 0+1 (RAID 10): Híbrido para Desempenho e Redundância

É um sistema "híbrido" (hybrid RAID), ou seja, que combina RAID 0 com RAID 1. Para isso, o sistema precisa ter pelo menos quatro unidades de armazenamento, duas para cada nível. Assim, tem-se uma solução RAID que considera tanto o aspecto do desempenho quanto o da redundância.

Há uma variação chamada RAID 10 (ou RAID 1+0) de funcionamento semelhante. A diferença essencial é que, no RAID 0+1, o sistema se transforma em RAID 0 em caso de falha; no RAID 1+0, o sistema assume o nível RAID 1.

RAID 50: Desempenho e Paridade Combinados

É um arranjo híbrido que usa as técnicas de RAID com paridade em conjunção com a segmentação de dados. É essencialmente um conjunto de informações segmentadas de dois ou mais arranjos.

Vantagens:

  • Alta taxa de transferência.
  • Ótimo para uso em servidores.

Desvantagens:

  • Alto custo de implementação e expansão de memória.

Linguagens de Programação: Comunicação com Máquinas

Linguagens de programação são um conjunto de normas e instruções dadas a uma máquina que, entre outras funções, auxiliam os programadores a escrever programas com maior facilidade. Basicamente, é a forma como os humanos se comunicam com os computadores e determina como o computador deve trabalhar.

A verdadeira e única linguagem de computador é a linguagem de máquina (binária). Os programadores precisam de um intermediário onde possam programar e que transforme esta programação em linguagem de máquina no final.

Tipos de Linguagens de Programação

  • Linguagem de Baixo Nível
    1. Linguagem de Máquina
    2. Assembly
  • Linguagem de Alto Nível
    1. Fortran
    2. Cobol
    3. Pascal
    4. C
  • Linguagens Visuais
    1. Delphi
    2. Visual Basic

Linguagens de Baixo Nível

São linguagens totalmente dependentes da máquina e são interpretadas diretamente pelo computador, fazendo com que apresentem resultados mais rapidamente.

As linguagens de baixo nível são divididas em duas partes:

  1. Primeira Geração (Linguagem de Máquina): É a linguagem que determina as operações fundamentais de funcionamento de uma máquina, linguagem binária que representa as operações utilizadas no processamento de um programa. É a única linguagem que um microprocessador pode entender nativamente.
  2. Segunda Geração (Linguagem Assembly): Derivada da linguagem de máquina, esta é formada por números e abreviaturas de letras. É considerada de segunda geração, pois não é nativa do microprocessador, mas necessita dos conhecimentos de arquitetura do microprocessador. Esta linguagem não é entendida pelas máquinas, e por isso foram criados os assemblers (programas tradutores de linguagem assembly para linguagem de máquina).

Linguagens de Alto Nível

São linguagens de programação que possuem uma estrutura e palavras-chave mais próximas da linguagem humana. Palavras complexas expressas em inglês não são entendidas pelo computador, necessitando então de um compilador que converta as instruções para linguagem binária.

Linguagens Visuais

A linguagem visual se refere às interfaces gráficas (GUI). O desenvolvimento ocorre em um ambiente de ferramentas básicas, porém não possui componentes visuais como botões, janelas e campos de texto.

Inicialmente, são desenhadas todas as janelas do programa e depois são efetuadas as instruções para resposta a eventos.

Linguagem FORTRAN

Desenvolvida em meados de 1950 pela empresa IBM, sua ideia principal seria efetuar operações científicas e cálculos matemáticos.

Linguagem COBOL

Linguagem desenvolvida em meados de 1950, sua ideia principal seria criar aplicativos com grande quantidade de dados, tornando-a uma das linguagens mais utilizadas por usuários e grandes empresas norte-americanas na época.

Linguagem Pascal

Desenvolvida em meados de 1960, sua ideia principal seria uma linguagem mais estruturada, com uma abordagem mais clara e fácil de testar ou modificar, sendo muito utilizada no ramo educacional.

Linguagem C

Linguagem de alto nível associada à criação do sistema operacional Unix. Suas principais características eram a flexibilidade e portabilidade, permitindo sua passagem para outras plataformas. Ganhou grande popularidade entre os programadores e, a partir desta linguagem, surgiu a C++.

Linguagem Delphi

Esta linguagem é baseada no Object Pascal. Possui aprendizado complicado, porém conta com uma ferramenta extremamente rápida (RAD – Rapid Application Development) e também um ambiente de desenvolvimento integrado (IDE).

Linguagem Visual Basic

Linguagem produzida pela Microsoft, possui um ambiente de desenvolvimento integrado totalmente gráfico, facilitando a construção das interfaces das aplicações. Sua curva de aprendizagem é rápida, facilitando a adaptação do programador.

Algoritmo: A Lógica por Trás da Computação

Algoritmo é uma sequência finita de ações executáveis que visam obter solução para um determinado problema. Basicamente, são os passos necessários para a realização de uma tarefa.

Entradas relacionadas: