31/1/2010
Organização e Arquitetura de Computadores Prof. Aristides
A MELHOR FACULDADE TECNOLÓGICA DE FORTALEZA. Janeiro de 2005
HARDWARE (O Computador) DADOS (Informações)
PESSOAS (Usuários)
Janeiro de 2005
SOFTWARE (Programas)
Evolução dos Computadores; Linguagem de Máquina; Organização Interna, Análise de Desempenho; Organização de Memória e Dispositivos de Entrada e Saída.
Janeiro de 2008
1
31/1/2010
•
Bibliografia Básica: • Organização e Projeto de Computadores - A Interface Hardware/Software, J L Hennessy, D APatterson; • Arquitetura e Organização de Computadores, W Stallings, trad da 5a. Ed, Pearson-Prentice Hall, 2002.
Capitulo 1: Componentes do Computador.
•
Bibliografia Complementar: BROOKSHEAR, J. Glenn. Ciência da Computação - Uma Visão Abrangente. Porto Alegre: Bookman, 2000.
Capitulo 1: • O Computador e o Processamento da Informação; • Sistema Binário e Hexadecimais – Revisão Revisão;; • AEvolução dos Computadores; • Modelo Hipotético de um Computador; • Componentes do Computador; • Memória;
1.1 Computador e o Processamento da Informação.
• Memória Principal; • Unidade Central de Processamento (UCP); • Acesso à Memória Principal; • Lógica Temporizada; • Apresentação de uma arquitetura: Microprocessador Intel 8080.
2
31/1/2010
A Informação Estamos vivendo a Era da Informação. Mas, afinal, o que é INFORMAÇÃO INFORMAÇÃO? Claude Shannon (autor de "The Mathematical Theory of Communication") define que informação está presente sempre que um sinal é transmitido de um ponto a outro. São informações: • palavras, • um quadro (sinais visuais na forma de ondas de luz), • os impulsos elétricos através dos quais nossos olhos transmitem imagens ao cérebro, música, etc. Além de transmitidas e recebidas, informações podem ser armazenadas e depois reproduzidas: em livros, em discos, em fotografias, e na memória humana. Desta forma, uma informação original pode ser reproduzida (transmitida muitas vezes).
Processamento da informação - refere-se ao armazenamento, transmissão, combinação e comparação da informação. • Alguns agentes contribuíram de forma expressiva para estarmos hoje vivendo a Era da Informação. • A escrita iniciou este processo, a imprensa foi um passo muito importante, e recentemente as telecomunicações difundem informação instantânea por todo o planeta. • O mais recente dos agentes fundamentais que propiciaram esta onda de informações é também o mesmo agente da tecnologia que mais nos auxilia a lidar com ela, um agente que nos permite armazenar, classificar, comparar, combinar e exibir informações acuradamente e com velocidade: este agente tecnológico é o COMPUTADOR. COMPUTADOR
Número
1.1.1 Sistema Binário e Hexadecimais Revisão.
Coisa banal que usamos no nosso dia-a-dia. O que é número? Bem, pode ser dito que é um símbolo que representa uma coleção de objetos iguais.
3
31/1/2010
Existe m duas maneiras de representar uma informação:
Seja, por exemplo, o objeto representado por ☺. Assim a coleção ☺ ☺ ☺ seria representada por 3
• analogicamente
☺, a coleção ☺ ☺ ☺ ☺ ☺ por 5 ☺, etc. Simples não?
• digitalmente.
A - COLEÇÃO
• Os símbolos ele mentares são os dígitos ou algarismos e a quantidade de les é a base do sistema de numeração. • Portanto, um sistema de nume ração pe rmite re presentar qualque r cole ção com uma quantidade finita de símbolos elementares. • E o nosso sistema de uso corrente é o de cimal por te r a base 10. • Mas pode mos ter siste mas de qualquer base , de sde que maior que 1.
1 0
1
1 0
1
B - DECIMAL
C - OCTAL
D - HEXADECIMAL
E - BINÁRIO
0
0
0
0
*
1
1
1
1
**
2
2
2
10
***
3
3
3
11
****
4
4
4
100
*****
5
5
5
101
******
6
6
6
110
*******
7
7
7
111
********
8
10
8
1000
*********
9
11
9
1001
**********
10
12
A
1010
***********
11
13
B
1011
************
12
14
C
1100
*************
13
15
D
1101
**************
14
16
E
1110
***************
15
17
F
1111
****************
16
20
10
10000
*****************
17
21
11
10001
******************
18
22
12
Janeiro de 2005 10010
4
31/1/2010
•
Siste ma numérico de cimal A de signação de de cimal para este sistema numé rico, advé m de usar a base 10 e usa os algarismos: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9. 4631
• Siste ma numérico binário: • Como o próprio nome diz , um sistema binário conté m ape nas dois e lementos ou estados. • Num sistema numé rico isto é expre sso como uma
0
1 x 10 = 1 3 x 101 = 30 6 x 102 = 600 4 x 103 = 4000 Resultado = 4631
• De vido a sua simplicidade , microproce ssadores usam o siste ma binário de numeração para manipular dados; • Dados binários são re prese ntados por dígitos binários chamados "bits“; • O te rmo "bit" é de rivado da contração de "binary digit". Microprocessadores ope ram com grupos de "bits" os quais são chamados de palavras; • O núme ro binário 1 1 1 0 1 1 0 1 conté m oito "bits".
base dois, usando os dígitos 0 e 1. • Esse s dois dígitos tê m o me smo valor básico de 0 e 1 do siste ma numérico de cimal.
10011011 1 x 20 = 1 1 x 21 = 2 0 x 223 = 0 1x 2 =8 1 x 24 = 16 0 x 25 = 0 0 x 26 = 0 1 x 27 = 128 Resultado = 155
10111 = 1 x 2 4 + 0 x 2 3 + 1 x 2 2 + 1 x 2 1 + 1 x 2 0 = 23
5
31/1/2010
O sufixo K (kilo), que, em decimal, representa 1.000 vezes como em Km e Kg), em binário representa 210 vezes (1.024). Logo, 1 Kbyte representa 1.024 bytes, 2 Kbytes = 2.048 bytes.
Palavras binárias re ce be m nomes e spe ciais conforme a quantidade de bits utilizada pe las mesmas:
Sufixo
Q uantidade
• Nibble = 4 bits (2 4 = 16 variaçõe s);
Kilo (K)
210 = 1.024
• Byte = 8 bits (2 8 = 256 variaçõe s);
Mega (M)
220 = 1.048.576
• Word = 16 bits (2 16 = 65.536 variaçõe s);
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 Janeiro de 2005
• Double Word = 32 bits (2 32 = 4.294.967.296 variações); (264
• Quad Word = 64 bits = 18.446.744.073.709.600.000 variaçõe s).
• Siste ma numérico hexadecimal
Ge ralmente , os núme ros he xade cimais são escritos com um pre fixo “$” ou “0x”, ou com o sufixo “h”, para re alçar o sistema numérico que e stamos a utilizar.
De sde os primeiros microproce ssadore s, as palavras binárias de dados manipuladas por ele s e ram múltiplos de nibble . Com isso uma outra base numé rica passou a se r amplamente utilizada, a base 16 (hexadecimal).
Assim, o número he xade cimal A37E, pode ainda se r mais corre tamente e scrito como $A37E, 0xA37E ou A37Eh.
“0, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F”. F As le tras A, B, C, D, E e F corre sponde m re spectivamente aos de cimais 10, 11, 12, 13, 14 e 15.
0000 = 0 0001 = 1 0010 = 2 0011 = 3
0100 = 4 0101 = 5 0110 = 6 0111 = 7
1000 = 8 1001 = 9 1010 = A 1011 = B
1100 = C 1101 = D 1110 = E 1111 = F
6
31/1/2010
A 3 7 E ▼ ▼ ▼ ▼ $A37E = 1010001101111110 14 x 16 0 = 14 7 x 16 1 = 112 3 x 16 2 = 768 10 x 16 3 = 40960 Re sultado = 41854
Decimal 2 0 0 5 Operação 2x103 + 0x102 + 0x101 + 5x100 Decimal 2000 + 0 + 0 + 5 = 2005 Binário 1 1 1 1 1 0 1 0 1 0 1 Operação 1x210 +1x29 +1x28 +1x27 +1x26+0x25 +1x24 +0x23+1x22 +0x21 +1x20 Decimal 1024 +512 + 256 +128 + 64 + 0 + 16 + 0 + 4 + 0 + 1 = 2005
Octal 3 7 2 5 Operação 3x83 + 7x82 + 2x81 + 5x80 Decimal 1536 + 448 + 16 + 5 = 2005 Hexadecimal Operação Decimal
O Número 2005 em: • Binário
• Octal 7 D 5 2 1 0 7x16 + 13x16 + 5x16 • Hexadecimal 1792 + 208 + 5 = 2005
1.2 A Evolução dos Computadores
7
31/1/2010
• Ábaco A primeira calculadora que se tem notícias é o ábaco, de orige m chine sa, do sé culo V a.C. capaz de e fe tuar ope rações algé bricas e lementares.
• Calculadoras mecânicas Ante riorme nte à dé cada de 40 já e xistiam calculadoras me cânicas, de ntre elas, pode se destacar: a calculadora de Charles Babbage
TEAR PROGRAMÁVEL • Em 1801, Joseph Marie Jacquard inventou um tear mecânico dotado de uma leitora de cartões perfurados, os quais representavam os desenhos do tecido; • portanto um processador das informações relativas à padronagem do tecido; • o tear funcionava tão bem que este é o primeiro exemplo prático de desemprego provocado pela automação.
Atribui-se a Blaise Pascal (1623-1662) a construção da primeira calculadora mecânica capaz de fazer somas e subtrações. • A primeira máquina de verdade foi construída por Wilhelm Schickard (1592-1635); • somar, subtrair, multiplicar e dividir; • perdida durante a guerra dos trinta anos; • Durante muitos anos nada se soube sobre essa máquina, por isso, atribuía-se a Blaise Pascal (1623-1662) a construção da primeira máquina calculadora, que fazia apenas somas e subtrações.
• Charles Babbage (1792-1871) concebeu um Computador Analítico dotado de um dispositivo a que chamou de MOINHO (uma máquina de somar com precisão de até 50 casas decimais), e um dispositivo de entrada (inspirado no tear de Jacquard) que leria cartões perfurados contendo não somente números (os dados) mas também INSTRUÇÕES (o que fazer com os dados). • Imaginou ainda um dispositivo de memória que chamou de ARMAZÉM para guardar os números, um banco com 1000 "registradores" cada qual capaz de armazenar um número de 50 dígitos. • Finalmente, incluiu um dispositivo impressor para dar saída aos resultados.
8
31/1/2010
As instruções (gravadas em cartões) possíveis implementadas pelo moinho eram: • entrar com um número no armazém • entrar com um número no moinho • mover um número do moinho para o armazém • mover um número do armazém para o moinho • comandar o moinho para executar uma operação • sair com um resultado.
de
ser
Para construir um dispositivo a partir destas idéias, Babbage contou com a colaboração inestimável da matemática Ada Augusta Byron, Lady Lovelace, filha do poeta Lord Byron. Ada desenvolveu séries de instruções para o calculador analítico, criando conceitos tais como sub-rotinas, loops e saltos condicionais. Babbage é considerado o precursor do computador. Ada é considerada a precursora do software.
ABC Computer (Atanasoff Atanasoff--Berry Computer Computer))
Herman Hollerith (1860-1929) também inspirou-se nos cartões de Jacquard para criar uma máquina para acumular e classificar informações - a Tabuladora de Censo. Aplicação: processamento dos dados do censo. 1941- Konrad Zuse (Alemanha) Primeiro computador digital, automático, programável, de propósito geral, completamente funcional (eletromecânico).
Colossus, desenvolvido na Inglaterra no período de 1939 a 1943 com a intenção de quebrar o código da máquina de criptografia alemã denominada Enigma, que gerava seqüências aleatórias com período de 1019 caracteres. Deste projeto, tomou parte Alan Turing. Após a guerra, esse projeto foi descontinuado, mas permaneceu secreto até 1973. John V. Atanasoff Clifford Berry
John V. Atanasoff / Clifford Berry (EUA) Primeiro protótipo de calculador eletrônico que funcionou nos EUA. Construído entre 1937 e 1942 na Univ. do Estado de at Iowa.
9
31/1/2010
1944 - Howard Aiken (Universidade de Harvard - EUA) Primeiro computador eletromecânico automático de grande porte.
Howard Hathaway Aiken
Mauchley e Eckert - ENIAC – 1946: • 18mil válvulas, 1500 relés e 6mil chaves; • Marco da história do computador moderno; • Fundaram uma empresa (hoje, Unisys).
• Primeira geração – ENIAC (Eletronic Numerical Integrator and Computer), projetado durante a Segunda Grande Guerra com a finalidade de calcular tiros de artilharia. Quando ele ficou pronto, em 1946, a guerra já havia acabado. Seu peso era de 30 t, consumia 140 kW e tinha 19.000 válvulas. Primeiro computador eletrônico digital de grande porte. John Mauchly e J. Presper Eckert. • Na década de 40 surgiram as primeiras válvulas eletrônicas; • Cada válvula era capaz de representar um bit de informação; • Os bytes eram compostos por oito válvulas.
Como não se tinha muita confiança nos resultados, de vido à constante queima de válvulas, cada cálculo e ra e fe tuado por três circuitos dife rentes e os re sultados comparados. Para 2 KB de memória se riam ne ce ssárias 16.384 válvulas e para trê s circuitos 16.384 x 3 = 49.152 válvulas.
10
31/1/2010
Come mora-se na Unive rsidade da Pensylvania os cinqüenta anos do ENIAC, e para tal foi montado o ENIAC num chip, com as me smas funções do original.
Surge m os grandes computadores e , por detrás deles, as grande s e mpresas: IBM, Bourroughs, NCR, e tc..
CHIP ENIAC dese nvolvido para as comemoraçõe s dos 50 anos do ENIAC
Era a visão de homens simple s pe rante máquinas maravilhosas e as vezes fatais, como conta Arthur Clark e m "2001“.
É a e ra de máquinas grandes, acessadas por uma multidão de te rminais burros. Che gou-se a pre ver que no mundo have ria cinco grande s computadores, um para cada continente.
A se guir ve re mos quatro marcos inte ressante s sobre esse passado.
O termo “bug”, que sempre foi usado pelos engenheiros para indicar pequenas falhas em suas máquinas. Em 1947, os engenheiros que trabalhavam com o Harvard Mark I encontraram uma traça entre seus circuitos, prenderam-na no livro de registro e rotularam-na como o “primeiro bug” encontrado.
O computador IAS, de 1952, que foi construído segundo orientação de von Newmann e muito influenciou o projeto do IBM 701, o primeiro computador eletrônico comercializado pela IBM. Computador IAS, 1952.
O primeiro "bug", 1947
11
31/1/2010
O UNIVAC, proje tado pe los idealizadores do ENIAC.
PDP-8, primeiro computador com preço acessível, tendo sido uma máquina da série PDP onde Ken Thompson e Dennis Ritchie desenvolveram o UNIX.
Modelo do UNIVAC, 1954
Início do domínio da IBM Minicomputador PDP-8, 1965 Barrame nto único Surgimento dos minicomputadores
Janeiro de 2005
• Se gunda Ge ração
Primeiro projeto de transistor
• Foi em 1947 que surgiu o primeiro transistor, produz ido pe la Bell Telephone Laboratories; • Os transistores e ram e são muito mais confiáveis que as válvulas;
• Da mesma forma os transistores, nos circuitos digitais foram utilizados para representar os dois estados: ligado/desligado, ou seja, zero/um;
• São feitos de cristal de silício, o e lemento mais abundante na Te rra; • Em 1954 a Texas Instruments iniciou a produção come rcial de transistores;
• Nos anos 60 e 70 devido ao emprego do transistor nos circuitos, se deu a explosão, o boom do uso de computadores. Ocupavam menos espaço e tinham um custo satisfatório.
12
31/1/2010
• Em 1968 chegou o primeiro computador da UNICAMP, um IBM 1130, com 16KB de memória e um disco de 1 MB, foi um aconte cimento, ele trabalhava com cartõe s pe rfurados. Rodava programas e m ASSEMBLER, Fortran, e PL1;
• Para dar partida, se utiliz ava da console e cartões pe rfurados e spe cialme nte codificados, de nominados “ cold start ”, funçõe s e xe cutadas hoje pela RO M e o BIO S.
• Q uarta ge ração
• Te rce ira ge ração
• Nos anos 60, iniciou-se o encapsulamento de mais de um transistor num mesmo re ce ptáculo, surgiu assim o Circuito Integrado CI, os primeiros contavam com ce rca de 8 a 10 transistore s por capsula ( chip ).
Já na área dos microcomputadores, perguntamo-nos: qual foi o primeiro ? Em 1975 a Revista “Popular Electronics” apresentou o projeto e anunciou a venda do “kit” do primeiro microcomputador. Era o Altair 8800, baseado no microprocessador 8008 da Intel. Foi para esse microcomputador que a dupla Paul Allen e Bill Gates vendeu um de seus primeiros produtos: um interpretador Basic Basic.
Em novembro de 1971, a Intel introduziu o primeiro microprocessador comercial, o 4004, inventado por três engenhe iros da Intel. Primitivo aos padrões de hoje , ele continha somente 2.300 transistores e exe cutava ce rca de 60.000 cálculos por segundo. Nos dias de hoje , vinte e sete anos de pois, um microprocessador é o produto mais comple xo produzido em massa, com mais de 5.5 milhões de transistores, exe cutando centenas de milhões de cálculos por se gundo.
13
31/1/2010
O Altair 8800 aberto.
Integração de Circuitos em Escala muito Alta (1980 - ?) • Circuitos integrados VLSI; • Milhões de transistores em um único chip; • Surgimento dos microcomputadores; • Apple e Apple II – Machintosh; • IBM PC; • Início da computação pessoal.
• Q uinta Geração Ainda em estudo, poderá utilizar Biochips. Os computadores serão então capazes de entender a linguagem natural do homem, e a Inteligência Artificial será a fonte de diversos avanços.
Quadro Comparativo de Características de microprocessadores Microprocessador
Data de Lançamento
Palavra de Dados
Endereçamento Máximo de MP
Intel 4004
1971
4
1 K Bytes
Intel 8080
1973
8
64 K Bytes
Intel 8088
1980
16
1 K Bytes
Intel 80286
1982
16
16 M Bytes
Intel 80386
1985
32
4 G Bytes
Intel 80486
1989
32
4 G Bytes
Intel Pentium
1993
32
4 G Bytes
Motorola MC 6800
1974
8
64K Bytes
MC 68000
1979
32
16 M bytes
MC 68010
1983
32
16 M Bytes
MC 68020
1984
32
4 G Bytes
MC 60030
1987
32
4G bytes
MC 68040
1989
32
4 G bytes
Zilog Z80
1974
8
64 K bytes
Zilog Z80
1979
16
1M de Bytes Janeiro 2005
14
31/1/2010
Leitura Recomendada: Tanembaum – Capítulo 1; Stallings – Capítulo 1 e 2; Henessy e Patterson – Capítulo 1.
MODELO HIPOTÉTICO DE UM COMPUTADOR
• O pe rador - só faz o que for ordenado, não toma
1.3 Modelo Hipotético de um Computador.
Para que este modelo funcione , de ve existir em cada cartão uma INSTRUÇÃO . O ope rador se gue de e scaninho em escaninho, fazendo exatamente o que e stá escrito e m cada cartão, até encontrar um cartão conte ndo uma instrução que manda que e le PARE PARE.
Caixa de entrada
de cisões; • Conjunto de escaninhos - com capacidade para um cartão cada; • Máquina de calcular - e xecuta as ope rações;
Máquina de escrever
• Caixa de e ntrada - para re cebe r cartões de fora; • Máquina de e scre ve r - para dar saída às informações / re sultados.
Conjunto de escaninhos Máquina de calcular
15
31/1/2010
ALGORITMO
EXERCÍCIO 1: Obs.: Utilizaremos a notação (E10) significando "o conteúdo do escaninho E10", isto é, o valor que está agora armazenado no escaninho E10 (o u, mais formalmente, o valor corrente daquela posição de memória). E1 : armazene o valor 1 no E10 E2 : leia o conteúdo de E11 (externo - a caixa de entrada) E3 : multiplique E10 com E11 (usando a má quina de calcular) e armazene o resultado em E10 E4 : subtraia o valor 1 de E11 E5 : se o valor de E11 > 0, volte para E3, senão continue E6 : imprima o conteúdo de E10 (usando a máquina de escrever) E7 : PARE E8 : E9: A partir de um sinal externo do tipo COMECE COMECE, este modelo inicia do E1 da í por diante prossegue até E8 (o final). Resolva o exercício; o que faz este algorítmo?
E10
E11
AÇÃO
E1-- armazene o valor 1 no E10 E1
1
-
-
E2 - leia (E11) (caixa de entrada - p.ex p.ex:: 4)
-
4
-
E3 - (E10) x (E11); armazene resultado em E10
4
-
-
E4 : subtraia o valor 1 de (E11)
-
3
-
E5 : se (E11) > 0, volte para E3, senão continue
-
-
Volta p/E p/E3 3
E3
12
-
-
E4
-
2
-
E5
-
-
Volta p/E p/E3 3
E3
24
-
-
E4
-
1
-
E5
-
-
Volta p/E p/E3 3
E3
24
-
-
E4
-
0
-
E5
-
-
Segue p/E p/E6 6
E6 : imprima o conteúdo de E10
-
-
Imprime 24
E7 : PARE
-
-
PARA
Este programa calcula o FATORIAL de um número.
EXERCÍCIO 2: No mesmo algoritmo acima, avalie as conseqüências das seguintes alterações: a) E5 : se o valor de E11 > 0, volte para E3, b) E5 : se o valor de E11 >= 0, volte para E3; senão continue, c) E7 : XXX ----------------------------------------------------------------------------------Num modelo real - o COMPUTADOR- só faz aquilo que ele recebe instrução para realizar. Um computador funciona a partir de um programa que o instrui sobre o que deve fazer. "O problema dos computadores é que eles fazem exatamente aquilo que você os instruiu a fazer e não aquilo que você realmente queria que eles fizessem fizessem.. " Um programador frustrado.
Resposta - Exercício 2: a) E5 : se o valor de E11 > 0, volte para E3, (eliminar "senão continue"), o modelo não saberia o que fazer quando o valor de E11 chegasse a zero. b) E5 : se o valor de E11 >= 0, volte para E3, Haveria mais um pa sso no loop, multiplicando o conteúdo de E10 por 0 (zero) e o resultado do processamento do algorítmo seria SEMPRE ZERO. c) E7 : XXX Q uando o modelo chegasse até E7, poderia encontrar qualquer coisa. No caso de encontrar código válido (por exemplo, o "lixo" deixado por um programa anterior) com algum sig nificado, ele executaria a instrução (fosse esta o que quer que fosse), chegando a um resultado imprevisível (poderia dar um resultado errado, poderia travar, poderia entrar em um loop, etc.). Caso o conteúdo de E8 fosse um va lor sem significado (por exemplo, um dado), o modelo não saberia o que fazer e pararia. Portanto, num mo delo real - o COMPUTADOR- só fa z aquilo que ele recebe instrução para realizar. U m co mputador funciona a partir de um programa que o instrui sobre o que deve fazer.
16
31/1/2010
PROGRAMA é uma seqüência de instruções (no modelo hipotético, os cartões); O programa deve ser escrito numa LINGUAGEM DE PROGRAMAÇÃO - as linguagens naturais têm ambigüidades e podem dar margem a diferentes interpretações; HARDWARE (significa originalmente "ferragens“, em inglês hardware store significa originalmente "loja de ferragens") é o conjunto de dispositivos físicos do computador, o equipamento; SOFTWARE (em analogia a hardware, a parte "soft", macia, são os programas que permitem que o equipamento saiba o que realizar, que ele funcione; Depois surgiram outros termos, aproveitando as mesmas analogias, tais como firmware (indicando programação gravada em dispositivos físicos e não modificável pelo usuário); PROCESSAMENTO AUTOMÁTICO DE DADOS DADOS:: Um computador é capaz de executar um programa sozinho, desde que o programa seja previamente armazenado nele, de forma que ele tenha as indicações de onde procurar as instruções.
MEMÓRIA – (os escaninhos) - Dispositivo físico para armazenar programas e dados; PROCESSADOR – (operador e máquina de calcular) - Dispositivo que realiza o processamento; DISPOSITIVOS DE ENTRADA E SAÍDA – (caixa de entrada, caixa de saída, máquina de escrever) - Formas de comunicação entre o usuário e o computador; SISTEMA - Um conjunto interligado de programas (e, eventualmente, também de equipamentos); LINGUAGEM DE MÁQUINA - é a linguagem que o computador entende, cujo "alfabeto" é composto apenas de "11's" e "00's" (linguagem binária); LINGUAGEM DE PROGRAMAÇÃO - é uma linguagem formal, utilizando termos que se aproximam da linguagem humana, que pode ser traduzida por programas especiais em linguagem de máquina.
1.4. Componentes do Computador
17
31/1/2010
A arquitetura básica de um computador moderno segue ainda de forma geral os conceitos estabelecidos pelo Professor da Universidade de Princeton, John Von Neumann (1903-1957), um dos construtores do EDVAC. Von Neumann propôs construir computadores que: 1. Codificassem instruções que pudessem ser armazenadas na memória e sugeriu que usassem cadeias de uns e zeros (binário) para codificá-los; 2. Armazenassem na memória as instruções e todas as informações que fossem necessárias para a execução da tarefa desejada; 3. Ao processarem o programa, as instruções fossem buscadas diretamente na memória. Este é o conceito de PROGRAMA PROGRAMAARMAZENADO ARMAZENADO..
Come ntario: ntario : • Toda a lógica dos computadores é construída a partir de chaves liga / desliga. • Inicialmente foram usados chaves mecânicas, depois relés eletro-mecânicos - o Z-1 construído por Konrad Zuse em 1941 e o MARK 1 de Howard Aiken em 1944 (capazes de executar até 5 chaveamentos por segundo). • Posteriormente, foram substituídos pelas válvulas no ENIAC em 1946 (capazes de 100.000 de chaveamentos por segundo), e finalmente pelos transistores (semicondutores) inventados em Stanford em 1947. • Os circuitos integrados (ou CI's) são encapsulamentos compactos (LSI - Large Scale Integration e VLSI - Very Large Scale Integration) de circuitos constituídos de minúsculos transistores.
Diagrama e m bloco de um computador UCP MEMORIA
UC
PRINCIPAL
ULA
DISPOSITIVOS DE ENTRADA E SAIDA
DMA – deixa a UCP disponível para outro processamento em paralelo.
Troca de informações (dados ( dados ou instruções) instruções) – fluxo bidirecional. Sinais de controle – fluxo unidirecional.
UNIDADE CENTRAL DE PROCESSAMENTO (UCP): A Unidade Central de Processamento é a responsável pelo processamento e execução de programas armazenados na MP MP. Funções:: Funções Executar instruções - realizar aquilo que a instrução determina. Realizar o controle das operações no computador. Formada de duas unidades unidades:: • Unidade Lógica e Aritmética (ULA) - responsável pela realização das operações lógicas (E, OU, etc) e aritméticas (somar, etc); • Unidade de Controle (UC) - envia sinais de controle para toda a máquina, de forma que todos os circuitos e dispositivos funcionem adequada e sincronizadamente.
18
31/1/2010
Representação gráfica da UCP com seus quatro componentes principais destacados. A unidade de entrada e saída é formada, nesta representação, pelos registradores REM e RDM e por suas ligações com os demais elementos (logo veremos as funções de cada um deles).
MEMÓ RIA PRINCIPAL (MP) (MP):: A Me mória Principal te m por finalidade armazenar toda a informação que é manipulada pelo computador programas e dados dados.. Para que um programa possa se r manipulado pela máquina, ele primeiro pre cisa estar armazenado na me mória principal principal. OBS.: os circuitos da Memória Principal não são combinatoriais, eles tem capacidade de armaze nar bits. Os circuitos usados são do tipo "flip-flop", conforme ve re mos e m Circuitos Lógicos.
DISPO SITIVO S DE ENTRADA E SAÍDA (E/S) (E/S)::
PRO CESSAMENTO AUTO MÁTICO DE DADO S: S:
Te m por finalidade pe rmitir a comunicação e ntre o usuário e o computador.
O programas são armazenados na MP e a UCP é capaz de e xe cutar um processamento inteiro sem a inte rvenção do usuário, mesmo que haja vários de svios no programa.
OBS.: Para exe cutar um programa, bastaria UCP e MP; no entanto, sem os dispositivos de E/S não have ria a comunicação entre o usuário e o computador.
PASSO S: S: • armaz e nar o programa na MP; • indicar à UCP onde o programa e stá armazenado. Estas ope raçõe s são re alizadas pe lo SISTEMA O PERACIO NAL:
19
31/1/2010
Sistema Operacional dá suporte aos aplicativos. (Sustenta o ambiente no qual os aplicativos são executados). Aplicativo A
Aplicativo B
Aplicativo C
Gerenciamento de Processos
E/S Arquivos
Gerenciamento de Memoria
E/S Dispositivos
1.5 Memória
Drivers de Dispositivos HARDWARE
• Me mória • Local onde os dados e os programas são armazenados (na forma de bits) para imediata execução (memória Principal - MP) ou para uso posterior (memória secundária - MS); • Amemória é dividida em pequenas áreas, chamadas endereços; • Armazenar consiste em guardar uma informação (ou um conjunto de informações) na memória e a operação é denominada escrita ou gravação (“ write”); • Recuperar uma informação (ou um conjunto de informações) da memória é copiá-la para uma outra posição na memória ou para outro componente do sistema. Esta operação é denominada leitura (‘read’).
No sistema de computador existe uma variedade grande de tipos de memória, cada uma com sua finalidade e característica especificas, mas que interligam e se integram para o funcionamento do sistema. Custo alto Velocidade alta Baixa capacidade
Registradores Cache Principal
Custo baixo Velocidade baixa Alta capacidade
Discos
Secundária
Fitas
Pirâmide Hierárquica de tipos de memória
20
31/1/2010
• Me mória Principal
• Re gistradores • Os registradores são unidades de
memória que
Amemória principal é formada por dois tipos: RAM (Randomic Acess Memory) ROM (Read Only Memory)
armazenam, te mporariame nte , na UCP, os dados a
• Tipos de Me mória
se re m manipulados por uma instrução ou seus
• volátil - perde o conteúdo armazenado quando não energizada. (RAM – Random Access Memory). Tipos de RAM a) Estática - a gravação é estável, só se alterando através de operações de escrita (consome mais energia); b) Dinâmica - a gravação do bit "1" se descarrega com o tempo, precisando ser "refrescada" periodicamente (ciclo de refresh).
re sultados parciais ou finais de um processamento; • Se ndo um resultado parcial, armazenado e m um registrador, este se rá transfe rido para a memória principal (externa à UCP).
• não volátil - não perde o conteúdo armazenado. (ROM, PROM, EPROM, EEPROM) c) ROM - Read Only Memory (gravada de fábrica - permanente); d) PROM - Programable ROM (pode ser gravada uma única vez pelo usuário, através de equipamentos especiais); e) EPROM - Erasable PROM (pode ser apagada através de raios ultravioletas); f) EEPROM - Electrical EPROM (pode ser apagada através de sinais elétricos); g) Memória Flash - é uma memória que pode ser utilizada como apenas de leitura ou como de leitura e gravação, dependendo do driver utilizado. Geralmente é utilizada como um disco em pastilhas (chips), SSD - Solid State Disk. FPM x EDO x SDRAM
21
31/1/2010
• RO M - Read Only Memory
Na RO M do microcomputador há basicamente três firmwares:: firmwares
• Quando ligamos um microcomputador, podemos ver que sempre é executado o teste e a contagem de memória;
1. BIOS (Basic Input/Output System) – “ensina” o processador a trabalhar com os periféricos mais básicos do sistema, como ckt de apoio, unidade de disquete e o vídeo em modo texto;
• Este programa pode ser armazenado em ROM, que é uma memória de apenas leitura onde os dados não são apagados quando desligamos a alimentação;
2. POST (Power-On Self-Test – Autoteste ao Ligar) – sempre que o micro é ligado o POST executa as seguintes rotinas:
• O programa armazenado em ROM, recebe o nome de firmware que é um programa inalterável e que será sempre executado.
• Identifica a configuração instalada; • Inicializa os chipset da placa mãe; • Inicializa o vídeo;
• Te sta a me mória;
Atualme nte há duas te cnologias básicas para construção de circuitos de memória RO M: M:
• Te sta o te clado; • Carre ga o sistema ope racional para a me mória; • Entre ga o controle do microprocessador ao siste ma ope racional. 3. Se tup – programa de configuração de hardware do microcomputador.
• Mask RO M – é programada de fábrica e não há como re programa-la, a não ser trocando o chip. – é usada até o lançamento das primeiras placa-mãe soque te 7; • Flash RO M – te cnologia mais mode rna que pe rmite re programação atravé s de firmware. – upgrade de BIO S.
22
31/1/2010
• Me mória Secundária •
•
• Uso da Me mória.
A memória secundária , também chamada de auxiliar ou memória de massa, tem a finalidade de armazenar de forma permanente as informações (dados e programas) necessários ao processamento. A memória secundária é eletromecânica e por esta razão, seu tempo de acesso é relativamente alto, se comparado com outros tipos de memória.
Área de Memória
Endereços
Conteúdo
0 a 640 KB
00000h a 9FFFFh
Banco 0 ao banco 9 Memória convencional
640 a 704 KB
A0000h a AFFFFh
Banco 10: Mem. De vídeo
704 a 768 KB
B0000h a BFFFFh
Banco 11: Mem. De vídeo
768 a 832 KB
C0000h a CFFFFh
Banco 12: ROM da interface de vídeo
832 a 896 KB
D0000h a DFFFFh
Banco 13: Firmware de interfaces
896 a 960 KB
E0000h a EFFFFh
Banco 14: Firmware de interfaces
960 a 1.024 KB
F0000h a FFFFFh
Banco 15: BIOS (e Basic residente, caso haja)
• O 8088 só podia e nxe rgar 1 MB de memória que é dividida e m áre as menore s de 64KB. – 64KB x 16 = 1 MB. • Por motivos de compatibilidade , os micros atuais manté m a mesma estrutura dos micros antigos no primeiro megabyte de me mória. Essa áre a é dividida da se guinte forma:
• Me mória Cache • Durante a e xe cução de uma instrução, a UCP re aliza um ou mais acessos à me mória principal, para buscar a instrução e transfe ri-la a um dos registradores, a fim de transfe rir os dados para a ULA (Unidade Lógica e Aritmética) ou para armazenar o resultado de ope ração que se encontra e m um re gistrador; • A CACHE é uma memória construída com te cnologia similar à da UCP, conse quenteme nte , com ve locidade de transfe rência compatíve l, re duzindo conside ravelme nte o tempo de espe ra da UCP por instruções e dados.
23
31/1/2010
• Te cnologia de Me mória para Vídeo Para armazenar a imagem a ser exibida no vídeo, a placa utiliza-se de um tipo especial de memória, chamada de memória de vídeo. Memória de vídeo
O conteúdo desta memória é constantemente atualizado pela placa de vídeo, seguindo as ordens transmitidas pelo processador. O controlador de vídeo lê o conteúdo da memória de vídeo (presente na placa de vídeo), convertendo os dados armazenados em sinais que sejam compreensíveis pelo monitor. Novas tecnologias relacionadas a memória de vídeo, surgiram afim de aumentar o desempenho de interface de vídeo.
Barramento PCI
Controlador de vídeo
Funcionamento da placa de vídeo
• Tipos de me mórias de víde o •
Arquitetura Unificada de Memória (UMA – Unified Memory Architeture)) Architeture
As placas de vídeo utilizam me mória RAM para armaz e nar as imagens que serão mostradas no monitor. A interface de vídeo utiliza parte da memória RAM do micro, com a finalidade de baratear o micro e aumentar o desempenho do vídeo.
Ape sar de pode rem usar me mórias FPM, EDO ou
Depende do chipset da placa-mãe e geralmente é onboard.
víde o, aume nta bastante sua pe rformance.
Em alguns casos o controlador de vídeo está dentro do processador – diminui custos. Ex.: Cyrix MediaGX; Em outros, o processador de vídeo está integrado no chipset. – SIS 5598 (TX PRO II).
SDRAM comuns, o uso de me mórias otimiz adas para
Os principais tipos de memória de víde o usados atualmente são o VRAM, SGRAM e WRAM.
24
31/1/2010
Funcionamento de uma placa de vídeo com VRAM •
VRAM (Vídeo RAM)
A VRAM é um tipo de memória especialmente desenvolvido para o uso em placas de vídeo. Sua principal vantagem é que pode ser acessada simultaneamente por dois componentes. Isso permite que a placa de vídeo use os dados contidos na VRAM para atualizar a exibição das imagens, ao mesmo tempo que o processador inclui novos dados.
Barramento PCI
O uso de memórias VRAM aumenta perceptivelmente o desempenho da placa, o problema é que este tipo de memória é bem mais caro que as memórias convencionais, fazendo com que muitos fabricantes optem por utilizar memórias EDO comuns em seus modelos de placas de vídeo mais baratas.
•
WRAM (Windows RAM)
Memória VRAM
Controlador de vídeo
•
Memória Rambus (RDRAM) Criada pela empresa Rambus;
Como o nome suge re , a Windows RAM é um tipo de me mória de vídeo otimizada para sistemas gráficos como o Windows. Ape rfeiçoamento sobre a VRAM criado pela Samsung, que possui um desempenho cerca de 50% supe rior (se gundo a Samsung). Ape sar da melhora no desempenho, a WRAM é mais barata que as memórias VRAM comuns, tendo obtido uma e norme ace itação no me rcado.
A memória é conectada ao controlador de vídeo através de um barramento estreito, porém rápido (Rambus); Este barramento de 8 bits, consegue transmitir dois bytes por pulso de clock: um na ativação do clock e outro na desativação; O clock é totalmente independente do barramento PCI e tem freqüência de 250 MHz; Segundo a empresa, essa tecnologia é dez vezes mais rápida que as memórias tradicionais de vídeo e de três a cinco vezes mais rápida que a VRAM.
25
31/1/2010
Funcionamento de uma placa de vídeo Rambus Rambus..
•
Memória de vídeo
Barramento PCI
Controlador de vídeo
Barramento RAMBUS
SGRAM (Synchronous Graphic Ramdom Access Memory)
A SGRAM é um tipo de memória SDRAM otimizada para o uso em placas de vídeo, que apesar de possuir apenas uma entrada de dados, pode ser dividida em duas páginas de memória. Como ambas as páginas podem ser acessadas ao mesmo tempo, simulamos uma dupla entradade dados. Atualmente as memórias SGRAM vêm sendo cada vez mais usadas em placas de vídeo de baixo e médio desempenho, pois apesar do desempenho levemente inferior às memórias VRAM são muito mais baratas, sendo substitutas ideais para as memórias EDO.
• Memória Principal é a parte do computador onde programas e dados são armazenados para processamento;
1.5.1 Memória Principal
• A informação permanece na memória principal apenas enquanto for necessário para seu emprego pela UCP, sendo então a área de MP ocupada pela informação pode ser liberada para ser posteriormente sobregravada por outra informação; • Quem controla a utilização da memória principal é o Sistema Operacional. Operacional
26
31/1/2010
A memória precisa ter uma organização que permita ao computador guardar e recuperar informações quando necessário. Portanto, não basta transferir informações para a memória. É preciso ter como encontrar essa informação mais tarde, quando ela for necessária, e para isso é preciso haver um mecanismo que registre exatamente onde a informação foi. Célula é a unidade de armazenamento do computador. A memória principal é organizada em células. Célula é a menor unidade da memória que pode ser endereçada e tem um tamanho fixo (para cada máquina). As memórias são compostas de um determinado número de células ou posições. Cada célula é composta de um determinado número de bits. Todas as células de um dado computador tem o mesmo tamanho, isto é, todas as células daquele computador terão o mesmo número de bits.
Ace sso -
ação de armaze nar ou re cupe rar uma informação e m uma memória; No end. 5h temos o armazenamento de um dado de 8 bits
Cada célula é identificada por um endereço único. As células são numeradas seqüencialmente, uma a uma, de 0 a (N-1), chamado o endereço da célula. Endereço é o localizador da célula, que permite identificar univocamente uma célula. Assim, cada célula pode ser identificada pelo seu endereço. Unidade de transferência é a quantidade de bits que é transferida da memória em uma única operação de leitura ou transferida para a memória em uma única operação de escrita. O tamanho da célula poderia ser igual ao da palavra, e também à unidade de transferência, porém por razões técnicas e de custo, são freqüentemente diferentes. Palavra é a unidade de processamento da UCP. Uma palavra deve representar um dado ou uma instrução, que poderia ser processada, armazenada ou transferida em uma única operação.
Núme ro de bits para re prese ntar um e nde reço: reço : Expre ssão ge ral MP com e nde re ços de 0 a (N-1): N = 2x logo: x = log 2 N sendo x = nº de bits para representar um endereço e N o número de endereços.
Numa memória de 1 MB, tem 1 M endereços que armazenam 1 byte cada. Como 1 M = 1.048.576 teremos essa quantidade de endereços Para armazenarmos um dado De 8 bits em cada um. Janeiro de 2005
Estrutura da MP
Nº de endereços
Estrutura da Memória Principal - CÉLULAS E ENDEREÇOS
0 1
10110001
2
10110101 10110111
3
10111101
CAPACIDADE DA MEMÓRIA PRINCIPAL A capacidade da MP em bits é igual ao produto do nº de células pelo total de bits por célula. N-1 T =Nx M T = capacidade da memória em bits N = nº de endereços (N=2x sendo x = nº de bits do endereço) M = nº de bits de cada célula
27
31/1/2010
1.6 Unidade Central de Processamento
A Unidade Central de Processamento - UCP (em inglês, Central Processing Unity - CPU) é a responsável pelo processamento e execução dos programas armazenados na MP. As funções da UCP são: executar as instruções e controlar as operações no computador. AUCP é composta de duas partes: UAL - Unidade Aritmética e Lógica - tem por função a efetiva execução das instruções Diagrama Esquemático da ULA ACC
ULA
REGs
Barramento Interno
Barramento de Controle
Unidade de Controle
28
31/1/2010
UC - Unidade de Controle - tem por funções a busca, interpretação e controle de execução das instruções, e o controle dos demais Barramento de Dados componentes do computador RDM
Diagrama Funcional da UCP
Memória Principal
REM Barramento de Endereços
REGs
ULA
Barramento Interno
ACC
Registradores Importantes na UCP • Na UC - CI - Contador de Instruções (em inglês: PC - Program Counter) - armazena o endereço da próxima instrução a ser executada - tem sempre o mesmo tamanho do REM. • Na UC - RI - Registrador de Instrução (em inglês: IR Instruction Register) - armazena a instrução a ser executada.
CI RI DECODER INST.
UC
• Na ULA - ACC Acumulador (em inglês:ACC - Accumulator) armazena os dados (de entrada e resultados) para as operações na ULA; o acumulador é um dos principais elementos que definem o tamanho da palavra do computador - o tamanho da palavra é igual ao tamanho do acumulador.
CLOCK
Unidade Lógica e Aritmética
Unidade de Controle
Instruçõe s • Para que um programa possa ser executado por um computador, ele precisa ser constituído de uma série de instruções de máquina e estar armazenado em células sucessivas na memória principal; • A UCP é responsável pela execução das instruções que estão na memória; • Q uem executa um programa é o hardware; • Programa em linguagem de máquina (uma seqüência de instruções de máquina em código binário); • A linguagem de máquina é composta de códigos binários, representando instruções, endereços e dados e está totalmente vinculada ao conjunto ("set") de instruções da máquina. • O programa elaborado pelo programador (o código-fonte, composto de instruções complexas) precisa ser "traduzido" em pequenas operações elementares executáveis pelo hardware. • Cada uma das instruções tem um código binário associado, que é o código da operação.
Formato ge ral de uma Instrução Código de operação (OPCODE)
Operando (s) (OP)
OPCODE - identifica a operação a ser realizada pelo processador. É o campo da instrução cuja valor binário identifica a operação a ser realizada. Este código é a entrada no decodificador de instruções na unidade de controle. OP - é ou são o(s) campo(s) da instrução cujo valor binário sinaliza a localização do dado (ou é o próprio dado) que será manipulado (processado) pela instrução durante a operação. Em geral, um operando identifica o endereço de memória onde está contido o dado que será manipulado, ou pode conter o endereço onde o resultado da operação será armazenado. Finalmente, um operando pode também indicar um Registrador (que conterá o dado propriamente dito ou um endereço de memória onde está armazenado o dado). Os operandos fornecem os dados da instrução. Obs: Existem instruções que não tem operando. Ex.: Instrução HALT (PARE PARE).
29
31/1/2010
Conjunto de Instruções Quando se projeta um hardware, define-se o seu conjunto ("set") de instruções - o conjunto de instruções elementares que o hardware é capaz de executar. O projeto de um processador é centrado no seu conjunto ("set") de instruções. Quanto menor e mais simples for este conjunto de instruções, mais rápido pode ser o ciclo de tempo do processador. Um processador precisa possuir instruções para: • operações matemáticas: 1. aritméticas: +, - , × , ÷ ...; 2. lógicas: and, or, xor, ...; 3. de complemento; 4. de deslocamento. • operações de movimentação de dados: (memória <--> UCP, reg <--> reg); • operações de entrada e saída (R/W em dispositivos de E/S); • operações de controle (desvio de seqüência de execução, parada).
O proje to de um proce ssador pode ria se r re sumido e m: m: a) Definir o conjunto de instruções (todas as possíveis instruções que o processador poderá executar):
As e straté gias de implementação de processadores são são:: • CISC - Complex Instruction Set Computer Exemplo: PC, Macintosh; um conjunto de instruções maior e mais complexo, implicando num processador mais complexo, com ciclo de processamento mais lento; ou • RISC - Reduced Instruction Set Computer Exemplo: Power PC, Alpha, Sparc; um conjunto de instruções menor e mais simples, implicando num processador mais simples, com ciclo de processamento rápido.
Obs.: adotaremos o termo instrução para as instruções de máquina ou em linguagem Assembly e comando para linguagens de alto nível.
Ciclo de Instruções Ciclo de Instruções INICIO Buscar próxima Instrução
b) Projetar os componentes do processador (UAL, UC, registradores, barramentos, ...)
As instruções são executadas sequencialmente uma a uma. (a não ser pela ocorrência de um desvio). O CI indica a seqüência de execução, isto é, o CI controla o fluxo de execução das instruções.
Duas estratégias são possíveis na construção do decodificador de instruções da UC UC::
Descrição do processamento de uma instrução na UCP:
Buscar os Dados
• wired logic - as instruções são todas implementadas em circuito); • Microcódigo - apenas um grupo básico de instruções são implementadas em circuitos; as demais são “montadas” através de microprogramas que usam as instruções básicas.
• a UC lê o endereço da próxima instrução no CI; • a UC transfere o endereço da próxima instrução, através do barramento interno, para o REM.
• definir formato e tamanho das instruções; • definir as operações elementares.
Interpretar a Instrução
Executar a Instrução TÉRMIO
30
31/1/2010
COMUNICAÇÃO ENTRE MEMÓRIA PRINCIPAL E UCP
REGISTRADORES UTILIZADOS
BARRAMENTOS
Acomunicação entre MP e UCP usa dois registradores da UCP:
• Os componentes dos computadores se comunicam através de barramentos;
• Registrador de Endereços de Memória - REM ou, em inglês, Memory Address Register (MAR); • Registrador de Dados da Memória - RDM ou, em inglês, Memory Buffer Register (MBR).
• Barramento é um conjunto de condutores elétricos que interligam os componentes do computador e de circuitos eletrônicos que controlam o fluxo dos bits; • Para um dado ser transportado de um componente a outro, é preciso emitir os sinais de controle necessários para o componente-origem colocar o dado no barramento e para o componente-destino ler o dado do barramento. Como um dado é composto por bits (geralmente um ou mais bytes) o barramento deverá ter tantas linhas condutoras quanto forem os bits a serem transportados de cada vez.
Barramentos UCP UCP// MP MP:: • Barramento de endereços – unidirecional (só a UCP envia dados - write - ou lê dados - read - da MP); • Barramento de dados – bidirecional; • Barramento de controle – bidirecional: UCP---> MP (controles ... - r/w) MP-----> UCP (wait ... )
PALAVRA (UNIDADE DE INFORMAÇÃO) Palavra é a unidade de informação do sistema UCP/ MP. A conceituação mais usada (IBM, Digital) define palavra como sendo a capacidade de manipulação de bits do núcleo do computador (UCPe MP). Pressupõe-se aqui que todos os elementos do núcleo do computador (o que inclui o tamanho da UAL, do acumulador e registradores gerais da UCP e o barramento de dados) tenham a mesma largura (processem simultaneamente o mesmo número de bits), o que nem sempre acontece. Muitas vezes encontram-se computadores em que o tamanho da UAL e do acumulador (e registradores gerais) não é o mesmo tamanho dos barramentos. Desta forma, encontram-se especificações de "computadores de 64 bits" mesmo quando seu barramento de dados é de 32 bits, nesse caso referindo-se exclusivamente à capacidade de manipulação da UCP de 64 bits (isto é, sua UAL e acumulador tem 64 bits).
31
31/1/2010
TEMPO DE ACESSO
ACESSO À MEMÓRIA PRINCIPAL
Tempo de acesso - tempo decorrido entre uma requisição de leitura de uma posição de memória e o instante em que a informação requerida está disponível para utilização pela UCP. As memórias DRAM (Dynamic RAM ) - tempo de acesso - 60 ns.
O acesso à MP é ALEATÓRIO, portanto qualquer que seja o endereço (a posição) de memória que se queira acessar, o tempo de acesso é o mesmo (constante).
Tempo de ciclo - tempo decorrido entre dois ciclos sucessivos de acesso à memória. As memórias dinâmicas perdem seu conteúdo em alguns instantes e dependem de ser periodicamente atualizadas (refresh). No caso das SRAM (Static RAM ou memórias estáticas), que não dependem de "refresh", o tempo de ciclo é igual ao tempo de acesso. As memórias dinâmicas, no entanto, requerem ciclos periódicos de "refresh", o que faz com que a memória fique indisponível para novas transferências, a intervalos regulares necessários para os ciclos de "refresh". Assim, as memórias DRAM tem ciclo de memória maior que o tempo de acesso.
A MP pode ser acessada através de duas operações operações:: 1 - LEITURA: LER da MEMÓRIA Significa requisitar à MPo conteúdo de uma determinada célula (recuperar uma informação). Esta operação de recuperação da informação armazenada na MP consiste na transferência de um conjunto de bits (cópia) da MP para a UCP e é não destrutiva, isto é, o conteúdo da célula não é alterado. SENTIDO: da MPpara a UCP
PASSOS EXECUTADOS PELO HARDWARE HARDWARE::
PASSOS EXECUTADOS PELO HARDWARE HARDWARE::
1. a UCP armazena no REM o endereço onde a informação requerida está armazenada; 2. a UCPcomanda uma leitura; 3. o conteúdo da posição identificada pelo endereço contido no REM é transferido para o RDM e fica disponível para a UCP.
1. a UCP armazena no REM o endereço de memória da informação a ser gravada e no RDM a própria informação; 2. a UCPcomanda uma operação de escrita; 3. a informação armazenada no RDM é transferida para a posição de memória cujo endereço está contido no REM.
2 - ESCRITA ESCRITA:: ESCREVER na MEMÓRIA Significa escrever uma informação em uma célula da MP (armazenar uma informação). Esta operação de armazenamento da informação na MP consiste na transferência de um conjunto de bits da UCP para a MP e é destrutiva (isto significa que qualquer informação que estiver gravada naquela célula será sobregravada). SENTIDO: da UCPpara a MP
32
31/1/2010
SINCRONIZAÇÃO DE OPERAÇÃO DO SISTEMA
SINCRO NIZAÇÃO DE O PERAÇÃO DO SISTEMA
• Imagine um barco a remo em uma compe tição, e m que a plena velocidade e dire ção some nte é atingida porque todos os remadore s fazem seus movimentos de forma coordenada, regidos por um "patrão" - ge ralmente o timoneiro que indica o ritmo das remadas.
• O computador envia a todos os seus compone nte s um sinal e létrico regular - o pulso de "clock clock" – que forne ce uma re fe rência de tempo para todas as atividades e pe rmite o sincronismo das ope rações inte rnas.
• As dive rsas partes de um computador comportam-se aproximadamente desta forma: instruções e dados, após sofrere m algum processamento e m um de te rminado componente , de vem trafe gar para o próximo estágio de processamento (através de condutores - um barramento ou um cabo), de forma a e stare m lá a te mpo de serem proce ssados.
• O pulso de clock indica que um ciclo (um "e stado") te rminou, significando que o processame nto deste ciclo está te rminado e um outro ciclo se inicia, de te rminando a alguns circuitos que inicie m a transfe rência dos dados nele contidos (abrindo a porta lógica para os próximos estágios) e a outros que re ce bam os dados e e xecutem seu proce ssamento.
Clock O clock é um pulso alte rnado de sinais de tensão alta ("high") e baixa ("low"), ge rado pelos circuitos de relógio (composto de um cristal oscilador e circuitos auxiliares).
Conforme vimos ao analisar a comunicação entre UCP e me mória, as instruções, os dados e os e nde re ços "trafe gam" no computador através dos barrame ntos (de dados, de ende re ços e de controle ), sob a forma de bits re pre sentados por sinais e létricos.
O clock é o sinal de controle no barramento, mais importante, pois é um sinal de sincronismo. É o clock que de te rmina o momento e xato para troca de informações e ntre os circuitos. Todos os proce ssadore s a partir do 486DX2 possuem multiplicação de clock. Período 1
Pe riodicamente , uma nova configuração de bits é colocada nos circuitos, e tudo isso só faz sentido se pude rmos de alguma forma organizar e sincronizar essas variações, de forma a que, num dado instante , os dive rsos circuitos do computador possam "congelar" uma configuração de bits e processá-las.
0
33
31/1/2010
Ciclo de Operação
Para isso, é pre ciso que e xista um outro eleme nto, que forne ce uma base de tempo para que os circuitos e os sinais se sincronizem. Este circuito é chamado clock - o relógio inte rno do computador. Cada um dos estados dife rentes que os circuitos assumem, limitados pelo sinal do clock, é chamado um ciclo de ope ração. ração O clock é um pulso alte rnado de sinais de tensão, ge rado pelos circuitos de relógio (composto de um cristal oscilador e circuitos auxiliares).
1 Mhz (1 megahertz) equivale a um milhão de ciclos por segundo. Sendo a freqüência de um processador medida em megahertz, o período será então medido em nanosegundos, como vemos no exemplo abaixo: f = 10 Mhz= 10 x 106 hz P= 1 / 106 = 0,000001s = 100 nanosegundos.
Cada um do intervalos regulares de tempo é delimitado pelo início da descida do sinal, equivalendo um ciclo à excursão do sinal por um "low"e um "high" do pulso. O tempo do ciclo equivale ao período da oscilação. Período é o inverso da freqüência. Ou seja, P = 1 / f. A freqüência f do clock é medida em hertz hertz. Inversamente, a duração de cada ciclo é chamada de período, definido por P=1/f (o período é o inverso da freqüência). Por exemplo: se f = 10 hzlogo P = 1/10 = 0,1 s.
Como pode mos ve r pelo e xemplo a se guir, o processador com o clock ilustrado e m (B) te ria um tempo de ciclo cinco vezes menor que o (A) e portanto te ria (teoricame nte ) condiçõe s de fazer cinco vezes mais ope raçõe s no mesmo te mpo.
Quando se diz que um processador é de 200 Mhz, está-se definindo a freqüência de operação de seu processador (seu clock), significando que o processador pode alternar seus estados internos 166 milhões de vezes por segundo. Isto acarreta que cada ciclo de operação dura: 1 / 200.000.000 s = 0,000000005s = 5 x 10-9 s ou seja, 5 nanosegundos.
34
31/1/2010
Diagrama Esquemático do Intel 8080
O MICROPROCESSADOR INTEL 8080 Examinaremos o microprocessador Intel 8080 8080, como exemplo de uma arquitetura de processador. Lançado em abril de 1974, como uma evolução do 8008 8008. O 8080 é um microprocessador empacotado em um único microchip LSI (Large Scale Integration) com 40 pinos DIP (dual inline packaging), tem um ciclo de máquina de 72 micro-segundos e possui um conjunto de 72 instruções. Possui um barramento de dados bidirecional de 8 bits e um barramento de endereços (unidirecional) de 16 bits, permitindo endereçar 64 kbytes. Pode endereçar até 256 portas de entrada e 256 de saída compatível TTL (Transistor-to-Transistor Logic).
UNIDADE ARITMÉTICA E LÓGICA - UAL
Indicadores de Condição (Condition (Condition Flags ou simplesmente Flags Flags))
A UAL é responsável pela execução das operações aritméticas, lógicas e de deslocamento de bits. É alimentada por um Registrador temporário - TMP TMP, pelo Acumulador - ACC e pelo Carry Flag Flag. O resultado da operação na UAL pode ir para o Acumulador ou, dependendo da instrução, para o barramento interno e daí para um dos registradores ou para a memória. Os resultados das operações na UAL também alimentam os Flags.
ACC A UAL contém 3 registradores de 8 bits bits::
TMP FLAGS
O registrador FLAG é setado pela UCP de forma a registrar determinadas condições relativas ao resultado de uma operação. Os flags são lidos pela UCP, para utilização pelas instruções de desvio condicional. Os flags também podem ser testados pelo usuário, usando algumas instruções especiais, mas não podem ser alterados diretamente pelo usuário. São 5 os flags, sobrando 3 bits não utilizados. A palavra de flag tem o seguinte formato: S D7
Z D6
0 D5
AC 0 D4 D3
P D2
1 CY D1 D0
Obs.: dizemos que um bits está SETADO quando seu valor é 1, e RESETADO quando seu valor é 0.
35
31/1/2010
S (sign flag ou indicador de sinal sinal)) - é setado pelo sinal do resultado de uma operação no acumulador. O bit 7 do acumulador pode ser interpretado como o sinal do resultado. Algumas instruções setam o flag de sinal igual ao bit 7 do acumulador. Portanto, caso o resultado de uma operação seja negativo (bit bit 7 = 1), este flag é setado como 1. Caso o resultado seja positivo (bit bit 7 = 0), o bit é resetado (como 0). Este flag pode ser testado pelo programador.
AC (auxiliary carry ou indicador de "vai um" auxiliar) - indica um carry out no 3o bit do ACC ACC. É utilizado exclusivamente pela instrução DAA (decimal adjust accumulator). O ACC e a instrução DAA permitem tratar o valor do acumulador como DOIS algarismos codificados em BCD (quatro bits). A instrução DAA converte valores hexadecimais em decimais. Este flag NÃO pode ser testado pelo programador, sendo reservado exclusivamente para uso pela instrução DAA.
Z (zero flag ou indicador de zero zero)) - é setado como 1, se todos os bits do ACC como resultado de uma operação são 0. Caso qualquer um dos bits seja 1, será resetado (como 0). Serve portanto para testar se o resultado de uma operação é 0. Este flag pode ser testado pelo programador.
P (parity flag ou indicador de paridade) - representa aparidade do resultado no acumulador. As instruções que afetam o flag de paridade setam este flag para 1 quando a paridade é par (even even) e resetam (como 0) quando a paridade é ímpar (odd odd). Este flag pode ser testado pelo programador.
C (carry flag ou indicador de "vai um") - é usado para indicar quando uma soma no acumulador causa "vai vai um um" (carry carry out out) ao dígito de mais alta ordem. Também pode ser empregado como "pede pede emprestado" ("borrow emprestado borrow") em operações de subtração. Este flag também pode ser afetado pelas operações lógicas (AND, AND, OR, XOR,..). Operações de rotação de bits tratam o carry flag como um XOR 9o bit do ACC ACC. Quando há carry out para o 9o bit, o flag C é setado (11); quando não há carry out para o 9o bit, o flag C é resetado (00). Este flag também pode ser testado pelo programador. CONJUNTO DE REGISTRADORES DO 8080 Além dos registradores internos da UAL, o 8080 dispõe de 6 registradores de 16 bits: o Program Counter (equivalente ao Contador de Instruções que já estudamos), o Stack Pointer (Ponteiro da Pilha), 6 registradores de 8 bits arranjados em pares (que podem ser utilizados isolados, armazenando 1 byte, ou aos pares, quando então podem armazenar 2 bytes) e finalmente um par de registradores temporários de 8 bits (também podem ser utilizados aos pares, de forma a armazenarem dados de 16 bits).
CONJUNTO DE REGISTRADORES DO 8080 Além dos registradores internos da UAL, o 8080 dispõe de 6 registradores de 16 bits: • Program Counter (Contador de Programas); • Stack Pointer (Ponteiro da Pilha); • 6 registradores de 8 bits arranjados em pares (que podem ser utilizados isolados, armazenando 1 byte, ou aos pares, armazenando 2 bytes); STACK POINTER (SP) • 2 registradores temporários de 8 bits (também podem PROGRAM COUNTER (PC) ser utilizados aos pares, de forma a armazenarem W Z dados de 16 bits). B C D
E
H
L
36
31/1/2010
Registradores não disponíveis para o usuário: • Stack Pointer (SP) (ponteiro de pilha) - guarda o endereço do próximo endereço vago na pilha (topo da pilha). O 8080 usa a pilha para manipular sub-rotinas, guardando nela os endereços de retorno. Pilha é uma área da memória principal, endereçada pelo Stack Pointer. Um programa deve inicializar o ponteiro da pilha com o Pointer endereço base da pilha. Um programa pode inicializar a pilha para qualquer parte vaga da memória (geralmente é usado o endereço mais alto disponível na MP MP). O ponteiro da pilha é incrementado quando dados são colocados na pilha (instrução PUSH) e decrementado quando dados são removidos da pilha PUSH (instrução POP POP). A pilha cresce decrementando o ponteiro da pilha.
• Program Counter - O Program Counter mantém o endereço da instrução corrente e é incrementado automaticamente pela UC após a decodificação da instrução (quando estão passa a apontar para o endereço da próxima instrução); • Registradores Temporários W e Z - São utilizados pela UCP e não ficam disponíveis para o programador. Registradores Gerais disponíveis para o programador programador:: O 8080 dispõe de um conjunto de 6 registradores gerais, disponíveis para o usuário: B, C, D, E, H e L . Esses registradores podem ser utilizados isoladamente ou em pares (B/C, B/C, D/E e H/L H/L), quando for necessário armazenar 16 bits. Para o armazenamento de endereços (sempre em 16 bits) é geralmente usado o par de registradores H/L H/L, que neste caso (armazenando um endereço de memória) será referido como registrador M.
REFERÊNCIAS SIMBÓLICAS - REGISTRADORES GERAIS Referências Simbólicas B D
Registradores Referenciados Be C DeE
Obs. C – Byte menos significativo C – Byte menos significativo
H
HeL
C – Byte menos significativo
M PSW
HeL ACC e FLAGS
Diagrama do 8080: pinagem física, lógica e ciclos de barramento • A referência simbólica M se refere aos registradores H e L quando contém uma posição de memória. • PSW significa Program Status Word e engloba o Acumulador e os Indicadores de Condição (flags).
37
31/1/2010
Diagrama do 8080: processamento de uma instrução
Capitulo 2: Representação de Instruções. Instruções.
Capitulo 2: • Conjunto de Instruções de Máquina; • Ciclo de Instrução;
2.1 Instrução de Máquina.
• Modos de Endereçamento; • Pilha; • Tratamento de Sub-Rotinas; • Conceito de Processo.
38
31/1/2010
Quem executa um programa é o hardware - programa em linguagem de máquina (uma sequência de instruções de máquina em código binário).
Funcionalmente as operações do computador são são::
Um programa em linguagem de alto nível não pode ser executado diretamente pelo hardware hardware. Ele tem que ser transformado (traduzido) para linguagem de máquina por um compilador, antes de ser carregada em memória, para que o hardware possa executá-lo.
• movime ntação de dados (memória <--> re gistrador);
A linguagem de máquina é composta de códigos binários, representando instruções, endereços e dados e está totalmente vinculada ao conjunto ("set set") de instruções da máquina.
• matemáticas (aritméticas, lógicas, de complemento, de de slocamento...);
• entradaentrada- saída (le itura e e scrita e m dispositivos e xte rnos - dispositivos de Entrada / Saída); • controle (de svio da se quência de exe cução, parar, e tc...).
Conjunto de instruções de uma máquina hipotética: O conjunto de instruções de alguns processadores, como por exemplo o Intel 8080 8080, não possui instruções para multiplicação/divisão; um programa em linguagem de máquina, nestes processadores, não pode fazer multiplicação ou divisão diretamente (somente através de combinação de outras instruções); um programa em linguagem de nível mais alto pode implementar comandos de multiplicação/divisão que combinem uma série de instruções binárias do conjunto de instruções para fazer uma multiplicação/divisão através de repetidas somas/subtrações ou por deslocamento de bits.
Instrução Significado
Operação
Código
Load
Carregar no Acumulador
ACC <-- op
0000
Store
Salvar na Memória
op <-- ACC
0001
Add
Somar
ACC <-- ACC + op
0010
Sub
Subtrair
ACC <-- ACC – op
0011
Mult
Multiplicar
ACC <-- ACC * op
0100
Div
Dividir
ACC <-- ACC / op
0101
Jmp
Desviar
CI <-- op
0110
Jz
Desviar se ACC igual a zero
CI <-- op, se ACC = 0
0111
Jnz
Desviar se ACC não zero
CI <-- op, se ACC != 0
1000
Read
Ler entrada
op <-- entrada
1001
Imprimir
saida <-- op
1010
Stop
Terminar
1100
39
31/1/2010
Cada uma das instruções te m um código binário associado, que é o código da ope ração.
Se rão usadas as seguintes conve nções: Operador +
Significado adição
Operador ~
Significado not (negação)
*
subtração multiplicação
= !=
igual diferente
/ <--
divisão atribuição
| ^
or (AND) exclusive or (XOR)
<< >>
desloc a esquerda desloc a direita
&
and (E)
O conjunto de instruções de uma máquina pode ser constituído por instruções de diversos formatos. Conjunto de instruções pode ser analisado sob alguns aspectos, por exemplo: • quantidade de instruções instruções; • quantidade de operandos operandos; • modo de endereçamento - forma de sinalizar a localização de um dado - endereçamento imediato, direto, indireto, indexado... será abordado na próxima seção seção. Exemplos: Exemplos: • ADD OP OP11 OP OP22 => (OP (OP11) < -- (OP (OP11) + (OP (OP22) Soma conteúdo de OP1 e OP2 e armazena o resultado em OP1; • ADD OP OP11 OP OP22 OP OP33 => (OP (OP33) < -- (OP (OP11) + (OP (OP22) Soma conteúdo de OP1 e OP2 e armazena o resultado em OP3; • ADD OP OP11 => (ACC)< (ACC)<---(ACC) (ACC) + (OP (OP11) Soma conteúdo de OP1 e ACC e armazena o resultado em ACC.
FORMATO DAS INSTRUÇÕES Código de operação (OPCODE)
Operando 1 (OP 1)
OP 2
OP 3
Código de Operação ou OPCODE - identifica a operação a ser realizada pelo processador. (código binário). Este código é a entrada no decodificador de instruções na unidade de controle. Operando(s) - é o campo da instrução cujo valor binário sinaliza a localização do dado (ou é o próprio dado) que será manipulado (processado) pela instrução durante a operação. Em geral, um operando identifica o endereço de memória onde está contido o dado que será manipulado, ou pode conter o endereço onde o resultado da operação será armazenado. Finalmente, um operando pode também indicar um Registrador (que conterá o dado propriamente dito ou um endereço de memória onde está armazenado o dado). Os operandos fornecem os dados da instrução. Obs:: Existem instruções que não tem operando. Ex.: Instrução Obs HALT (PARE).
LTR - Linguagem de Transferência entre Registradores (register transfer language language)) A LTR é utilizada para sinalizar o processamento de uma operação, mostrando o que acontece com os registradores e posições de memória como resultado do processamento de uma instrução. • caracteres alfanuméricos significam abreviaturas de nomes de registradores ou posições de memória (ex: REM. MP); • parênteses indicam conteúdo, no caso de registradores, ou o valor é um endereço na MP; • seta indica atribuição (transferência de conteúdo entre registradores ou entre registrador e memória principal). • Ex .: REM <--- (CI) - o conteúdo do CI é copiado para o REM; • Ex.: RDM <--- (MP(REM)) - o conteúdo da célula da MP cujo endereço está no REM é copiado para o RDM.
40
31/1/2010
TAMANHO (EM BITS) DE UMA UMAINSTRUÇÃO INSTRUÇÃO.. PROBLEMADE PROJETO: Escolha do tamanho das instruções. Da escolha do tamanho das instruções depende : • • • •
tamanho da memória memória;; tamanho das células da MP MP;; velocidade de acesso acesso;; organização do barramento de dados dados..
O projetista decide entre fatores como economia de espaço em memória, processamento mais rápido das instruções ou um conjunto de instruções mais completo e poderoso. Maior Conjunto Instruções Instruções:: • requer muitas instruções (para atendimento a diferentes aplicações) ---> muitos bits por opcode opcode; • requer instruções completas ---> muitos bits para operandos; • requer hardware mais complexo ---> processamento de instruções mais lento.
No Intel 8080 8080, o código de operações varia apenas os 6 bits mais significativos; os 2 bits menos significativos são utilizados para indicações da especificidade da instrução, conforme veremos na seção sobre o Conjunto de Instruções do Intel 8080 8080. Outros sistemas possuem código de operação de tamanho variável. Por exemplo, o IBM/ IBM/370 370 tem: • 166 instruções com código de operação de 8 bits. • 11 instruções com código de operação de 16 bits. Opcodes com tamanho variável permitem codificar maior quantidade de instruções com menos bits e permitem projetar um compromisso mais flexível entre a quantidade de bits do opcode e do(s) campo(s) de operando(s). Esta organização é bastante comum.
CÓDIGO DE OPERAÇÃO (OPCODE) O número de bits do código de operação depende de quantas instruções tem o set de instruções da máquina. Ex: um processador com 256 instruções (ou 28 instruções) teria necessidade de 8 bits para representar o código de operação. Se uma máquina com código de operação de tamanho fixo tem N instruções, serão necessários n bits para representar suas instruções, sendo: 2n = N Desta forma, o número de bits necessários ao opcode será: n = log2 N No caso do microprocessador Intel 8080, o código de operação tem 8 bits e são implementadas 78 instruções. Com 8 bits no código de operação, teria sido possível implementar 28 = 256 instruções.
OPERANDO A função do operando é identificar / localizar o dado que será processado. Q uanto ao número de operandos operandos,, podemos considerar considerar:: • Um maior número de operandos permite maior completeza, por possibilitar ter todos os operandos necessários à indicação dos dados para a realização de operação. Em conseqüência, embora mais operandos ocupem mais memória, será necessário uma menor quantidade de instruções em um programa, ocupando menor espaço em memória. • Com um menor número de operandos, as referências ficam menos completas, e serão necessárias mais instruções no programa. No entanto, tendo menos operandos, o espaço ocupado na memória pelos operandos será menor. • A decisão sobre o número de operandos é tomada pelo projetista, levando em conta esse balanço.
41
31/1/2010
OPERANDO – Cont. Como geralmente o operando contém um endereço da MP, o número de bits ocupado por um operando depende do número de células endereçáveis de memória, ou seja, é preciso saber quantas células podem ser endereçadas na memória principal para saber quantos bits serão necessários para o operando. Obs.: desta forma, pode-se concluir que o número de bits de cada operando será igual ao número de bits do REM e do CI.
2.2 Ciclo de Instrução.
Por simplicidade, neste curso vamos considerar que todas as instruções de uma máquina tem o mesmo tamanho. Esta simplificação muitas vezes não corresponde à realidade de uma máquina comercial, mas atende aos objetivos deste curso.
Primeiramente, o programa a ser executado precisa ser carregado na MP, o que é feito pelo Sistema Operacional MP Operacional, que também se encarrega de informar à UCP UCPonde o programa começa. O Sistema Operacional faz isto " setando setando" " o Contador de Instruções (isto é, colocando no CI o endereço da MP onde está localizada a primeira instrução daquele programa). A partir daí se realiza o processamento automático automático, executando-se as instruções seqüencialmente uma a uma, o que é obtido através do incremento automático do CI. Obs:: Se o programa inclui uma instrução de desvio, o fluxo Obs seqüencial pode ser alterado. A UCP não diferencia um dado de uma instrução. A UCP não "executa" dados devido ao conteúdo do CI, que é incrementado pelo tamanho da instrução e fica sempre apontando para a próxima instrução. Mas se em um programa houver uma instrução de desvio para um endereço em que esteja contido um dado, a UCP interpretaria o valor binário do dado como se fosse o código de uma instrução, tentaria executar e o resultado seria imprevisível.
Ciclo de Instrução 1 - A UCP busca o código de operação na MP e armazena no Registrador de Instrução da UC Fase:: Busca da instrução - (Instruction Fetch) - ciclo de busca Fase RI < --- (CI) Micro--operações Micro operações:: • a UC lê o conteúdo do CI (endereço da próxima instrução ) e coloca o endereço no REM; • a UC envia um sinal à memória de operação de leitura (memory read), via barramento de controle; • a memória lê o endereço que está no REM, via barramento de endereços, e busca o conteúdo da célula referenciada; • a memória coloca no RDM, via barramento de dados, o conteúdo da célula lida; • a memória envia à UC, via barramento de controle, um sinal de "leitura concluída"; • a UC transfere o código de operação (o conteúdo do RDM) ao RI.
42
31/1/2010
2 - A UC (decodificador de instruções) decodifica o Código de Operação.
3 - AUC busca (se houver) o(s) operando(s) Fase:: Busca de operandos (Operand Fetch) - ciclo de execução Fase
Fase:: Busca da instrução - (Instruction Fetch) - ciclo de busca Fase
RI < --- (Op Op))
Micro--operações Micro operações::
Micro--operações Micro operações::
• o Decodificador de Instruções decodifica o opcode;
• a UC envia um sinal à memória de operação de leitura (memory read), via barramento de controle;
• o Decodificador de Instruções determina quantas células a instrução ocupa; • a UC incrementa o CI para apontar para a próxima instrução: CI <--- (CI + n), onde n = nº de células que a instrução ocupa. • a UC incrementa o REM para apontar para o operando: REM <--- (REM + 1);
• a memória lê o endereço que está no REM, via barramento de endereços, e busca o conteúdo da célula referenciada; • a memória coloca no RDM, via barramento de dados, o conteúdo da célula lida; • a memória envia à UC, via barramento de controle, um sinal de "leitura concluída"; • a UC transfere o operando (o conteúdo do RDM) ao RI.
Se o operando é o próprio dado dado:: • a UC transfere o dado (o conteúdo do RDM) ao ACC. • vai para operação 4; caso contrário: Se o operando é um ponteiro para onde o dado está armazenado armazenado:: • a UC coloca no REM o endereço de onde o dado está armazenado; • a UC envia um sinal à memória de operação de leitura (memory read), via barramento de controle; • a memória lê o endereço que está no REM, via barramento de endereços, e busca o conteúdo da célula referenciada; • a memória coloca no RDM, via barramento de dados, o conteúdo da célula lida; • a memória envia à UC, via barramento de controle, um sinal de "leitura concluída"; • a UC transfere o dado (o conteúdo do RDM) ao ACC; • vai para operação 4.
4 - A UC comanda a execução da instrução (a operação é executada sobre o dado). Fase: Execução da instrução - ciclo de execução
INICIO Buscar próxima Instrução Interpretar a Instrução
• UAL executa a instrução. Buscar os Dados
5 - Se o programa tiver terminado, Para; senão, volta ao passo 1.
Executar a Instrução TÉRMIO
43
31/1/2010
Exemplo 1:
Nesta máquina, considere que o código de operação 2A significa LDAOp LDA Op ==> ACC <--- (Op Op)) Obs.: Obs .: A instrução do exercício LDAOp (LDA é um mnemônico para "load accumulator") significa "carrega no acumulador o conteúdo da posição de memória indicada no operando".
Formato da Instrução de Máquina: Código de Operação
Operando
8 bits
8 bits
O CI tem 8 bits porque o operando tem 8 bits; o mapa de memória também mostra isso, com os endereços ocupando 2 dígitos hexadecimais (cada dígito hexadecimal requer 4 bits). A célula de memória tem 8 bits, conforme vemos pelo mapa de memória, em que os conteúdos das células ocupam 2 dígitos hexadecimais. O RI tem 16 bits porque a instrução tem 16 bits. ACC - não daria para assegurar porque depende do tamanho da palavra; vamos assumir 8 bits, de vez que como o operando, o opcode e a célula têm 8 bits, o RDM e o Acumulador provavelmente também terão 8 bits A instrução LDA Op ocupará 2 células, logo o incremento do CI = n =2
tamanho da instrução = 16 bits
Conteúdo da Memória Principal: Endereço
Conteúdo da Célula
00
2ª
01
0C
02
2B
03
04
04
56
.....
.....
0C
01
0D
00
Vamos acompanhar o processamento da instrução LOAD (2A neste exemplo) => colocar o conteúdo do endereço indicado pelo operando no ACC (carrega dado no acumulador); T 0, T 1 e T 2 representam os diversos estados dos registradores (nos respectivos tempos do ciclo de busca da instrução). n=2 (2 acessos à MP MPpara buscar instrução) CICLO de TEMPO
CI
ACC
REM
RDM
RI (16 BITS)
OPERAÇÃO
T0
00
x
00
2A
2Axx
Lê opcode
T1
02
x
01
0C
2Axx
Lê operando
T2
02
0C
01
0C
2A0C
Carrega Acumulador
2.3 Endereçamento de Instruções.
Obs.: usamos um x para indicar que o conteúdo de uma célula ou de parte da célula não importa ("don't don't care care") e não é considerado (é desprezado) para a presente operação, podendo ser nulo ou então conter o resultado de uma operação anterior.
44
31/1/2010
O ende re ço da próxima instrução é apontado atravé s do valor armazenado no CI. A ação a ser re aliz ada pela instrução é dete rminada pe lo mne mônico da instrução, armaze nado no campo “CÓ CÓ DIGO DE O PERAÇÃO ” (ou abreviadamente opcode opcode). O dado da instrução pode se r um valor numé rico, um caracte re ou mesmo um ende re ço (no caso das instruções de de svio). A localiz ação do dado é e m ge ral explicitamente indicada na própria instrução, sendo re prese ntada no campo (ou campos) “OPERANDO OPERANDO ” (ou abre viadamente O per). per
As instruções no Intel 8080 podem ter 1, 2 ou 3 bytes, ocupando respectivamente uma, duas ou tres células de memória. As ilustrações a seguir apresentam as instruções de 1, 2 e 3 bytes.
FORMATO GERAL DE DADOS E INSTRUÇÕES NO INTEL 8080 A memória no Microprocessador Intel 8080 é organizada em células de 8 bits (1 byte). Cada célula é identificado por um código composto por 16 bits - o endereço da célula, que geralmente é representado na base hexadecimal, acarretando um valor entre 0000 e FFFF. O 8080 pode portanto endereçar 65.536 bytes de memória, compostas de memória ROM e memória de leitura / escrita (também às vezes erroneamente chamada RAM). Os dados são armazenados no 8080 na forma de palavras com 8 bits, como mostra a ilustração abaixo. FORMATO DA PALAVRA DE DADOS D7
D6
D5
D4
D3
D2
MSB
D1
D0
LSB
O bit mais à direita ou bit 0 é o bit menos significativo (em inglês, least significant bit ou LSB) e o bit mais à esquerda ou bit 7 é o bit mais significativo (em inglês, most significant bit ou MSB).
As instruções de 3 bytes tem como operando um endereço ou um dado de 16 bits. Formato de Instrução de 3 Bytes
As instruções de 1 byte não tem operando.
byte 1 byte 2 byte 3
Formato de Instrução de 1 Byte byte 1
D7
D6
D5
D4
D3
D2
D1
D0
opcode
As instruções de 2 bytes tem como operando um dado de 8 bits. Formato de Instrução de 2 Bytes byte 1 byte 2
D7
D6
D5
D4
D3
D2
D1
D0
D7
D6
D5
D4
D3
D2
D1
D0
Opcode; Opcode; dado de 8 bits bits..
D7
D6
D5
D4
D3
D2
D1
D0
D7
D6
D5
D4
D3
D2
D1
D0
D7
D6
D5
D4
D3
D2
D1
D0
opcode ; opcode; byte menos significativo do endereço ou o dado de 16 bits bits;; byte menos significativo do endereço ou o dado de 16 bits bits..
Em uma instrução de 3 bytes em que o operando é um endereço, o endereço é armazenado sempre com o byte menos significativo na posição seguinte à do opcode e o byte mais significativo do endereço no 2º byte após o opcode. São ocupadas 3 células consecutivas da Memória Principal do Intel 8080, como mostra a ilustração seguinte:
45
31/1/2010
ARMAZENAMENTO DA INSTRUÇÃO NA MEMÓRIA DO I8080 MODOS DE ENDEREÇAMENTO
OPCODE ENDEREÇO (byte menos significativo) ENDEREÇO (byte mais significativo)
O Intel 8080 dispõe dos seguintes modos de endereçamento: MEMÓRIA PRINCIPAL IDENTIFICAÇÃO DO MODO DE ENDEREÇAMENTO DA INSTRUÇÃO No Intel 8080, o Código de Operação identifica o modo de endereçamento, através de seu mnemônico e do correspondente código binário. Os registradores envolvidos em instruções que usam os modos de endereçamento direto por registrador e indireto por registrador são definidos através de determinados bits no opcode.
MODO IMPLÍCITO (Implied Addressing Addressing)) Afunção da instrução trazimplícito o endereçamento. Não há operando. Exemplo No microprocessador Intel 8080 essas instruções ocupam apenas 1 byte, sendo buscadas em apenas 1 acesso à memória. São as seguintes as instruções com endereçamento implícito:
• • • • •
Implícito Imediato Direto Registrador Direto Registrador Indireto
• STC (set carry flag) - "seta" o bit de carry e CMC (complement carry) - complementa o valor do bit de carry; - o operando implícito é o carry flag; • RAL (rotate accumulator left), RAR (rotate accumulator right) instruções de deslocamento de bits, à esquerda e à direita - o operando implícito é o acumulador; • RLC (rotate accumulator left through carry) e RRC (rotate accumulator right through carry) - instruções de deslocamento de bits, à esquerda e à direita, através do carry flag - os operandos implícitos são o acumulador e o carry flag; • DAA (decimal adjust accumulator) - instrução para aritmética em BCD - o operando implícito é o acumulador (usa também o flag AC - auxiliary carry).
46
31/1/2010
MODO IMEDIATO O valor do campo operando é o próprio dado. É usado para trabalhar com valores constantes. O operando é dito operando imediato (o operando é o próprio valor a ser operado, ou seja, é o próprio dado a ser processado). Vantagem O operando é obtido durante o ciclo de busca, em apenas 1 acesso (quando o operando é de apenas 1 byte, tal como um dado de 8 bits) ou em 2 acessos (quando o operando é de 2 bytes, tal comoum dado de 16 bits ou um endereço). Não é necessário fazer nenhum acesso à MP no ciclo de execução, o que acarreta maior rapidez na execução. Obs.: Obs .: Algumas instruções no modo imediato (geralmente instruções que manipulam endereços de memória) buscam endereços ou dados de 2 bytes. Ver exemplos com as instruções JMI Op e LXI Op.
Utilização: Utilização: • Inicialização de contadores; • Constantes; • Armazenamento de ponteiros em registradores; • Indicação de quantidade de posições em operações de deslocamento de bits (multiplicação e divisão). Exemplo de instruções no Modo Imediato Exemplo 1 - Instrução ADI ADI data ==> ACC <--<--- ACC + Op Soma o valor (hexadecimal) contido no operando ao acumulador e coloca o resultado no acumulador. Valor (hexadecimal) do código da operação: C6 Nº de Bytes ocupados pela instrução: 2 bytes Ciclos de acesso da instrução: 2 (leitura).
Desvantagens • O tamanho do dado fica limitado ao número de bits do operando (campo operando da instrução). A limitação de tamanho do campo operando reduz o valor máximo do dado que pode ser armazenado. No Intel 8080, o campo Operando tem 8 bits, portanto o maior valor deste campo será limitado a 28 = 256. Existem instruções que permitem carregar doublewords, isto é, palavras duplas que ocupam 2 células de memória, em que o maior valor será limitado a 216 = 65.536 (64k); • Este modo de endereçamento não permite flexibilidade para alterar dados que variam a cada execução do programa, portanto não é adequado para variáveis repetidamente operadas com diferentes valores a cada execução do programa.
Nº
Descrição
Acesso
Ciclo
1º
Busca de Opcode
Leitura
Busca
2º
Busca de Operando
Leitura
Busca
Endereçamento:: imediato Endereçamento Flags setados: Z, S, P, CY, AC Ex .: Considerando o acumulador contendo inicialmente o valor Ex.: 7AH, qual será o valor do acumulador após a execução da instrução. ADI dado (add immediate) ==> ACC <--- ACC + Op (soma o valor hexadecimal do operando ao acumulador)
47
31/1/2010
MODO DIRETO O valor do campo operando indica o endereço do dado na MP. No Intel 8080, como um endereço requer 16 bits, o operando (no modo direto) terá 16 bits, ocupando 2 células e as instruções no modo de endereçamento direto terão 3 bytes. Vantagens • É aplicado em mais situações que o modo imediato; • Requer apenas uma referência à memória para busca do dado (além de uma para a busca da instrução), sendo mais rápido que o modo indireto. Desvantagens • Limitação do endereço da MP que pode ser indicado pelo tamanho do campo operando; • É mais lento que o modo imediato. Utillização Q uando o dado varia de valor a cada execução.
Endereçamento Imediato Formato da Instrução ADI data 1
1
0
0
0
1
1
0
data
Exemplo: Exemplo C6H 50H 7A
Memória Principal
CA
ACC ACC (antes da (depois da execução da execução da instrução) instrução)
Exemplos de Instruções no Modo Direto: Exemplo 1 - Instrução LDA LDAendereço LDA endereço (”load accumulator direct”) ==> ACC < --- (Op) Carrega o conteúdo da posição de memória indicada pelo operando (bytes 2 e 3 da instrução) no acumulador (o operando indica um endereço na memória). Valor (hexadecimal) do código da operação: 3A opcode 3AH LDA(Op) oper 1 07H Nº de Bytes ocupados pela instrução: 3 bytes oper 2 ACH Ciclos de acesso da instrução: 4 (leitura) Nº
Descrição
Acesso
Ciclo
1º
Busca de Opcode
Leitura
Busca
2º
Busca do 1º byte do Operando
Leitura
Busca
7A
3º
Busca do 2º byte do Operando
Leitura
Busca
ACC
4º
Busca do Dado
Leitura
Busca
MODO INDIRETO O campo operando contém um endereço de memória cujo conteúdo é o endereço do dado a ser operado. Portanto, há um duplo endereçamento. O endereço intermediário é chamado ponteiro (“pointer”) O Intel 8080 somente dispõe de instruções com modo de endereçamento indireto usando registradores como ponteiro.
2AH
Memória
Os exemplos dessa aplicação são apresentados no item sobre ENDEREÇAMENTO POR REGISTRADOR.
Endereçamento: direto Principal AC07H Flags setados: nenhum LDA 978 978A A ===> ACC < --- (978 978A) A) = carrega no acumulador o conteúdo da posição de memória 978A.
48
31/1/2010
ENDEREÇAMENTO POR REGISTRADOR Existem outros modos de endereçamento, que usam registradores para indicar a posição onde estão os dados. Os modos de endereçamento direto e indireto por registrador funcionam de forma semelhante aos modos de endereçamento direto e indireto vistos anteriormente (em que o operando aponta para uma posição de memória), porém utilizando um registrador em lugar do operando.
Vantagens Maior velocidade / rapidez de execução - o acesso ao registrador é muito mais rápido que o acesso à memória. Economia de espaço de armazenamento de instrução (o tamanho da instrução é menor porque como são poucos registradores, são menos bits para seus endereços). Desvantagem
O conteúdo do Registrador pode ser o dado - endereçamento direto - ou então é uma referência à memória - endereçamento indireto. indireto
Não são adequados para transferência de variáveis da MP para ULA.
MODO POR REGISTRADOR (Modo por registrador direto) O operando aponta para um registrador, o qual contém o dado. MODO POR REGISTRADOR INDIRETO O operando aponta para um registrador, o qual contém um endereço de memória (ponteiro) onde está o dado.
Utilização
No Intel 8080, a identificação do registrador envolvido na operação fazparte do próprio opcode. Identificação dos Registradores no Código de Operação. Obs.: SSS representa o "Registrador de Origem" e DDD o Obs.: "Registrador de Destino"; RPrepresenta "Par de Registradores".
Pequeno número de registradores - se forem muitos os dados endereçados por registrador, os registradores disponíveis podem não ser suficientes. Implementação de contadores.
Exemplos de Instruções no Modo por Registrador Direto Obs.: Obs .: A documentação Intel denomina este modo como "Modo Registrador". Exemplo 1 - Instrução ADD r.
SSS ou DDD
Valor
RP
ACC (ou A)
111
-
-
ADD r (" ("add add register register") ") ==> ACC <--- ACC + R - Soma o valor contido no registrador R ao valor contido no acumulador. Valor (hexadecimal) do código da operação: depende do Registrador.
B
000
B
00
Formato da Instrução ADD R
C
001
-
-
D
010
D
01
E
011
-
-
H
100
H (ou M)
10
Nº
Descrição
Acesso
Ciclo
1º
Busca de Opcode
Leitura
Busca
Valor
L
100
-
-
-
-
SP
11
1
0
0
0
0
S
S
S
Nº de Bytes ocupados pela instrução: 1 byte. Ciclos de acesso da instrução: 1 (leitura).
Endereçamento: registrador direto. Flags setados: Z, S, P, CY, AC.
49
31/1/2010
Exemplo 2 - Instrução DCR R.
Exemplo 3 - Instrução MOV R1, R2.
DCR r (" decrement register register") ") ==> R < --- R - 1 - Decrementa o conteúdo do registrador R. Valor (hexadecimal) do código da operação: depende do Registrador.
MOV r1, r2 ("move register register") ") ==> r1 <--- r2 O conteúdo do registrador r2 é copiado para o registrador r1 . Valor (hexadecimal) do código da operação: depende dos Registradores envolvidos.
Formato da Instrução DCR R
Formato da Instrução MOV r1,r ,r22
0
0
D
D
D
1
0
1
0
Nº de Bytes ocupados pela instrução: 1 byte. Ciclos de acesso da instrução: 1 (leitura).
1
D
D
D
S
S
S
Nº de Bytes ocupados pela instrução: 1 byte. Ciclos de acesso da instrução: 1 (leitura).
Nº
Descrição
Acesso
Ciclo
Nº
Descrição
Acesso
Ciclo
1º
Busca de Opcode
Leitura
Busca
1º
Busca de Opcode
Leitura
Busca
Endereçamento: registrador direto. Flags setados: nenhum.
Endereçamento: registrador direto. Flags setados: Z, S, P, AC (CY não é afetado).
Exemplos de Instruções no Modo por Registrador Indireto Obs.: A documentação Intel denomina este modo como "Modo Registrador Indireto". Exemplo 1 - Instrução ADD M. ADD M (" ("add add memory") ==> ACC < --- ACC + (HL) - Soma o valor contido no endereço referenciado pelo par de registradores HL ao valor contido no acumulador. Valor (hexadecimal) do código da operação: 86. Nº de Bytes ocupados pela instrução: 1 byte. Ciclos de acesso da instrução: 2 (leitura).
Exemplo 2 Instrução INR M. INR M (increment memory) ==> (HL) <--- (HL) + 1 - Incrementa o conteúdo da posição de memória indicada pelo par de registradores HL. Valor (hexadecimal) do código da operação: 34. Nº de Bytes ocupados pela instrução: 1 byte. Ciclos de acesso da instrução: 3 (sendo 2 de leitura e 1 de escrita). Nº
Descrição
Acesso
Ciclo
1º
Busca de Opcode
Leitura
Busca
Busca o dado no endereço (HL)
Leitura
Execução
Escrita
Execução
Nº
Descrição
Acesso
Ciclo
2º
1º
Busca de Opcode
Leitura
Busca
3º
2º
Busca o dado no endereço (HL)
Leitura
Execução
Endereçamento: por registrador, indireto. Flags setados: Z, S, P, CY, AC.
Grava o resultado - dado + 1 – em (HL)
Endereçamento: por registrador, indireto. Flags setados: Z, S, P, AC (CY não é afetado).
50
31/1/2010
MODO INDEXADO E MODO BASE + DESLOCAMENTO Exemplo 3 Instrução MOV M, R. MOV M, r (move to memory) ==> (HL) < --- r - O conteúdo do registrador r é copiado para a posição de memória cujo endereço está no registrador M. Valor (hexadecimal) do código da operação: depende do registrador envolvido. Nº de Bytes ocupados pela instrução: 1 byte. Ciclos de acesso da instrução: 3 (sendo 1 de leitura e 1 de escrita). Nº
Descrição
Acesso
Ciclo
1º
Busca de Opcode
Leitura
Busca
2º
Busca o dado no endereço (HL)
Leitura
Execução
Endereçamento: por registrador, indireto. Flags setados: nenhum.
Exemplos de Instruções com combinação Endereçamento Exemplo - Instrução CALL endereço
de
Modos de
CALL endereço ==> (SP - 1) < --- PCH ==> o valor contido no byte de mais alta ordem do Program Counter (modo de endereçamento: registrador direto) é transferido para o endereço de memória igual ao valor contido no Ponteiro de Pilha (Registrador SP) menos 1 (modo de endereçamento: registrador indireto); (SP - 2) < --- PCL ==> o valor contido no byte de mais baixa ordem do Program Counter (modo de endereçamento: registrador direto) é transferido para o endereço de memória igual ao valor contido no Ponteiro de Pilha (Registrador SP) menos 2 (modo de endereçamento: registrador indireto);
O Intel 8080 não possui nenhuma instrução com esses modos de endereçamento, os quais somente foram introduzidos na família Intel a partir do 8086. Os microprocessadores Intel (após 8086/8) usam registradores específicos como registradores-base. Estes Registradores de Base são utilizados para implementar o endereçamento de memória e a segmentação da memória em páginas de 64 kbytes. COMBINAÇÃO DE MODOS DE ENDEREÇAMENTO Algumas instruções usam uma combinação de modos de endereçamento. Por exemplo, a instrução CALL usa uma combinação do endereçamento direto (ou imediato) com endereçamento por registrador indireto. endereçamento direto - especifica o endereço da sub-rotina desejada endereçamento por registrador indireto - é o Ponteiro da Pilha.
SP < --- SP - 2 ==> o valor contido no Registrador SP é decrementado de 2 unidades (modo de endereçamento: implícito/imediato); PC < --- endereço ==> o valor do operando (bytes 2 e 3da instrução) (modo de endereçamento: imediato) é transferido para o Program Counter (modo de endereçamento: registrador direto). A instrução CALL copia (“push”) o conteúdo corrente do CI para a posição da MP especificada pelo ponteiro da pilha (Stack Pointer) e transfere o controle do programa para a instrução cujo código de operação está armazenado na posição de memória apontada pelo operando. Valor (hexadecimal) do código da operação: CD Nº de Bytes ocupados pela instrução: 3 bytes Ciclos de acesso da instrução: 5 (sendo 3 de leitura e 2 de escrita)
51
31/1/2010
A instrução CALL requer 5 acessos à memória, sendo 3 para buscar a instrução (opcode mais operando de 2 bytes) e mais 2 para salvar ("push") o conteúdo (2 bytes) do PC (Program Counter) para o ponteiro da pilha (Stack Pointer). Nº
Descrição
Acesso
Ciclo
1º
Busca de Opcode
Leitura
Busca
2º
Busca o dado no endereço (HL)
Leitura
Busca
3º
Grava o resultado - dado + 1 – em (HL)
Leitura
Busca
4º
Grava o byt e de m enor or dem do e ndereço da próxima i nstruç ão (c ont ido no PCL) no endereço indicado por SP - 1
Escrita
Execução
5º
Grava o byte de mai or or dem do e ndereço da próx ima instr uçã o (contido no PCH) no endereço indicado por SP - 2
Escrita
Execução
2.4 Pilha.
Modos de Endereçamento: implícito / imediato / registrador direto / registrador indireto Flags setados: nenhum
Pilha é uma área da memória principal, endereçada pelo Stack Pointer. Pointer O programa deve inicializar o ponteiro da pilha com o endereço base da pilha (geralmente o mais alto disponível na MP). Apilha cresce decrementando o ponteiro da pilha.
Exemplo de Processamento de sub-rotina e da pilha - execução linear do programa - CALL instruction • chama uma sub-rotina • o endereço da próxima instrução (conteúdo do CI) é levado (push) para o topo da pilha • os registradores e flags são salvos na pilha (salva o contexto do programa) • o conteúdo do CI (ou Program Counter) é substituído pelo endereço da sub-rotina • a sub-rotina é então executada • ao final da execução da sub-rotina, é executada a instrução RETURN - RETURN instruction • os registradores e f lags são restaurados (restaura o contexto do programa chamador) • retira (pop) o endereço anteriormente colocado no topo da pilha • coloca este endereço no CI - volta a executar a seqüência linear do programa
52
31/1/2010
FLUXO DE PROCESSAMENTO DE SUBSUB-ROTINAS CODIFICAÇÃO LINEAR
instrução CALL ------> SUB-ROTINA ---------------------------| processa sub-rotina ---------------------------| CALL outra sub-rotina ---------------------------|------------------------------|processa 2a. sub-rotina ---------------------------|------------------------------| RETURN ---------------------------| continua processamento 1a sub-rotina ---------------------------| RETURN CONTINUAPROCESSAMENTO DO PROGRAMAINICIAL
Processamento de Sub Sub--Rotinas Sub-rotinas são usadas quando existe alguma tarefa em um programa que será necessário executar mais de uma vez. Por exemplo: procurar um elemento em uma tabela, imprimir uma lista, classificar elementos em uma lista, acessar uma estrutura de dados, efetuar uma operação algébrica, etc. Qualquer que seja a tarefa a ser executada, se for preciso fazê-lo mais que uma vez no programa, não se deve repetir a mesma série de instruções várias vezes, o que seria um desperdício de memória e de tempo, além de eventualmente ocasionar erros. A alternativa é agrupar as instruções que executam a tarefa desejada em uma sub-rotina, e sempre que for necessário realizar aquela tarefa, basta inserir uma instrução para chamar a subrotina; quando a tarefa da subrotina tiver terminado, basta retornar ao ponto do seu programa principal imediatamente posterior àquele em que a sub-rotina foi chamada.
2.5 Tratamento de SubSub-Rotinas.
O conceito de sub-rotina é o mesmo em qualquer linguagem utilizada e em qualquer processador, embora sua implementação seja sempre um pouco diferente de um para outro. O local onde o ponto de retorno ao programa principal é salvo é uma estrutura chamada pilha. Pilha (stack) é uma área da memória principal, endereçada pelo Stack Pointer (ponteiro da pilha). O programa deve inicializar o ponteiro da pilha com o endereço base da pilha (geralmente o mais alto disponível na MP). O ponteiro da pilha aponta para o último endereço ocupado da pilha (em algumas máquinas o ponteiro da pilha aponta para a primeira posição vaga). A pilha cresce decrementando o ponteiro da pilha (em algumas máquinas a pilha cresce incrementando o ponteiro da pilha).
53
31/1/2010
PROCESSAMENTO DE SUBSUB-ROTINA
- instrução RET (obs.: a instrução RET não tem operando) • o endereço de retorno da sub-rotina para o programa principal é retirado da pilha (pop) e carregado no CI logo: CI <--- (SP) e incrementa o SP, portanto SP <--- SP + 2 (lembrar que no Intel 8080 um endereço ocupa duas posições de memória). - restaura o contexto do programa principal (acumulador e flags), trazendo (pop), na ordem inversa, o conteúdo que tinha sido salvo na pilha - volta a executar em seqüência linear o programa principal. As sub-rotinas podem ser aninhadas, isto é, este processo pode ser repetitivo (uma sub-rotina pode chamar uma segunda sub-rotina, e esta uma terceira, e assim por diante), sempre repetindo este processo. O retorno se fará obrigatoriamente no sentido inverso, isto é, da última chamada para a primeira. Apilha é uma estrutura LIFO (last in, first out), ou seja, o último a entrar é o primeiro a sair.
Exemplo de Processamento de sub sub--rotina e uso da pilha - execução linear do programa principal - preparação para chamada à sub-rotina: o contexto do programa é salvo na pilha (acumulador, flags, outros registradores) • o valor no acumulador é armazenado no primeiro endereço vago da Pilha: (SP - 1) <-- A • flags são salvos no próximo endereço vago da pilha: (SP - 2) <--Registrador Flags. • o SP (ponteiro da pilha) é decrementado: SP <--- SP-2 (foram ocupadas duas posições na pilha) - instrução CALL endereço (instrução de chamada de uma sub-rotina com início em endereço) • o endereço da próxima instrução do programa principal (contido no CI) é salvo (push) na pilha: (SP - 1) <--- PCH e (SP - 2) <--- PCL • o endereço da sub-rotina (endereço) é carregado no CI (Program Counter), logo: CI <--- endereço • a sub-rotina é então executada • ao f inal da execução da sub-rotina, é executada a instrução de retorno RET
Fluxo de Proce ssamento de Sub Sub-- rotinas Aninhadas PROCESSAMENTO LINEAR DO PROGRAMA PRINCIPAL instrução CALL ---------> SUB-ROTINA 1 ---------------------------| processa sub-rotina 1 ---------------------------| CALL sub-rotina 2 ---------------------------|------------------------------| processa sub-rotina 2 ---------------------------|------------------------------| RET ---------------------------| continua processamento sub-rotina 1 ---------------------------| RET CONTINUA PROCESSAMENTO DO PROGRAMA PRINCIPAL
54
31/1/2010
Execução de Programas Programa em Linguagem de Máquina
2.6 Conceito de Processo.
Para executar uma tarefa qualquer, um computador precisa receber instruções precisas sobre o que fazer. Uma seqüência adequada de instruções de computador, para a realização de uma determinada tarefa, se constitui num PROGRAMA de computador. Uma linguagem de programação é um conjunto de ferramentas, regras de sintaxe e símbolos ou códigos que nos permitem escrever programas de computador, destinados a instruir o computador para a realização de suas tarefas. A primeira e mais primitiva linguagem de computador é a própria linguagem de máquina, aquela que o computador entende diretamente e pode ser diretamente executada pelos circuitos do processador (pelo hardware).
Linguagem de Montagem A primeira tentativa bem-sucedida para resolver o problema acima descrito foi a criação de uma linguagem em que os códigos numéricos foram substituídos por mnemônicos (palavras ou símbolos como, por exemplo, LOAD = carregar e ADD = somar, que se aproximam de palavras comuns da língua inglesa). As localizações dos dados foram substituídas por referências simbólicas. Foram também definidas regras de sintaxe de fácil memorização, de forma a tornar a escrita de programas e sua posterior manutenção uma técnica de complexidade relativamente menor. Essa linguagem simbólica recebeu o nome de Assembly Language (Linguagem de Montagem) Montagem)..
É importante lembrar que um computador é sempre monoglota, isto é, ele entende única e exclusivamente a sua própria linguagem de máquina. Portanto, para escrever um programa em outra linguagem e ele ser entendido e processado no computador, é preciso haver algum outro programa que leia o programa escrito nessa linguagem alternativa e o traduza para a linguagem nativa do computador (isto é, a linguagem de máquina entendida pelo computador). O processo de tradução da linguagem de montagem para a linguagem de máquina (chamado de montagem) é realizado por um programa chamado Assembler (Montador). O programa Assembler lê cada instrução escrita em linguagem Assembly e a converte em uma instrução equivalente em linguagem de máquina; e também converte cada uma das referências simbólicas de memória em endereços reais (resolve as referências de memória).
55
31/1/2010
A criação de programas Montadores facilitou muito o trabalho dos programadores. Uma outra vantagem menos óbvia foi possibilitar o desenvolvimento de programas de crítica de sintaxe (os debuggers), facilitando o processo de depuração de erros de programação. No entanto, o processo continuava lento e complexo, exigindo do programador uma grande compreensão do processo e profundo conhecimento da máquina que ele estava programando. Um programa de computador ainda era difícil de ser escrito, caro, e dependente do computador para o qual foi escrito, já que um programa escrito em linguagem de máquina para um determinado computador só poderá ser processado em computadores 100% compatíveis com ele.
As primeiras linguagens foram FORTRAN (1957), usada basicamente para manipulação de fórmulas; ALGOL (1958), para manipulação de algoritmos; COBOL (1959), para processamento comercial e ainda hoje bastante usada, especialmente em computadores de grande porte (mainframes) em bancos. Nas décadas de 60 e 70, podemos citar Pascal Pascal, a primeira linguagem de alto nível estruturada; BASIC BASIC, linguagem criada para facilitar a programação por não-profissionais; e ADA ADA, linguagem para processamento em tempo real criada sob encomenda do DoD (Department of Defense norte-americano) e ainda hoje a única linguagem aceita para programas escritos sob encomenda do DoD. Na década de 80, surgiu o C e depois o C++ (com suporte a objetos), que estão entre as linguagens mais utilizadas hoje.
Linguagens de Programação Esses problemas levaram a uma busca por linguagens que fossem mais simples de programar e entender, mais rápidas e eficientes (levando a programas mais enxutos, com menos instruções), menos dependente do computador-alvo, mas que processassem com boa eficiência (não acarretando processamento lento no computador). Foram desenvolvidas diversas linguagens de programação, buscando afastar-se do modelo centrado no computador. Essas linguagens foram estruturadas buscando refletir melhor os processos humanos de solução de problemas. Essas linguagens orientadas a problema são também chamadas linguagens de alto nível, por serem afastadas do nível de máquina. nível
Dentre as importantes tendências atuais, citamos as linguagens de manipulação de bancos de dados (como dBase dBase,, Clipper, FoxPro, Paradox,, Access Paradox Access, etc) e as linguagens visuais, como o Visual Basic Basic,, Visual C e Delphi Delphi. A linguagem Java é a mais importante tendência atual e mais recente avanço na busca pela linguagem universal. Java eleva a abstração ainda mais um nível e se propõe a ser independente da máquina onde será executado. Porém, na realidade, quando não está sendo processado em um processador Java nativo, o código Java é interpretado por uma camada de software chamada máquina virtual Java (JVM - Java Virtual Machine), ou seja, um emulador. Machine)
56
31/1/2010
Tradução Um programa escrito por um programador (chamado código fonte) em uma linguagem de alto nível é um conjunto de instruções que é clara para programadores, mas não para computadores. Ou seja, os computadores entendem única e exclusivamente suas linguagens nativas, as linguagens de máquina. Programas em linguagem de alto nível, a exemplo dos programas escritos em linguagem de Montagem, também precisam ser traduzidos para linguagem de máquina para poderem ser submetidos ao computador e processados.
Montagem Citamos anteriormente uma forma de tradução rápida e simples: a executada pelo programa Montador. O processo de montagem traduz um programa escrito em linguagem Assembly em um programa equivalente em linguagem de máquina, possível de ser executado pelo computador. A seguir, é apresentado o fluxo que representa o processo de montagem. Processo de Montagem Código Fonte
O processo de tradução do programa escrito em uma linguagem simbólica pelo programador, chamado código fonte (source code code)) para a linguagem de máquina do computador chamada código objeto (object code code), ), é chamado compilação e é realizado por um programa chamado Compilador (Compiler Compiler)).
No processode montagem, o códigofonte (programa em linguagem simbólica escrito pelo programador) é examinado, instrução por instrução e é feita a tradução, gerando o código que será executado (código objeto). Os passos executados pelo programa Montador são são:: a) Verificar a correção do código de instrução (se o mnemônico corresponde a uma instrução válida para o computador, se os campos definidos na estrutura da linguagem e a sintaxe estão corretos) e substituir os mnemônicos pelos códigos numéricos binários equivalentes. Qualquer erro no código acarreta a interrupção do processo e a emissão de mensagem de erro. b) Resolver as referências de memória: os nomes simbólicos adotados pelo programador são convertidos para endereços reais de memória (valores numéricos binários de endereços). c) Reservar espaço em memória para o armazenamento das instruções e dados. d) Converter valores de constantes em binário.
Tradução Linguagem de Máquina
Compilação é o processo de tradução de um programa escrito em linguagem de alto nível para código em linguagem de máquina. Compilação é um processo análogo ao da montagem (verificação verificação / análise do código fonte, resolução das referências de memória, reserva de espaço em memória e conversão para código de máquina binário). O que diferencia a compilação do processo de montagem é binário sua maior complexidade. No processo de montagem, há uma relação de 1:1, ou seja, cada instrução do código fonte resulta em uma instrução de máquina, enquanto na compilação a relação é múltipla, cada instrução do código fonte gerando várias instruções de máquina. Processo de Tradução Linguagem de Baixo Nível
Montagem
Código Assembly Linguagem de Alto Nível
Código Fonte
Compilação
Linguagem de Máquina
Código Objeto
57
31/1/2010
Durante a compilação, o código fonte é analisado (análise léxica, sintática e semântica), é gerado um código intermediário e são construídas tabelas de símbolos, alocam-se as áreas de memória para variáveis e atribui-se os registradores a serem utilizados, e é finalmente gerado o código objeto em linguagem binária de máquina. Em alguns compiladores, é gerado um código intermediário em Assembly (que pode ser visualizado pelo programador) e que em seguida passa pelo montador para gerar finalmente o código objeto em linguagem de máquina. O código objeto pode ser absoluto (os endereços constantes são endereços reais de memória) ou relocável (os endereços são relativos, tendo como referência o início do programa, e os endereços reais de memória são definidos apenas em tempo de execução).
Bibliotecas O desenvolvimento de um programa certamente utilizará diversas operações que são comuns a muitos outros programas. Por exemplo, a execução de uma instrução de entrada e saída, a classificação dos dados de um arquivo, o cálculo de funções matemáticas, etc. Uma linguagem de alto nível geralmente incorpora diversas rotinas prontas (que fazem parte da linguagem) e que compõem bibliotecas (librarys librarys)) de funções pré-programadas que poderão ser utilizadas pelo programador, poupando tempo, aumentando a eficiência e evitando erros. Dessa forma, um programa em alto nível possivelmente conterá diversas chamadas de biblioteca (library library calls). Essas funções não devem ser confundidas com as instruções calls da linguagem - na realidade, são pequenos programas externos que são chamados através de instruções especiais de chamada de biblioteca. Para serem executadas, essas rotinas precisam ser incorporadas ao código do programador, isto é, a chamada de biblioteca precisa ser substituída pelo código propriamente dito, incluindo os parâmetros necessários.
Processo de Compilação e Ligação
Ligação Assim, o código objeto preparado pelo compilador em geral não é imediatamente executável, pois ainda existe código (as rotinas de biblioteca) a ser incorporado ao programa. A cada chamada de biblioteca encontrada no código fonte, o compilador precisará incluir uma chamada para a rotina e o endereço dos dados que devam ser passados para a rotina. A tarefa de examinar o código objeto, procurar as referências a rotinas de biblioteca (que constituem referências externas não resolvidas), buscar a rotina da biblioteca, substituir a chamada pelo código ("resolver as referências externas") e obter os parâmetros para incluí-los no código objeto é executada por um programa chamado Ligador (LinkEditor LinkEditor)). O resultado da execução do Ligador é o código final pronto para ser executado pelo computador, chamado módulo de carga ou código executável executável.
Ling de Alto Nível
Código Fonte
Compilação
Compiler
Ling de Baixo Nível
Montagem
Código Assembly
Assembler
Ligação
LinkEditor
Módulo de Carga
Código Executável
O módulo de carga, após testado e depurado (isto é, depois de resolvidos todos os erros, também chamados "bugs bugs") é armazenado em memória de massa para ser executado quando necessário. O processo de compilação e ligação é executado apenas pelo programador na fase de desenvolvimento e não mais precisará ser executado pelo usuário, quando da execução do programa.
58
31/1/2010
Interpretação Com o processo de execução de um programa em fases distintas (compilação compilação / ligação / execução execução) apresentado, um programa para ser executado precisa primeiro ter sido convertido para código objeto pelo compilador e depois ter passado pelo ligador ligador. Esse processo é o mais largamente utilizado, porém não é o único. O método alternativo chama-se de interpretação e, a partir do programa fonte, realiza as três fases (compilação, compilação, ligação e execução), comando por comando, em tempo de execução. execução Não existem fases distintas nem se produzem códigos intermediários. Todo o processo de conversão é efetuado em tempo de execução e imediatamente executado. Ou seja, cada comando é lido, verificado, convertido em código executável e imediatamente executado, antes que o comandoseguinte seja sequer lido.
Emuladores e Máquinas Virtuais Uma aplicação interessante dos interpretadores é a geração de código universal e máquinas virtuais. Sabemos que um computador somente é capaz de executar programas que tenham sido desenvolvidos para ele. Assim, um programa desenvolvido para rodar em PC's rodando Windows não funciona em PC's com UNIX ou em Mcintosh. Mas, e uma página na Internet, com textos, imagens e programas que podem ser visualizados e processados por quase qualquer computador. Como isso pode ser feito? Como computadores de marcas e modelos diferentes estarão lendo, interpretando e executando corretamente comandos que podem ter sido desenvolvidos usando um outro computador?
Processo de Interpretação Código Fonte
Interpretação
Código Nativo
UCP / Sistema Operacional
Linguagens como C, Pascal, COBOL COBOL, etc, são linguagens tipicamente compiladas, enquanto o BASIC foi desenvolvido como linguagem interpretada (hoje também existem linguagens BASIC compiladas e o programador pode optar). As linguagens de programação tipicamente de usuário, tais como das planilhas Excel Excel, o Word Basic (linguagem de construção de Macros do Word), o Access Access, etc, são todas linguagens interpretadas.
O segredo é a utilização de linguagens padronizadas (tais como HTML - para a escrita das páginas - e PERL, CGI, Java, Java JavaScript, Script, etc, para programas) que são suportadas por diversas plataformas. Assim, cada uma das plataformas (através dos programas visualizadores de páginas Internet, conhecidos como browsers ou mesmo através de seus respectivos sistemas operacionais) pode interpretar corretamente qualquer página feita e hospedada em qualquer computador. Uma situação semelhante ocorre quando alguém desenvolve um programa que "interpreta" o código executável produzido para um determinado computador e o converte para ser executado em outro computador incompatível com o primeiro. Imagine pegar um jogo desenvolvido para os consoles originais Atari (por exemplo, o Space Invaders, Asteroids ou PacMan) e poder executá-lo num moderno PC. Ou pegar um programa que voce tenha escrito (por exemplo, uma planilha) para um dos Apple II originais e rodá-lo num PC. Esse processo, em que um computador opera como se fosse o outro, é conhecido como emulação.
59
31/1/2010
Levando esse conceito umpouco mais adiante, imagine desenvolver um programa conversor que pegasse qualquer programa escrito para uma determinada máquina e interpretasse seu código executável traduzindo-o em tempo de execução para instruções de um outro computador. Esse programa criaria uma camada de emulação em que uma máquina se comportaria como uma outra máquina. Poderíamos ter um PC "virtual" emulado em um Mcintosh, que estaria assim apto a rodar qualquer programa escrito para PC. Esse programa emulador criaria um ambiente que chamamos de máquina virtual virtual, isto é, uma máquina que se comporta como uma outra máquina diferente, não compatível.
Algo parecido foi desenvolvido pela Sun Microsystems na linguagem Java Java.. Java é uma linguagem que em princípio permite que programas escritos nela rodem em qualquer máquina. Na realidade, a Sun desenvolveu uma plataforma Java (JVM - Java Virtual Machine), com características de ambiente necessárias para que os programas escritos em Java rodem adequadamente. A JVM suporta uma representação em software de uma UCP completa, com sua arquitetura perfeitamente definida incluindo seu próprio conjunto de instruções. Os programadores Java escrevem código usando o conjunto de instruções definido pela linguagem Java. Esse fonte será então compilado gerando código de máquina virtual Java. Como o código Java é universal, os códigos fonte Java e os códigos objeto gerados são independentes da máquina em que o software será depois processado. Assim, os programadores Java não precisam se preocupar em qual computador ou sistema operacional o programa vai ser executado: desenvolver para Java é independente da máquina!
Processando Código Java Compilador Código Java
Código Nativo Interpretador
UCP / Sistema Operacional
Chip Java
A Sun tem investido em melhorar o desempenho do código Java. Além de uma série de interessantes otimizações de software, foi criado um chip Java, que poderia ser adicionado aos computadores e criaria um ambiente Java ideal. Ora, se a vantagem do Java é exatamente poder ser executado em qualquer computador, é um contra-senso ser necessário dispor de um chip Java para poder rodar Java eficientemente. Outro aspecto preocupante é o esforço da Microsoft para criar extensões ao Java (ou seja, criar um Java Microsoft, sem respeitar o padrão da Sun).
Capitulo 3: Circuitos Lógicos. Lógicos.
60
31/1/2010
Capitulo 3: • Conceitos de Lógica Digital;
3.1 Conceitos de Lógica Digital.
• Portas Básicas; • Álgebra de Boole; • Representação de Circuitos com as Funções NAND e NOR; • Formas Canônicas.
Todos as complexas operações de um computador digital acabam sendo combinações de simples operações aritméticas e lógicas básicas: somar bits, complementar bits (para fazer subtrações), comparar bits, mover bits. Estas operações são fisicamente realizadas por circuitos eletrônicos, chamados circuitos lógicos (ou gates - "portas" lógicas). Computadores digitais (binários) são construídos com circuitos eletrônicos digitais - as portas lógicas (circuitos lógicos). Os sistemas lógicos são estudados pela álgebra de chaveamentos, um ramo da álgebra moderna ou álgebra de Boole, conceituada pelo matemático inglês George Boole (1815 - 1864). Boole construiu sua lógica a partir de símbolos, representando as expressões por letras e ligando-as através de conectivos - símbolos algébricos.
A álge bra de Boole trabalha com apenas duas grande z as: falso ou ve rdadeiro. As duas grandez as são re presentadas por 0 (falso) e 1 (ve rdade iro). Nota: nos circuitos lógicos do computador, os sinais binários são re presentados por níveis de te nsão. v 4 Nivel Logico 1 2 Transição 1 Nivel Logico 0 0
4v t
0v
1 0
1
1 0
1
61
31/1/2010
OPERADORES LÓGICOS
Portas Lógicas
Os conectivos ou OPERADORES LÓGICOS ou FUNÇÕES LÓGICAS são: • E (ou AND) - uma sentença é verdadeira SE - e somente se todos os termos forem verdadeiros; • OU (ou OR) - uma sentença resulta verdadeira se Q UALQUER UM dos termos for verdadeiro; • NÃO (ou NOT) - este operador INVERTE um termo. Os operadores lógicos são representados por por::
____ • NOT --> (uma barra horizontal sobre o termo a ser invertido ou negado); • E ------> . (um ponto, como se fosse uma multiplicação); • OU ----> + (o sinal de soma).
Transistor Quando Vin estiver abaixo de um certo valor, o transistor desliga e passa a agir como uma resistência infinita (está aberto) Vout assume um valor próximo a Vcc.
• Estruturas eletrônicas (componentes primitivos) capazes de calcular diversas funções utilizando esses sinais; • Formam a base de construção de inúmeros circuitos digitais e do Hardware dos computadores. Transistor A lógica digital baseia-se no fato de que um transistor pode operar como uma chave binária: • Tempo de comutação (chaveamento) é pequeno (nanosegundos nanosegundos)). Componentes de um Transistor Transistor:: • Base; • Coletor; • Emissor.
Quando Vin estiver no nível lógico baixo, Vout estará no nível alto, e vice-versa. O circuito abaxo funciona como um Inversor! Porta NOT S = A= A
Vcc é uma tensão regulada, geralmente 5 Volts em transistores bipolares. + Vcc Quando Vin ultrapassa um certo valor, o transistor comuta e passa a agir como um curto. Coletor
Vout fica conectado ao terra (0 volt). Vin
Vout
+ Vcc
Coletor
A 0 1 Vout
Vin Base Base
Emissor
A 1 0
PORTA NOT (NÃO) A
A
Emissor
62
31/1/2010
TABELAVERDADE TABELA VERDADE São tabelas que representam todas as possíveis combinações das variáveis de entrada de uma função, e os seus respectivos valores de saída. A seguir, apresentamos as funções básicas, e suas representações em tabelas-verdade.
Dois transistores ligados em série série:: Se V1 e V2 estiverem no nível lógico alto, Vout vai assumir nível lógico baixo. Se V1 e/ou V2 estiver no nível lógico baixo, o transistor correspondente estará cortado e a saída será alta. + Vcc Q ual a porta lógica correspondente? (a) Porta NAND S = A. B A 0 0 1 1
OR - função OU PORTA NOT (NÃO)
S = A= A A
A
A 0 1
A
A 1 0
S = A+ B
Q ual a porta lógica correspondente? (b) Porta NOR
A 0 0 1 1
B 0 1 0 1
S 1 1 1 0
S
B
Dois transistores ligados em paralelo:
B 0 1 0 1
Vout V1
V2
Ao colocarmos um circuito inversor na saída de (a), o que obtemos? + Vcc
S 0 1 1 1
V1 V2 Vout V’out 0 0 1 0 0 1 1 0 1 0 1 0 1 1 0 1
+ Vcc
+ Vcc V’out Vout V1
Vout A B
A B
S
V1
V2
S’ V2
63
31/1/2010
Se fizermos os mesmo na saída de (b)? V1 V2 Vout V’out 0 0 1 0 0 1 0 1 1 0 0 1 1 1 0 1
AND - função E S = A. B PORTA AND (E) A B S 0 0 0 A S 0 1 0 B 1 0 0 1 1 1
+ Vcc + Vcc V’out
A B
OR - função OU
Vout
S’
PORTA OR (OU) V1
V2 A
S
B
Portas Lógicas Lógicas:: • As portas NAND e NOR precisam de dois transistores (do tipo bipolar), enquanto as portas AND e OR precisam de três; • Muitos computadores são baseados nas portas NAND e NOR, em vez das AND e OR;
S = A+ B A 0 0 1 1
B 0 1 0 1
S 0 1 1 1
Famílias de Portas Lógicas Famílias de Portas Lógicas Lógicas:: • Bipolar o TTL ( Transistor-Transistor-Logic) o ECL ( Emitter-Coupled Logic) • MOS ( Metal Oxide Semiconductor)
• Na prática, existem outros tipos de implementações de portas lógicas, mas geralmente as portas NAND e NOR são mais simples que as AND e OR;
o Consomem menos energia e ocupam menos espaço
• Geralmente, uma porta lógica pode conter mais do que duas entradas, exceto a inversora.
o CMOS ( Complementary Metal Oxide Semiconductor)
o Mais lentas o PMOS, NMOS, ... Utiliza +3,3V para funcionar. Utilizado na maioria dos processadores e memórias
64
31/1/2010
APLICAÇÃO DA ÁLGEBRA DE BOOLE AOS COMPUTADORES DIGITAIS Boole desenvolveu sua álgebra a partir desses conceitos básicos e utilizando apenas os algarismos 0 e 1. Os primeiros computadores fabricados, como o ENIAC ENIAC, trabalhavam em DECIMAL DECIMAL. No entanto, a utilização de circuitos eletrônicos que operassem com 10 diferentes níveis de tensão (para possibilitar detectar as 10 diferentes grandezas representadas no sistema decimal) acarretavam uma grande complexidade ao projeto e construção dos computadores, tendo por conseqüência um custo muito elevado. Surgiu então a idéia de aplicar a álgebra de Boole Boole, simplificando extremamente o projeto e construção dos computadores.
CHAVE AUTOMÁTICA C
AC
Mas como os conceitos da álgebra de chaveamentos (um ramo da álgebra do Boole) são aplicados ao projeto dos computadores digitais? A chave de tudo é um circuito eletrônico chamado CHAVE AUTOMÁTICA. AUTOMÁTICA Como funciona uma chave automática? Vamos imaginar um circuito chaveador com as seguintes entradas: • • • •
uma fonte de alimentação (fornece energia para o circuito); um sinal de controle (comanda a operação do circuito); um fio condutor (para fechar o circuito); Uma lâmpada (acenderá com a condução de energia).
A chave automática foi inicialmente implementada com relés eletromecânicos e depois com válvulas eletrônicas. A partir da metade da década de 50, passaram a ser utilizados dispositivos em estado sólido - os TRANSISTORES, inventados em Stanford em 1947. Os modernos Circuitos Integrados - CI's e os microprocessadores são implementados com milhões de transistores "impressos" em minúsculas pastilhas. Vamos agora analisar o que ocorreria se nós ligássemos em SÉRIE duas chaves automáticas e uma lâmpada ao circuito. A lâmpada acenderia SE - e somente SE - as DUAS chaves estivessem na posição LIGADO (ou verdadeiro), o que seria conseguido com as duas entradas A e B em estado 1 (Verdadeiro). Substituindo CORRENTE (ou chave ligada) por 1 e AUSÊNCIA DE CORRENTE (ou chave desligada) por 0, como ficaria nossa tabela verdade para LÂMPADA LIGADA = 1 e LÂMPADA DESLIGADA= DESLIGADA = 0?
65
31/1/2010
Funcionamento da Porta E A
Vamos agora analisar o que ocorreria se nós ligássemos em PARALELO duas chaves automáticas e uma lâmpada ao circuito.
B S S = A. B A 0 0 1 1
PORTA AND (E) A
S
B
B 0 1 0 1
A lâmpada acenderia SE Q UALQ UER UMA DAS DAS--CHAVES estivesse na posição LIGADO (ou verdadeiro), o que seria conseguido com uma das duas entradas A ou B em estado 1 (Verdadeiro).
S 0 0 0 1
Substituindo CORRENTE (ou chave ligada) por 1 e AUSÊNCIA DE CORRENTE (ou chave desligada) por 0, como ficaria nossa tabela verdade para LÂMPADA LIGADA = 1 e LÂMPADA DESLIGADA= DESLIGADA = 0?
Dá para reconhecer a nossa já familiar FUNÇÃO E ? O circuito acima que implementa a função E é chamado de PORTAE PORTA E (AND GATE) GATE)..
Funcionamento da Porta OU
PORTA OR (OU) A
A S B
S
B S = A+ B A B S 0 0 0 0 1 1 1 0 1 1 1 1
E agora, dá para reconhecer a nossa já familiar FUNÇÃO OU OU? O circuito acima, que implementa a função OU, é chamado de PORTAOU PORTA OU (OR GATE) GATE)..
PORTALÓGICA PORTA LÓGICAOU OU GATE São dispositivos ou circuitos lógicos que operam um ou mais sinais lógicos de entrada para produzir uma (e somente uma) saída, a qual é dependente da função implementada no circuito. Um computador é constituído de uma infinidade de circuitos lógicos, que executam as seguintes funções básicas: a) realizar operações matemáticas matemáticas;; b) controlar o fluxo dos sinais sinais;; c) armazenar dados. dados. A x1 B x2 C x3
CIRCUITO LÓGICO
y = f (x1, x2, x3, ..., xn xn)) x = f (A, B, C, ..., N)
N xn
66
31/1/2010
OUTROS CIRCUITOS FUNDAMENTAIS FUNDAMENTAIS:: Existem dois tipos de circuitos lógicos lógicos:: • COMBINACIONAL - a saída é função dos valores de entrada correntes; esses circuitos não tem capacidade de armazenamento [casos: a) realizar operações matemáticas e b) controlar o fluxo dos sinais sinais]; • SEQUENCIAL - a saída é função dos valores de entrada correntes e dos valores de entrada no instante anterior; é usada para a construção de circuitos de memória (chamados "flip flip--flops flops" – caso: c) armazenar dados dados); esses circuitos não serão estudados neste curso, mas apresentamos uma breve introdução no final do capítulo.
A porta XOR compara os bits; ela produz saída 0 quando todos os bits de entrada são iguais e saída 1 quando pelo menos um dos bits de entrada é diferente dos demais.
S = A+ B
B
PORTA NOR (Não OU) PORTANOR A porta NOR equivale a uma porta OR seguida por uma porta NOT NOT, isto é, ela produz uma saída que é o inverso da saída produzida pela porta OR. OR A S B
S = A. B A 0 0 1 1
B 0 1 0 1
S 1 1 1 0
S = A+ B A 0 0 1 1
B 0 1 0 1
S 0 1 1 1
Identifique o tipo de PORTA e faça sua respectiva TABELA dos dois sistemas abaixo abaixo::
PORTAXOR PORTA XOR (OU EXCLUSIVO)
A
PORTA NAND (Não E) PORTANAND A porta NAND equivale a uma porta AND seguida por uma porta NOT NOT, isto é, ela produz uma saída que é o inverso da saída produzida pela porta AND AND. A S B
S
A 0 0 1 1
B 0 1 0 1
S 0 1 1 0
1. Uma campainha que toca (saída saída) se o motorista der a partida no motor do carro (entrada entrada) sem estar com o cinto de segurança afivelado (entrada entrada). Se a ignição for ACIONADA (11) e o cinto estiver DESAFIVELADO (11), a campainha é ACIONADA (11). Caso contrário, a campainha não toca. 2. Detector de incêndio com vários sensores (entradas entradas) e uma campainha para alarme (saída saída). Se Q UALQ UER UM dos sensores for acionado (significando que um dos sensores detectou sinal de incêndio), a campainha é ACIONADA.
67
31/1/2010
As operações básicas da Álgebra de Boole são são::
3.2 Álgebra de Boole Boole..
1. 2. 3. 4. 5. 6.
NO T ---> X = A AND ---> X = A . B O R ---> X = A + B NAND ---> X = A . B NO R ---> X = A + B XO R ---> X = A + B
AVALIAÇÃO DE UMA UMAEXPRESSÃO EXPRESSÃO BOOLEANA Uma expressão booleana é uma expressão formada por sinais de entrada (chamados variáveis de entrada) ligados por conectivos lógicos, produzindo como resultado um único sinal de saída.
EQ UIVALÊNCIADE UIVALÊNCIA DE FUNÇÕES LÓGICAS
Na avaliação de uma expressão Booleana, deverá ser seguida uma ordem de precedência conforme a seguir definido:
Duas funções Booleanas são equivalentes se - e somente se - para a mesma entrada, produzirem iguais valores de saída .
1º - avalie NOT 2º - avalie AND 3º - avalie OR
PORTANTO, DUAS FUNÇÕES LÓGICAS EQ UIVALENTES TEM A MESMA MESMATABELA TABELAVERDADE VERDADE..
Ex .: Avalie a expressão: X = A. B + C
A 0 0 0 0 1 1 1 1
B 0 0 1 1 0 0 1 1
C 0 1 0 1 0 1 0 1
C A.B X=A.B+C 1 0 1 0 0 0 1 0 1 0 0 0 1 0 1 0 0 0 1 1 1 0 1 1
68
31/1/2010
PROPRIEDADES DA DAÁLGEBRA ÁLGEBRADE DE BOOLE
3.3 Formas Canônicas. PROPRIEDADES DA FUNÇÃO EXCLUSIVE OR (XOR)
REPRESENTAÇÃO DE UM CIRCUITO ATRAVÉS DE UMA TABELA VERDADE
C
• Os circuitos de um computador realizam funções de grande complexidade, cuja representação geralmente não é óbvia. • O processo para realização de uma função através de um circuito começa na descrição verbal do circuito (descrição do comportamento de suas possíveis saídas, em função das diversas combinações possíveis de seus sinais de entrada), a partir do que é possível montar sua tabela verdade. Exemplos: Exemplos: 1) Considere um circuito elétrico composto de uma fonte de energia comercial (Coelce), interruptor (entradas entradas) e uma lâmpada (saída saída). Alâmpada acenderá se - e somente se se:: a) houver energia disponível; b) o interruptor estiver ligado. Elabore a tabela verdade que representa esse circuito lógico.
AC
AC C 0 0 0 1 1 0 1 1
S 0 0 0 1
69
31/1/2010
2) Considere um sistema composto de duas caixas d'água (uma superior e uma cisterna). A cisterna é alimentada pela entrada de água da "rua", via empresa distribuidora (CAGECE). A caixa superior serve para distribuir a água, por gravidade, em todo o prédio: bicas, chuveiros, descargas sanitárias, circuitos anti-incêndio, etc, com a água sendo impulsionada por uma bomba hidráulica através de uma tubulação que liga a cisterna à caixa superior. Considerando que a bomba queimará se for acionada sem haver água no circuito hidráulico, projete um circuito lógico para acionar a bomba sempre que a caixa superior estiver vazia, desde que tenha água na cisterna. Ci Cd Bo (Ci) Cisterna com água = 1; 0 0 0 (Bo) Bomba ligada = 1; 0 1 0 (Cd) Caixa d’água vazia = 1. 1 0 0 1 1 1
3) Considere um circuito elétrico composto de uma fonte de energia comercial (Coelce), uma alimentação auxiliar (um gerador e um nobreak), um interruptor (entradas) e um sistema de computadores (saída). O computador poderá operar se: a) houver energia disponível em um dos circuitos de alimentação e b) o interruptor estiver ligado. Elabore a tabela verdade que representa esse circuito lógico. Co Ge No Ch PC 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1
0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1
0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1
0 0 0 1 0 1 0 1 0 1 0 1 0 1 0 1
A
B S
AC
PORTA AND (E) A S B
Ci Cd Bo 0 0 0 0 1 0 1 0 0 1 1 1
AC
Bo
Cd
Ci
FORMAS CANÔNICAS A partir da tabela verdade produzida conforme item anterior, é possível chegar à expressão que representa o comportamento do circuito, e em seguida construir o circuito, usando as portas lógicas já estudadas. O processo de elaboração da expressão usa as chamadas formas canônicas, que consistem em regras para representar as condições de entrada que: a) produzirão saída 1 (as demais condições produzirão saída 0) ou alternativamente, b) produzirão saída 0 (as demais condições produzirão saída 1).
70
31/1/2010
São portanto duas as formas canônicas: Uma representa as condições que produzem saída 1 (SOMA DOS MINITERMOS), a outra representa as condições que produzirão saída 0 (PRODUTO DOS MAXITERMOS). Essas formas são alternativas, isto é, a expressão poderá ser encontrada aplicando-se alternativamente UMA ou OUTRA das formas.
SOMADOS SOMA DOS MINITERMOS É produzida construindo: • um termo (uma sub-expressão) para cada linha da tabela verdade (que representa uma combinação de valores de entrada) em que a saída é 1, • cada um desses termos é formado pelo PRODUTO (FUNÇÃO AND) das variáveis de entrada, sendo que: AND • quando a variável for 1, mantenha;
a) MINITERMO - são termos somente com AND (termos PRODUTO); b) MAXITERMO - são termos somente com OR (termos SOMA).
Dessa forma, ligando os termos-produto (também chamados minitermos) pela porta OR, caso Q UALQ UER UM dos minitermos seja 1 (portanto, caso qualquer uma das condições de valores de entrada que produz saída 1 se verifique), a saída pela porta OR será também 1. Ou seja, basta que se verifique qualquer uma das alternativas de valores de entrada expressos em um dos minitermos, e a saída será também 1, forçada pelo OR. Caso nenhuma dessas alternativas se verifique, produz-se a saída 0. A B C F MINITERMOS Função Booleana com 0 0 0 0 três variáveis. 0 0 1 0 0 1 0 1 A.B.C + 0 1 1 1 A.B.C + F =A.B.C +A.B.C + A.B.C 1 0 0 0 1 0 1 0 1 1 0 1 A.B.C 1 1 1 0
• quando a variável for 0, complemente-a (função NOT NOT). • a função booleana será obtida unindo-se os termos PRODUTO (ou minitermos) por uma porta OR (ou seja, "forçando-se" a saída 1 caso qualquer minitermo resulte no valor 1).
A
B
C Implementação em soma de produtos da tabela anterior.
F
F =A.B.C +A.B.C + A.B.C
71
31/1/2010
PRODUTO DOS MAXITERMOS É produzida construindo: • um termo (uma sub-expressão) para cada linha da tabela verdade (que representa uma combinação de valores de entrada) em que a saída é 0, • cada um desses termos é formado pela SOMA (FUNÇÃO OR) das variáveis de entrada, sendo que: • quando a variável for 0, mantenha; • quando a variável for 1, complemente-a (função NOT NOT). • a função booleana será obtida unindo-se os termos SOMA (ou maxitermos) por uma porta AND (ou seja, "forçando-se" a saída 0 caso qualquer minitermo resulte no valor 0).
Implementação em produto de somas da tabela anterior. F =(A+B+C) (A+B+C) (A+B+C) (A+B+C) (A+B+C)
A B C
A B C A B C
A 0 0 0 0 1 1 1 1
B 0 0 1 1 0 0 1 1
C 0 1 0 1 0 1 0 1
F 0 0 1 1 0 0 1 0
MAXITERMOS ABC F = (ABC) (ABC) (ABC) (ABC) (ABC) ABC Usando a Lei DeMorgan – X.Y. X.Y.Z Z = X+Y+Z F =(A+B+C) (A+B+C) (A+B+C) (A+B+C) (A+B+C) ABC ABC F =(A+B+C) (A+B+C) (A+B+C) (A+B+C) (A+B+C) ABC
Por esse método, pode-se encontrar a expressão que represente qualquer tabela verdade. Após se encontrar uma expressão que represente o comportamento esperado, é possível que não seja uma expressão simples que possa ser construída com poucas portas lógicas.
A B C
A B C
Dessa forma, ligando os termos-soma (também chamados maxitermos) pela porta AND, caso Q UALQ UER UM dos minitermos seja 0 (portanto, caso qualquer uma das condições de valores de entrada que produz saída 0 se verifique), a saída pela porta AND será também 0. Ou seja, basta que se verifique qualquer uma das alternativas de valores de entrada 0 expressos em um dos maxitermos, e a saída será também 0, forçada pelo AND. Caso nenhuma dessas alternativas se verifique, produzse a saída 1.
F
Antes de projetar o circuito, é útil SIMPLIFICAR a expressão, de forma a possibilitar construir um circuito mais simples e portanto mais barato. Portanto, o fluxo de nosso procedimento será: DESCRIÇÃO VERBAL -----> > TABELA VERDADE -----> > ---> --> FORMA CANÔNICA -----> > --->FUNÇÃO -->FUNÇÃO SIMPLIFICADA -----> > CIRCUITO.
72
31/1/2010
4.1 Entradas e Saídas;
Capitulo 4: Dispositivos I/O.
4.2 Dispositivos de Entrada e Saída; 4.3 Métodos de Execução de Entradas e Saídas.
4.1 Entradas e Saídas Conforme vimos no capítulo relativo a componentes, o usuário se comunica com o núcleo do computador (composto por UCP e MP) através de dispositivos de entrada e saída (dispositivos de E/S ou I/O devices).
As características referente a comunicação de cada um dos dispositivos de E/S com o núcleo do computador são muito diferentes entre si. Os dispositivos de entrada e saída são muito mais lentos que o computador, característica essa que impõe restrições à comunicação, de vez que o computador precisaria esperar muito tempo pela resposta do dispositivo. Entre esses componentes, trafegam informações relativas a dados, endereços e controle.
Os dispositivos de entrada e saída tem como funções básicas: • a comunicação do usuário com o computador; • a comunicação do computador com o meio ambiente (dispositivos externos a serem monitorados ou controlados); • armazenamento (gravação) de dados.
dados Memória dados Interface Subsistema Principal endereços de I/O endereços de I/O Subsistema de controle controle Processamento
UCP
73
31/1/2010
Dispositivos de Entrada e Saída – In/O ut : Um computador, não vai conseguir fazer nada, caso não venha a se comunicar conosco, para receber os dados e mostrar os resultados. Para isso usamos dispositivos chamados de periféricos que podem ser de: • entrada entrada:: teclado, mouses, scanners, leitoras óticas, leitoras de cartões magnéticos, câmeras de vídeo, microfones, sensores, transdutores, etc ... • saída: saída: impressoras, monitores de vídeo, plotters, atuadores, chaves, etc ...
Formas de Comunicação: A comunicação entre onúcleo do computador e os dispositivos de E/S pode ser classificada em dois grupos: • comunicação paralela paralela;; • comunicação serial serial..
Estrutura de um Sistema de E/S
UCP
10101
MP
10101 10101
Video
10101 Teclado
Interface
Interface
Serial
Serial
Barramento
Teste de Impressão
Printer
10101 HD
Interface Paralela
Interface Paralela
As interfaces de entrada e saída são conhecidas por diversos nomes, dependendo do fabricante: Interface de E/S = Adaptador de Periférico, Controladora de E/S, Processador de Periférico, Canal de E/S. Por exemplo, os computadores de grande porte da IBM chamam de "I/O channel". Na CDC (Control Data Corporation), o nome é Peripheral Processor Unit ou PPU. A compatibilização de velocidades é feita geralmente por programa, usando memórias temporárias na interface chamadas "buffers" que armazenam as informações conforme vão chegando da UCPe as libera para o dispositivo à medida que este as pode receber.
Comunicação Paralela Na comunicação em paralelo, grupos de bits são transferidos simultaneamente (em geral, byte a byte) através de diversas linhas condutoras dos sinais. Desta forma, como vários bits são transmitidos simultaneamente a cada ciclo, a taxa de transferência de dados ("throughput") é alta. O processo de transferência em paralelo envolve um controle sofisticado e é razoavelmente complexo, o que o torna mais caro. Um dos problemas importantes diz respeito à propagação dos sinais no meio físico, isto é, no cabo de conexão entre o dispositivo e a interface. Dependendo do comprimento do cabo, pode ocorrer que um determinado fio conduza sinais mais rápido (ou mais lento) que os demais fios e que desta forma um determinado bit x em cada byte se propague mais rápido e chegue à extremidade do cabo antes que os outros n-1 bits do byte. Este fenômeno é chamado skew skew.
74
31/1/2010
Comunicação Paralela
Comunicação Serial
Em decorrência do skew skew, há limites para o comprimento do cabo que interliga um dispositivo ao computador, quando se usa o modo paralelo. Em geral, o comprimento dos cabos paralelos é limitado a até um máximo de 1,5 metro.
UCP
Memória Principal
Bit 0 Bit 1 Bit 2 Bit 3 Bit 4 Bit 5 Bit 6 Bit 7
Barramento do Sistema Interface
de I/O buffer
Subsistema de Processamento
Dispositivo de I/O
Na comunicação serial, os bits são transferidos um a um, através de um único par condutor. Como todos os bits são transferidos pelo mesmo meio físico, as eventuais irregularidades afetam todos os bits igualmente. Portanto, a transmissão serial não é afetada por irregularidades do meio de transmissão e não há skew skew. Atransmissão serial é muito mais lenta.
Memória Principal
UCP
Barramento do Sistema Interface
Subsistema de Processamento
de I/O
Bits 0 ao 7
Dispositivo de I/O
buffer
Comunicação Serial Sua utilização é normalmente indicada apenas para periféricos mais lentos, como teclado, mouse, etc. ou nas comunicações a distâncias médias (tal como em redes locais) ou longas (comunicações via linha telefônica usando modems). A tendência tem sido o aperfeiçoamento das interfaces seriais que hoje permitem taxas de transferência muito altas com relativamente poucas restrições de distância. Em microcomputadores, a interface USB - Universal Serial Bus permite hoje ligar até 128 dispositivos a taxas muito altas (centenas de kbps). Tabela Comparativa: Características Custo
Paralelo maior
Serial menor
Distância
curta
Sem limite
Throughput
alto
baixo
A transmissão de caracteres através de uma linha de comunicação pode ser feita por dois diferentes métodos:
Transmissão Assíncrona;
Transmissão Síncrona.
• Os caracteres são transmitidos sob forma de sinais elétricos de determinada duração; • Tanto a estação transmissora como a estação receptora possuem um marcador de tempo para determinar a duração dos sinais, sendo que estes marcadores devem estar em sincronia, tanto o da estação transmissora como o da receptora.
75
31/1/2010
Transmissão Assíncrona – cont.
Transmissão Assíncrona Quando os caracteres são enviados um a um, sem controle de tempo entre um e outro, sendo que o início de cada caractere é indicado por um bit de início que é chamado de Start Bit e o fim do caractere é indicado por um bit de fim chamado de Stop Bit Bit, que indica o término desse caractere e quando um novo start bit for transmitido, indica o início de um novo caractere; O tempo gasto na transmissão de um caractere depende da duração convencionada para os passos de start e stop e do número de bits do caractere;
A característica principal deste tipo de transmissão é que o intervalo de tempo entre dois caracteres não é fixo (exemplo: pessoa digitando texto), então é necessário algum evento que indique ao receptor que a transmissão esta iniciando e outro indicando o seu fim; Normalmente a linha é mantida no estado 1, quando não há transmissão. O start bit é um 0 (zero) e normalmente o bit stop é 1. Após começar a transmissão o intervalo entre os bits de dados é uniforme, isto permite distingui-los do bit de partida e de stop stop.
Transm issão Assincrona Paridade Starte r
Informação
Starte r
Stop 1 1 1 1 1 1 11 1 0 1 00 1 0 0 0 1 1 0 1 0 1 1 0 1 0 1 1 1 11 1 1
0
1
1
0
0
1
0
1 0
1
0
“idle” 2 caracter 1 caracter “idle” stop bits stop bits start bit start bit
tem po
Caracte re na transmissão assíncrona
76
31/1/2010
Existem dois modos de realizar a transmissão síncrona síncrona::
Transmissão Síncrona
O primeiro consiste em enviar um canal separado dos dados, o relógio do circuito transmissor;
Acontece quando os caracteres são enviados em blocos e transmitidos em intervalos de tempo definidos e não aleatoriamente como no assíncrono, para isso são enviados caracteres de sincronismo ao longo da transmissão, sincronizando assim o inicio dos blocos de transmissão; Esse tipo de transmissão é utilizado em altas velocidades e os equipamentos, para operarem com ela, necessitam de placas que gerem o sincronismo necessário para o envio dos blocos de caracteres, o que aumenta o custo desta forma de transmissão;
Transmissor
Receptor
T
T
T
Intervalos de sinalização Instantes de amostragemSinal Recuperado
Esta solução apresenta alguns problemas práticos: Necessidade de dois canais de transmissão com toda duplicação dos ckts de transmissão, aumentando em muito o custo; Exigência dos ckts apresentarem os mesmos retardos de transmissão o que exige que o meio de transmissão apresentem o mesmo retardo de propagação.
A técnica de codificação de dados utilizada nesta solução é, em geral, a NRZ (Non Return to Zero); Onda de Relógio Bits
0
1 1
0
0
0
1
1 0
1
0
Sinal NRZ
O segundo modo de se realizar uma transmissão síncrona consiste em enviar dados e informação de sincronismo que permita recuperar o relógio, juntos em um mesmo canal utilizando alguma técnica de codificação; São várias as técnicas de codificação usuais em redes de computadores para transmissão de dados e sincronismo em um mesmo canal.
A seguir exemplificaremos duas dessas técnicas, utilizadas nos padrões IEEE 802 (Institute of Electrical and Electronics Engineers):
77
31/1/2010
Codificação Manchester Manchester:: Onda de Relógio
Modulação em fase dos dados e relógio; Utilização de apenas um canal de transmissão;
Bits
Uma transição positiva representa o bit 1 e uma transição negativa o bit 0; O sinal carrega seu próprio relógio, pois cada célula possui uma transição – toda transmissão de bits 0 e 1 implica em transições do sinal, mas nem toda transição representa um bit;
0
1 1
0
0
0
1
1 0
1
0
1
0
Sinal NRZ Manchester Codificação Manchester
T
Onda de Relógio Bits Sinal Transmitido Relógio recuperado (T/2 < t < T) Sinal Recuperado
0
1 1
0
0
0
1
1 0
1
0
Onda de Relógio Bits
0
1 1
0
0
0
1
1 0
Sinal NRZ
t
1 1
0
0
0
1
1 0
1
0
.. . Recuperação de sinais na codificação Manchester
Manchester Diferencial Codificação Manchester Diferencial
78
31/1/2010
Comparação entre Transmissão Assíncrona e Síncrona
Transmissão Síncrona Não há necessidade de bits de partida e de parada, com isto aumenta-se a velocidade de transmissão; Os dois módulos (origem e destino), estabelecem uma comunicação e ficam permanentemente conectados e sincronizados; A transmissão SÍNCRONA é caracterizada pela possibilidade de transmitir um bloco inteiro com adição de controles apenas no começo e fim do bloco; Por exemplo, os caracteres de controle do protocolo BSC (STX STX – “Start of TeXt TeXt”, ”, ETX – “End of TeXt TeXt””).
A
Transmissão Assíncrona S S I N C Tempo entre caracteres variáveis
tempo
Transmissão Síncrona ESP ESP A S
S
I
N C R O N A
ESP ESP
Tempo entre caracteres constante
tempo
Modos de Comunicação: Simplex
Simplex - Unidirecional
Ex.: Rádio, Televisão, Sensor a enviar informação
Half-Duplex Ex.: Rádios CB (“over”), Walkie-talkie (Mecanismo de “ turn around”)
Full-Duplex Simétrico
Transmissor
Re ce ptor
TX
RX
Ex.: Telefone
Assimétrico (Duplex)
A
B
Ex.: Modems com canal de retorno (Mecanismo de “ turn around”)
79
31/1/2010
Half -duplex – Bidirecional (alternadamente)– compartilha o Halfmesmo canal de comunicação – não é possível transmitir e receber dados ao mesmo tempo.
Transmissor
Receptor
TX
RX
A
B
Receptor
Transmissor
RX
TX
Full-duplex – Bidirecional (simultaneamente) – A e B Fullpodem transmitir e receber dados ao mesmo tempo.
Transmissor e Re ce ptor
Transmissor e Re ce ptor
A
B
Tradicionalmente a comunicação em redes é half-duplex
Arquite tura de Monitores Comentários sobre os Modos de Operação Com cabos de par trançado de 4 fios, realizamos transmissão Half-Duplex, já com 8 fios realizamos transmissão FullDuplex ; Esta classificação não significa que estamos utilizando apenas um cabo, ou um fio, podemos utilizar mais de um meio físico para realizarmos, por exemplo, a comunicação Full-Duplex; Os diversos tipos de comunicação podem ser utilizados nas mais diversas topologias.
Semelhante a uma tela de TV, o monitor é um dispositivo de saída de dados e serve para visualizar os resultados do processamento de informações. Também serve para visualizar textos, planilhas, gráficos, imagens em movimento e até os canais de TV. PLACA DE VÍDEO – é responsável por transmitir os sinais e converte-los em imagem para que possa ser visualizada no Monitor de vídeo. Sua função então é fornecer ao Monitor a imagem.
80
31/1/2010
Monitores SVGA O monitor tem uma importância vital, pois em conjunto com a placa de vídeo forma o principal meio de comunicação entre a máquina e nós. Os fatores que diferenciam os inúmeros modelos de monitores à venda no mercado, são basicamente o tamanho, o Dot Pitch, ou o tamanho dos pontos que compõe a tela, as resoluções suportadas e a taxa máxima de atualização da imagem. Quanto ao tamanho, é a medida em polegadas entre as diagonais da tela.
Cada grupo de três pontos, sendo um vermelho, um verde e um azul, é chamado de tr tría íade de.. Chamamos de Dot Pitch a medida das tríades, ou seja, a distância diagonal entre dois pontos da mesma cor. O mais comum é encontrarmos monitores com Dot Pitch de 0.29 milímetros quadrados. Alguns monitores mais recentes, porém, utilizam pontos menores, de 0.22 ou 0.19 mm, o que garante uma imagem de melhor qualidade. Dot Pitch
Tría Tr íade de
Dot Pitch Este é o principal responsável pela qualidade da imagem de um monitor. A tela de um monitor colorido é formada por minúsculos pontos vermelhos,, verdes e azuis vermelhos azuis.. Na verdade, esses pontos são formados por vários tipos de fósforo, capazes de emitir luz com essas cores ao serem atingidos por uma corrente elétrica. Três feixes eletrônicos percorrem continuamente a tela do monitor, atingindo os pontos de fósforos que emitem essas cores.
Um bom monitor de 14 polegadas deve suportar resoluções de até 1024x768 pontos. Monitores maiores também devem ser capazes de exibir resoluções de 1280x1024 ou mesmo 1600x1200 no caso dos de 20 polegadas. O mais comum por parte dos usuários que usam monitores de 14 polegadas, é o uso de resolução de 800x600, pois mesmo quando suportadas, resoluções maiores acabam sendo desconfortáveis em um monitor pequeno. No caso de monitores grandes porém, o uso de resoluções maiores já é fortemente recomendado.
81
31/1/2010
A última característica, e talvez a mais importante nos monitores, é a freqüência de atualização da imagem, ou "refresh refresh rate". rate Num monitor, um feixe de elétrons bombardeia continuamente a tela, formando a imagem. A quantidade de vezes por segundo que este feixe atualiza a imagem, é chamada de taxa de atualização. Um bom monitor, deve ser capaz de atualizar a imagem pelo menos 75 vezes por segundo (75Hz). Porém, monitores de menor qualidade são capazes de manter uma taxa de refresh de apenas 60 Hz, o que causa cintilação na imagem, também chamada de "flicker flicker".
O flicker ocorre devido à perda de luminosidade das células de fósforo do monitor. Usando uma taxa de renovação de menos de 75Hz, o tempo que o feixe de elétrons demora para passar é muito longo, fazendo com que células percam parte do seu brilho, sendo reacendidas bruscamente na próxima passagem do feixe de elétrons. Isto faz com que as células pisquem, tornando instável a imagem. Esta instabilidade, além de desconfortável, faz muito mal aos olhos. A taxa de atualização do monitor também depende da resolução utilizada. No monitor, a imagem é atualizada linha a linha, de cima para baixo.
A quantidade de linhas que o monitor é capaz de varrer por segundo é chamada de freqüência horizontal, que é medida em KHz. Os monitores de 14 polegadas geralmente têm freqüência horizontal de 49 KHz, ou seja, são capazes de atualizar 49 mil linhas por segundo. Isto é suficiente quando vamos usar resolução de 640 x 480 ou mesmo 800x600, pois 49 KHz são suficientes para uma taxa de atualização de 75 Hz, o que já é um bom valor. Na resolução de 640x480, são percorridas 480 linhas. Na resolução de 1600x1200, são percorridas 1200 linhas. O número de linhas descritas pelo feixe é igual à resolução vertical. Janeiro de 2005
82
31/1/2010
Monitores LCD
Os monitores LCD, (Liquid Cristal Display, ou monitores de cristal líquido), já vêm há várias décadas sendo usados em computadores portáteis. Atualmente vemos uma popularização desta tecnologia também no mercado de computadores de mesa, apesar da procura ainda ser pequena devido ao alto preço destes aparelhos. Janeiro de 2005
Os cristais líquidos são formados por moléculas orgânicas viscosas que fluem como um líquido, mas que também tem estrutura espacial, como um cristal.
Mas o que os monitores LCD tem de tão especial?
Sem corrente (transparente)
Essa estrutura foi descoberta por um botânico austríaco (Rheinizer) em 1888, e aplicada pela primeira vez em visores (calculadoras, relógios) nos anos1960. Quando todas as moléculas estiverem alinhadas na mesma direção, as propriedades ópticas do cristal dependerão da direção e da polarização da luzincidente. Aplicando um campo elétrico, é possível mudar o alinhamento molecular, portanto as propriedades ópticas. Em particular, ao iluminar um cristal líquido, é possível controlar eletricamente a intensidade da luz que sai do cristal. Essa propriedade é aproveitada na construção de vídeos de tela plana.
Com corrente (opaco) Polarizador Placa de vidro
Molécula de cristal líquido
Eletrodos
Polarizador Placa de vidro
83
31/1/2010
Vantagens
De svantagens
muito mais finos que os tradicionais, o que explica seu uso em computadores portáteis; tela realmente plana; Um monitor LCD de 14 polegadas possui uma área de exibição maior do que um CRT de 15 polegadas; gastam menos energia; emitem uma quantidade muito menor de radiação nociva (praticamente nenhuma em alguns modelos); não existe flicker, pois ao invés da imagem ser formada pela ação do feixe de elétrons; O termo “refresh rate” não se aplica ao monitores de cristal líquido.
a áre a de visão mais limitada (ape nas 90º ); o contraste mais baixo (250 a 300:1, contra 500:1 do CRT); resoluções be m mais limitadas (um ponto da image m é re presentado por trê s pontos); e xtre mamente caros.
Existem duas tecnologias de fabricação de telas de LCD: LCD Monocromático
LCD Colorido
Matriz passiva (DSTN) e Matriz ativa (TFT). As telas de matriz passiva apresentam um angulo de visão mais restrito, e um tempo maior é necessário para a imagem ser atualizada.
Pixel
Pixx el Pi
Enquanto num monitor CRT, um ponto demora cerca de 15 a 20 milissegundos para mudar de cor, num monitor LCD de matriz passiva são necessários entre 150 e 250 milissegundos. Por isso que é tão difícil enxergar o cursor do mouse na tela de um notebook, ou mesmo rodar programas ou jogos que demandem mudanças rápidas de imagem de uma forma aceitável. Não são mais fabricados atualmente.
84
31/1/2010
Os LCDs de matriz ativa, usados atualmente, já apresentam uma qualidade muito superior, com um tempo de atualização de imagem mais próximo ao dos monitores CRT, entre 40 e 50 milissegundos. Isto significa entre 20 e 25 frames (quadros) por segundo, oque já é suficiente para assistir a um filme em DVD por exemplo, apesar de ainda atrapalhar um pouco nos jogos de ação, onde a imagem é alterada muito rapidamente. Os monitores de matriz ativa também tem um maior ângulo de visão e contraste maiores, além de serem mais finos e leves. Ao contrário dos monitores CRT atuais, todos os monitores de cristal líquido são digitais.
Monitores de Plasma Os monitores de plasma têm uma estrutura que lembra um pouco a dos monitores LCD. Também temos duas placas de vidro e eletrodos que aplicam tensões elétricas nas células que geram a imagem. Agrande diferença está justamente nas células. Ao invés de cristais líquidos, os monitores de plasma são formados por estruturas com o mesmo princípio de funcionamento das lâmpadas fluorescentes. A grosso modo dá para dizer que num monitor de plasma a imagem é formada por alguns milhões de minúsculas lâmpadas fluorescentes verdes, azuis e vermelhas.
Monitores Touch Screen
Os monitores sensíveis ao toque são muito usados em caixas de banco, computadores de mão, e vários outros equipamentos. Estes monitores são compostos de um monitor CRT ou LCD comum e de uma película sensível ao toque. Além de serem ligados na placa de vídeo, estes monitores são ligados também em uma das portas seriais do micro, bastando instalar o software adequado para que os toques na tela substituam os cliques do mouse.
O monitor de Plasma e composto por pequenas cavidades feitas na placa de vidro inferior, onde é depositada uma camada de fósforo colorido. Além do fósforo a cavidade contém gases como néon, xenônio e hélio que ao receberem uma descarga elétrica liberam radiação ultravioleta que acende a camada de fósforo, gerando a imagem.
Estas cavidades não podem ser muito pequenas, por isso os monitores de plasma costumam ter um dot-pitch em torno de 1 milímetro, quase 30 vezes maior do que num bom monitor CRT.
85
31/1/2010
Monitores FED Uma tecnologia promissora, que pode servir muito bem como um meio termo, (entre LCD e CRT) ou até mesmo como substituta para ambas as tecnologias, são os monitores FED, ou field emission displays (monitores de emissão de campos). O princípio de funcionamento é o mesmo dos monitores CRT. A diferença é que ao invés de um único e poderoso canhão de elétrons, temos um conjunto de mini-canhões, na forma de pontas metálicas minúsculas. Quase tão finos quanto os LCDs atuais e uma brutal diminuição no consumo elétrico.
1. Dielétrico 2. Camada resistiva 3. Catodo (cargas elétricas negativas) 4. Linhas de metal 5. Conjunto de micro pontas 6. Uma das micro pontas em destaque 7. Colunas de metal 8. Grade de metal 9. Parede de vidro 10. Célula de fósforo 11. Matriz preta 12. Camada de alumínio (Anodo) 13. Pixel aceso 14. Camada de vidro
Monitore s EL (eletroluminescent) Monitores OLED OLED vem de Organic Light Emitting Diode ou diodo orgânico emissor de luz. Esta tecnologia promete telas planas muito mais finas, leves e baratas que as atuais telas de LCD. A idéia é usar diodos orgânicos, compostos por moléculas de carbono que emitem luz ao receberem uma carga elétrica.
Monitore s FSA (fluidic self-assembly)
A vantagem é que ao contrário dos diodos tradicionais, estas moléculas podem ser diretamente aplicadas sobre a superfície da tela, usando algum método de impressão. Janeiro de 2005
86
31/1/2010
Te clados
Q uanto ao sistema de conexão temos:
Semelhante ao de uma máquina de escrever, com algumas teclas adicionais necessárias, o teclado é usado para dar entrada nas informações.. informações Suas teclas são altamente sensíveis e respondem ao menor toque de seus dedos dedos..
conector tipo AT ou DIN de 5 pinos; conector PS-2; conector USB; teclados sem fios (infravermelho). Soquete USB Soquete OS-2
Janeiro de 2005
Janeiro de 2005
O mouse serve para movimentar o cursor na tela tela..
Mouse
É um acessório que facilita a comunicação do usuário com o computador.
À medida que o mouse é movimentado por meio de uma pequena bola (track ball), seus sensores internos reproduzem na tela a movimentação do cursor. O mouse pode ser de botões ou de esfera (trackball) e pode ter 3 botões (padrão Mouse System, em desuso) e 2 botões (padrão Microsoft).
O mouse é a forma mais comum de se mapear a tela, permitindo que o usuário do sistema aponte para qualquer um dos seus pontos. Pequena peça deslizante que é ligado a saída serial ou a uma porta especial do tipo MINI-DIN do microcomputador, existe também o mouse sem fio utilizando uma interface infravermelha.
87
31/1/2010
Existem 3 tipos de mouses sendo produzidos produzidos:: mouses mecânicos: tem 2 rodas de borracha saliente, com seus eixos perpendiculares um ao outro. O movimento de cada roda é solidário a um resistor variável (potenciômetro). mouses ópticos: não tem rodas nem bola. Em lugar desses é usado um LED (Diodo Emissor de Luz) e um foto sensor na parte de baixo. Esse mouse é usado sobre uma superfície de plástico, que contem uma grade retangular de linhas com poucas distancias entre elas. mouses óptico-mecanico: tem uma bola de borracha que aciona duas engrenagens alinhadas a um ângulo de 90 graus uma em relação a outra.
CD--ROM (Compact CD (Compact Disc Read Read--Only Memory Memory)) É um dispositivo de armazenamento óptico somente para leitura com capacidade de armazenamento de 700 MB de dados. As unidades de CD-ROM são mais rápidas do que as unidades de disco flexíveis, embora os modelos mais modernos (velocidade de 52x) ainda sejam mais lentos do que as unidades de discos rígidos. As primeiras unidades de CD-ROM eram capazes de transferir dados a 150 KB/s. A unidade de 2 velocidades (2x) possuíam velocidade de 300 KB/s, e assim por diante. Mas essa velocidade (considerada velocidade máxima) só é alcançada para os dados que estão próximos a borda do CD.
DVD ( Digital Versatile ou Video Disc Disc)) Velocidade 1x 2x 3x 4x 6x 8x 10x 12x 16x
Tempo Acesso 600 ms 320 ms 250 ms 135-180 ms 135-180 ms 135-180 ms 135-180 ms 100-180 ms 100-180 ms
Taxa Tranferência 150 KB/s 300 KB/s 450 KB/s 600 KB/s 900 KB/s 1.2 MB/s 1.5 MB/s 1.8 MB/s 2.4 MB/s
A procura por mais memória é uma constante na informática e motiva as industrias desenvolver novos dispositivos de armazenamento com o DVD. Existem 3 tipos de DVD: O DVD VÍDEO (para filmes), DVD ÁUDIO (para músicas) e DVD ROM (para aplicações em computadores). Projetados para substituir os drives de CD-ROM, o DVD-ROM oferece como vantagem a sua capacidade de armazenagem com discos que guardam de 4,7 a 17 GB (de 7 a 26 vezes mais que um CD-ROM) contra os 650 MB das mídias de CD.
88
31/1/2010
Scanner Eles permite que o PC converta uma foto ou imagem em um código de forma que o programa gráfico ou de editoração eletrônica possa produzi-la na tela, imprimi-la através de uma impressora ou converter páginas datilografadas em páginas possíveis e editoradas. Existem três principais tipos de Scanners: 1 - Scanner alimentado por folhas: A imagem é capturada com maior precisão, mas existe a limitação de se trabalhar somente com folhas de papel de tamanho normal.
2 - Scanner de mesa mesa:: Necessita de uma série de espelhos para guardar a imagem capturada pela cabeça de varredura em movimento e focalizada nas lentes que alimentam a imagem para um banco de sensores. Como nenhum espelho é perfeito, a imagem sofre uma certa degradação cada vez que é refletida.
3 - Scanner manual manual:: Os Scanners manuais dependem da mão humana para mover a cabeça de varredura. O mais barato por que não precisa de um mecanismo para mover a cabeça da varredura e nem o papel.
Outro tipo de Scanner mais recente, é o Scanner 3D.
Captura imagem tridimensional a partir de um objeto real. Indicado para quem lida com design de produtos, computação gráfica ou construção de páginas na WEB. Um ponto fraco é a limitação quanto ao tamanho das peças. Elas não podem ser mais 15,2, por 10,1 por 4 centímetros. Tomando por base x,y e zrespectivamente. Independente do tipo de Scanner o modo de trabalhar de todos é basicamente simples e similar.
89
31/1/2010
Caneta Óptica
O computador baseado em caneta óptica ainda é muito escasso em comparação com o mouse e/ou teclado. Existe mais de um tipo de caneta óptica.
O computador possui basicamente três formas mais simples de receber dados através de dispositivos de entradas, dependendo totalmente de nossas mãos, que são eles: Mouse, teclado e caneta óptica. Cada um destes periféricos tem sua importância, suas vantagens e características similares entre si.
Existem computadores baseados a caneta óptica que possuem sistema operacionais específicos, estes possuem tela de cristal líquido onde existe uma tela de arame embutido pois a precisão é muito grande para identificar as ações que o usuário quer, dependendo da utilização. As ações são tomadas por parte deste sistema operacional específico e o aplicativo em uso. Existe outro tipo de caneta óptica que só é necessário um software de OCR, funciona como se fosse um Scanner, pois ler dados de um papel e passa para o PGM de OCR OCR..
Controlador de interrupções
Conceitos de Interrupções
Um pedido de interrupção, é um pedido feito ao micro para que ele pare de executar as tarefas naquele momento, afim de atender ao periférico que solicitou a interrupção; Como todos os processadores da família Intel tem apenas uma entrada para interrupção, é usado um circuito controlador de interrupção; O controlador de interrupção é capaz de gerenciar até 8 pedidos de interrupção, chamados de IRQ (Interrupt Request); Cada linha de interrupção está conectada a um periférico, obedecendo a um nível de prioridade – IRQ0 a IRQ7.
90
31/1/2010
IRQ 0
Temporizador (conectado ao chipset)
IRQ 1
Teclado (conectado ao chipset)
IRQ 2
(normalmente disponível)
IRQ 3
COM2 e COM4 (comunicação serial)
IRQ 4
COM1 e COM3 (comunicação serial)
IRQ 5
Disco rígido (padrão ST-506; não mais utilizado)
IRQ 6
Unidade de disquete
IRQ 7
LPT1 (comunicação paralela)
A partir do 80286 o número de interrupções foi aumentado, utilizando o mesmo princípio e interligando mais um controlador em cascata. Maior IRQ0 IRQ 8 IRQ 0 IRQ 9 IRQ 1 IRQ 10 IRQ 2 IRQ 11 IRQ 3 IRQ 12 IRQ 4 IRQ 13 IRQ 5 IRQ 14 IRQ 6 IRQ 15 IRQ 7 2º controlador 1º controlador
Processador
IRQ1 IRQ8 IRQ9 IRQ10 IRQ11 IRQ12 IRQ13 IRQ14 IRQ15 IRQ2 IRQ3 IRQ4 IRQ5 IRQ6 IRQ7
Nível de prioridade
Q uadro de Interrupções – PC e PC XT
Menor
Q uadro de Interrupções – 80286 e Superiores IRQ 0
Temporizador da placa-mãe (conectado ao chipset)
IRQ 1 IRQ 2
Teclado (conectado ao chipset) Conexão em cascata (conectado ao chipset)
IRQ 3 IRQ 4
COM2 e COM4 (comunicação serial) COM1 e COM3 (comunicação serial)
IRQ 5 IRQ 6
Placa de som Unidade de disquete
IRQ 7
Porta paralela
IRQ 8
Relógio de tempo real (conectado ao chipset)
IRQ 9
Interface de vídeo
IRQ 10
(Normalmente disponível)
IRQ 11
(Normalmente disponível)
IRQ 12
Mouse de barramento (bus mouse, mouse OS/2)
IRQ 13
Co-processador matemático (conectado ao chipset)
IRQ 14
Porta IDE primária
IRQ 15
Porta IDE secundária
Visualizando a inte rrupção utilizada por uma placa de víde o no Windows XP
Janeiro de 2005
91
31/1/2010
INT A# INT B# INT C# INT D#
Roteador De Interrupções PCI
IRQ8 IRQ9 IRQ10 IRQ11 IRQ12 IRQ13 IRQ14 IRQ15
O barramento PCI possui 4 linhas de interrupção: INT A# a INT D#
IRQ0 IRQ1 IRQ2 IRQ3 IRQ4 IRQ5 IRQ6 IRQ7
Canais de DMA e Endereçamento de I/O
Processador
Controlador (8 bits)
Ace sso dire to à Me mória - DMA DMA0 DMA1
Como somente o microprocessador pode ter acesso a memória e quando algum dispositivo precisa acessar a memória se utiliza do processador tornando um processo lento, foi criado um circuito de apoio chamado DMA (Direct Memory Access);
DMA4
DMA3
Memória RAM DMA5 DMA6
No PC original o controlador tinha 4 entradas (canais) – DMA0 a DMA3 de 8 bits; No AT o controlador DMA foi substituído por outro capaz de trabalhar com dados de 16 bits e adicionado outro de 8 bits para manter a compatibilidade.
Controlador (16 bits)
DMA2
DMA7
Slot ISA
Controlador DMA dos micros a partir do 80286
92
31/1/2010
Q uadro de DMA – 80286 e Superiores DMA0
(normalmente disponível)
DMA1
Placa de som
DMA2
Unidade de disquete
DMA3
(normalmente disponível)
DMA4
Conexão em cascata (conectada ao chipset chipset))
DMA5
Placa de som
DMA6
(normalmente disponível)
DMA7
(normalmente disponível)
Discos Rígidos
Disco Rígido (HD (HD--Hard disk ou Winchester O disco está dividido em cilindros (cylinders), que contém as trilhas (track), que contém vários setores (sector). O tamanho de cada setor é de 512 KB. Existem também os "Clusters". O tamanho do cluster depende do tamanho do disco e da tabela de alocação de arquivo. Ele pode ser de 4 KB (8 setores), 8 KB (16 setores), e assim por diante. Partindo deste princípio, podemos saber o tamanho exato do HD e tomar conhecimento da perda que sofremos com a alocação de arquivos.
93
31/1/2010
Geometria de um disco rígido IDE. Cabeça Magnética Setores Eixo Cilindros Trilhas
Janeiro de 2005
Exemplo de um HD vendido como sendo de 840 MB, contendo 1647 Cilindros, 16 cabeças e 63 setores (por trilha). Primeiro, multiplicamos os dados, e obtemos a quantidade de setores 1647 x 16 x 63 = 1.660.176 setores. Segundo, multiplicamos a quantidade de setores pelo seu tamanho e obtemos a quantia em bytes 1660176 x 512 = 850.010.112 bytes, que corresponde a 850 MB. Para sabermos a sua capacidade de armazenamento real, precisamos dividir a quantidade de bytes (que neste caso foi de 850MB) por 1.048.576 bytes que corresponde a 1MB, e obtemos: 850.010.112 / 1.048.576 = 810,63 MB reais em disco. Infelizmente temos uma perda de ± 40MB neste disco.
Janeiro de 2005
Disco Rígido Aberto Actuador Braço de Leitura
Eixo Discos Magnéticos
Cabeça de Leitura
94
31/1/2010
Trilhas são círculos concêntricos onde os dados são gravados magneticamente. Um disco é geralmente formatado com um valor entre 40 e algumas centenas de trilhas por superfície. Setores são espaços radiais que subdividem as trilhas para endereçamento e acesso. O setor contém um determinado número de bytes, geralmente 512. Nos sistemas mais antigos representava a unidade lógica de acesso para leitura e gravação.
Clusters são utilizados nos sistemas mais modernos e representam a unidade lógica de acesso. O tamanho de um cluster depende do tipo do disco, variando desde um simples setor até um conjunto de vários setores.
Cilindros formados pelo conjunto de trilhas de um mesmo raio e pertencentes a diferentes superfícies. O conceito é utilizado para agilizar o acesso e a transferência de dados, pois as cabeças de leitura/gravação ficam todas simultaneamente posicionadas sobre um mesmo cilindro.
O sistema DOS, por exemplo, adota a seguinte formatação:
Janeiro de 2005
95
31/1/2010
Cada sistema operacional implementa uma organização própria de controle e acesso aplicado sobre a formatação física da unidade de disco. No sistema DOS, por exemplo, a superfície do disco é logicamente dividida em duas partes, uma para armazenamento das informações utilizadas pelo sistema operacional (área do sistema) e outra para armazenamento dos arquivos propriamente ditos (área de dados).
O Boot ocupa apenas um setor e tem por finalidade carregar o sistema operacional para a MP quando da ocasião da inicialização do computador. A FAT (File Alocation Table) - é utilizada pelo sistema para armazenar a situação de cada um dos clusters que compõem o disco, se o mesmo está desocupado, ocupado ou defeituoso, por exemplo. Pela sua importância, o sistema operacional mantém uma cópia da FAT afim de dobrar a confiabilidade do disco. A terceira e última área do sistema é o Diretório Raiz (Root), que mantém uma entrada para cada arquivo ou diretório ali registrado.
Janeiro de 2005
Taxa de Transfe rê ncia É o número de bytes capaz de ser transferido do disco para a MP por unidade de segundo:
seek - é o tempo que a unidade gasta para posicionar o cabeçote de leitura e gravação sobre o cilindro desejado (um disco rígido gasta tipicamente 3ms entre trilhas adjacentes e de 20 a 100ms para ir do cilindro mais externo ao mais interno e vice-versa; latência - é o tempo gasto esperando pelo setor desejado (varia de 0 a 16.67ms para discos rígidos girando a 3600rpm);
onde " ta " é o tempo de acesso, que é dado por:
ta = seek + latência + tempo de transferência,
tempo de transferência - é o tempo gasto na transmissão dos dados (leitura ou gravação) propriamente dita. Para os discos flexíveis existe mais um componente por conta do tempo de aceleração necessário para fazer com que a velocidade de cruzeiro do motor seja atingida.
96
31/1/2010
Como os Dados são Gravados e Lidos
Os discos magnéticos de um HD são recobertos por uma camada magnética extremamente fina. Quanto mais fina for a camada de gravação, maior será sua sensibilidade, e consequentemente maior será a densidade de gravação permitida por ela. Poderemos então armazenar mais dados num disco do mesmo tamanho, criando HDs de maior capacidade.
Molécula de óxido de ferro
Os discos atuais já utilizam mídia laminada (plated mídia); uma mídia mais densa, de qualidade muito superior, que permite a enorme capacidade de armazenamento dos discos modernos. A cabeça de leitura e gravação de um disco rígido funciona como um eletroímã, sendo composta de uma bobina de fios que envolvem um núcleo de ferro. Este eletroímã é extremamente pequeno e preciso, a ponto de ser capaz de gravar trilhas medindo menos de um centésimo de milímetro.
Cabeça Magnética Polo Positivo Trilha
Polo Positivo
Até a década de 80, discos rígidos utilizavam a mesma tecnologia de mídia magnética utilizada em disquetes, chamada “coated media”, que além de permitir uma baixa densidade de gravação, não é muito durável.
Polo Negativo Moléculas alinhadas
Polo Negativo
97
31/1/2010
O Modo LBA (Logical (Logical Block Addressing) Addressing) IDE é uma interface padrozinada pela American National Standard Institute (ANSI)em Novembro de 1990.
O padrão IDE original (na verdade o BIOS dos micros antigos) possui um limite que não permite o acesso a discos maiores que 504 MB.
A ANSI chamou IDE como Advanced Technology Attachment (ATA).
Essa limitação foi quebrada quando foi inventado o modo LBA (Logical Block Addressing - Endereçamento Lógico de Setores).
IDE significa Integrated Drive Electronics, ou Eletrônica de Drive Integrada. Essa tecnologia consiste basicamente em integrar a controladora dentro do próprio dispositivo. Não existe "controladora IDE", a interface IDE é apenas uma porta, uma interface, não havendo nenhum controle envolvido. Todo o controle está no próprio dispositivo.
Disco Rígidos IDE deveriam obedecer simultaneamente aos limites do BIOS do microcomputador e do padrão de comunicação dos Discos Rígidos IDE (ATA). Apesar de o padrão ATA permitir mais de 1.024 cilindros, o BIOS não permite. Embora o BIOS permita até 255 cabeças, o padrão ATA só permite até 16. Isso fez gerar um limite para Discos Rígidos padrão IDE que não permitiriam ter uma geometria lógica maior que 1204 cilindros, 16 cabeças e 63 setores.
O ATA, de conexão de Discos Rígidos IDE ao micro, também tem limite de geometria. Um valor muito alto, 65.536 cilindros, 16 cabeças e 255 setores por trilha. Isso significa que o padrão ATA teoricamente poderia acessar Discos Rígidos IDE com até 127.5 GB de capacidade, um limite quase 17 vezes maio que o limite imposto pelo BIOS, que já era alto.
Cilindros Cabeças Setores Capacidade Máxima BIOS ATA DISCO RÌGIDO
1.024 65.536 1.024
255 16 16
63 255 63
7.84 GB 127.5 GB 504 MB
Para contornarmos essa limitação tínhamos duas saídas: Usando-se um modo chamado LBA, que foi criado para transpor esse limite (todas as placas mães modernas trazem no BIOS o modo LBA); A Formatação do Disco Rígido, através de um programa especial fornecido pelo fabricante, em placas mães que não possuem o modo LBA.
98
31/1/2010
O padrão IDE suportando o modo LBA passou a ser chamado IDE-2, E-IDE (Enhanced IDE), ATA-2 ou ATAPI (AT Attachment Packet Interface). Com essa modificação (E-IDE) foi criada o protocolo ATAPI que permitiu que a porta IDE pudesse ser utilizada por outros dispositivos IDE além do disco rígido. Os discos IDE são acessados através de um modo chamado PIO (Processor ou Programmed I/O). Junto com o E-IDE foram criados dois novos modos PIO além dos já existentes na época: PIO modo 3 (taxas de transferência de até 11,1 MB/s) e PIO modo 4 (taxas de transferências de até 16,6 MB/s). Esses dois modos PIO são genericamente chamados Fast IDE.
Depois surgiram os modos Ultra DMA, que são modos que atingem taxas de transferência mais elevadas. Serial ATA SATA é um novo padrão de discos rígidos que finalmente começa aparecer no mercado. A porta IDE tradicional transfere dados de forma paralela que é mais rápida que a transferência Serial. Sua grande desvantagem, porém, é em relação ao ruído. Os discos rígidos ATA-66 e superiores precisam de um cabo especial, de 80 vias (um fio terra entre cada fio original). Atualmente a taxa de transferência máxima que temos no padrão IDE é de 133 MB/s (ATA-133).
O Serial ATA, usa um cabo com apenas quatro fios. Com isso, o problema de interferência simplesmente não existe (todos os cabos Serial ATAsão obviamente blindados). Outra vantagem é que o cabo é fino e não atrapalha em nada na ventilação interna do gabinete. A primeira versão do Serial ATA tem uma taxa de transferência de 150 MB/s e a segunda versão, SATA II, terá o dobro dessa taxa de transferência, ou seja, 300 MB/s. É possível instalar dispositivos IDE convencionais em portas Serial ATA através de placas adaptadoras.
Cabo Serial ATA Janeiro de 2005
Existem também placas adaptadoras para converter portas IDE comuns em portas Serial ATA. Janeiro de 2005
99
31/1/2010
Limitação por Software Software..
Quando um disco é formatado, o próprio sistema operacional define o tamanho que será utilizado, conforme as tabelas abaixo.
Esta limitação se dá através do sistema FAT (File Allocation Table)- é a parte do sistema operacional responsável por lidar com armazenamento de dados (memória de massa). Este sistema utiliza o cluster – conjunto de setores – para definir o tamanho (capacidade de armazenamento) que cada FAT pode acessar. Dessa forma cada posição da FAT aponta um cluster, ou seja, dependendo do número de setores que cada cluster pode conter, teremos a capacidade que o FAT pode acessar.
FAT
Utilizado em
12 16 32
Disquetes Discos Rígidos Discos Rígidos
Nº máximo Tamanho máximo da de clusters partição
CLUSTER – 2 Kbytes
2 12 2 16 2 32
32.0 MB 2.0 GB 4.0 TB CLUSTER – 2 Kbytes
SETOR SETOR SETOR SETOR SETOR SETOR SETOR SETOR SETOR SETOR
Atualmente temos três sistemas FAT: FAT-12 – o parâmetro indica o número de bits utilizados para armazenar cada posição na FAT. Estes sistemas são característicos dos disquetes. FAT-16 –Este sistema é característicos dos sistemas operacionais como o MS-DOS, Windows 3.x Windows 9.x.... FAT-32 - Este sistema é característicos dos sistemas operacionais como o Windows 95OSR2, Win 98, Win 2000 e Win XP.
Tamanho do Clusters – FAT 12
Nº de Setores de 512 Bytes
Capacidade máxima de armazenamento
1 KB
2
4 MB
2 KB
4
8 MB
4 KB
8
16 MB
8 KB
16
32 MB
512 bytes
100
31/1/2010
Nº de Setores de 512 Bytes
Capacidade máxima de armazenamento
2 KB
4
128 MB
4 KB
8
256 MB
8 KB
16
512 MB
16 KB
32
1.0 GB
32 KB
64
2.0 GB
Tamanho do Clusters – FAT 16
Tamanho do Clusters Nº de Setores Capacidade máxima – FAT 32 de 512 Bytes de armazenamento 512 Bytes
1
256 MB
4 KB
8
8.0 GB
8 KB
16
16.0 GB
16 KB
32
32.0 GB
32 KB
64
2.0 TB
Interfaces SCSI
De svantagens do Sistema FAT : Limite de 2 GB para Discos Rígidos na FAT 16; Não compatibilidade da FAT 32 com outros Sistemas O pe racionais como: Windows NT, O S2 e e tc; Aglome rados Pe rdidos (lost clusters); Cade ias Interligadas; Fragme ntação dos dados no disco.
Uma opção às interfaces IDE, são as controladoras SCSI (Small Computer Systems Interface). Estas controladoras são encaixadas em um slot disponível da placa mãe. As controladoras e discos SCSI são superiores aos IDE em vários aspectos, porém não são tão populares devido ao preço. Do ponto de vista de um usuário doméstico, as vantagens do SCSI não justificam seu alto preço. Mas em micros de alto desempenho, como servidores de rede, o uso do SCSI é quase obrigatório.
101
31/1/2010
Numa controladora SCSI, podemos usar até 15 dispositivos simultaneamente sem que haja degradação de performance. Uma menor utilização do processador quando o HD é acessado, pois praticamente todo trabalho é executado pelos próprios discos rígidos (sob orientação da controladora), e não pelo processador. O primeiro modelo de controladora SCSI foi lançado em 1986. Era uma controladora de 8 bits, que permitia um barramento de dados de até 5 Megabytes por segundo. Esta controladora antiga é chamada de SCSI 1.
Em 1990, foi lançada a segunda geração de controladoras SCSI, chamadas de SCSI 2. Estas novas controladoras já eram muito mais rápidas, incluindo também outros recursos, como o suporte de até 15 dispositivos por controladora, em oposição aos 7 suportados pelas controladoras antigas. Foram lançados posteriormente os modelos Ultra SCSI e Ultra 2 SCSI além, claro, das recordistas de velocidade Ultra SCSI 3, que permitem taxas de transferência de dados ainda maiores, incluindo também alguns recursos novos.
Além da divisão em modelos, as interfaces SCSI dividem-se também em controladoras Narrow (estreito) e Wide (largo). As controladoras Narrow trabalham com transferências de dados a 8 bits e suportam o uso de até 8 dispositivos por interface.
Para que possam se r ace ssados pela controladora, cada dispositivo SCSI possui um ende re ço de identificação, ou
As controladoras Wide, por sua vez, trabalham com transferências de 16 bits.
ID.
Os cabos também mudam; as controladoras Narrow usam cabos de 50 vias, enquanto as Wide usam cabos de 68 vias.
As
controladoras
Narrow
possuem
8
endere ços,
nume rados de 0 a 7, enquanto as Wide possuem 16 endere ços, nume rados de 0 a 15. Como o endere ço 0 é usado pela própria controladora, sobram 7 ou 15 e nde reços para os dispositivos. Se um barrame nto PCI ope ra a apenas 133 MB/s, de que adianta usar uma placa Ultra 3 SCSI de 160 MB/s?
102
31/1/2010
Caso realmente haja necessidade de ter a placa SCSI trabalhando à 160 MB/s, a solução seria comprar uma placa mãe que tenha slots PCI de 64 bits e uma placa SCSI neste formato. Slots PCI de 64 bits Capazes de transferir dados a 266 MB/s, o dobro dos slots PCI de 32 bits.
Arquitetura CISC/RISC
ASUS CUR-DLS Janeiro de 2005
A tecnologia RISC (Reduced Instruction Set Computing) foi desenvolvida pela IBM nos anos 70 e o primeiro chip surgiu em 1980. Sua proposta baseou-se em um conjunto reduzido de instruções, sendo definidas apenas as mais freqüentemente utilizadas e se evitando o uso de microcódigos. As instruções também seriam simplificadas, trabalhando com apenas um operando.
A te cnologia RISC come çou a se r promovida no me rcado com o surgimento das estaçõe s de trabalho científicas, pois sua atividade básica é "CPU bound". Os chips CISC (Complex Instrution Set Computing) de aplicação mais ge ral - típicas de ambiente s come rciais não ofe reciam a ve locidade ne cessária aos trabalhos com e xte nsas manipulação de números e visualização gráfica.
103
31/1/2010
Arquitetura Alpha-Risc Proce ssadores RISC X Proce ssadores CISC Um processador CISC (Complex Instruction Set Computer, ou “computador com um conjunto complexo de instruções”), é capaz de executar várias centenas de instruções complexas, sendo extremamente versátil. Exemplos de processadores CISC são o 386 e o 486; RISC (Reduced Instruction Set Computer, ou “computador com um conjunto reduzido de instruções”). Ao contrário dos complexos CISC, os processadores RISC são capazes de executar apenas algumas poucas instruções simples. Um exemplo são os processadores Alpha da Digital Equipment Corporation , que em 97 já operavam a 600 MHz. Data Cache
Cada vez mais as te cnologias RISC e CISC e stão se É indiscutível poré m, que em instruçõe s complexas, os proce ssadores CISC saem-se me lhor.
aproximando:: aproximando processadores RISC e stão aumentando seu conjunto de
Por isso, ao invés da vitória de uma das duas te cnologias, atualmente vemos processadore s híbridos, que são essencialme nte proce ssadores CISC, mas incorporam muitos re cursos encontrados nos processadores RISC (ou vice -ve rsa). Um bom e xe mplo de processador híbrido é o Pe ntium II.
instruçõe s
e
os
CISC
estão
adotando
té cnicas
originalmente implementadas nos RISC. Por exe mplo, o núme ro de ciclos por instrução é bastante similar em ambos. O re sultado prático é que o "path length" de stes processadores para e xe cutar uma tarefa é praticame nte igual.
104
31/1/2010
O Pentium, segundo a Intel, utiliz a te cnologia CRISC, acoplame nto das duas té cnicas. Na ve rdade algumas máquinas RISC utiliz am poucas de suas té cnicas básicas, ao mesmo te mpo que impleme ntam conceitos típicos dos proje tos CISC; e ntre tanto, adotam o jargão RISC por que stão de marketing. Um ambiente come rcial é caracte rizado por processame nto transacional, com muita manipulação de cadeias e inteiros alé m de alto fluxo de e ntrada/saída. Já o científico se caracte riz a por grande núme ro de instruções de ponto flutuante.
Ape sar de por questõe s de Marketing, muitos fabricantes ainda vendere m se us chips, como sendo “Processadores RISC”, não existe praticamente nenhum processador atualmente que siga estritamente uma das duas filosofias. Tanto proce ssadore s da família x86, como o Pentium II, Pentium III e AMD Athlon, quanto processadores supostamente RISC, como o MIPS R10000 e o HP PA8000 misturam caracte rísticas das duas arquiteturas, por simples questão de pe rformance.
A conclusão lógica é que as máquinas dos dois tipos tem dife re ntes concepções para dife rentes utilizações.
PCs x Macs Existe uma idéia geral de que o G4, usado nos Macs é um processador RISC, enquanto os processadores usados em micros PC, incluindo o Pentium III e o Athlon são todos CISC. Ambas as afirmações estão erradas. Na verdade, tanto o G4, quanto o Athlon e o Pentium III são considerados processadores Post-RISC, processadores que possuem um conjunto de instruções gigantesco, maior do que o conjunto de instruções de um processador CISC típico. A diferença é que toda essa gigantesca gama de instruções diferentes, podem ser decodificadas em instruções RISC simples, estas sim que serão processadas. A “conversão” das instruções é feita por um componente especial do processador, chamado de Hardware Decoder, encontrado tanto no G4 quanto no Athlon.
Máquinas Multiníveis
105
31/1/2010
A maioria dos computadores modernos possui dois ou mais níveis, sendo que máquinas com seis ou mais níveis são cada vez mais comuns.
Tais níveis se subdividem basicamente em em:: Hardware,, Firmware Hardware Firmware,, Software Básico, Utilitários e Softwares Aplicativos Aplicativos..
níve l 0 - Lógica Digital Constitui o hardware do computador. No nível 0 e ncontram-se: os circuitos ele trônicos e os dive rsos sistemas (módulos) que compõem o computador: UCP, me mória, dispositivos de E/S, dispositivos de comunicação e interfaces. O nível 0 exe cuta dire tamente as instruçõe s (ou microinstruções) submetidas pe lo níve l 1.
níve l 1 - Microprogramação É o verdadeiro nível de linguagem de máquina. O microprograma, residente em memória permanente (ROM), compõe o que é conhecido por firmware e tem por função interpretar e traduzir as instruções que lhe são submetidas pelos níveis superiores; nem todas as máquinas possuem este nível, veja as máquinas RISC por exemplo; nas máquinas não microprogramadas, o nível 2, chamado de máquina convencional, é diretamente executado pelo hardware;
106
31/1/2010
as vantagens da microprogramação são são::
b) flexibilizar e possibilitar o desenvolvimento de instruções mais potentes a nível de máquina convencional.
o microprograma, escrito pelo microprogramador e armazenado em uma memória não volátil, tem como função interpretar (buscar, examinar e executar) cada uma das instruções de um programa em nível de máquina convencional. Para isto, o microprograma deve acessar e controlar todos os recursos de hardware (registradores, barramentos, ULAs, memórias e outros);
o conjunto de microinstruções é geralmente pequeno, no entorno de duas ou três dezenas, sendo que a maior parte delas envolvendo a movimentação de dados de uma parte da máquina para outra, ou a realização de alguns testes simples;
as microinstruções são compostas apenas por sinais de controle e o microprograma é executado por um dispositivo chamado seqüenciador que, juntamente com os demais circuitos de hardware, compõe a microarquitetura;
um mesmo computador pode suportar mais de um microprograma, cada um definindo uma máquina virtual de nível 1 diferente;
um dos pontos de projeto da microarquitetura é a definição da largura das microinstruções ou seja, da memória do microprograma, isto é, da micromemória;
a) facilitar o projeto e a construção dos circuitos digitais, através da implementação de parte da lógica digital dentro do firmware;
outra opção de projeto é a adoção da nanoprogramação, que consiste basicamente na adoção de uma terceira memória, a nanomemória, para armazenar as instruções do nanoprograma. com a nanoprogramação a microarquitetura fica composta da memória principal, volátil, que armazena o programa em execução, a micromemória, não volátil, que armazena o microprograma e a nanomemória, também não volátil, que armazena o nanoprograma.
tamanho da memória = "n x w“. n – número de instruções; w – largura em bits (microinstrução)
"n x log2 m + m x w" (número de microinstruções multiplicado pelo logaritmo na base dois do tamanho da memória de nanoprogramação so mado ao tamanho da memória de nanoprogramação).
a nanoprogramação se constitui na realidade, de um artifício para reduzir o tamanho do microprograma naqueles casos em que ocorra muitas repetições de uma ou mais microinstruções. Microprogramação convencional (a) e nanoprogramação (b)
107
31/1/2010
níve l 4 - Linguagem de Montagem níve l 3 - Sistema Operacional é o nível em que o usuário interage diretamente (através do uso de utilitários e da linguagem de controle) ou indiretamente (através de programas aplicativos desenvolvidos em máquinas de níveis superiores); o windows 3.1, por exemplo, é uma máquina virtual colocada acima deste nível e cuja finalidade é proporcionar ao usuário uma interface mais amigável e de mais fácil assimilação; é geralmente, um nível híbrido, onde parte de suas instruções são interpretadas pelo "kernel" do SO (nível 2) e parte são interpretadas diretamente pelo microprograma (nível 1).
níve l 6 e superiores constituído por sistemas projetados para criar "shells" máquinas virtuais especialmente adequadas para certas aplicações, como por exemplo o word, o access, o excel, o lotus, etc. Em resumo, os computadores modernos são constituídos de uma série hierárquica de máquinas virtuais, cada uma projetada e construída sobre suas predecessoras.
é genericamente chamada de assembly, embora cada máquina tenha seu próprio assembly, e é traduzida para o nível inferior pelo montador, comumente chamado de assembler. o assembly já foi muito importante em épocas passadas, porém hoje é totalmente suplantado pelas linguagens de alto nível para o desenvolvimento de programas aplicativos e até utilitários.
níve l 5 - Linguagens Orientadas para o Proble ma consiste em diferentes máquinas virtuais, cada uma definida pelo ambiente criado por sua linguagem de programação de alto nível. as linguagens de alto nível são mais complexas que o assembly e requerem tradutores mais bem elaborados e potentes dos tipos interpretadores e compiladores.
Na estrutura de um PC, por exemplo, 4 níveis virtuais podem ser considerados: o dos programas aplicativos, o do sistema operacional, o dos programas de interface com os dispositivos periféricos (drivers) e as rotinas de entrada e saída padrão fornecidas pela BIOS.
Observe que a segurança pode ser afetada uma vez que qualquer dos níveis pode realizar acesso direto às rotinas da BIOS e, portanto, sem se submeter aos critérios e procedimentos de proteção.
108
31/1/2010
A famosa Le i de Moore
Durante a década de 70, Gordon Moore, na época o presidente da Intel lançou uma profecia, que dizia que a partir dali o poder de processamento dos processadores dobraria a cada 18 meses. Esta “profecia” tornou-se tão verdadeira que acabou virando a famosa lei de Moore, e realmente vem se mantendo precisa até os dias de hoje. Mas, você já parou para pensar até onde os processadores podem evoluir? Até onde a lei de Moore pode continuar sendo válida? Estrutura do MSMS -DOS
Novas Te cnologias
Novas Te cnologias
O campo mais promissor atualmente é o dos processadores Quânticos. Ao invés de usar transistores, estes processadores Quânticos utilizam átomos para processar informações.
A IBM anunciou seu prime iro chip Quântico, na 12º Confe rência anual na unive rsidade de Palo Alto.
Os elétrons que circundam o núcleo atômico podem girar tanto no sentido horário quanto no sentido anti-horário, servindo muito bem como substituto de um transistor. Mais do que isso, usando técnicas mais avançadas pode ser que um mesmo átomo possa processar vários bits simultaneamente.
Ainda é um proje to bastante rudime ntar, possui ape nas 5
Considerando o tamanho de um átomo, e as possibilidades da nova tecnologia, temos possibilidades de evolução praticamente ilimitadas.
qubits, trabalha a apenas 215 Hz , e nece ssita de um aparato gigante sco de e quipamentos para funcionar, mas já mostra que é re alme nte possível produzir proce ssadores Q uânticos.
109
31/1/2010
Novas Te cnologias
Novas Te cnologias Praticame nte todos os grandes fabricantes de chips vem faze ndo pe squisas ne sta áre a, ainda e xistem muitos proble mas a se promissora.
resolve r, mas a áre a é
bastante
Provavelmente tere mos dentro de duas ou três dé cadas processadores bilhões de veze s mais pode rosos que os atuais, que não consumam praticamente nenhuma ele tricidade e se jam muito menores que a ponta de um alfinete. Janeiro de 2005
Bibliografia: http://venus.rdc.puc-rio.br/rmano/comp0clk.html. STALLINGS, William. Arquitetura e Organização Computadores. - 5. ed. – São Paulo: Prentice Hall, 2002.
de
110