Buscar

Estacio_Conteudo Online

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 112 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 112 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 112 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 / Aula 1 - Evolução Histórica da Computaçãoa definição d
Introdução da história da tecnologia
A história da tecnologia e consequentemente da computação se dá desde o momento em que compreendemos o surgimento do fogo e o descobrimento que ele poderia ser usado a favor do ser humano como ferramenta de grande importância para a civilização.
Tais descobertas desencadearam a busca pelo conhecimento por parte do ser humano. Através desse conhecimento e da evolução do mesmo, novas tecnologias e ferramentas podem ser desenvolvidas e surgem a cada dia. Se não fosse isso, continuaríamos até os dias de hoje morando em cavernas, porém aquecidos com o fogo.
O fogo incentivou a descoberta da manipulação dos metais, que permitiu a criação de novas ferramentas para caça e manipulação da madeira etc.
Com o passar do tempo, podemos identificar que todo esse desenvolvimento possui uma motivação: a busca pela otimização de processos para a melhoria do cotidiano, seja de uma pessoa, ou até mesmo de uma civilização
O surgimento e as gerações na evolução dos 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.
Geração Zero - Computadores Mecânicos e Eletromecânicos
A geração de computadores mecânicos se resume ao uso de equipamentos que otimizaram processos da civilização através do uso de alguns dispositivos, como, por exemplo, aqueles que facilitavam o cálculo de resultados.
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.
Antes de continuar, assista ao vídeo que mostra o funcionamento da máquina de Pascal (Pascaline).
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.
Veja outros destaques na história da evolução dos computadores:
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.
Certamente a eletricidade e a eletrônica cooperaram para a evolução que veremos a seguir, basicamente dividida em fases evolutivas demarcadas pelo surgimento de materiais que permitiram mudanças consideráveis na forma em que os computadores eram projetados.
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.
Dentro dessa geração, é importante citar os equipamentos de grande importância:
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 precisavam de 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”.
Agora, assista ao vídeo para saber mais sobre o funcionamento do transistor.
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çãode 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.
Era da computação pessoal
· 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.
Atividade
1 - Vamos começar a conhecer a evolução analisando o resultado dela na atualidade. Veja o gráfico abaixo relativo à quantidade de transistores na fabricação de processadores com o passar dos anos.
Que conclusões você pode tirar somente olhando este gráfico?
2 - O que Pascal trouxe como inovação no desenvolvimento da tecnologia?
Criou uma calculadora mecânica baseada em engrenagens.
3 - Sobre o ábaco, qual afirmativa está INCORRETA?
Surgiu séculos antes de Cristo.
4 - No que se refere ao surgimento das gerações de computadores, qual a ordem cronológica dos mesmos?
Válvula, Transistor e CI
5 - Com base na história e evolução dos computadores, qual pode ser considerado o primeiro dispositivo de entrada em um equipamento?
Cartão perfurado
Organização de Computadores / Aula 2 - Hardware, Software e Conceitos
· Na Designer Hardware e seus componentes
Hoje temos contato com uma diversidade de dispositivos de computação, alguns com capacidade de processamento igual ao até mesmo superior a alguns computadores tradicionais. Por exemplo, o que conhecemos hoje 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. Porém, como base, existem alguns componentes hoje presentes em qualquer equipamento, seja ele um computador de uso pessoal, uma calculadora, ou até mesmo o smartphone que citamos.
Veja abaixo os componentes do hardware cujas funcionalidades devemos conhecer: 
Agora, vamos conhecer cada um desses componentes mais detalhadamente.
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.
Memória RAM
Disco Rígido
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.
Mouse
Teclado
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.
Classificação de acordo com as funcionalidades
Cada software possui uma função específica, de forma que é necessário, neste momento, classificá-lo em duas categorias principais:
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 ser finita, exata e sem duplicidade de interpretação para que a solicitaçãodo 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
Exemplo para exibir a mensagem “Olá Mundo” em Linguagem de Baixo Nivel - Assembly
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 de 64 bits ou 8 bytes.
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.
Bits e bytes
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.
Atividade
1 - Considerando que você possui um link de internet de 10 Mbps, qual seria a taxa de download em Kbytes por segundo? Quanto tempo, em minutos, você conseguiria fazer o download de um arquivo de 600 Mbytes?
Corrigir
2 - Dos aspectos abaixo, referentes à software livre, marque a alternativa INCORRETA:
e) Permitido vender
3 - Os dispositivos de E/S (Entrada e Saída), ou periféricos, são os equipamentos acoplados ao sistema de computação, que efetuam as funções de entrada e saída. Mouse, Monitor de vídeo e Teclado são, respectivamente, periféricos de:
b) Entrada, saída e entrada de dados
4 - Qual dos programas abaixo pode ser considerado como software básico?
b) Sistemas Operacionais
Organização de Computadores / Aula 3 - Sistemas de Numeração
Introdução
	410 + 710 = 1110
68 + 38 = 118
916 + 816 = 1116
1012 + 112 = 10002
Algo nas contas acima pareceu estranho?
Inicialmente, é muito provável, que a única conta que você imaginou estar correta seja a primeira. Porém, nesta aula, vamos entender porque todas as contas acima estão corretas, apesar de parecerem estranhas para nós.
Simbologia para representar quantidades
Os sistemas de numeração têm o objetivo de fornecer uma simbologia com regras para representar certas quantidades, de forma que, com essas regras e normas, a informação quantitativapossa ser identificada por quem a conheça.
Atualmente, essa representação é feita através de números. Em alguns casos, também letras.
Sistema de Numeração Não Posicional
O sistema de numeração não posicional já foi muito usado na antiguidade.
Apesar de muito utilizado, não era um sistema de numeração fácil para, por exemplo, fazer operações aritméticas. Isso pode ter sido uma das causas do sistema de numeração posicional.
O exemplo mais conhecido e estudado nas escolas até hoje é o sistema de numeração romano, onde letras representam certas quantidades.
Para ilustrar, temos:
, 10, 50,.
A única regra diferenciada na numeração romana é que se um algarismo menor for colocado à esquerda de um maior, o mesmo deverá ser subtraído do maior. Apesar de muito utilizado, não era um sistema de numeração fácil para, por exemplo, fazer operações aritméticas. Isso ter sido uma das causas do sistema de numeração posicional.
Sistema de Numeração Posicional
Nos sistemas de numeração posicionais, o valor representado pelo algarismo no número depende da posição em que ele aparece na representação, ou seja, seu valor absoluto é modificado por um fator (ou peso), que varia conforme a posição do algarismo, sendo crescente da direita para a esquerda.
Vamos entender melhor através do exemplo:
Fonte: Criado pelo autor
Como podemos verificar, o exemplo trata do sistema na base decimal, onde o “peso” de cada número foi baseado em uma potência de 10, levando como referência a sua posição no número formado. Dependendo da posição onde o algarismo se localiza, seu resultado final e seu peso serão diferentes.
É o que podemos ver com o número 3. Ele aparece 3 vezes no número. Porém, de acordo com sua posição, seus pesos os transformam em 3000, 30 e 3, respectivamente.
Sendo assim, temos dois conceitos fundamentais no sistema de numeração posicional que deverão ser aplicados em todos os sistemas que veremos posteriormente:
	A base que representa este número.
	A posição em que o algarismo está.
Bases Numéricas
Como 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 Binário
	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.
	Sistemas 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:
	Sistema
	Base
	Símbolos
	Binário
	2
	0, 1
	Octal
	8
	0, 1, 2, 3, 4, 5, 6, 7
	Decimal
	10
	0, 1, 2, 3, 4, 5, 6, 7, 8, 9
	Hexadecimal
	16
	0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F
Fonte: Adaptado pelo autor
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:
	Decimal (Base 10)
	Binário (Base 2)
	Octal (Base 8)
	Hexadecimal (Base 16)
	00
	00000
	00
	00
	01
	00001
	01
	01
	02
	00010
	02
	02
	03
	00011
	03
	03
	04
	00100
	04
	04
	05
	00101
	05
	05
	06
	00110
	06
	06
	07
	00111
	07
	07
	08
	01000
	10
	08
	09
	01001
	11
	09
	10
	01010
	12
	0A
	11
	01011
	13
	0B
	12
	01100
	14
	0C
	13
	01101
	15
	0D
	14
	01110
	16
	0E
	15
	01111
	17
	0F
	16
	10000
	20
	10
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.
Sendo assim, vamos conhecer as regras de conversão de um número decimal para as bases Binária, Octal e Hexadecimal.
Conversão de Decimal para outra Base
A conversão de números da base 10 para uma base qualquer é realizada através da aplicação de algoritmos para a parte inteira e para a parte fracionária.
O algoritmo, para converter a parte inteira de um número decimal para outra base qualquer, consiste nos seguintes passos:
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ário 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.
Vejamos na prática a conversão de Decimal para as seguintes bases:AL
· HEXADECIMAL
Atividade
Nada melhor do que a prática para verificar se você entendeu o processo de conversão de números da base Decimal para as bases Binária, Octal e Hexadecimal.
Faça as conversões abaixo e digite o resultado:
a) 74610 para a base 2 = 1011101010
b) 23410 para a base 8 = 352
c) 45910 para a base 16 = 1CB
d) 25510 para a base 16 = FF
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.
	Decimais
	1
	2
	3
	4
	5
	6
	7
	8
	9
	10
	11
	12
	13
	14
	15
	Hexadecimais
	1
	2
	3
	4
	5
	6
	7
	8
	9
	A
	B
	C
	D
	E
	F
Fonte: Criado pelo Autor
1AC216 para a base 10
Montando a formação para conversão, seguindo a mesma regra:
Fonte: Criado pelo Autor
Com a expressão montada, podemos iniciar os cálculos, conforme abaixo:
Fonte: Criado pelo Autor
em vermelho, a ú das anteriormente.
Como último exemplo, vamos agora converter um número Binário para Decimal e identificar qual seria o equivalente do mesmo após a conversão.
110111102 para a base 10
Montando a formação para conversão, seguindo a regra:
Fonte: Criado pelo Autor
Para a conversão de números nas bases Octal e Hexadecimal para a base Binária, as regras são similares, respeitando-se as respectivas particularidades.
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).
Vamos a alguns exemplos.
Fonte: Criado pelo Autor
Conversão da base Binária para Octal e HexadecimalPara 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:
	
	
Fonte: Criado pelo Autor
Dessa forma, finalizamos todos sistemas de numeração e metodologias de conversão para os sistemas de numeração Decimal, Binário, Octal e Hexadecimal.
Não deixe de fazer novos cálculos. Para estudar, use a calculadora do Windows para comprovar que seus cálculos estão exatos.
1 - Efetue a conversão do número 1000010010012 para a base 10:
a) 2111
2 - Efetue a conversão do número 12710 para a base 2:
c) 1111111
3 - Efetue a conversão do número 204710 para a base 16:
d) 7FF
Organização de Computadores / Aula 4 - Aritmética e Representação de Sinais
Introdução
Toda operação aritmética ou lógica com mais é feita sem efetuar nenhuma 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 outras.
Nesta aula, serão apresentados os processos de cálculo das operações aritméticas nestes sistemas de base. Também é muito importante entendermos como se faz a representação de números positivos e negativos na arquitetura de computadores.
Sendo assim, é fundamental que conheçamos as técnicas de: Sinal de Magnitude e Complemento de 1 e de 2 para tais representações.
Operações Aritméticas
As operações aritméticas em outros sistemas de base devem ser feitas da mesma forma que na base decimal, com uma particularidade importante: a quantidade de algarismos disponíveis no sistema de base. Isso trará resultados diferentes nas somas, de acordo com a base em questão.
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
Veja, no exemplo da subtração dos binários 10100 – 1111, o passo a passo de como se fazer a subtração.
Perceba a importância de executar o passo a passo, verificando quando é necessário “emprestar” do vizinho a fim de completar a subtração necessária.
Essa atenção é necessária para que o cálculo seja feito com exatidão. Por isso, para não confundir, é recomendável inserir a representação do empréstimo com o sinal negativo e abaixo dos cálculos, conforme diagrama acima.
Atividade
Nada melhor do que praticar as operações aritméticas para verificar se os conceitos e procedimentos foram assimilados!
Dessa forma, tente efetuar os cálculos abaixo, conforme regras estudadas:
1) 1010102 + 110112 = 1000101
2) 1100112 + 1011012 =1100000
3) 1000112 – 11112 =10100
4) 10002 – 1112= 1
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:
	Decimais
	0
	1
	2
	3
	4
	5
	6
	7
	8
	9
	10
	11
	12
	13
	14
	15
	Hexadecimais
	0
	1
	2
	3
	4
	5
	6
	7
	8
	9
	A
	B
	C
	D
	E
	F
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.
Logo, o procedimento de soma em hexadecimal será concluído com sucesso.
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:
Atividade
Nada melhor do que praticar as operações aritméticas para verificar se os conceitos e procedimentos foram assimilados!
Efetue os cálculos abaixo, conforme as regras estudadas:
1) AA16 + BB16 = 165
2) ABC16 + 2DE16 = D9A
3) BB16 - AA16 = 11
4) CAFE16 – ABCD16 = 1F31
Corrigir
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.
Sinal e magnitude
Nesta representação, caso tenhamos um número com n algarismos binários (n bits), seu sinal é obtido inserindo-se um bit adicional mais à esquerda, para indicar o valor do sinal, e sua magnitude, ou seja, o seu valor, continua mantendo os bits restantes deste número.
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.
Complemento de 1
Mais um método de representação de números positivos e negativos em binário. Um pouco mais complexo, porém mais confiável do que o método de sinal e magnitude.
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.
Vejaum 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
	Explicando a tabela, temos:
	
	
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
	Explicando a tabela, temos:
	
	
<="" p="" style="box-sizing: border-box; border: 0px; vertical-align: baseline; margin: 0px; padding: 0px; font-size: 17.6px; display: block; max-width: 100%; height: auto;">
Atividade
1 - Vimos na atividade da aula passada a calculadora do sistema operacional e sua funcionalidade para conversão de sistemas de bases diferentes. Agora vamos fazer um novo teste.
Será que esta mesma calculadora também faz cálculos aritméticos com números de outras bases?
Encontre os resultados dos cálculos abaixo:
AAA16 + BBB16 = 1665
1011012 + 1011112 = 1011100
101002 - 11112 = 101
Lembre-se: Abra a Calculadora e selecione o Menu. Depois, clique em Programador. A calculadora será alterada, podendo fazer conversões entre as bases.
Clique na base que você deseja fazer os cálculos. Ela alterará a cor e você poderá efetuar os cálculos naquela base especifica.
2 - Efetue a operação aritmética 101012 - 11112:
110
3 - Efetue operação aritmética 1110001112 + 110012:
111100000
4 - Efetue operação aritmética FACE16 – BA1A16:
40B4
Organização de Computadores / Aula 5 - Circuitos lógicos
· Introdução
· 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 estivesse ligada ou desligada, indicaria o bit 0 ou o bit 1.
Lembrando que este processamento utiliza o sistema de numeração binário correlacionando-se justamente os níveis lógicos.
Por exemplo:
	1
	LIGADO
	VERDADEIRO
	ALTO
	SIM
	0
	DESLIGADO
	FALSO
	BAIXO
	NÃO
Posteriormente, a válvula evoluía para transistores, utilizado até hoje nos computadores. Os transistores são formados por componentes eletrônicos que permitem a capacidade de processar informações binárias a nível lógico. Esses elementos são conhecidos como portas lógicas e são o assunto principal desta aula.
Portas Lógicas
Uma porta lógica é um componente de hardware que recebe um ou mais sinais de entrada e produz um sinal de saída, de acordo com a lógica estabelecida para a construção do referido circuito definido.
As portas lógicas foram definidas como representação através de:
	Símbolos
	Para que sejam montados os circuitos.
	Expressões
	Muito similares às expressões matemáticas.
Através desses tipos de representação, é possível identificar o resultado lógico que um circuito deseja representar.
Pode-se entender melhor as expressões lógicas através do uso de Tabelas Verdade , onde são mapeadas as possibilidades de um problema e identificadas as similaridades e as diferenças. Vamos entender melhor através de um exemplo.
Veja a tabela verdade do problema da lâmpada.
	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
Através dessa tabela, podemos perceber que o resultado lógico dependerá da função lógica que uma porta representará. É isso que estudaremos a partir de agora.
Atividade
Quando falamos de lógica, podemos ter muitas dúvidas, mas existe a certeza de que é uma análise feita com base em algumas informações, de forma que há um resultado lógico no fim da análise.
Vamos começar de maneira básica, analisando variáveis de um pequeno problema. Imagine que você tenha um quarto e precise acender a luz no mesmo. As únicas variáveis possíveis dentro desta análise seriam o interruptor do quarto e uma lâmpada, conforme o exemplo dado anteriormente.
Fazendo uma análise desta lógica, qual a possibilidade do quarto ter sua luz acesa?
Se temos duas variáveis conhecidas, temos algumas possibilidades para a luz acesa:
1- Lâmpada queimada, interruptor desligado;
2- Lâmpada queimada, interruptor ligado;
3- Lâmpada funcionando, interruptor desligado;
4- Lâmpada funcionando, interruptor ligado.
Sendo assim, temos 25% de certeza de que o quarto será aceso, pois, se a lâmpada ou interruptor estiverem ruins, não há sucesso.
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
Como Tabela Verdade, tem-se:
	A
	B
	A.B
	0
	0
	0
	0
	1
	0
	1
	0
	0
	1
	1
	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
Como Tabela Verdade, tem-se:
	A
	B
	A+B
	0
	0
	0
	0
	1
	1
	1
	0
	1
	1
	1
	1
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:
Como Tabela Verdade, tem-se:
	A
	X
	0
	1
	1
	0
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:
Como Tabela Verdade, tem-se:
	A
	B
	X
	0
	0
	1
	0
	1
	1
	1
	0
	1
	1
	1
	0
Veja e compare o resultado da Tabela Verdade com a função E. Você perceberá que realmente a saída foi totalmente invertida, sendo que o restante permaneceu da mesma forma.
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çãoOU 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:
Como Tabela Verdade, tem-se:
	A
	B
	X
	0
	0
	1
	0
	1
	0
	1
	0
	0
	1
	1
	0
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:
Como Tabela Verdade, tem-se:
	A
	B
	X
	0
	0
	0
	0
	1
	1
	1
	0
	1
	1
	1
	0
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:
Como Tabela Verdade, tem-se:
	A
	B
	X
	0
	0
	1
	0
	1
	0
	1
	0
	0
	1
	1
	1
Expressões Lógicas
Uma vez reconhecidas as portas lógicas e suas funcionalidades, é importante entender a construção de circuitos através de expressões lógicas, bem como o inverso, ou seja, a construção de expressões com base no circuito já informado.
Vejamos um exemplo:
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)
Atividade
Uma vez entendido como construir a expressão lógica ou expressão booleana de um circuito, tente fazer a construção da expressão que represente o circuito abaixo:
GABARITO Seguindo a proposta da direita para a esquerda, identificamos três variáveis na porta final do circuito, formado por uma porta OU (+):
 Sendo assim, temos: S = S’ + S’’ + S’’’ Partindo desse pressuposto: S’ = A . B S’’ = C (lembrando que existe uma porta inversora) S’’’= C . D (lembrando que existe uma porta inversora) Sendo assim: 
S = (A . B) + C + (C . D) Lembre-se que o inverso também pode ser feito, ou seja, construir o circuito através da expressão. Tente construir o circuito da expressão abaixo: 
S = [(A + B) + (C .D)] .D Observação: Assim como usado na matemática, parenteses, chaves, entre outros símbolos que indicam a hierarquia das expressões, também devem ser respeitados na divisão da construção dos circuitos.
Tabela Verdade
	A
	B
	C
	A
	C
	A.B.C
	S
	0
	0
	0
	1
	1
	0
	1
	0
	0
	1
	1
	0
	0
	1
	0
	1
	0
	1
	1
	0
	1
	0
	1
	1
	1
	0
	0
	1
	1
	0
	0
	0
	1
	0
	0
	1
	0
	1
	0
	0
	0
	0
	1
	1
	0
	0
	1
	1
	1
	1
	1
	1
	0
	0
	0
	1
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:
3 variáveis , 8 variações na Tabela Verdade (23)
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.
Sendo assim, é obtido o resultado final da Tabela Verdade.
Exercício
Questão 1: Considere a Tabela Verdade da expressão S=(A+B).A. Qual a probabilidade de ocorrer uma saída positiva? (Igual a 1)
50%
Questão 2: Considere a Porta Lógica abaixo. Como ela é conhecida?
NAND
Questão 3: Considere a expressão lógica abaixo. Qual a probabilidade de ocorrer uma saída igual a zero (0)?
25%
Organização de Computadores / Aula 6 - Modelo de Von Neumann
Rangel
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.
Nesse modelo, dados e instruções são armazenadas em uma única memória, utilizada tanto para leitura quanto para escrita, e podem ser acessados através de endereços.
Programas agora são tratados também como dados, que, uma vez executados, iniciam o ciclo de Busca-Decodificação-Execução para que obtenham o resultado esperado de suas instruções.
Atividade
Você sabe o que são unidades de entrada e de saída em um computador? Cite alguns exemplos.
GABARITO
• Unidades de Entrada: Mouse, Teclado, Touchpad de um notebook;
• Unidades de Saída: Impressora, Monitor (que não seja touch);
Qual é a frequência de operação do seu processador?
GABARITO
Se não tiver descoberto, utilizando o Windows, abra o Windows Explorer, clique com o botão direito do mouse em Meu Computador e peça Propriedades. Veja que, na janela à direita, há a informaçãodo seu processador e a frequência de trabalho do mesmo.
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:
A Unidade Central de Processamento - UCP (ou CPU, que vem do inglês Central Processing Unit) é considerada o cérebro do computador, responsável pela execução dos programas armazenados na memória através do ciclo de Busca-Decodificação-Execução.
Além disso, tem como função controlar as operações do computador entre os demais componentes.
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.
Alguns registradores tem uma finalidade específica e fazem parte do diagrama funcional da CPU, sendo eles:
	RDM
	Registrador de Dados de Memória - tem conteúdo que foi lido ou que será gravado em uma local da memória.
	REM
	Registrador de Endereços de Memória - contém o endereço da Memória Principal onde a CPU deseja efetuar uma leitura ou gravação.
	RI
	Registrador de Instruções - tem o conteúdo da instrução em execução no momento.
	CI
	Contador de Instrução - também chamado de Contador de Programa, contém o endereço da próxima instrução que será requisitada na memória. Toda vez que este conteúdo é lido, já á alterado para o endereço da próxima instrução a ser executada.
	ACC
	Acumulador - armazena os dados temporários para as operações na ULA.
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.
	Barramento de dados
	Barramento de endereços
	Barramento de controle
	Canal de comunicação bidirecional que interliga o RDM à memória e outros dispositivos. Sua função é a transferência de conteúdo entre a CPU e a memória principal e os dispositivos de entrada e saída.
	Canal unidirecional que faz a transferência de bits que representam um endereço de memória.
	Canal bidirecional que efetua o envio de sinais de controle utilizados para diversos elementos do computador, como se fossem ações a serem feitas por estes elementos.
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:
	Busca
	Decodificação
	Execução
	• Copiar o endereço contido no CI para o registrador de endereços da memória (REM) através do barramento de endereços;
• Enviar um sinal de controle com comando de leitura, via barramento de controle, pela UC para a Memória Principal;
• Ler o conteúdo no endereço da memória, armazenando o mesmo no RDM, através do barramento de dados de memória;
• Copiar o registrador de dados da memória (RDM) para o (RI);
• Atualizar o CI com o próximo endereço a ser executado.
	Nessa fase, é determinada qual instrução deve ser executada, enviando o conteúdo do RI para decodificação pelo DI.
	• Encaminhamento da operação para finalização pela UC;
• Fim da execução da operação.
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).
Exercícios
Questão 1: Considere as alternativas abaixo sobre overclock:
1) Técnica que permite que o processador trabalhe em uma frequência maior do que aquela para a qual foi projetado;
2) Permite que ocorra uma queda na emissão de calor por parte do processador;
3) É utilizado também para aumentar a frequência de trabalho em outros periféricos, como placas de vídeo.
Somente a alternativa 1
Questão 2: Registrador de Instrução (ou PC Counter) é:
Um registrador interno ao processador que armazena o endereço da próxima instrução a ser executada.
Questão 3: É responsável por enviar para a memória principal o endereço do conteúdo a ser consultado para execução da instrução:
REM
Organização de Computadores / Aula 07: Processador e Conjunto de Instruções
· IntroduçãoIntrodução
Uma vez conhecido o funcionamento de um processador de acordo com o modelo de Von Neumann e do ciclo de instrução, é importante entender as instruções.
Todo programa desenvolvido precisa ser traduzido para linguagem de máquina, de forma que as instruções sejam compatíveis com aquele processador, uma vez que todo o processador contém um conjunto de instruções relacionado à capacidade de executar.
Instrução de Máquinas
Como já estudado, quem executa um programa e suas instruções é 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 máquina por um compilador antes de ser efetivamente carregado em memória, a fim de que o processador possa executá-lo.
A linguagem de máquina é composta de códigos binários, representando essas 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:
	Matemáticas
	Ex: Operações aritméticas, lógicas, de complemento.
	Movimentação de dados
	Ex: Movimentação da memória para um registrador.
	Entrada/saída
	Ex: Leitura e gravação de dados em dispositivos externos.
	Controle
	Ex: Desvio condicional da sequência de execução (Se X>18 então ...).
Formato das Instruções
	
	Operando
Define o valor binário da localização do
dado ou mesmo o próprio conteúdo do dado a ser processado pela instrução
definida em seu código de operação.
Normalmente o operando define um endereçode memória que possui o dado armazenado ou onde será armazenado o resultado de
uma operação. Operações aritméticas possuem em geral 2 ou 3 operandos.
	Código
de operação
	Operando
1
	Operando
2
	Operando
3
	Código de Operação
Define a operação que será realizada pelo
processador. É o campo da instrução onde o valor binário identifica a operação
a ser realizada
Este código é a entrada no Decodificador de
Instruções para a unidade de controle. Cada instrução possui um código único,
que será seu identificador dentro da execução de instruções em um processador.
	
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 máquina 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:
	Quantidade de instruções
	
	Quantidade de operandos (normalmente 1, 2 ou 3 operandos)
	
	Modo de endereçamento
Veja o exemplo de uma instrução com 2 operandos:
		ADD
	11010011
	8 BITS
		SALÁRIO
	110011001100
	12 BITS
		TAXA
	101010101010
	12 BITS
Podemos ver que na formação da instrução temos:
	A Operação ADD definida por um código binário de 8 bits
	
	Somado a 2 Operandos, separados por vírgulas e definidos por 12 Bits cada um
Totalizando 32 Bits de uma instrução
Isso já nos leva a entender que a Palavra desse processador seria de 32 Bits, que é o tamanho da informação que trafega entre a CPU e a memória principal. Dessa forma, temos um exemplo de uma instrução definida por 1 operação e 2 operandos.
Veremos posteriormente exemplos práticos de instruções com 1, 2 e 3 Operandos, o que permite verificar como é o processamento interno de uma máquina, por exemplo, na execução de uma expressão matemática.
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:
	ADD
	A, B, X
	
	X=A+B
	SUB
	A, B, X
	
	X=A-B
	MPY
	A, B, X
	
	X=A*B
	DIV
	A, B, X
	
	X=A/B
Quando verificar as instruções acima, pense da seguinte forma:
	ADD
	A, B, X
	
	“Pegue A, some com B, e armazene em X”
Seguindo esse pensamento, como seria escrito um conjunto de instruções de 3 operandos para executar o cálculo da expressão abaixo?
	X = A*(B+C*D-E/F)
Resultado:
	X = A*(B+C*D-E/F)
	1
	MPY
	C,D,T1
	2
	DIV
	E,F,T2
	3
	ADD
	B,T1,X
	4
	SUB
	X,T2,X
	5
	MPY
	A,X,X
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:
	X = A*(B+C*D-E/F)
	1
	MPY
	C,D,T1
	Ficamos com X = A*(B+T1-E/F)
	2
	DIV
	E,F,T2
	Ficamos com X = A*(B+T1-T2)
	3
	ADD
	B,T1,X
	Ficamos com X = A*(X-T2)
	4
	SUB
	X,T2,X
	Ficamos com X = A*(X)
	5
	MPY
	A,X,X
	Ficamos com X = X
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.
	ADD
	A, B
	
	A=A+B
	SUB
	A, B
	
	A=A-B
	MPY
	A, B
	
	A=A*B
	DIV
	A, B
	
	A=A/B
	MOVE
	A, B
	
	A=B
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:
	X = A*(B+C*D-E/F)
	1
	MPY
	C,D
	
	2
	DIV
	E,F
	
	3
	ADD
	B,C
	
	4
	SUB
	B,E
	
	5
	MPY
	A,B
	
	6
	MOVE
	X,A
	
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:
	X = A*(B+C*D-E/F)
	1
	MPY
	C,D
	Ficamos com X = A*(B+C-E/F)
	2
	DIV
	E,F
	Ficamos com X = A*(B+C-E)
	3
	ADD
	B,C
	Ficamos com X = A*(B-E)
	4
	SUB
	B,E
	Ficamos com X = A*(B)
	5
	MPY
	A,B
	Ficamos com X = A
	6
	MOVE
	X,A
	Ficamos com X = X
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.
	ADD
	Op.
	
	ACC=ACC+Op
	SUB
	Op.
	
	ACC=ACC-Op
	MPY
	Op.
	
	ACC=ACC*Op
	DIV
	Op.
	
	ACC=ACC/Op
	LDA
	Op.
	
	ACC=Op
	STA
	Op.
	
	Op=ACC
Nesse tipo de execução, tem-se 2 novas operações, sendo elas LDA (LOAD) e STA (STORAGE), onde:
	• LDA se refere a carregar um conteúdo armazenado na memória; e
	• STA a armazenar um conteúdo na memória
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:
	X = A*(B+C*D-E/F)
	1
	LDA C
	Carrega C no Acc
	
	2
	MPY D
	Efetua Acc*D e grava em Acc
	
	3
	STA X
	Armazena o conteúdo de Acc em X
	
	4
	LDA E
	Carrega E no Acc
	
	5
	DIV F
	Efetua Acc/F e grava em Acc
	
	6
	STA T1
	Armazena o conteúdo de Acc em T1
	
	7
	LDA B
	Carrega B no Acc
	
	8
	ADD X
	Efetua Acc+X e grava em Acc
	
	9
	SUB T1
	Efetua Acc-T1 e grava em Acc
	
	10
	MPY A
	Efetua Acc*A e grava em Acc
	
	11
	STA X
	Grava o conteúdo de Acc em X
	
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 umregistrador-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
	
	• Paralelismo no nível de processador
Paralelismo no nível de instrução
Dos diversos métodos de paralelismo a nível de 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:
		Tempo
	1
	2
	3
	4
	5
	6
	7
	8
	9
	10
	11
	12
	
	[C]
	[M]
	[D]
	[X]
	[W]
	
	
	
	
	
	
	
	
	
	[C]
	[M]
	[D]
	[X]
	[W]
	
	
	
	
	
	
	
	
	
	[C]
	[M]
	[D]
	[X]
	[W]
	
	
	
	
	
	
	
	
	
	[C]
	[M]
	[D]
	[X]
	[W]
	
	
	
	
	
	
	
	
	
	[C]
	[M]
	[D]
	[X]
	[W]
	
	
	
	
	
	
	
	
	
	[C]
	[M]
	[D]
	[X]
	[W]
	
	
	
	
	
	
	
	
	
	[C]
	[M]
	[D]
	[X]
	[W]
	
	
	
	
	
	
	
	
	
	[C]
	[M]
	[D]
	[X]
	[W]
Carrega Instrução [C]
	
	Acessa Memória [M]
	
	Decodifica Instrução [D]
	
	Executa Instrução [X]
	
	Armazena resultado [W]
Fonte: Adaptado pelo Autor
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.
Atividade
Imagine que você é uma CPU, porém não conhece instruções para multiplicação e divisão de números. Como poderia calcular uma multiplicação ou divisão, sem possuir essas operações?
GABARITO
É necessário utilizar operações de soma ou de subtração, porém usando um contador que verifique quantas vezes já foi somado, ou subtraído, para validar com a conta a ser efetuada originalmente. Você verá que, no passado, para execução de algumas instruções em processador, esse método também precisou ser utilizado.
Exercícios
Questão 1: Considerando uma instrução com código de operação de 4 bits e operando de 8 bits, quantas instruções no máximo podem existir nessa configuração?
16 instruções diferentes
Questão 2: Considere a expressão X = A*(B+C*D-E/F). O conjunto de instruções de 3 operandos abaixo representa as instruções necessárias para a aplicação da mesma.
01: MPY C,D,T1
02: DIV E,F,T2
03: ADD B,T1,X
04: __________
05: MPY A, X,X
Identifique a instrução na linha 04 para que o conjunto de instruções obtenha o resultado correto da expressão:
SUB X,T2,X
Questão 3: São Modos de Endereçamento de Instruções:
Imediato
Direto
Indireto
Por registrador
Organização de Computadores / Aula 08: Memória
O que é memória?
Memória é 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ção.
A memória não pode ser considerada um componente único, mas sim um subsistema.
Veremos nesta e na próxima aula que, para o perfeito funcionamento otimizado do computador, vários tipos de memória são envolvidos a fim de compensar a velocidade da CPU, que é sempre superior à da velocidade da memória.
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 nanossegundos (isto significa 5 bilionésimos de segundo), ao contrário do processamento da memória principal (que será vista detalhadamente na próxima aula).  
Como sabemos que tudo que está sendo processado fica armazenado na memória 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 memória 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:
Memória primária
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.
Memória secundária
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.
Dessa forma, podemos considerar como hierarquia de memória a estrutura apresentada a seguir:
	Classificação
	Nome
	Nome
	Custo
	Volatilidade
	Velocidade
	Primária
	Registradores
	Bytes
	Muito alto
	Volátil
	
	Maior
	
	Memória Cache
	de K a MBytes
	Alto
	Volátil
	
	
	
	Memória Principal
	de M a GBytes
	Médio
	Volátil
	
	
	Secundária
	Disco Rígido, DVD, Bluray
	de G a TBytes
	baixo
	Não-Volátil
	
	Menor
Fonte: Adaptado pelo autor
Registradores
Quando estudamos o ciclo de instrução, ou ciclo de busca–decodificação e execução, verificamos a presença de registradores, que são dispositivos de armazenamento temporário, localizados na CPU, utilizados constantemente dentro do processo de execução das instruções.
Por serem usados pela CPU, entende-se que são memórias muito rápidas. Na verdade, são consideradas as memórias

Outros materiais