4. NOÇÕES DE HARDWARE
Hardware - CPU ou UCP
A unidade central de processamento ou CPU (Central Processing
Unit), também conhecido como processador, é a parte de um
sistema de computacional, que realiza as intruções de um
programa de computador, para executar a aritmética básica,
lógica, e a entradas e saída de dados.
A CPU tem papel parecido ao cérebro no computador. O termo
vem sendo usado desde o início de 1960.
A forma, desenho e implementação mudaram drasticamente desde
os primeiros exemplos, porém o eu funcionamento fundamental
permanece o mesmo.
5. NOÇÕES DE HARDWARE
Hardware - CPU ou UCP
As primeiras CPUs personalizadas foram concebidas como parte
de um computador maior.
No entanto, este método caro de fazer CPUs personalizadas para
uma determinada aplicação rumou para o desenvolvimento de
processadores produzidos em massa que são feitas para um ou
vários propósitos.
Esta tendência de padronização em geral começou na época de
discretos minicomputadores e mainframes transistores e acelerou
rapidamente com a popularização dos circuitos integrados (CI).
6. NOÇÕES DE HARDWARE
Hardware - CPU ou UCP
Os CI têm permitido processadores cada vez mais complexos para
serem concebidos e fabricados em tamanhos da ordem de
nanômetros.
Tanto a miniaturização como a padronização dos processadores
tem aumentado a presença destes dispositivos digitais na vida
moderna, muito além da aplicação limitada dedicada a
computadores.
Os microprocessadores modernos aparecem em tudo, desde
automóveis até celulares e brinquedos para crianças.
7. NOÇÕES DE HARDWARE
Hardware - CPU ou UCP
Em máquinas grandes, CPUs exigiam uma ou mais placas de circuito
impresso.
Em computadores pessoais e estações de trabalho de pequeno porte,
a CPU fica em um único chip de silício chamado de
microprocessador.
Desde 1970 a classe de microprocessadores de CPUs quase
completamente ultrapassado todas as implementações de outra CPU.
CPUs modernos são circuitos integrados de grande escala em
pequenos pacotes retangulares, com vários pinos de conexão.
15. DIAGRAMA DE BLOCOS DA CPU INTEL 8088
• Registradores de uso geral:
• AX: acumulador;
• BX: registrador de base, pode ser usado como base
de endereçamento para manipulação de tabelas;
• CX: registrador de contagem, além de trabalhar com
dados também é usado para contagens de
instruções com “loops” na manipulação de strings;
16. DIAGRAMA DE BLOCOS DA CPU INTEL 8088
• Registradores de uso geral:
• DX: registrador de dados, pode ser usado como
uma extensão do AX em operações de multiplicação
e divisão;
• SP: stack pointer, aponta para o topo da memória
do tipo pilha usada pelo 8088;
• BP: base pointer, é usado para endereçamento de
memória (registrador de base para a pilha). Pode
conter o endereço inicial de uma tabela a ser
manipulada pela CPU;
17. DIAGRAMA DE BLOCOS DA CPU INTEL 8088
• Registradores de uso geral:
• SI: source index, aponta para a origem dos
dados que serão movimentados, usado para
indexação de tabelas no endereçamento
indireto;
• DI: destination index, aponta para o destino
dos dados que serão movimentados, também
para indexação no endereçamento indireto.
18. DIAGRAMA DE BLOCOS DA CPU INTEL 8088
• Registradores de flags:
• ZF: zero flag, indica se o resultado de uma
operação aritmética é igual a zero (1) ou
diferente de zero (0). Se numa operação os
valores são iguais o ZF = 1;
• SF: sign flag, indica se o resultado de uma
operação com sinal é positivo (0), em caso
contrário (1);
19. DIAGRAMA DE BLOCOS DA CPU INTEL 8088
• Registradores de flags:
• TF: trap flag, permite a operação “passo a
passo” para debug;
• IF: interrupt flag, indica se as interrupções
estão habilitadas (1) ou não (0);
20. DIAGRAMA DE BLOCOS DA CPU INTEL 8088
• Registradores de flags:
• DF: direction flag, para operações com
strings, se D = 0 os registradores de índice
serão incrementados, caso contrário (D = 1)
serão decrementados;
• OF: overflow flag, indica um estouro da
capacidade de armazenamento de um
registrador.
21. DIAGRAMA DE BLOCOS DA CPU INTEL 8088
BIU - Bus Interface Unit
O interfaceamento da EU com o bus de dados e
bus de endereços do sistema é feito pela BIU, que
gera todo o endereçamento de memória (1 mega)
e I/O (64K), assim como interfaceia o bus de
dados do sistema (8bits) com o bus de dados da
EU (16 bits).
22. DIAGRAMA DE BLOCOS DA CPU INTEL 8088
BIU - Bus Interface Unit
É composta por cinco registradores de 16 bits,
uma estrutura de armazenamento de dados do
tipo fila, para armazenamento de até 4 bytes de
instruções e um sistema para gerar o
endereçamento de 20 bits (1 MB de
endereçamento), a partir de registradores de 16
bits cada.
23. DIAGRAMA DE BLOCOS DA CPU INTEL 8088
• Registradores de segmento:
• CS: code segment, endereça o segmento
onde devem estar as instruções a serem
executadas pela CPU;
• SS: stack segment, endereça o segmento
que está reservado ao uso da pilha;
24. DIAGRAMA DE BLOCOS DA CPU INTEL 8088
• Registradores de segmento:
• DS: data segment, como o nome diz, acessa
o segmento reservado aos dados
manipulados pelo 8088;
• ES: extra segment, é usado para acessar
outro segmento que conterá dados.
Normalmente, é usado para manipulação de
tabelas e strings.
25. NOÇÕES DE HARDWARE
Hardware - CPU ou UCP
Uma CPU é composta basicamente pelos seguintes componentes:
• Unidade lógica e aritmética (ULA ou ALU): executa operações
lógicas e aritméticas;
• Unidade de controle: decodifica instruções, busca operandos,
controla o ponto de execução e desvios;
• Registradores e Memória cache: armazenar dados para o
processamento.
26. NOÇÕES DE HARDWARE
Hardware - CPU ou UCP
Como é fabricada uma CPU?
Os vídeos a seguir dão uma visão global e intuitiva de como são
fabricados esses componentes ultra miniaturizados.
• Intel: Assistir local ou no YouTube.
• AMD: Assistir local ou no YouTube.
27. NOÇÕES DE HARDWARE
Hardware - ALU ou ULA
A unidade lógica e aritmética (ULA) ou em inglês Arithmetic Logic
Unit (ALU) é um circuito digital que realiza operações lógicas e
aritméticas.
A ULA é uma peça fundamental da unidade central de
processamento (CPU), e até dos mais simples
microprocessadores.
É na verdade, uma "grande calculadora eletrônica" do tipo
desenvolvido durante a II Guerra Mundial, e sua tecnologia já
estava disponível quando os primeiros computadores modernos
foram construídos.
28. NOÇÕES DE HARDWARE
Hardware - ALU ou ULA
O matemático John von Neumann propôs o conceito de ULA em
1945, quando escreveu um relatório sobre os fundamentos para
um novo computador chamado EDVAC.
Pesquisas sobre ULAs ainda são uma parte importante da ciência
da computação.
29. NOÇÕES DE HARDWARE
Hardware - ALU ou ULA
A tecnologia utilizada foi inicialmente relés, herança da telefonia, e
posteriormente válvulas, herança da radiofonia.
Com o aparecimento dos transistores, e depois dos circuitos
integrados, os circuitos da unidade aritmética e lógica passaram a
ser implementados com a tecnologia de semicondutores.
30. NOÇÕES DE HARDWARE
Hardware - ALU ou ULA
A ULA executa as principais operações lógicas e aritméticas do
computador.
Ela soma, subtrai, divide, determina se um número é positivo ou
negativo ou se é zero.
Além de executar funções aritméticas, uma ULA deve ser capaz de
determinar se uma quantidade é menor ou maior que outra e
quando quantidades são iguais.
A ULA pode executar funções lógicas com letras e com números.
31. NOÇÕES DE HARDWARE
Hardware - ALU ou ULA
Operações simples
Muitas ULA podem realizar as seguintes operações:
• operações aritméticas com inteiros;
• operações lógicas bit a bit AND, NOT, OR, XOR;
• operações de deslocamento de bits (deslocamento, rotação por
um número específico de bits para esquerda ou direita, com ou
sem sinal); deslocamentos podem ser interpretados como
multiplicações ou divisões por 2.
32. NOÇÕES DE HARDWARE
Hardware - ALU ou ULA
Operações complexas
Um engenheiro pode projetar uma ULA para calcular qualquer
operação, no entanto isso gera complexidade; o problema é que
quanto mais complexa a operação, mais cara é a ULA, mais
espaço utiliza do processador e mais dissipa energia.
Então, engenheiros sempre calculam um compromisso entre o
poder de processamento e a sua complexidade, satisfazendo aos
requisitos do processador ou de outro circuito. Imagine um
cenário, onde é preciso calcular a raiz quadrada.
34. NOÇÕES DE HARDWARE
Hardware – BIOS
BIOS, em computação Basic Input/Output System (Sistema Básico
de Entrada/Saída).
O termo é incorretamente conhecido como Basic Integrated
Operating System (Sistema Operacional Básico Integrado) ou Built
In Operating System (Sistema Operacional Interno).
O BIOS é um programa de computador pré-gravado em memória
permanente (firmware) executado por um computador quando
ligado.
Ele é responsável pelo suporte básico de acesso ao hardware,
bem como por iniciar a carga do sistema operacional.
35. NOÇÕES DE HARDWARE
Hardware – Memória
Em informática, memória são todos os dispositivos que permitem a
um computador guardar dados, temporariamente ou
permanentemente.
Memória é um termo genérico para designar componentes de um
sistema capazes de armazenar dados e programas.
36. NOÇÕES DE HARDWARE
Hardware – Memória
O conceito de computador digital binário com programa
armazenado (arquitetura de Von Neumann e subsequentes) é
baseado no uso de memória, e não existiria sem a utilização
destas.
A unidade básica de memória é o digito binário, ou bit. Um bit pode
conter 0 ou 1.
É a unidade mais simples possível.
Um sistema que armazenasse apenas um destes valores não
poderia formar a base de um sistema de memória.
37. NOÇÕES DE HARDWARE
Hardware - Unidades de Entrada e Saída (E/S)
Entrada/saída (em inglês: Input/output, sigla I/O) é um termo
utilizado quase que exclusivamente no ramo da computação (ou
informática), indicando entrada (inserção) de dados por meio de
algum código ou programa, para algum outro programa ou
hardware, bem como a sua saída (obtenção de dados) ou retorno
de dados, como resultado de alguma operação de algum
programa, consequentemente resultado de alguma entrada.
38. NOÇÕES DE HARDWARE
Hardware - Unidades de Entrada e Saída (E/S)
São exemplos de unidades de entrada de um computador: disco rígido,
microfone, teclado, mouse, tela sensível ao toque, Scanner, Leitor de código de
barras, Celular, Pendrive, Máquina fotográfica digital, Webcam, joystick e outros
acessórios de jogos.
São exemplos de unidades de saída de um computador: monitor, caixas de
som, impressora, disco rígido.
Algumas unidades são de entrada e saída de dados ou também chamados
Dispositivos Híbridos: disco rígido, disco flexível ou disquete, monitor sensível
a toques, pendrive, joystick vibratório e impressora.
39.
40. Flávio Augusto de Freitas
http://flavioaf.blogspot.com
flaviocefetrp@gmail.com
Notas do Editor
História
O EDVAC, um dos primeiros computadores.
Computadores como o ENIAC tinham que ser fisicamente religados a fim de realizar diferentes tarefas, por isso estas máquinas são muitas vezes referidas como "computadores de programa fixo". Visto que o termo "CPU" é geralmente definido como um dispositivo para execução de um software (programa de computador), os primeiros dispositivos que poderiam muito bem ser chamados CPUs vieram com o advento do computador com programa armazenado.
A ideia do programa de computador já estava presente no projeto do ENIAC de J. Presper Eckert e John William Mauchly, mas inicialmente foi omitido para que a máquina pudesse ser concluída em menos tempo. Em 30 de junho de 1945, antes do ENIAC ter sido concluído, o matemático John von Neumann distribuiu um documento intitulado "primeiro esboço de um relatório sobre o EDVAC". É descrito o projeto de um programa de computador armazenado que viria a ser concluído em agosto de 1949.[4]. O EDVAC foi projetado para executar um determinado número de instruções (ou operações) de vários tipos. Estas instruções podem ser combinados para criar programas úteis para o EDVAC para ser executado.
Significativamente, os programas escritos para EDVAC foram armazenados em memórias de computador de alta velocidade e não especificados pela ligação física do computador. Isso superou uma grave limitação do ENIAC que era o longo tempo e esforço necessário para reconfigurar o computador para executar uma nova tarefa. Com o design de von Neumann, o programa, ou software, que executava no EDVAC poderia ser mudado simplesmente mudando o conteúdo da memória do computador.[5]
Enquanto von Neumann é mais frequentemente creditado como sendo o desenvolvedor do computador com programa armazenado, devido à sua concepção do EDVAC, outros antes dele, como Konrad Zuse, tinham sugerido e implementado ideias semelhantes. A chamada arquitetura de Harvard do Harvard Mark I, que foi concluída antes do EDVAC, também utilizou um projeto de programa armazenado usando fita de papel perfurado em vez de memória eletrônica. A diferença fundamental entre as arquiteturas de von Neumann e Harvard é que este último separa o armazenamento e o tratamento de instruções da CPU e de dados, enquanto a primeira utiliza o mesmo espaço de memória para ambos. A maioria dos processadores modernos são principalmente von Neumann em design, mas elementos da arquitetura de Harvard são comumente vistas também.
Como um dispositivo digital, uma CPU é limitada a um conjunto de estados discretos, e requer algum tipo de elemento de comutação para diferenciar e mudar estados. Antes do desenvolvimento comercial do transistor, relés elétricos e válvulas eletrônicas eram comumente utilizados como elementos de comutação.
Embora estes tivessem considerável vantagem em termos de velocidade sobre o que se usava antes, desenhos puramente mecânicos, eles não eram confiáveis por diversas razões. Por exemplo, a construção de circuitos de lógica sequencial de corrente contínua fora de relés requer um hardware adicional para lidar com os problemas de contato. Enquanto as válvulas não sofrem rejeição de contato, elas devem aquecer antes de se tornarem plenamente operacionais, e eventualmente deixam de funcionar devido à lenta contaminação dos seus cátodos que ocorre no curso da operação normal. Se uma válvula selada vaza, como por vezes acontece, a contaminação do cátodo é acelerada.
Normalmente, quando um tubo apresnta defeito, a CPU teria que ser examinada para localizar o componente que falhou a fim de que pudesse ser substituído. Portanto, os primeiros computadores eletrônicos (baseados em válvulas) eram geralmente mais rápidos, mas menos confiáveis do que os computadores eletromecânicos (baseados em relés).
Computadores basedos em válvulas como o EDVAC tendiam a trabalhar em média oito horas até apresentarem falhas, enquanto os computadores baseados em relés como o (mais lento, mas anterior) Harvard Mark I apresentava defeitos muito raramente.[3].
No final, CPUs baseadas em válvulas tornaram-se dominantes porque as vantagens de velocidade significativa oferecidas geralmente superavam os problemas de confiabilidade. A maioria destas antigas CPUs funcionava com baixa frequencias de relógio em comparação com os design microeletrônicos modernos. Sinais de frequência de relógio variando de 100 kHz a 4 MHz eram muito comuns nesta época, em grande parte limitados pela velocidade dos dispositivos de comutação que eram construídos.
[editar] CPUs baseadas em transistores discretos e em circuitos integrados
CPU, memória de núcleo magnético e barramento externo de um DEC PDP-8/I. feito de circuitos integrados em média escala.
A complexidade do projeto de CPUs aumentou quando várias tecnologias facilitaram a construção de menores e mais confiáveis dispositivos eletrônicos. O primeiro aprimoramento veio com o advento do transistor. CPUs transistorizadas durante os anos 1950 e 1960 já não precisavam mais ser construídas com volumosos, não confiáveis e frágeis elementos de comutação, tais como válvulas e relés elétricos. Com esta melhoria, CPUs mais complexas e mais confiáveis foram construídas em uma ou várias placas de circuito impresso com componentes discretos (individuais).
Durante este período, um método de fabricação de transistores em um espaço compacto ganhou popularidade. O circuito integrado (IC, conforme iniciais em inglês) permitiu que um grande número de transistores fossem fabricados em um único die baseado em semicondutor, ou "chip". No início apenas circuitos digitais não especializados e muito básicos, tais como portas NOR foram miniaturizados em ICs. CPUs baseadas nestes IC de "blocos construídos" eram geralmente referidos como dispositivos de "integração em pequena escala" (SSI, conforme iniciais em inglês). SSI ICs, tais como os usados no computador orientado Apollo, normalmente continham somas de transistores em múltiplos de dez.
Para construir uma CPU inteira fora dos SSI ICs eram necessários milhares de chips individuais, mas ainda assim consumiam muito menos espaço e energia do que modelos anteriores baseados em transistores discretos. Quando a tecnologia microeletrônica avançou, um crescente número de transistores foram colocados em ICs, diminuindo assim a quantidade de ICs individuais necessários para uma CPU completa. Circuitos integrados MSI e LSI (integração em média e em larga escala, conforme iniciais em inglês) aumentaram a soma de transistores às centenas, e depois milhares.
[editar] Microprocessadores
Ver artigo principal: Microprocessador
O circuito integrado de um Intel 8742.
A introdução do microprocessador na década de 1970 afetou significativamente a concepção e implementação de processadores. Desde a introdução do primeiro microprocessador disponível comercialmente (o Intel 4004) em 1970 e o primeiro microprocessador utilizado (o Intel 8080), em 1974, essa classe de CPUs tem quase completamente ultrapassado todas os outros métodos de implementação de unidades centrais de processamento.
Primeiro desenvolvimento
Em 1946, von Neumann trabalhou com seus colegas no projeto de um computador para o Instituto de Estudos Avançados de Princeton (Princeton Institute of Advanced Studies -IAS). O computador IAS se tornara o protótipo de muitos computadores. Na proposta, von Neumann descreveu o que ele acreditava que seria preciso na sua máquina, incluindo uma ULA.
Von Neumann disse que a ULA era uma necessidade para o computador porque ela garantiria que o computador calcularia operações matemáticas básicas, incluindo adição, subtração, multiplicação, e divisão..[1] Ele então achava razoável que um computador contivesse um órgão especializado para essas operações.[1]
[editar] Sistemas numéricos
Ver também: Representação de números com sinal
Uma ULA deve processar números usando o mesmo formato que o resto do circuito digital. Os processadores modernos utilizam em maioria a representação binária de complemento para dois. Os primeiros computadores usavam uma grande variedade de sistemas numéricos, incluindo os formatos complemento para um, sinal-magnitude e mesmo o sistema decimal.[carece de fontes]
Os sistemas numéricos de complemento para um e complemento para dois permitem que a subtração seja realizada pela adição do minuendo com o complemento do subtraendo, simplificando o circuito lógico. Uma vantagem do complemento para dois em relação aos outros sistemas é que a representação possui apenas um zero, não possuindo um "zero negativo".
[editar] Visão geral prática
Uma simples ULA de 2-bit que faz AND, OR, XOR, e adição (clique na imagem para explicação)
Muitas das ações dos computadores são executadas pela ULA. Esta recebe dados dos registradores, que são processados e os resultados da operação são armazenados nos registradores de saída. Outros mecanismos movem os dados entre esses registradores e a memória.[2] Uma unidade de controle controla a ULA, através de circuitos que dizem que operações a ULA deve realizar.
[editar] Operações simples
Muitas ULA podem realizar as seguintes operações:
operações aritméticas com inteiros;
operações lógicas bit a bit AND, NOT, OR, XOR;
operações de deslocamento de bits (deslocamento, rotação por um número específico de bits para esquerda ou direita, com ou sem sinal); deslocamentos podem ser interpretados como multiplicações ou divisões por 2.
[editar] Operações complexas
Um engenheiro pode projetar uma ULA para calcular qualquer operação, no entanto isso gera complexidade; o problema é que quanto mais complexa a operação, mais cara é a ULA, mais espaço utiliza do processador e mais dissipa energia.
Então, engenheiros sempre calculam um compromisso entre o poder de processamento e a sua complexidade, satisfazendo aos requisitos do processador ou de outro circuito. Imagine um cenário, onde é preciso calcular a raiz quadrada. O engenheiro teria as seguintes opções:
Projetar uma ULA extremamente complexa que calcula a raiz quadrada de qualquer número num único passo. Isso é chamado cálculo em passo-único de clock.
Projetar uma ULA bastante complexa que calcula a raiz quadrada de qualquer número em vários passos. Mas, existe um truque, os resultados intermediários vão através de uma série de circuitos arranjados em linha, como numa linha de produção. Que faz com que a ULA seja capaz de aceitar novos números para cálculo antes mesmo de terminar o cálculo dos anteriores. Isso faz com que a ULA seja capaz de produzir números tão rápido como cálculos em passo-único de relógio, com um atraso inicial até os números começarem a sair. Isso é chamado cálculo em pipeline.
Projetar uma ULA complexa que calcula a raiz quadrada através de vários passos. Isso é chamado de cálculo iterativo, e usualmente confia no controle de uma complexa unidade de controle com microcódigo.
Projetar uma ULA simples no processador e vender separadamente um processador especializado e caro que o consumidor possa instalá-lo ao lado desse, realizando uma das opções acima. Isso é chamado de co-processador.
Dizer aos programadores que não há nenhum co-processador e que não há nenhuma emulação, assim eles tem que escrever seus próprios algoritmos para calcular a raiz quadrada por software. Isso é chamado de bibliotecas de software.
Emular a existência de um co-processador, ou seja, sempre que um programa tenta realizar o cálculo da raiz quadrada, faz o processador verificar se há co-processador presente e o utiliza se está ali; se não há, interrompe o programa e invoca o sistema operacional para realiza o cálculo da raiz através de algum algoritmo de software. Isso é chamado de emulação de software.
As opções acima vão desde a mais rápida e cara até a mais lenta e mais complicada. Então, enquanto o mais simples computador pode calcular a mais complexa fórmula, os computadores mais simples vão usualmente levar mais tempo fazendo isso porque levam vários passos para calcular a fórmula.
Processadores poderosos como Intel Core e AMD64 utilizam a opção #1 para as operações mais simples, #2 para as operações complexas mais comuns e #3 para as operações extremamente complexas. Isso é possível através da construção de ULAs muito complexas nesses processadores.
[editar] Entradas e saídas
As entradas para a ULA são os dados a serem operados (chamados operandos) e o código da unidade de controle indicando as operações para executar. As saídas são os resultados da computação.
Em muitos projetos a ULA também leva ou gera as entradas ou saídas de um conjunto de códigos de condições ou de um registrador de estado. Esses códigos são usados para indicar casos como vai-um (empresta-um), overflow, divisão-por-zero etc.[3]
[editar] ULA vs. UPF
Uma Unidade de ponto flutuante também realiza operações aritméticas entre dois valores, mas eles realizam isso com número em representação de ponto flutuante, que é muito mais complexa que a complemento para dois. Para fazer esses cálculos, uma UPF tem vários circuitos complexos, incluindo algumas ULAs internas.
Usualmente engenheiros chamam uma ULA o circuito que realiza operações aritméticas com números inteiros em complemento para dois ou BCD, enquanto circuitos que calculam em formatos como ponto flutuante usualmente recebem esse ilustre nome.