Buscar

Organização de Computadores

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 69 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 69 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 69 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

Organização de Computadores 
De acordo com os grandes autores da computação, a história dos computadores pode ser dividida em gerações.
Considerando Tanenbaum (2007), por exemplo, a Geração Zero é chamada dessa forma pois foi formada por dispositivos mecânicos.
As gerações seguintes foram formadas pelo surgimento de dispositivos eletrônicos, marcados por alguma inovação.
Já outros autores defendem a subdivisão da geração zero em dois momentos: a dos dispositivos mecânicos e a dos dispositivos eletromecânicos, mas nada que altere as gerações posteriores.
Para entendermos melhor toda essa evolução, veremos um pouco de cada uma delas, mas podemos enfatizar, neste momento, que as gerações de computadores antecederam até mesmo o surgimento da eletricidade, ou seja, dos dispositivos mecânicos, em que os equipamentos se baseiam no uso de engrenagens, entre outras formas de construção, e, por isso, também podem ser considerados equipamentos de grande tecnologia para a sua época.
A partir daí, com a vinda das gerações seguintes, veremos que um dos destaques será o tamanho dos equipamentos construídos, cada vez menores, e o desenvolvimento de capacidades de processamento cada vez maiores, devido ao surgimento de novas tecnologias eletrônicas usadas para marcar uma geração específica da evolução dos computadores.
500a.C. Ábaco
Podemos dizer que ela se inicia na Mesopotâmia, aproximadamente 500 a. C., com a invenção do ábaco, uma espécie de calculadora que permitia a contagem rápida de valores pelos trabalhadores agrários.
Existem vários tipos de ábaco, porém se resumem ao uso de bolinhas deslizantes que representam unidades decimais, dezenas, centenas, entre outros, e cálculos relativos à soma e à subtração.
Esse equipamento é o reflexo de uma grande evolução nas formas de cálculo da época e perdura até hoje, já que o ábaco continua sendo utilizado com a mesma finalidade, inclusive como instrumento didático para incentivar o pensamento e a lógica matemática.
1642-1644. Calculadora de somar e subtrair
Aceleramos, então, para séculos mais “próximos”, entre os anos 1642-1644, quando o físico e filósofo francês Blaise Pascal, interessado em otimizar o processo de cálculos aritméticos, criou uma calculadora totalmente mecânica, que permitia o cálculo através de engrenagens.
Pascal criou a calculadora de somar e subtrair para ajudar seu pai a contabilizar os impostos na França, país onde trabalhava. O cálculo era feito totalmente através de engrenagens, onde uma manivela, operada manualmente, permitia que a conta fosse efetuada.
1673. Calculadora das quatro operações fundamentais
Como dito anteriormente, a máquina de Pascal foi desenvolvida para cálculos de soma e subtração. Com base na mesma ideia, por volta de 1673, Gottfried Wilhelm von Leibniz propôs uma evolução da calculadora, possibilitando o cálculo das quatro operações básicas, ou seja, incluindo a multiplicação e a divisão através do uso de operações sucessivas, também todas executadas de forma manual, através de engrenagens.
Temos, então, o que pode ser considerada a primeira calculadora básica com as quatro operações fundamentais, representando uma evolução para a época.
Revolução Industrial
Não podemos deixar de citar uma época fundamental para o avanço das tecnologias de computação: a época da Revolução Industrial. Nela, tivemos uma transição nos processos de produção da forma artesanal e manual para uma fabricação que intensificou o uso de máquinas, permitindo maior eficiência e agilidade, bem como a redução de erros e retrabalhos.
 
TEAR PROGRAMAVEL 
Nessa época, um dos dispositivos inovadores foi o Tear Programável, criado por Joseph-Marie Jacquard, um mecânico de teares. Ele inventou um sistema de operações repetitivas e sequenciais, até então executadas manualmente pelos tecelões, usando um conjunto de cartões metálicos perfurados, de forma que, à medida que os cartões eram lidos por uma agulha, a máquina sabia o que deveria ser feito no tecido a ser produzido.
Veremos que essa invenção criou a primeira forma de comunicação e programação de uma máquina, mais uma inovação para a época. 
CALCULADOR ANALÍTICO 
Surge, então, Charles Babbage, cientista, matemático e engenheiro mecânico, que se tornou o precursor da computação moderna através do projeto-conceito do Calculador Analítico, em 1822.
Trata-se de uma máquina capaz de efetuar diversos cálculos, dotada de:
· • Um mecanismo de processamento (que ele chamava de moinho);
· • Uma unidade de entrada de dados através de cartões perfurados (baseado na ideia do tear programável), por meio do qual seriam inseridos os cálculos a serem efetuados;
· • Cerca de 1000 bancos de memória (que ele chamava de armazém); e
· • Uma unidade de impressão de cartões perfurados para o registro dos resultados.
Juntamente com a matemática Ada Augusta Lovelace, foram desenvolvidas todas as rotinas e fórmulas para que as instruções fossem processadas. Essas instruções e recursos até hoje são usados pelos computadores!
O Calculador Analítico iniciou um desenvolvimento acelerado no que se refere à área de computação, de tal forma que Babbage hoje é conhecido como o precursor do Hardware e Ada Lovelace como a precursora do software e primeira programadora, assunto que veremos posteriormente. 
TABULADOR DE HOLLERITH 
Com a chegada da eletricidade, alguns equipamentos marcaram a evolução da computação. Um deles é conhecidos como Tabulador de Hollerith. 
Utilizados o principio descoberto por Jacquard para automatizar os teares, Hermann Hollerith, então funcionário do censo vos EUA, inventou, em 1980, reduziu para dois anos e meio o tempo de apuração das informações. O censo anterior , feito de forma manual, demorou dez anos para ser concluído.
O sucesso fez com que ele criasse a Tabulating Machine Company, companhia que , após a fusão com mais algumas empresas, se tornou a conhecida IBM( International Bussiness MAchines). 
Percebemos que, em períodos onde ocorrem conflitos e guerra, há um grande avanço no desenvolvimento da tecnologia, em especial porque os países buscam invocações que os deixem a frente do inimigo. 
Naquela época, por exemplo, o tabulador de censo , então da IBM, assim como outras soluções, começou a ser empregado inclusive pelos nazistas, mesmo sendo de uma companhia americana. 
CALCULADORA DE CONRAD ZUZE 
O próximo equipamento a ser citado, também de grande importância, é a calculadora de Conrad Zuze. 
Zuze construiu durante a década de 1930 uma serie de maquinas de calcular baseadas em reles mecânicos, que serviam como chaves que abriam e fechavam automaticamente. Esse foi o principio para utilização de números binários posteriormente e pode ser considerados o primeiros computador operacional do mundo. 
A Geração de Computadores Eletrônicos
Devido à baixa capacidade e ao desgaste de peças em máquinas essencialmente mecânicas, tornou-se uma necessidade a substituição dos equipamentos que conhecemos na geração zero pelos que possibilitassem maior agilidade e menos desgaste.
Primeira Geração (Válvula)
A primeira geração dos computadores foi marcada pela utilização de válvulas. A válvula é um tubo de vidro, muito similar a uma lâmpada, com eletrodos que possuem a finalidade de controlar o fluxo de elétrons.
Em resumo, substitui-se os relés eletromecânicos da aritmética binária pelo controle de fluxo de elétrons através da válvula ligada ou desligada (com corrente/sem corrente). Assim, os equipamentos já atingiam frequências de operação maiores do que os relés mecânicos e grande agilidade em cálculos. Surgem, então, diversos computadores, na sua maioria para propósitos militares ou científicos.
 
Colossus (Segunda Guerra Mundial). 
 
ENIAC (Eletronic Numerical Integrator and Computer) 
 
Segunda Geração (Transistor)
A segunda geração de computadores iniciou com a chegada de um substituto para a válvula, o transistor.
Criado pela Bell Labs para uso em aparelhos telefônicos, o transistor ofereceu grande revolução na computação, uma vez que as válvulas consumiam muita energia e precisavamde pré-aquecimento para funcionar. Possuíam também pouca confiabilidade em seus resultados e curta vida útil, sendo necessárias trocas constantes.
Além de menores, os transistores consumiam menos energia, sofriam menos aquecimento e eram mais rápidos, o que permitiu que fossem incorporados ao desenvolvimento de computadores, durante o período de 1955 a 1964. 
O TX-0 (Transistorized Experimental Computer Zero) foi o primeiro computador transistorizado a ser desenvolvido. 
 
Porém, há um fator interessante que vale a pena ser mencionado: o desenvolvimento do PDP-1, criado pela DIGITAL. Com o preço de U$120.000,00, foi o primeiro computador comercializado, tento sido vendidas aproximadamente 50 unidades na época. Ele possuía memória de 4Kbytes e deu origem ao conceito de “minicomputadores”. 
 
Terceira Geração (Circuitos Integrados)
A terceira geração veio com a invenção do circuito integrado de silício por Robert Noyce, físico e um dos fundadores da Intel.
Com o circuito integrado, dezenas de transistores poderiam estar em um único chip, o que possibilitava a construção de computadores menores e ainda mais rápidos e baratos, pois permitia também a produção em escala maior. 
Quarta Geração (VLSI)
Traduzido como Very Large Scale Integration, ou Integração de Circuitos em Larga Escala, essa geração veio mais como uma evolução dos circuitos integrados, onde a tecnologia permite hoje a inclusão de milhões de transistores em um chip.
Para compreender isso, é necessário entender o processo de litografia. Contudo, neste momento, podemos nos ater à informação de que os fabricantes usam tecnologia de nanômetros distância na construção de microchips, ou seja, a distância entre um transistor e outro dentro do chip.
Para termos uma ideia dessa distância, um nanômetro equivale a um bilionésimo de milímetro.
 
Altair 8080
Primeiro computador pessoal comercializado. Sua primeira linguagem de programação foi o Basic, desenvolvido pela Microsoft.
IBM PC (Personal Computer)
Computador pessoal desenvolvido pela IBM, também com o processador Intel 8080. Possuía frequência de 4.77Mhz, monitor monocromático e 16KB de memória.
Tal arquitetura da IBM possuía um projeto de circuito público, de forma que outros fabricantes poderiam desenvolver componentes facilmente acopláveis a essa arquitetura, tornando esse PC o equipamento mais vendido da história.
Apple
Criada por Steve Jobs e Steve Wosniak.
Os computadores Apple tinham o objetivo de ser equipamentos de acesso ao público em geral.
O primeiro modelo, o Apple I, foi construído originalmente em uma garagem, e teve muita procura. Porém, o alcance comercial se deu com a venda do Apple II, que já tinha uma linha de produção mais robusta.
Hardware e seus componentes 
Hoje temos contatos com uma diversidade de dispositivos de computação, alguns com capacidade de processamento igual ao te mesmo superior a alguns computadores tradicionais. Por exemplo, o que conhecemos como smartphones, telefones celulares de alta capacidade de processamento, possuem configurações de hardware realmente robustas. 
O hardware de um computador é formado por diversos componentes e dispositivos interconectados, de forma que, através dessa comunicação, as suas funções em conjunto possam ser desempenhadas. 
Cada equipamento possui a sua particularidade. Podem, como base, existem alguns componentes hoje presentes em qualquer equipamento, seja ele computador de uso pessoal, uma calculadora, ou ate mesmo o smartphone que citamos. 
Unidade Central de Processamento (UCP ou CPU)
É o dispositivo central de um computador. Muitos acreditam que a CPU é o gabinete do computador, mas, na verdade, ela é o que conhecemos hoje como processador.
Internamente, possui dois importantes componentes: 
Unidade de Controle
Responsável pelo gerenciamento de todo o fluxo de informações entre as unidades que fazem parte do hardware, bem como a execução das instruções.
Unidade Lógica e Aritmética
Responsável pelos cálculos e decisões a serem efetuadas de acordo com as instruções recebidas.
Memória 
Responsável pelo armazenamento das instruções e dados a serem executados ou manipulados pela CPU e seus componentes, bem como armazenamento de informações recebidas pelas unidades de Entrada e Saída. Podemos dizer que a memória poderia ser memória RAM ou até mesmo o HD (ou disco rígido) como unidades de memória. 
Dispositivos de Entrada
Todos os periféricos que são utilizados e interligados ao computador para envio de informações para o processamento. Por exemplo: mouse, teclado ou botões de função localizados no equipamento.
Dispositivos de Saída
Todos os periféricos utilizados para enviar alguma informação para o usuário. Uma impressora ou um monitor de vídeo são exemplos.
Impressora
Monitor
Esse é somente um resumo de tudo o que estudaremos de forma mais aprofundada nas próximas aulas, nos permitindo entender melhor a relação e a função de cada um desses componentes.
Dispositivos Internos x Dispositivos Externos
É importante citarmos que o computador é formado por diversos componentes em sua montagem de hardware.
Em resumo, temos:
Dispositivos Internos
• Processador
• Placa-mãe
• Disco rígido
• Placa de rede
Dispositivos Externos
• Teclado
• Mouse
• Impressora
Software
Software são todos programas responsáveis por administrar a execução de funções pelo hardware e automatizar as tarefas que o computador irá desempenhar.
Software Básico:
Utilizado para produzir ou gerenciar a operação do computador e a relação dentre softwares aplicativos com o hardware.
Exemplos:
• Linguagens de programação;
• Sistemas Operacionais;
• Compiladores.
 
Software Aplicativo:
Seu foco é o usuário final. Normalmente, os erros ou falhas percebidas pelo usuário são identificados nos softwares que se encaixam nesta categoria.
Exemplos:
• Editores de Texto;
• Planilhas;
• Sistemas de Folha de Pagamento;
• Sistemas Comerciais;
• Sistemas de Controle de Estoque;
• Antivírus.
 
Classificação segundo a forma de aquisição ou de distribuição
Antes de entrarmos no assunto Sistema Operacional, é muito importante citarmos outra classificação de software, agora quanto à sua forma de aquisição ou de distribuição:
Software Livre
Conceito criado por Richard Stallman, em 1983, que defendia uma liberdade de uso para utilizar, copiar, distribuir, modificar e melhorar o software, na condição de que o ciclo continuasse, ou seja, todas as melhorias e modificações no software deveriam ser livres.
Muitos desenvolvedores têm usado essa filosofia criando softwares disponíveis livremente para uso, de forma que sua cópia ou redistribuição não caracteriza pirataria. Instituições públicas têm utilizado essa classificação em vista da economia gerada com a compra de softwares.
Software Proprietário
Não é de livre utilização, cópia ou distribuição. Seu uso somente é possível e permitido mediante a compra de licenças de uso, que podem ser por usuário, por máquina ou por empresa. Porém, sempre mediante o investimento financeiro conforme contratado com o fabricante.
O aspecto positivo de um software proprietário se dá pelo fato do fabricante ter a obrigação contratual de oferecer suporte ao aplicativo comprado. Sua cópia ou distribuição sem a compra da licença é considerada pirataria.
Conceitos Básicos
Sistema
Conjunto de partes coordenadas que colaboram para a realização de um determinado objetivo.
Essa definição se aplica aos sistemas de computação em que partes (o teclado, a memória, o processador e os dispositivos periféricos) se coordenam para realizar um objetivo comum: computar. Lembre-se que sistema é simplesmente a descrição de um programa de computador.
Algoritmo X Linguagem de Programação X Programa
Qual é a relação entre esses termos?
Por definição, algoritmo é o conjunto de etapas (instruções) finitas, ordenadamente definidas, com o propósito de obter solução para um determinado problema.
Para que um algoritmo seja executado por um computador, é necessário que o processador entenda o que está sendo solicitado. A sequência precisa serfinita, exata e sem duplicidade de interpretação para que a solicitação do algoritmo seja feita com eficiência.
Veja um caso simples de transcrição de um algoritmo para, por exemplo, trocar o pneu de um carro:
Perceba que é uma forma de documentar uma sequência de processos não somente em TI. Trata-se de uma ferramenta de uso em diversas áreas de atuação em uma empresa.
Cada passo do algoritmo corresponde a um conjunto de instruções transcritas para a solução de um problema.
Como um ser humano programa em linguagem binária ou linguagem de máquina?
Sabemos que em computação tudo se baseia no sistema binário (0 e 1).
A solução encontrada foi o desenvolvimento de outras formas de linguagem de programação, que fossem mais próximas do entendimento do programador. Elas são conhecidas como linguagem de Alto Nível.
De forma contrária, linguagem de Baixo Nível são aquelas linguagens mais complexas para o ser humano, em que é mais difícil a compreensão por parte do programador e são necessárias mais ações na programação.
Exemplos de códigos com a mesma função
Veja exemplos de códigos com a mesma função em linguagem de Alto e Baixo Nível. Dessa forma, fica mais fácil visualizar a diferença para um programador.
Exemplo para exibir a mensagem “Olá Mundo” em Linguagem de Alto Nivel - Python
 
 
O processo consiste: 
 
No programador escrever o código, em sequências de instruções exatas e de fácil entendimento.
 
Em seguida, essa sequência precisa ser convertida em linguagem binária, que é entendida e executada pelo processador do computador. 
Sendo assim, um programa é a formalização de um algoritmo em linguagem inteligível pelo computador (linguagem de máquina). Normalmente, é composto por diversos algoritmos e feito, na sua maioria, com uma tecnologia única de linguagem de programação, que é uma linguagem formal. Por exemplo: Cobol, Pascal, Fortran, Visual Basic, Lisp, Assembly, C++, Delphi, Ada, Java etc.
Tradução
Como o próprio nome diz, consiste na tradução de um programa escrito em linguagem de Alto Nível para a linguagem binária da máquina correspondente.
Os exemplos de tradutores são:
• Assembler (Montador) da linguagem Assembly e um Compilador da linguagem C++;
• Visual Basic.
É feito o processo de Compilação, onde o programa escrito na linguagem fonte é traduzido para linguagem máquina e depois ligado e carregado para ser executado.
 
Interpretação
O programa fonte é traduzido e executado, instrução a instrução, de modo interativo.
O interpretador traduz cada instrução para uma representação interna e interpreta-a simulando o funcionamento do processador.
Vantagens - O ciclo escrita, execução, modificação e atualização é mais rápido.
Desvantagens - A execução é mais lenta.
Palavra (word)
Em Ciência da Computação, palavra (em inglês: word) é a unidade natural de informação usada por cada tipo de computador em particular. É uma sequência de bits de tamanho fixo processada em conjunto em uma máquina.
Trata-se de uma característica importante de uma arquitetura de computador, pois reflete diretamente em vários aspectos da estrutura, da performance e de sua operação, indicando a unidade de transferência entre a CPU e memória principal.
Os computadores modernos possuem tamanho de palavra de 16, 32 e 64 bits, o que indica a unidade básica de transferência de dados entre a CPU e a memória principal.
Por isso, é importante ficarmos atentos para, caso tenhamos um equipamento 64 bits, também instalarmos softwares e aplicativos 64 bits, pois os mesmos foram desenvolvidos para usar essa transferência máxima entre CPU e Memória.
Quando instalamos um aplicativo em sua versão 32 bits, estamos diminuindo a capacidade de processamento do nosso equipamento. Por exemplo: Um processador de 32 bits possui palavra de comprimento fixo igual a 32 bits, ou 4 bytes. Já um processador de 64 bits possui palavra
Tempo de acesso (latência)
Tempo para recuperação/escrever de uma informação na memória. Depende da tecnologia da memória utilizada.
Se formos comparar com uma vitrola, de disco de vinil, seria o tempo gasto desde o momento em que pegamos a agulha até quando colocamos a mesma no início da música que queremos ouvir, mas ainda não começou a tocar.
Tempo de resposta
Mede o desempenho global do sistema. Baseia-se no tempo gasto entre o início da solicitação e a apresentação da resposta.
Engloba o tempo de acesso ou latência. Considerando o mesmo exemplo da vitrola, seria o tempo gasto desde o momento em que pegamos a agulha até o tempo em que a música foi totalmente entregue a nós.
BBits e bytesITS
Sabemos que, com o passar da história, toda informação a ser reconhecida em um computador segue atualmente um modelo de comunicação.
Os computadores conhecidos como digitais somente são capazes de entender informações em código binário (0s e 1s). Esses códigos binários são conhecidos como bits (Binary Digit) e podem assumir somente dois valores: 0 ou 1.
Esses valores são identificados em eletrônica através de variações de tensão. Por exemplo, em um circuito de 3V, uma tensão próxima a 0V (zero volt) representa o bit 0, e uma tensão próxima a +3V (3 volts positivos) representa o bit 1.
Os valores 0s e 1s postos isoladamente em um computador não significam praticamente nada de informação. Por isso, os fabricantes de computadores começaram a instituir o Byte (Binary Term) como unidade padrão de representação da informação. Essa unidade era formada por um conjunto de bits.
No início, cada fabricante usava uma padronização. Existiram bytes, por exemplo, formados por 6 bits e 7 bits. Porém, a primeira codificação de 1 byte = 8 bits foi feita pela IBM, com a criação do código EBCDIC, em 1960.
Com o sucesso dos computadores IBM, padronizou-se que 1 byte = 8 bits, surgindo também o código ASCII de 8 bits em 1961. A partir daí, tornou-se padrão que todo byte seria equivalente a um conjunto de 8 bits. 
K (Kilo), M (Mega), G (Giga), T (Tera) e P (Peta)
Esses termos foram criados para indicar valores múltiplos de bits e bytes. São potências de 2 (afinal, estamos falando de uma base binária) e não de 10.
Assim:
Kilo (= K)
Representa 1024 unidades (210), e não 1000.
Mega (= M)
Representa 1.048.576 unidades (220) ou 1024.K
(Afinal, 220 = 210.210).
É isso que nos permite entender o quadro abaixo, relativo às representações das unidades.
	1 byte
	8 bits
	1 kilobyte
	1024 byte
	1 megabyte
	1024 kilobyte
	1 gigabyte
	1024 megabyte
	1 terabyte
	1024 gigabyte
Veja como fica a conversão através das potências de 2:
	Sufixo
	Sufixo
	Kilo (K)
	210= 1.024
	Mega (M)
	220= 1.048.576
	Giga (G)
	230= 1.073.741.824
	Tera (T)
	240= 1.099.511.627.776
	Peta (P)
	250= 1.125.899.906.843.624
	Exa (E)
	260= 1.152.921.504.607.870.976
	Zeta (Z)
	270= 1.180.591.620.718.458.879.424
	Yotta (Y)
	280= 1.208.925.819.615.701.892.530.176
Capacidade de armazenamento x Capacidade de transferência
Esse tema é interessante e polêmico, pois esclarece muitas dúvidas, principalmente nas representações de bits e bytes.
Quando falamos em armazenamento, normalmente utilizamos representação em Bytes (B maiúsculo).
Exemplos:
1 Kbyte ou 1 KB = 1024 Bytes
1 Mbyte ou 1 MB = 1024 Kbytes
Quando falamos em capacidade de transferência usamos bits (b minúsculo), normalmente indicado em bits por segundo (bps).
Exemplos:
1 Kbit ou 1 Kb = 1024 bits
1 Mbits ou 1 Mb = 1024 Kbits
Perceba que usando os primeiros exemplos de cada item, temos 1 KB (Kbyte) e 1 Kb (Kbit), que são itens completamente diferentes.
Uma vez que sabemos que 1 byte equivale a 8 bits, teríamos:
	1 KB (Kbyte)
	1 Kb (Kbit)
	8 Kb (Kbits)
	1 Kb (Kbit)
	8 . 1024 . bits
	1 . 1024 . bits
	8192 bits
	1024 bits
Note também que as representações parecem iguais, mas os resultados finais são diferentes, já que de um lado trabalha-se com Bytes e do outro Bits.
É por isso que, quando contratamos um link de internet banda larga para nossa casa, por exemplo, de 10 Mbps, nunca conseguimos uma taxa de download de 10 Megabytes por segundo. Afinal, o link contratado equivale a 10 Megabits por segundo.
Bases NuméricasComo sabemos, é muito importante em um sistema de numeração posicional conhecer a base em que estamos trabalhando. Com ela, teremos o conhecimento de quais símbolos podem ser utilizados na representação numérica dos mesmos, de acordo com as posições.
SISTEMA BINARIO 
Usado na computação, sabemos que todos números são formados pelo 0 e 1, ou seja, 2 algarismos.
SISTEMA DECIMAL 
Usado em nosso cotidiano, sabemos que todos os números são formados pelos números que variam de 0 a 9, ou seja, 10 algarismos. 
SISTEMA OCTAL E HEXADECIMAL 
Não é diferente, teremos a representação de todos os números com 8 e 16 algarismos, respectivamente.
Para conhecer os símbolos utilizados na representação dos números de acordo com sua base, veja a tabela abaixo: 
 
Isso quer dizer que, para cada algarismo representado em um sistema de base, temos um equivalente, sendo representado em qualquer outra base, mas não com a mesma simbologia.
Entenderemos isso em breve, mas, antes, veja o exemplo abaixo com uma pequena comparação de números representados nas quatro bases que estudaremos
 
Sistemas de Numeração
O quadro anterior é bem interessante. Todavia, nos mostra somente uma pequena relação comparativa de números até o 16 decimal. Porém, não podemos ficar na dependência de consultar quadros para comparação, precisamos, na verdade, entender os métodos de conversão, a fim de que qualquer conversão necessária seja feita.
1º Passo
Realizar divisões sucessivas pelo valor que identifica a base (exemplo: Binário dividir por 2).
A primeira divisão usa como dividendo o próprio número e as demais utilizarão o quociente obtido na divisão anterior.
Deverão ser feitas tantas divisões quanto necessárias para o quociente se tornar zero ou ser menor do que a base, não sendo mais possível efetuar divisões.
2º Passo
Não sendo possível efetuar mais divisões, deve-se transcrever o último quociente juntamente com os restos das divisões, em ordem inversa ao cálculo efetuado. 
BINARIA 
Na transformação do numero 63310 para a base 2, fazemos uma sequencia de divisões pela base usando os quocientes com números inteiros e mantendo os(em vermelho), ate que o ultimo quociente não seja mais divisível(em azul).
 
OCTAL 
Seguindo mais um exemplo, agora para a base Octal, vemos que a regra se mantém a mesma.
Consideremos a conversão do número 39410 para a base 8:
 
Por último, e talvez um pouco mais complexo, vamos considerar a conversão do número 74610 para a base 16: 
 
Como vimos, a regra continua sendo a mesma, aplicando a divisão pela base, com um pequeno detalhe.
Percebemos que os restos podem ser maiores do que 9 e, como já estudamos, a simbologia acima de 9 em hexadecimal é representada por letras. Sendo assim, devemos efetuar a comparação com a letra relativa ao número encontrado no resto e transcrever, ao contrário do número, a letra hexadecimal.
Em nosso exemplo, o resto 10 se tornou A e o resto 14 se tornou E.
Conversão de uma Base para Decimal
Quando queremos converter de uma base qualquer para Decimal, utilizamos a mesma regra para todas as bases. Ao contrário da regra anterior, em que fazíamos a divisão pela base, na conversão de uma base para decimal, é feita a multiplicação de cada algarismo do número pela base, elevada à potência de sua posição do algarismo.
Neste momento, vamos perceber que o sistema de numeração posicional influenciará nos cálculos. Relembrando o sistema de posições, elas devem ser numeradas da direita para a esquerda, começando da posição 0.
Montada a expressão, podemos iniciar a resolução dos cálculos.
Em primeiro lugar, a multiplicação dos números pelo resultado das suas bases e potências.
em segundo lugar, somando-se os resultados de tudo o que foi obtido.
Feito isso, temos o número Decimal convertido. Primeiro a resolução das potências.
Vamos a alguns exemplo de conversão, para que fique mais claro a regra em questão:
6578 para a base 10
Multiplicar cada algarismo individualmente pela base elevada à sua potência e somar os resultados. 
 
Com a expressão montada, podemos iniciar os cálculos, conforme abaixo: 
 
Vamos para mais um exemplo, agora em Hexadecimal, a ser convertido para Decimal.
Em primeiro lugar, antes de começar, é importante relembrar que existe uma particularidade no sistema Hexadecimal, em que temos números que são representados por letras, e isso também será usado
1AC216 para a base 10
 
 
110111102 para a base 10 
 
 
1 - Cada algarismo do número deve ser convertido individualmente para a Base Binária;
2 - Ao ser convertido, cada algarismo convertido deve ser formado por um grupo de:
• 3 algarismos binários (se o original for Octal);
• 4 algarismos binários (se o original for Hexadecimal).
Atenção
Caso na conversão de cada algarismo, o binário não possua o total de três ou quatro binários necessários, deve-se completar com zeros à esquerda a fim de que os grupos sejam formados.
 
 
Conversão da base Binária para Octal e Hexadecimal
Para a conversão de números Binários para as bases Octal e Hexadecimal, as regras também são similares às anteriores:
1 – Com o número binário a ser convertido, dividimos o mesmo, da direita para a esquerda, em grupos de:
• 3 algarismos binários (se o número a ser convertido for Octal);
• 4 algarismos binários (se o número a ser convertido for Hexadecimal);
2 – Uma vez efetuada essa divisão, cada grupo deve ser convertido para Decimal, que será o seu número representativo. No caso do Hexadecimal, se o número corresponder entre 10 e 15, o mesmo deverá ser substituído pela letra correspondente, de A até F.
Vamos usar como exemplo a conversão do mesmo algarismo Binário 11011002 para os sistemas:
 
 
Toda operação aritmerica ou logica com é feita sem efetuar nehuma conversão, mas, sim, em binário, para , dessa forma, ser convertido e visualizado pelo ser humano na base pretendida, seja ela decimal, hexadecimal ou outros.
Soma no Sistema Binário
Para esse caso, devemos lembrar que o sistema possui somente 2 algarismos: 0 e 1.
Sendo assim, diferente da soma decimal, onde:
	110 + 110 = 210
A soma em binário nos traz que:
12 + 12 = 102
Isso nos traz uma regra já conhecida no sistema decimal: o transporte para outra coluna, “vai um”.
Sendo assim, temos: 
	0 + 0 = 0
	0 + 1 = 1
	1 + 0 = 1
	1 + 1 = 0, com “vai 1”, ou seja, 10.
Veja o exemplo da soma dos binários 101101 + 101111: 
 
Subtração no Sistema Binário
Para este caso, devemos também lembrar que o sistema possui somente 2 algarismos: 0 e 1.
Apesar de usar o mesmo método de subtração da base decimal, a subtração em binário pode ser um pouco mais complexa, no caso de se ter a ocorrência 0 – 1, onde deve ser feito um empréstimo superior do primeiro algarismo diferente de zero, existente à esquerda.
Isso traz a seguinte regra:
	0 - 0 = 0
	0 - 1 = 11 (“1 e empresta 1”)
	1 - 0 = 1
	1 - 1 = 0
 
Soma no Sistema Hexadecimal
Para realizar operações aritméticas no sistema hexadecimal, é importante relembrar, assim como na base binária, que existe um número diferenciado de algarismos que representam esta base.
Dessa forma, antes de abordar as regras para cálculos com números hexadecimais, é importante relembrar a equivalência dos números decimais e seus respectivos hexadecimais:
 
No caso da soma de hexadecimais, todas as regras continuam as mesmas, com um detalhe a ser observado: o “vai 1” será utilizado sempre que a soma de dois algarismos exceder o valor de 15 (ou seja, F), que é o maior algarismo da base hexadecimal, e irá com o valor 1 para o vizinho, e não como 15 ou F.
Veja o exemplo a seguir, relativo à soma 12ABCD16 + 4B1F9116:
 
Repare que, ao efetuar a soma, trocamos a letra pelo valor decimal correspondente. Caso seja superior, subtraímos o valor 16, a fim de verificar o valor que ficará nessa unidade, e o restante será transportado como “1” para o vizinho da esquerda. 
Subtração no Sistema Hexadecimal
Para realizar subtrações no sistema hexadecimal, é importante relembrar as regras do sistema da base hexadecimal, que também possui caracteres que representam alguns de seus algarismos.A regra se assemelha à soma no sistema hexadecimal. Porém, ao contrário do transporte, conhecido como “vai um”, temos o empréstimo do vizinho. Assim como já é feito no sistema decimal. Porém, ao emprestar 1 unidade do vizinho, estará emprestando o equivalente a 16.
Vamos ao exemplo abaixo, da subtração dos hexadecimais D8A93C - 23E4A1:
 
Representação de números positivos e negativos em binário
É possível que você esteja se perguntando...Se os sistemas de computação processam tudo em binário, como podem fazer com números negativos?
Pois bem, é isto que será visto agora, ou seja, o uso de sinal + (positivo) ou – (negativo) em números binários.
Existem várias maneiras. Porém, falaremos dos três principais tipos.
Os valores dos bits de magnitude (ou seja, o valor binário do número) sempre permanecem os mesmos, sendo que a única alteração é o bit mais à esquerda, onde 0 indica POSITIVO e 1 indica NEGATIVO.
Veja um exemplo, da representação binária em 7 bits do número decimal 39:
	Número em binário:
	0100111 (7 Bits)
	39
	Sinal + (Bit adicional)
	00100111 (8 Bits)
	+39
	Sinal - (Bit adicional)
	10100111 (8 Bits)
	-39
 
Essa solução implementada gerou alguns problemas, pois iniciou uma dupla interpretação para o zero, que poderia ser um sinal positivo, ou somente uma indicação de um número, gerando ambiguidades de significado. 
Para executá-lo, devem ser feitos os seguintes procedimentos:
1. Com o número binário a ser inserido o sinal, acrescenta-se um bit significativo 0 (zero) mais à esquerda do número, identificando o sinal POSITIVO do mesmo. Procedimento já executado anteriormente em sinal e magnitude;
2. Para identificação do número como negativo, é feita também a inclusão de um bit significativo à esquerda, porém agora invertido, ou seja, ao invés de 0 (zero), 1 (um), assim como a regra de sinal e magnitude. Porém, também são invertidos todos os Bits relativos à magnitude (ou identificação do valor) do número.
 
Veja um exemplo da mesma representação binária em 7 bits do número decimal 39 no Complemento de 1: 
	Número em binário:
	0100111 (7 Bits)
	39
	Sinal + (Bit adicional)
	00100111 (8 Bits)
	+39
	Sinal - (Bit adicional)
	11011000 (8 Bits)
	-39
 
Complemento de 2
Método muito utilizado em computação, por não dar ambiguidade no valor e significado do zero em seu significado. Este método é tido como o mais confiável da atualidade.
Para entendê-lo, devemos rever o processo do Complemento de 1, com um procedimento adicional:
1. Com o número binário a ser inserido o sinal, acrescenta-se um bit significativo 0 (zero) mais à esquerda do número, identificando o sinal POSITIVO do mesmo. Procedimento já executado anteriormente em sinal e magnitude; 
2. Para identificação do número como negativo, é feita também a inclusão de um bit significativo à esquerda. Porém, agora invertido, ou seja, ao invés de 0 (zero), 1 (um), assim como a regra de sinal e magnitude. Porém, também são invertidos todos os Bits relativos à magnitude (ou, identificação do valor) do número;
3. Realizada a inversão dos Bits, é adicionado 1 ao binário resultante;
4. Feito isso, é encontrado o Complemento de 2, relativo ao negativo de um número em binário.
Veja um exemplo, da mesma representação binária em 7 bits do número decimal 39 no Complemento de 2: 
	Número em binário:
	0100111 (7 Bits)
	39
	Sinal + (Bit adicional)
	00100111 (8 Bits)
	+39
	Sinal - (Bit adicional)
	10100111 (8 Bits)
11011000 + 1
11011001
	-39
 
Já foi estudado em aulas anteriores que o processamento de um computador é baseado em Bits, ou seja, 0 e 1 que, agrupados, podem gerar diversas informações para o ser humano. Também foi visto que este conceito de sistema binário vem desde a geração de computadores valvulados, onde as válvulas eram usadas para controlar passagem ou não de corrente na geração dos Bits, válvulas estas que posteriormente seriam evoluídas para transistores.
Nos computadores, os transistores são circuitos eletrônicos, formados por elementos que possuem a capacidade de processar informações binárias a nível lógico. Esses elementos, conforme dito, são conhecidos como portas lógicas.
Nesta aula, vamos conhecer as portas lógicas existentes e como elas processam, a nível lógico, a informação recebida e os resultados obtidos após o processamento do mesmo. Também verá que, um conjunto lógico formado por estas portas é conhecido como circuito lógico.
No final da aula, veremos como calcular as possibilidades de resultados a serem obtidas no processamento de um circuito lógico, através do uso de Tabela Verdade para a obtenção do resultado.  
Como estudado, todo processamento em um computador é baseado em Bits, ou seja, 0’s e 1’s que, agrupados, podem gerar diversas informações para o ser humano 
Também vimos que o uso do sistema binário vem desde a geração de computadores valvulados, onde as válvulas eram usadas para controlar passagem ou não de corrente elétrica, de forma que , se válvula estisse ligada ou desligada, indicaria o bit 0 iy bit 1. 
Lembrando que este processamento utiliza o sistema de numeração binário correlacionando-se justamente os níveis lógicos. 
 
	A – Lâmpada / B – Interruptor / S – Saída
1- Lâmpada queimada, interruptor desligado;
2- Lâmpada queimada, interruptor ligado;
3- Lâmpada funcionando, interruptor desligado; e
4- Lâmpada funcionando, interruptor ligado.
 A B S 
 FALSO FALSO FALSO 
 FALSO VERDADEIRO FALSO 
 VERDADEIRO FALSO FALSO 
 VERDADEIRO VERDADEIRO VERDADEIRO 
A	B	S
0	0	0
0	1	0
1	0	0
1	1	1 
Porta E ou AND
É aquela que executa a multiplicação de duas ou mais variáveis.
Com a porta E ou AND, temos na tabela verdade uma saída no um (1), ou seja, verdadeiro, SE E SOMENTE SE as suas entradas ou mais entradas forem todas iguais a um, ou seja, positivas.
A saída será igual a zero (0) nos demais casos.
O conceito é utilizado para qualquer número de variáveis de entrada.
Como simbologia e expressão lógica, tem-se:
 
X = A . B
Onde se lê:
X = A e B
	1. A
	2. B
	3. A.B
	4. 0
	5. 0
	6. 0
	7. 0
	8. 1
	9. 0
	10. 1
	11. 0
	12. 0
	13. 1
	14. 1
	15. 1
Porta OU ou OR
É aquela que executa a soma, em que se obtém o valor um (1) quando uma ou mais variáveis de entrada forem iguais a um (1) e assume valor zero (0) se e somente se todas as suas variáveis forem iguais a zero (0).
Vejamos como a porta OU é representada.
Como simbologia e expressão lógica, tem-se:
X = A + B
Onde se lê:
X = A ou B
Porta NÃO / NOT
A função NÃO (também conhecida como Complemento) é aquela que inverterá o estado ou valor da variável, ou seja, se a variável estiver com valor zero (0), vai para um (1), e, se a variável estiver com valor um (1), vai para zero (0).
O travessão sobre a letra ou expressão representa a variável, e esta simbologia representa onde ocorrerá uma inversão.
Pode-se dizer que A é a negação ou a inversão de A. Vejamos como é representada.
Como simbologia e expressão lógica, tem-se:
Porta NÃO E, NE ou NAND
Essa função é uma composição de duas portas lógicas já estudadas, ou seja, da função E com a função NÃO, de forma que o resultado será uma nova função E invertida.
Vejamos como ela será representada.
Como simbologia e expressão lógica, tem-se:
Porta NOU / NOR
Como o próprio nome diz, essa função é uma composição de duas portas lógicas já estudadas, ou seja, da função OU com a função NÃO, de forma que o resultado será uma nova função OU invertida.
Vejamos como ela será representada.
Como simbologia e expressão lógica, tem-se:
Porta “OU – EXCLUSIVO” (XOR)
Essa porta lógica, OU– EXCLUSIVO, apresenta como resultado lógico 1, se as variáveis de entrada forem diferentes entre si, ou seja, se houver EXCLUSIVIDADE de valor na variável.
Como simbologia e expressão lógica, tem-se:
	
Porta “NOU – EXCLUSIVO” (XNOR) / COINCIDÊNCIA
A função lógica XNOR, conhecida como COINCIDÊNCIA, ao contrário da OU-EXCLUSIVO, tem como resultado um (1), sempre que em suas variáveis de entrada houver uma igualdade.
Vejamos como ela é representada.
Como simbologia e expressão lógica, tem-se:
Dado o circuito abaixo, qual a expressão lógica o representa?
Vejamos um passo a passo de como descobrir.
1. Procure iniciar a formação das expressões da direita para a esquerda:
2. Para facilitar a identificação das expressões, pode ser útil desmembrar os membros da porta lógica final. Conforme exemplo abaixo, desmembrando, teríamos a expressão lógica:
X = X’ . X’’
De forma que, identificando X’ e X’’, simplesmente podemos substituir na expressão:
3. Pode-se verificar que ambos os desmembramentos, X’ e X’’, são formados pela mesma porta lógica, função OU, representada pelo símbolo +. Sendo assim, pode-se escrever as expressões que representam os mesmos:
X’ = A + B
X’’ = C + D
4. Uma vez identificado, temos:
X = X’ . X’’
X = (A+B) . (C+D)
Tabela Verdade
Como último assunto desta aula, falaremos detalhadamente sobre Tabela Verdade.
A Tabela Verdade, como vimos na verificação das portas lógicas, permite que possíveis saídas de um circuito sejam identificadas. Assim, é possível saber a probabilidade, por exemplo, de uma saída positiva em um circuito.
Mas quando há um circuito mais complexo e com mais variáveis?
É necessário respeitar algumas regras para que a Tabela Verdade seja construída.
Uma dica importante é a probabilidade de variações possíveis de acordo com a quantidade de variáveis existentes na expressão. Considerando que o Sistema é Binário (Base 2), eleva-se a base 2 à quantidade de variáveis existentes.
Vamos entender:
2 variáveis, 4 variações na Tabela Verdade (22);
3 variáveis, 8 variações na Tabela Verdade (23).
Agora, veja o exemplo abaixo:
 
Considerando as 8 variações no exemplo, criam-se colunas com as variáveis existentes, inserindo metade das linhas (4 linhas) com bit 0 e 4 linhas com bit 1. Na próxima coluna, a mesma regra, agora com metade das linhas da coluna anterior (2 linhas), e assim por diante. Dessa forma, tem-se todas as variações possíveis com as 3 variáveis A , B e C.
As colunas seguintes foram criadas pois existem duas condições diferenciadas, ou seja, a inversão da variável A e também C, onde deve-se identificar os valores invertidos (veja que os valores dessas colunas são exatamente a inversão das colunas A e C).
Tendo a inversão da variação C e calculada a função A.B.C, sabe-se que é uma função E, onde a saída é igual a 1 SE e SOMENTE SE todas variáveis forem igual a 1. Sendo assim, devem ser comparadas as variáveis das três colunas relativas a A,B e C a fim de verificar quais compreendem essa regra.
Feito isso, já se pode finalizar a Tabela Verdade, aplicando a função OU entre as possibilidades A,B, A. B. C.
Essa função é caracterizada por saída igual a 1, se uma única variável for igual a 1.
Conceito de Von Neumann
Conforme estudado na aula de história da computação, as primeiras máquinas tinham um propósito específico, ou seja, programas fixos para processar. Hoje ainda existem computadores com esta finalidade, como a calculadora de mesa, que pode fazer cálculos com as operações fundamentais, mas não pode ser utilizada para nenhuma outra finalidade, como processar um jogo ou realizar cálculos que não existam em sua função.
Alterar o programa de uma máquina de propósito específico exige muito trabalho e reestruturação da máquina, desenho e religação de componentes. Fato que ocorria com os primeiros computadores.
John Von Neumann, matemático húngaro de renome, com diversas contribuições científicas na matemática e na física e também professor na Universidade de Princeton, participou do projeto e construção do ENIAC, já estudado anteriormente.
Em 1945, John Von Neumann escreveu um artigo crítico sobre os princípios da computação, que se tornaram um padrão na construção de computadores até a atualidade.
O Conceito de Von Neumann se baseava na criação de um modelo de computador em que a máquina possuiria o programa (e suas instruções) armazenado em memória, de forma que os programas em execução poderiam ser alterados durante a execução (uma variável poderia ser alterada em meio à execução) e todas as instruções seriam armazenadas e executadas sequencialmente em memória, de acordo com seu endereçamento. 
Além disso, Von Neumann propôs uma arquitetura básica, composta pelos elementos abaixo:
Basicamente, todo e qualquer computador possuiria os seguintes elementos:
• CPU (ou UCP);
• Unidade de memória;
• Unidade de entrada;
• Unidade de saída.
Composição do Modelo de Von Neumann
Todos os componentes estão interligados através de barramentos que permitem a transmissão dos bits entre eles, facilitando o processamento e integrando melhor todos os componentes na arquitetura de computadores.
Como caraterísticas de funcionamento do Modelo de Von Neumann, temos:
• Programação sequencial;
• Valor de uma variável alterado durante a execução de um programa;
• Instruções e dados armazenados indistintamente na memória e acessíveis através de endereços.
Diagrama Funcional da CPU
Para entender melhor a estrutura funcional da CPU e demais componentes, veja o diagrama abaixo:
 
Veja seus principais elementos:
Unidade de Controle (UC)
Responsável por buscar instruções na memória principal, determinar seu tipo e encaminhar.
Unidade Lógica e Aritmética (ULA)
Responsável por executar as instruções, efetuando operações matemáticas e operações lógicas, como já estudado.
Registradores
Memórias de alta velocidade, responsáveis, principalmente, pelo armazenamento de resultados necessários na execução de instruções. Na verdade, são as mais rápidas existentes em um computador.
 
Barramentos
Dentro de toda organização de computadores, também se baseando no diagrama funcional da CPU, verifica-se a existência de três barramentos distintos.
Como se sabe, barramentos são elementos que efetuam a ligação entre componentes dos computadores. Da mesma forma, esses barramentos distintos têm a mesma função e especializada, ou seja, somente um determinado conteúdo pode trafegar nos mesmos.
 
 
Decodificador de instruções (DI)
Este elemento não faz parte de barramentos nem registradores, mas tem uma função de grande importância no processo de execução das instruções.
Ele é o responsável por decodificar o conteúdo dos dados enviados pelas instruções armazenadas na memória, interpretando as operações a serem realizadas.
Feita a decodificação, a unidade de controle poderá enviar para o respectivo responsável a finalização da operação requisitada na instrução, seja ela um cálculo matemático, gravação em um arquivo ou uma impressão.
Ciclo de Busca – Decodificação – Execução
Tendo conhecimento de todos personagens envolvidos no modelo funcional de uma CPU, é importante entender o funcionamento do ciclo de Busca–Decodificação–Execução, que ocorre diversas vezes em um computador, de acordo com sua capacidade de operação.
Basicamente, esse ciclo ocorre desde o momento em que a CPU busca uma instrução armazenada na memória até o momento em que ela foi executada, estando, assim, a CPU disponível para mais uma execução.
Veja o funcionamento, com detalhes, do ciclo:
 
Finalizado esse ciclo, um novo ciclo é iniciado, para a execução de uma nova instrução. 
CLOCK
Como último elemento , é visto, no diagrama funcional da CPU, o CLOCK, um gerador de pulsos regulares de curta duração.
Esse sinal é enviado pela CPU, como referência de tempo para todas as atividades dentro de um computador, de forma a garantir o sincronismo de todas as operações, independente do dispositivo, uma vez que alguns periféricos possuem clocks diferentes do clock interno da CPU.
O clock é medido em quantidade de vezes por segundo,ou Hertz (hz).
Instrução de Máquinas
Como já estudando, quem um programa e suas instrução é o hardware, que, através dos ciclos de instrução do processador, busca as instruções em linguagem de máquina. 
Afinal, um programa desenvolvido em linguagem de alto nível (mais amigável ao programador) não pode ser executado diretamente pelo hardware. Ele precisa ser traduzido para linguagem de maquina por um compilador antes de ser efetivamente carregado em memória, a fim de que o processador possa executa-lo. 
A linguagem de máquina é composta de códigos binários, representando esses instruções, endereços e dados e está totalmente vinculada ao conjunto de instruções definido para uma máquina. 
Em termos de funcionalidade, as operações da máquina podem ser: 
 
 
Aspectos dos conjuntos de instruções 
Há diversos formatos de instruções, com características particulares, vantagens e desvantagens.
O conjunto de instruções de uma maquina pode ser constituído por instruções de diversos formatos. Esta flexibilidade permite a escolha da instrução adequada para aplicação em cada caso. 
O conjunto de instruções normalmente pode ser analisado sob alguns aspectos, como, por exemplo:
 
Veja o exemplo de uma instrução com 2 operandos: 
 Podemos ver que na formação da instrução temos: 
Totalizando 32 Bits de uma instrução 
Isso já nos leva a entender que a Palavra desse processador seria de 32bits, que é o tamanho da informação que trafega entre a CPU e a memoria principal. Dessa forma, temos um exemplo de uma instrução definida por 1 operação e 2 operandos. 
Curiosidade
O conjunto de instruções definido em um processador é a base para que um programa seja executado nesse processador.
Um exemplo interessante é o processador Intel 8080, primeiro processador comercial da Intel.
Ele não possuía instruções para multiplicação ou divisão. Sendo assim, um programa em linguagem de máquina, neste processador, não conseguiria efetuar operações de multiplicação ou divisão se não fosse pela combinação de outras instruções como, por exemplo, múltiplas somas para executar uma multiplicação.
Porém, quando desenvolvido em uma linguagem de alto nível, a mesma poderia implementar comandos de multiplicação e divisão que já aplicassem uma série de instruções repetidas de soma ou subtração no momento da compilação.
 
Quantidade de Operados
Instruções de máquinas são constituídas por um conjunto de beta, que contém um subconjunto chamado código de operação, responsável por identificar a operação a ser realizada pelo hardware.
Esse código é decodificado na UC na fase de instrução, gerando os pulsos de controle para acionar as portas lógicas necessárias à execução da operação.
Possui ainda um ou mais grupos de bits denominados campo(s) do(s) operando(s) que tem por função identificar e localizar o dado a ser processado.
Instruções com 3 operandos 
Dentro de uma instrução de 3 operandos, os campos 1 e 2 representam os endereços de cada dado que será utilizado na operação.
O campo relativo ao Operando 3 contém o endereço onde será armazenado o resultado da operação em execução.
Como exemplo, teríamos como operações fundamentais (ADD = SOMA, SUB = SUBTRAÇÃO, MPY = MULTIPLICAÇÃO e DIV = DIVISÃO) as representações abaixo:
 
Quando verificar as instruções acima, pense da seguinte forma: 
 
Seguindo esse pensamento, como seria escrito um conjunto de instruções de 3 operandos para executar o cálculo da expressão abaixo? 
 
Veja que com 3 operandos foram necessárias 5 linhas de programação.
Respeitando as regras matemáticas e priorizando parênteses, multiplicações e divisões, a ordem criada na programação das instruções foi a seguinte: 
 
Feito isso, o cálculo foi realizado utilizando-se de 2 endereços de memória adicionais (T1 e T2, além de X, que era o endereço final para armazenamento do cálculo da expressão. 
Instruções com 2 operandos
Nas instruções com 2 operandos, novas operações aparecem, em virtude de algumas limitações. Quando há somente 2 operandos, o campo 1 sempre recebe o resultado da operação.
 
Seguindo esse pensamento, como seria escrito um conjunto de instruções de 2 operandos para executar o cálculo da mesma expressão que foi feita anteriormente? 
 X = A*(B+C*D-E/F) 
Resultado: 
 
Com a mudança de operandos, também foi alterada a quantidade de linhas de código necessárias para efetuar o cálculo, de forma que sua ordem de execução foi a seguinte: 
 
Perceba que a Operação Move, como o próprio nome diz, MOVE o conteúdo de um endereço de memória, para outro endereço. Sendo assim, o conteúdo que estava no endereço de memória A foi movido para o endereço X. 
Instruções com 1 operando
Nas instruções com 1 operando, o uso do Acumulador (registrador utilizado para armazenamento temporário na CPU) é constante, pois é utilizado como um operando não expressamente declarado, mas utilizado em todas as operações.
 
Nesse tipo de execução, tem-se 2 novas operações, sendo elas LDA (LOAD) e STA (STORAGE), onde:
 
Quando visualizadas as operações, implicitamente o Operando ACC deve ser considerado, ou seja, no exemplo ADD Op., entende-se:
“Pegue o conteúdo do Acumulador, some ao Operando, e grave novamente no Acumulador”.
Seguindo esse pensamento, como seria escrito um conjunto de instruções de 2 operandos para executar o cálculo da mesma expressão que foi feita anteriormente?
	X = A*(B+C*D-E/F)
Resultado: 
 
 
Veja que, durante a execução das instruções, ele preparou C*D e gravou em X, como também E/F e gravou em T1, posteriormente, executando uma operação após a outra. Mesmo assim, foram necessárias 11 linhas de operações para a execução da mesma expressão matemática. 
Modos de Endereçamento de Instruções
Sabe-se que os programas a serem executados e, consequentemente, suas instruções são carregados na memória principal.
Para que o conteúdo a ser lido ou armazenado seja referenciado, é necessário ter um modo de endereçamento que possa identificá-lo individualmente para que a unidade central de processamento, ou CPU, possa determinar qual posição de memória está sendo usada por uma instrução da máquina.
Sendo assim, existem alguns modos de endereçamento:
• Imediato: utiliza um valor como operando e não um endereço na memória, ou seja, não é utilizado um endereço da memória, o operando é parte da instrução. Permite definir constante e valores de variáveis iniciais;
• Direto: indica o endereço de memória onde está o operando;
• Indireto: Indica um ponteiro de endereço para um operando, onde o conteúdo deste ponteiro não é um dado e sim outro endereço. Há um duplo endereçamento neste caso;
• Por registrador: O endereço se refere a um endereço de registrador e não da memória principal;
• Base + Deslocamento: Endereço obtido pela soma do operando com o conteúdo de um registrador-base.
Paralelismo
Como temos estudado desde o início, o resultado de toda a evolução na computação é a busca pela otimização.
Todas as evoluções conhecidas até o momento são resultado dessas buscas. Um destes resultados, perceptíveis e em constante crescimento, é a frequência de operação das máquinas, ou clock interno dos processadores.
Aumentar a velocidade do clock interno dos processadores sempre é sinônimo de aumentos significativos na performance de um equipamento. Porém, existem outros métodos, desenvolvidos no decorrer das pesquisas, que permitiram a evolução na otimização do ciclo de Busca–Decodificação–Execução, conhecida como Paralelismo.
O Paralelismo, como a própria palavra diz, é a possibilidade de executar instruções em paralelo. Quando pensamos desta forma, em um primeiro momento, pensamos nos atuais processadores Dual Core, Quad Core, entre outros, que não deixam de ser um tipo de paralelismo a nível de Processador.
E se dissermos que há possibilidade de paralelismo em um único processador?
É isso que veremos a partir de agora.
Formas gerais de paralelismo 
Existem duas formas gerais de paralelismo: 
 
Paralelismo no nível de instrução
Dos diversos métodos de paralelismo a nívelde instrução, o mais conhecido deles é o PIPELINE.
Pipeline foi uma técnica revolucionária que consistia em dividir a execução de uma instrução através do ciclo de instruções em diversas etapas, chamadas estágios, onde cada uma era manipulada por um agente distinto dentro do ciclo de instrução.
Dessa forma, era possível identificar agentes “ociosos” dentro do processo, podendo agilizar e iniciar outra instrução, mesmo que a anterior não tivesse sido finalizada.
Tomemos como base o ciclo de Busca–Decodificação–Execução e algumas de suas etapas:
 
Se tomarmos originalmente o ciclo de instrução aprendido e o ciclo de clock, a próxima instrução seria carregada somente depois que TODO o ciclo fosse executado. Porém, entende-se que, se a instrução foi carregada e já está no processo de busca na memória, o processo poderia ser otimizado.
O Pipeline foi criado para isso. Trata-se de uma metodologia básica para melhorar a velocidade, reduzindo o número de ciclos de clock necessários para executar uma instrução, permitindo sobrepor a execução das instruções através dos pipelines, fazendo, assim, o uso uso mais adequado do hardware.
Veja o esquema abaixo, de acordo com a cronologia do tempo: 
 
Perceba que, com o pipeline, ocorre uma independência entre as fases de execução da instrução.
Não será sempre o caso, mas, em boa parte das vezes, o pipeline evitará a ociosidade e aumentará a eficiência do processador.
Se analisar, no tempo 5, há a primeira instrução no final de execução. Contudo, outras 4 instruções já foram iniciadas, simplesmente usando a ociosidade das etapas anteriores do ciclo de instrução.
Logo, o paralelismo a nível de instrução, através do pipeline, aumenta o desempenho de uma CPU devido ao aumento da vazão das instruções, para que haja maior número de instruções executadas por unidade de tempo.
O que é memória? 
Memoria é o componente dentro da arquitetura e organização do computador com a função de armazenar os programas e os dados que serão manipulados pelo sistema operacional dentro dos ciclos de instruções. 
A memoria não pode considera um componente único um subsistema. 
Caso dentro do sistema de computação existisse somente um tipo de memória, para que o processamento fosse aceitável, sua velocidade teria que ser compatível à velocidade da CPU.
Isso inviabilizaria a construção da máquina, pois, com esta velocidade e com alta capacidade de armazenamento, a tecnologia utilizada seria de alto custo e não acessível ao mercado.
Velocidade de processamento 
Para ficar mais clara a diferença de velocidade de processamento, vamos falar dos números. 
Dentro da CPU, um dado é processado em aproximadamente 5 manossegundos(isto significa 5 bilionésimos de segundo), ao contrario do processamento da memoria principal(que será vista detalhadamente na próxima aula).
Como sabemos que tudo que esta sendo processado fica armazenado na memoria RAM e é requisitado pela CPU, quando a CPU recebe este conteúdo e processa em 5ns, a CPU fica mais 55ns ociosa aguardando o envio de uma nova informação por parte da emoria principal. 
Por esse e por outros motivos, surgiram outras memórias que auxiliam nesta compensação. 
Memória primária x secundária
Para se entender a diferença dessas divisões, é importante conhecer o conceito de volatilidade. 
Uma memória é volátil quando ela perde o conteúdo, quando não há alimentação de energia. Resumindo, se o equipamento é desligado, seu conteúdo é perdido.
Sendo assim, analise as definições:
 
São os componentes que fornecem dados e instruções para uso imediato, sendo voláteis. 
Basicamente, é formada pelos seguintes componentes:
Registradores, Memória cache e Memória principal. 
 
São os componentes que provêm capacidade de armazenamento permanente (não voláteis).
 Exemplos de dispositivos de armazenamento secundário são:
Discos Rígidos, Discos Óticos (CDs, DVDs, etc.) e Fitas.

Continue navegando