“O temor temor ao Senhor é o princí pr incípio pio da Sabedoria...! ” Pv 9,10
.......................................................................................................................4 ................................................................................................................4 ...................................................................................6 ....................................................................................7 ....................................................................................8
DIFERENÇAS NA ARQUITETURA ...............................................................................................................................14 CO-PROCESSADOR ARITMÉTICO ..............................................................................................................................15 3.1 COMO SÃO FABRICADOS FABRICADOS OS PROCESSADORES PROCESSADORES ................. ........................ ................. ........................ ...15 ... 15
4.1 BARRAMENTO DE DADOS..........................................................................................................................22 4.2 BARRAMENTO BARRAMENTO DE ENDEREÇOS ENDEREÇOS ..................... .................... ..................... .................... ..................... ......... 22 4.3 BARRAMENTO DE CONTROLE ..................................................................................................................22
..................................................................................................................23 ...........................................................................................................................................23 .......................................................................................................................................23 ................................................................................................................................24 ..................................................................................................................................24 ......................................................................24 Registrador.......................................................................................................................................................25 ..........................................................................................................26 ...........................................................................................................................................27 .....................................................................................................................................27
6.1 TIPOS TIPOS DE DISPOSITIV DISPOSITIVOS OS ................ ..................... .................... ........................ ................. ........................ ...29 ... 29
7.1 I NTRODUÇÃO NTRODUÇÃO ...................................................................................................................................................31 7.2 A PORTA AND.................................................................................................................................................31 7.3 A PORTA OR....................................................................................................................................................33 7.4 A PORTA XOR.................................................................................................................................................33 7.5 A PORTA NOT ......... .... ......... ......... ........... ........... ......... .......... ...... ............ ...... ...... ...... ........... ...... ........... ...... ........... ...... ......... .......... ...... ............ ...... ...... ........... ..... ...... ............ ...... ...... ...... ......... ...... ... 34 7.6 A PORTA NAND ......... .... ........... ...... ........... ...... ......... .......... ...... ............ ...... ...... ...... ........... ..... ............ ...... ........... ...... ......... .......... ...... ............ ...... ...... ........... ..... ...... ............ ...... ...... ...... ......... ...... ... 34 7.7 A PORTA NOR ......... .... ......... ......... ........... ........... ......... .......... ...... ............ ...... ...... ...... ........... ...... ........... ...... ........... ...... ......... .......... ...... ............ ...... ...... ........... ..... ...... ............ ...... ...... ...... ......... ...... ... 34 7.8 A PORTA XNOR ..............................................................................................................................................35 7.10 7.10 PORTAS LÓGICAS DISPONÍVEIS C OMERCIALMENTE ..........................................................................................36 7.11 7.11 I NTERLIGAÇÃO DE PORTA S LÓGICAS ..............................................................................................................36 7.12 7.12 EQUAÇÃO BOOLEANA DE FUNÇÕES LÓGICAS ..................................................................................................36
....................................................................38
10.1. CONJUNTO DE INSTRUÇÕES ............................................................................................................................40 10.1.1 CONJUNTO DE I NSTRUÇÕES NSTRUÇÕES NO CONTEXTO DE SOFTWARE .............................................................................40
2
11.1 CONJUNTO CONJUNTO DE INSTRUÇÕES INSTRUÇÕES EM UM MICROCOMP MICROCOMPUTADO UTADOR R ................... ................. ........................ ...42 ... 42
13.1 MULTIPROCES MULTIPROCESSADOR........................... SADOR........................... .................... ..................... ..................... .................... .................. 47 ..............................................................................................................................47 .......................................................................................................................................48 13.2 MULTICOMPUT MULTICOMPUTADOR ADOR ..................... ........................ .................... ..................... .................... ..................... 48
3
A história do computador, ao contrário do que muitos podem imaginar, tem seu início há muito tempo atrás, desde quando o homem descobriu que somente com os dedos, ou com pedras e gravetos, não dava mais para fazer cálculos... Aproximadamente 4.000 a.C. - Um aparelho muito simples formado por uma placa de argila onde se escreviam algarismos que auxiliavam nos cálculos. Esse aparelho era chamado de ÁBACO palavra de d e origem Fenícia. Cerca de d e 200 a.C., o Ábaco era constituído por uma moldura retangular de madeira com varetas paralelas e pedras deslizantes. 1642 - Um francês de 18 anos de nome Blaise Pascal, inventou a primeira máquina de somar: PASCALINA, a qual executava operações aritméticas quando se giravam os discos interligados, sendo assim a precursora das calculadoras mecânicas.
1642 - Pascalina 1671 - Por volta deste ano na Alemanha, Gottfried Leibnitz inventou uma máquina muito parecida com a Pascalina, que efetuava cálculos de multiplicação e divisão, e qual se tornou à antecessora direta das calculadoras manuais. 1802 - Na França, Joseph Marie Jacquard passou a utilizar Cartões Perfurados para controlar suas máquinas de tear e automatizá-las. 1822 - Foi desenvolvido por um cientista inglês chamado Charles Babbage uma máquina diferencial que permitia cálculos como funções trigonométricas e logaritmas, utilizando os cartões de Jacquard. 1834 - Charles Babbage desenvolveu uma máquina analítica capaz de executar as quatro operações (somar, dividir, subtrair, multiplicar), armazenar dados em uma memória (de até 1.000 números de 50 dígitos) e imprimir resultados. Porém, sua máquina só pode ser concluída anos após a sua morte, tornando-se a base para a estrutura dos computadores atuais, fazendo com que Charles Babbage fosse considerado como o "Pai do Computador".
No ano de 1890, época do censo dos EUA, Hermann Hollerith percebeu que só conseguiria terminar de apurar os dados do censo quando já seria o tempo de se efetuar novo censo (1900). 4
Então aperfeiçoou os cartões perfurados (aqueles utilizados por Jacquard) e inventou máquinas para manipulá-los, conseguindo com isso obter os resultados em tempo recorde, isto é, 3 anos depois.
Tabulador de Hollerith – 1890. Tabulava estatísticas com Cartões Perfurados Em função dos resultados obtidos, Hollerith, em 1896, fundou uma companhia chamada TMC Tabulation Machine Company, vindo esta a se associar, em 1914 com duas outras pequenas empresas, formando a Computing Tabulation Recording Company vindo a se tornar, em 1924, a tão conhecida IBM - Internacional Business Machine. Em 1930, os cientistas começaram a progredir nas invenções de máquinas complexas, sendo que o Analisador Diferencial de Vannevar Bush anuncia a moderna era do computador. Em 1936, Allan Turing publica um artigo sobre "Números Computáveis" e Claude Shannon demonstra numa tese a conexão entre lógica simbólica e circuitos elétricos. Em 1937, George Stibitz constrói em sua mesa de cozinha um "Somador Binário". Com a chegada da Segunda Guerra Mundial houve a necessidade de se projetar máquinas capazes de executar cálculos balísticos com rapidez e precisão para serem utilizadas na indústria bélica. Com isso surgiu, em 1944, o primeiro computador eletromecânico (construído na Universidade de Harvard, pela equipe do professor H. Aiken e com a ajuda financeira da IBM, que investiu US$ 500.000,00 no projeto), possuía o nome de MARK I, era controlado por programa e usava o sistema decimal. Tinha cerca de 15 metros de comprimento e 2,5 metros de altura, era envolvido por uma caixa de vidro e de aço inoxidável brilhante e possuía as seguintes características: 760.000 peças 800 km de fios 420 interruptores para controle Realizava uma soma em 0,3 s Realizava uma multiplicação em 0,4 s e uma divisão em cerca de 10 s
Mark I - 1943 Com seus 420 interruptores que eram ajustados manualmente para que os valores fossem introduzidos 5
1943 - Um projeto britânico, sob a liderança do matemático Alan Turing, colocou em operação uma série de máquinas mais ambiciosas, o COLOSSUS, pois ao invés de relés eletromecânicos, cada nova máquina usava 2.000 válvulas eletrônicas. O Colossus trabalhava com símbolos perfurados numa argola de fita de papel, que era inserida na máquina de leitura fotoelétrica, comparando a mensagem cifrada com os códigos conhecidos até encontrar uma coincidência. Ele processava 25.000 caracteres por segundo.
COLOSSUS – 1943 criado para quebrar códigos alemães ultra-secretos 1945 - John von Neumann delineia os elementos críticos de um sistema de computador. 1946 - Surgiu o ENIAC - Eletronic Numerical Interpreter and Calculator, ou seja, "Computador e Integrador Numérico Eletrônico", projetado para fins militares, pelo Departamento de Material de Guerra do Exército dos EUA, na Universidade de Pensilvânia. Era o primeiro computador digital eletrônico de grande escala e foi projetado por John W. Mauchly e J. Presper Eckert (que era um gênio em engenharia, pois quando tinha apenas 8 anos construiu um rádio a cristal e colocou-o num lápis). O ENIAC tinha as seguintes características: Totalmente eletrônico 17.468 válvulas 500.000 conexões de solda 30 toneladas de peso 180 m² de área construída 5,5 m de altura 25 m de comprimento 2 vezes maior que MARK I realizava uma soma em 0,0002 s realizava uma multiplicação em 0,005 s com números de 10 dígitos
6
ENIAC – 1946 primeiro computador digital eletrônico de grande escala O sucessor do ENIAC foi o EDVAC - Eletronic Discrete Variable Computer ou "Computador Eletrônico de Variáveis Discretas". O EDVAC foi planejado para acelerar o trabalho armazenando tanto programas quanto dados em sua expansão de memória interna. Os dados, então, eram armazenados eletronicamente num meio material composto de um tubo cheio de mercúrio, conhecido como linha de retardo, onde os cristais dentro do tubo geravam pulsos eletrônicos que se refletiam para frente e para trás, tão lentamente quanto podiam, de fato a reter a informação, semelhante a um desfiladeiro que retém um eco, que Eckert descobriu por acaso ao trabalhar com radar. Outra grande característica do EDVAC era poder codificar as informações em forma binária em vez da forma decimal, reduzindo bastante o número de válvulas. 1947 - John Bardeen, William Shockley e Walter Brattain inventam o TRANSISTOR. 1949 - Surge o EDSAC - Eletronic Delay Storage Automatic Calculator ou "Calculadora Automática com Armazenamento por Retardo Eletrônico", o qual marcou o último grande passo na série de avanços decisivos inspirados pela guerra: Começou a "Era do Computador". 1951 - Surge o primeiro computador comercial o LEO
LEO - 1951 - primeiro computador comercial
1952 - A Bell Laboratories inventou o Transistor que passou a ser um componente básico na construção de computadores e apresentava as seguintes vantagens: 7
-aquecimento mínimo -pequeno consumo de energia -mais confiável e veloz do que as válvulas
Transistor No mesmo ano, John Mauchly e Presper Eckert abriram sua própria firma na Filadéfia e criaram o UNIVAC - Universal Automatic Computer, ou seja, "Computador Automático Universal", o qual era destinado ao uso comercial. Era uma máquina eletrônica de programa armazenado que recebia instruções de uma fita magnética de alta velocidade ao invés dos cartões perfurados. O UNIVAC foi utilizado para prever os resultados de uma eleição presidencial. Também em 1952, Grace Hopper transformou-se em uma pioneira no processamento de dados, pois criou o primeiro compilador e ajudou a desenvolver duas linguagens de programação que tornaram os computadores mais atrativos para comércio. Em 1953, Jay Forrester, do MIT, construiu uma memória magnética menor e bem mais rápida, a qual substituía as que usavam válvulas eletrônicas. Já em 1954, a IBM concluiu o primeiro computador produzido em série, o 650, que era de tamanho médio e enquanto isso, Gordon Teal, da Texas Instruments, descobre um meio de fabricar transistores de cristais isolados de silício a um custo baixo. 1955 - Conclui-se o primeiro computador transistorizado, feito pela Bell Laboratories: o TRADIC, o qual possuía 800 transistores, sendo cada um em seu próprio recipiente.
De 1958 a 1959, Robert Noyce, Jean Hoerni, Jack Kilby e Kurt Lehovec participam do desenvolvimento do CI - Circuito Integrado. Em 1960, a IBM lança o IBM/360, cuja série marcou uma nova tendência na construção de computadores com o uso de CI, ou pastilhas, que ficaram conhecidas como Chips. Esses chips incorporavam, numa única peça de dimensões reduzidas, várias dezenas de transistores já interligados, formando circuitos eletrônicos complexos. 1961 - Steven Hofstein descobriu o transistor de efeito de campo, usado nos circuitos integrados MOS. 1965 - A Digital Equipment introduz o PDP-8, o primeiro minicomputador comercial e com preço competitivo. 8
Os primeiros computadores com circuito integrado foram criados pela Burroughs, em 1968, e tinham o nome de B2500 e B3500. 1968 - primeiro computador com circuito integrado 1971 - Ted Hoff, planeja o microprocessador Intel 4004, o qual era um único chip com todas as partes básicas de um processador central. Esse processador era a CPU de um computador de 4 bits. Já em1974, Ed Roberts, do MITS (Micro Instrumentation and Telemetry Systems) em Albuquerque - Novo México, constrói um microcomputador chamado ALTAIR 8800 (o nome "Altair" se deve a uma estrela, pois consideravam o lançamento da máquina um "evento estelar"), cuja máquina foi construída com base no processador da Intel o 8080, que já era um descendente do processador Intel 8008. O ALTAIR tornou-se o maior sucesso, marcando o início de uma indústria multibilionária, pois Roberts esperava vender uns oitocentos ALTAIR por ano e acabou tendo dificuldades para satisfazer 4.000 pedidos. Intel 4004 - 1971
Intel 8080 - 1974
MOS Technology 6502 - 1975
-primeiro microprocessador -2.250 componentes -soma 2 números de 4 bits em 11 milionésimos de segundo
-tornou-se padrão para a indústria dos microcomputadores -4.500 componentes -soma 2 números de 8 bits em 2,5 milionésimos de segundo
-bastante usado em computadores domésticos -4.300 componentes -soma 2 números de 8 bits em 1 milionésimos de segundo
1975 - Os estudantes William (Bill) Gates e Paul Allen criam o primeiro software para microcomputador, o qual era uma adaptação do BASIC (Beginners All-Purpose Symbolic Instruction Code, ou "Código de Instruções Simbólicas para todos os Propósitos dos Principiantes") para o ALTAIR. Anos mais tarde, Gates e Allen fundaram a Microsoft, uma das mais bem sucedidas companhias de software para microcomputadores. 1977 - Surge no mercado de produção em série, três microcomputadores: o Apple II, o TRS-80 da Radio Shack e o PET da Commodore. Em 1979, é lançado pela Software Arts o "VisiCalc", o qual foi o primeiro programa comercial para microcomputadores.
Na década de 80, foi criado o IC LSI - Integratede Circuit Large Scale Integration, ou seja, "Circuito Integrado em Larga Escala de Integração", onde foram desenvolvidas técnicas para se aumentar cada vez mais o número de componentes no mesmo circuito integrado. Alguns tipos de IC LSI incorporavam até 300.000 componentes em uma única pastilha. Motorola 68000 - 1979
Hewlett-Packerd - SuperChip - 1981
-um dos chips de 16 bits mais poderosos e versáteis -executa multiplicação com uma única operação em vez de realizá-la pela repetição de adições -70.000 componentes
-primeiro microprocessador de 32 bits -seu projeto durou 18 meses -450.000 componentes -multiplica 2 números de 32 bits em 1,8 9
-multiplica 2 números de 16 bits em 3,3 milionésimos de segundo
milionésimos de segundo
1981 - A IBM resolve entrar no mercado de microcomputadores com o IBM-PC.
IBM-PC - 1981
MMX - Micro Doméstico - 1984
Os computadores de Quinta Geração têm como característica o uso de IC VLSI - Integrated Circuit Very Large Scale Integration, ou seja, "Circuitos Integrados em uma Escala Muito Maior de Integração". Os "chips" vêm diminuindo tanto de tamanho, fazendo com que seja possível a criação de computadores cada vez menores, como é o caso da microminiaturização do microprocessador F100, que mede somente 0,6 cm quadrados e é pequeno o suficiente para passar pelo buraco de uma agulha!
10
Microprocessador F-100
Formado pelos computadores que utilizam supercondutores como matéria-prima para seus processadores. Utilizando a supercondutividade esses processadores não perdem eletricidade para o calor devido a resistência ganhando performance e economizando energia. Estima-se que o ganho de performance seria de aproximadamente 30 vezes a performance de um processador de mesma freqüência que utilize metais comuns, porém atualmente nenhum material trabalha em condições ambientes comuns como supercondutor impossibilitando seu uso comercial. Alta velocidade e processamento paralelo combinado com processamento vetorial. Crescimento e evolução das redes de computadores. Comercial, na área da ciência e tecnologia e, principalmente, na educação.
11
Tudo relacionado a parte física de um microcomputador. São instruções ou dados de computadores. (programas). Qualquer coisa que pode ser armazenada eletronicamente é um software. Software é dividido em duas categorias: • : Inclui o sistema operacional e todos os utilitários que capacitam o funcionamento do computador. • : inclui programas que fazem o verdadeiro serviço para o usuário. Ex.: Planilhas é a menor unidade de informação armazenável em um computador, o qual pode ter somente dois valores: 0 e 1. um grupo ordenado de oito bits, tratados de forma individual, como unidade de armazenamento e transferência. Também usamos os termos Kbit, Megabit e Gigabit, para representar conjuntos de 1024 bits. Como um byte corresponde a 8 bits, um Megabyte corresponde a 8 Megabits e assim por diante.
bits.
1 Bit = 1 ou 0. 1 Byte = Um conjunto de 8 bits. 1 Kbyte = 1024 bytes ou 8192 bits. 1 Megabyte = 1024 Kbytes, 1.048.576 bytes ou 8.388.608 bits. 1 Gigabyte = 1024 Megabytes, 1.048.576 Kbytes, 1.073.741.824 bytes ou 8.589.934.592 Comando que define integralmente uma operação a ser executada. Conjunto de instruções ordenadas logicamente.
12
Unidade Central de Processamento - UCP (em inglês, Central Processing Unity - CPU) é a responsável pelo processamento e execução dos programas armazenados na Memória Principal. As funções da UCP são: executar as instruções e controlar as operações no computador. A UCP é composta de duas partes: - Unidade Lógica e Aritmética - tem por função a efetiva execução das instruções. Só se comunica com a unidade de controle, serve para realizar os cálculos de tipo aritmético (soma, subtração, multiplicação, divisão, radiciação, etc.) e tipo lógico (comparações).
- Unidade de Controle - tem por funções a busca, interpretação e controle de execução das instruções, e o controle dos demais componentes do computador. Analisa cada instrução de um programa, controla as informações na memória principal, ativa a seção aritmética e lógica, ativa os canais de entrada ou saída, selecionando os dados a serem transferidos e o dispositivo que será empregado na transferência. * Comece a aceitar entrada a partir da * Unidade de controle. unidade de cds 2. * Se X é maior que Y, vá para o passo 46 do * ULA (instrução lógica). programa. * Multiplique A por B e armazene o * ULA (instrução aritmética). resultado em C.
13
Gerador de Clock: É responsável pela alimentação do sincronismo do sistema. É o elemento gerador dos pulsos, cuja duração é chamada de ciclo. O número de vezes que esse pulso é gerado por segundo nos dá a medida da freqüência do clock. Decodificador Realiza a função de identificar a instrução que deve ser realizada, de acordo com o código da operação que foi decodificado. RI - Registrador de Instruções É responsável por armazenar a instrução a ser executada pela CPU, via barramento de dados e RDM. Contador de instrução (CI - Program Counter) Armazena o endereço da próxima instrução a ser executada. Tão logo este endereço seja lido pela CPU, um novo endereço (o da instrução seguinte) já é buscado e armazenado no CI. Registrador de endereço de memória (REM) Responsável por armazenar o endereço de memória do dado executado na UCP, através do barramento de endereços. Registrador de dados da memória (RDM) Responsável por armazenar o dado retirado da memória, a ser processado na UCP, através do barramento de dados. Diferenças na arquitetura Diferenças na arquitetura interna, ou seja, no projeto do processador e na quantidade de transistores que o formam, também determinam em quais operações um processador será mais rápido. Basicamente, um processador desempenha dois tipos de operações diferentes: as operações envolvendo números inteiros e operações de ponto flutuante (que envolvem números fracionários e
14
operações aritméticas mais complexas). As operações envolvendo números inteiros são feitas pelo núcleo principal do processador, enquanto as envolvendo números fracionários são feitas pelo co processador aritmético. Programas de escritório e Internet, como o Word, Excel, Power Point, Internet Explorer, Netscape e o próprio Windows, utilizam quase que exclusivamente o processamento de números inteiros. Por outro lado, programas que manipulam gráficos, como o Auto CAD, Corel Draw!, Photoshop, 3D Studio, e principalmente jogos que utilizam gráficos tridimensionais, como o Quake utilizam predominantemente cálculos de ponto flutuante. Alguns modelos de processadores saem-se melhor em inteiros (como os processadores K6, K6-2 e K6-3 da AMD e 6x86 da Cyrix), enquanto outros são melhores em cálculo de ponto flutuante (como o Pentium II e o Celeron). Ao decidir em qual processador vai investir seu dinheiro, a aplicação à qual o micro se destina deve ser levada em consideração. Co-processador aritmético Todos os processadores da família x86, usada em micros PC, são basicamente processadores de números inteiros. Muitos aplicativos, porém, precisam utilizar números fracionários, assim como funções matemáticas complexas, como Seno, Coseno, Tangente, etc., para realizar suas tarefas. Este é o caso dos programas de CAD, planilhas, jogos com gráficos tridimensionais e de processamento de imagens em geral. É possível emular via software estas funções matemáticas complexas, através da combinação de várias instruções simples, porém com uma baixa performance. A função do co-processador aritmético é justamente auxiliar o processador principal no cálculo destas funções complexas. Como o co-processador possui instruções específicas para executar este tipo de cálculo, ele é em média de 30 a 50 vezes mais rápido do que o processador principal executando o mesmo tipo de cálculo via emulação, sendo um componente essencial atualmente. Até o 386, o co-processador era apenas um acessório que podia ser comprado à parte e instalado no soquete apropriado da placa mãe, sendo que cada modelo de processador possuía um modelo equivalente de co-processador: O problema nesta estratégia é que como poucos usuários equipavam seus micros com co-processadores aritméticos, a produção destes chips era baixa, e conseqüentemente os preços eram altíssimos, chegando ao ponto de em alguns casos o co processador custar mais caro que o processador principal. Com o aumento do número de aplicativos que necessitavam do co-processador, sua incorporação ao processador principal a partir do 486 foi um passo natural. Com isso resolveu-se também o problema do custo de produção dos co processadores, barateando o conjunto. 3.1 COMO SÃO FABRICADOS OS PROCESSADORES Até mudarem o mundo como o conhecemos, os chips passaram por um longo processo evolutivo. Tudo começou com as válvulas, que evoluíram para os transistores, considerados a maior invenção do século.
O primeiro transistor era relativamente grande, mas não demorou muito para que este modelo inicial fosse aperfeiçoado. Durante a década de 50, o transistor foi gradualmente dominando a indústria, substituindo rapidamente as problemáticas válvulas. Os modelos foram diminuindo de tamanho, caindo de preço e tornando-se mais rápidos. Alguns transistores da época podiam operar a até 100 MHz. Claro que esta era a freqüência que podia ser alcançada por um transistor sozinho, nos computadores da época. Mas, o grande salto foi a substituição do germânio pelo silício. Isto permitiu miniaturizar ainda mais os transistores e baixar seu custo de produção. A idéia do uso do silício para construir transistores é que adicionando certas substâncias em 15
pequenas quantidades é possível alterar as propriedades elétricas do silício. As primeiras experiências usavam fósforo e boro, que transformavam o silício em condutor por cargas negativas ou condutor por cargas positivas, dependendo de qual dos dois materiais fosse usado. Estas substâncias adicionadas ao silício são chamadas de impurezas, e o silício “contaminado” por elas é chamado de silício dopado. O funcionamento de um transistor é bastante simples, quase elementar. É como naquele velho ditado “as melhores invenções são as mais simples”. As válvulas eram muito mais complexas que os transistores e mesmo assim foram rapidamente substituídas por eles. Um transistor é composto basicamente de três filamentos, chamados de base, emissor e coletor. O emissor é o pólo positivo, o coletor o pólo negativo, enquanto a base é quem controla o estado do transistor, que como vimos, pode estar ligado ou desligado. A figura abaixo mostra como estes três componentes são agrupados num transistor moderno:
Quando o transistor está desligado, não existe carga elétrica na base, por isso, não existe corrente elétrica entre o emissor e o coletor. Quando é aplicada uma certa tensão na base, o circuito é fechado e é estabelecida a corrente entre o emissor e o receptor. Outro grande salto veio quando os fabricantes deram-se conta que era possível construir vários transistores sobre o mesmo waffer de silício. Isso permitiu diminuir de forma gritante o custo e tamanho dos computadores. Havia surgido então o circuito integrado, vários transistores dentro do mesmo encapsulamento. Não demorou muito para surgirem os primeiros microchips. Cada transistor funciona como uma espécie de interruptor, que pode estar ligado ou desligado, como uma torneira que pode estar aberta ou fechada, ou mesmo como uma válvula. A diferença é que o transistor não tem partes móveis como uma torneira e é muito menor, mais barato, mais durável e muito mais rápido que uma válvula. A mudança de estado de um transistor é feita através de uma corrente elétrica. Esta mudança de estado por sua vez pode comandar a mudança de estado de vários outros transistores ligados ao primeiro, permitindo processar dados. Num transistor esta mudança de estado pode ser feita bilhões de vezes por segundo, porém, a cada mudança de estado é gerada uma certa quantidade de calor e é consumida uma certa quantidade de eletricidade. É por isso que quanto mais rápidos tornam-se os processadores, mais eles se aquecem e mais energia consomem. Um 386, por exemplo, consumia pouco mais de 1 Watt de energia e podia funcionar sem nenhum tipo de resfriamento. Um 486DX-4 100 consumia cerca de 5 Watts e precisava de um cooler simples, enquanto Athlon chega a consumir 80 Watts de energia e precisa de no mínimo um bom cooler para funcionar bem. Em compensação o 386 operava a 30 ou 40 MHz enquanto o Athlon opera a até 1.5 GHz. O componente básico para qualquer chip é o waffer de silício que é obtido através da fusão do silício junto com alguns produtos químicos que permitirão sua dopagem posteriormente. Inicialmente são produzidos cilindros, com de 20 a 30 centímetros de diâmetro, que posteriormente são cortados em fatias bastante finas.
16
Waffer de silício Estas “fatias” por sua vez são polidas, obtendo os waffers de silício. A qualidade do waffer determinará o tipo de chip que poderá ser construído com base nele. Para construir um CI com meia dúzia de transistores, pode ser usado um waffer de baixa qualidade, que pode ser comprado a preço de banana de milhares de companhias diferentes. Entretanto, para produzir um processador moderno, é preciso de um waffer de altíssima qualidade, que são extremamente caros, pois poucas companhias tem tecnologia para produzi-los. Cada waffer é usado para produzir vários processadores, que no final da produção são separados e encapsulados individualmente. Não seria possível mostrar todos os processos usados na fabricação de um processador, mas para dar uma boa idéia de como eles são produzidos, pode-se mostrar passo a passo a construção de um único transistor. O mesmo projeto será repetido alguns milhões de vezes, formando um processador funcional. Tudo começa com o waffer de silício em seu estado original:
A primeira etapa do processo é oxidar a parte superior do waffer, transformando-a em dióxido de silício. Isto é obtido expondo o waffer a gases corrosivos e altas temperaturas. A fina camada de dióxido de silício que se forma é que será usada como base para a construção do transistor.
Em seguida é aplicada uma camada bastante fina de um material fotossensível sobre a camada de dióxido de silício. Usando uma máscara especial, é jogada luz ultravioleta apenas em algumas áreas da superfície. Esta máscara tem um padrão diferente para cada área do processador, de acordo com o desenho que se pretende obter. A técnica usada aqui é chamada de litografia óptica.
17
A camada fotossensível é originalmente sólida, mas ao ser atingida pela luz ultravioleta transforma-se numa substância gelatinosa, que pode ser facilmente removida. Depois de remover as partes moles da camada fotossensível, temos algumas áreas do dióxido de silício expostas, e outras que continuam cobertas pelo que restou da camada:
O waffer é banhado com um produto especial que remove as partes do dióxido de silício que não estão protegidas pela camada fotossensível. O restante continua intacto. Finalmente, é removida a parte que restou da camada fotossensível. Note que como temos substâncias diferentes é possível remover uma camada de cada vez, ora o dióxido de silício, ora a própria camada fotossensível. Com isto é possível “desenhar” as estruturas necessárias para formar os transistores. Temos aqui pronta a primeira camada. Cada transistor é formado para várias camadas, dependendo do projeto do processador. Neste exemplo, temos um transistor simples, de apenas quatro camadas, mas os processadores atuais utilizam um numero muito maior de camadas, mais de vinte em alguns casos, dependendo da densidade que o fabricante pretende alcançar.
Começa então a construção da segunda camada do transistor. Inicialmente o waffer passa novamente pelo processo de oxidação inicial, sendo coberto por uma nova camada (desta vez bem mais fina) de dióxido de silício. Note que apesar da nova camada de dióxido, o desenho conseguido anteriormente é mantido. Em seguida é aplicada sobre a estrutura uma camada de cristal de silício. Sobre esta é aplicada uma nova camada de material fotossensível.
Novamente, o waffer passa pelo processo de litografia, desta vez utilizando uma máscara diferente. 18
Novamente, a parte da camada fotossensível que foi exposta à luz é removida, deixando expostas partes das camadas de cristal de silício e dióxido de silício, que são removidas em seguida.
Como na etapa anterior, o que restou da camada fotossensível é removida. Terminamos a construção da segunda camada do transistor.
Chegamos a uma das principais etapas do processo de fabricação, que é a aplicação das impurezas, que transformarão partes do waffer de silício num material condutor. Estas impurezas também são chamadas de íons. Note que os íons aderem apenas à camada de silício que foi exposta no processo anterior e não nas camadas de dióxido de silício ou na camada de cristal de silício.
É adicionada então uma terceira camada, composta de um tipo diferente de cristal de silício e novamente é aplicada a camada fotossensível sobre tudo.
O waffer passa novamente pelo processo de litografia, usando mais uma vez uma máscara diferente. 19
As partes, do material fotossensível, expostas à luz são removidas, expondo partes das camadas inferiores, que são removidas em seguida.
Temos agora pronta a terceira camada do transistor. Veja que a estrutura do transistor já está quase pronta, faltando apenas os três filamentos condutores.
Uma finíssima camada de metal é aplicada sobre a estrutura anterior. Nos processadores atuais, que são produzidos através de uma técnica de produção de 0.13 mícron, esta camada metálica tem o equivalente a apenas 6 átomos de espessura.
O processo de aplicação da camada fotossensível, de litografia e de remoção das camadas é aplicado mais uma vez, com o objetivo de remover as partes indesejadas da camada de metal. Finalmente temos o transistor pronto.
20
Cada processador é constituído por vários milhões de transistores. Um Pentium II possui pouco mais de 9 milhões de transistores. Um Pentium III Coppermine já possui 22 milhões. Um Athlon Thunderbird possui 35 milhões de transistores, enquanto um Pentium 4 possui incríveis 42 milhões. Graças ao nível de miniaturização que temos atualmente, estas quantidades fabulosas de transistores ocupam uma área muito pequena. Um Athlon Thunderbird, por exemplo, mede apenas 112 milímetros quadrados. Com isto, um único waffer de silício é suficiente para produzir vários processadores, que são separados no final do processo de fabricação.
Finalmente, os processadores são encapsulados numa estrutura de silício, que os protege e facilita o manuseio e instalação. O formato do encapsulamento varia de processador para processador.
21
O termo barramento ( bus ) refere-se aos percursos entres os componentes de um computador. O Barramento Local (ou Local Bus) é o barramento mais importante do computador, pois estabelece a comunicação entre o processador (CPU) e as memórias SRAM e DRAM. Podemos dividi-lo em 3 grupos: · barramento de dados; · barramento de endereços; · barramento de controle.
4.1 BARRAMENTO DE DADOS n n n n n n
Transporte de Dados; São os mais conhecidos; Linhas paralelas de conexão elétrica; Número de linhas é igual ao número de bits transportados; Quanto maior o número de linhas maior a quantidade de dados (1linha = 1bit); Número de linhas afeta a velocidade de transferência de dados.
4.2 BARRAMENTO DE ENDEREÇOS n n n
n
O barramento de endereços transporta apenas endereços de memória; O seu número de linhas determina o número máximo de endereços de memória; Os primeiros PCs tinham um barramento de endereços de 20 bits e a CPU podia endereçar 1 MB de dados; Hoje, com barramentos de endereços de 32 bits, é possível endereçar 4 GB de memória.
4.3 BARRAMENTO DE CONTROLE
Responsável pela transferência de sinais como READ e WRITE, de início de operação aritmética, de interrupção, de sincronização, de reset, entre outros.
22
Local capaz de armazenar: Programas; Dados iniciais, intermediários e finais. Pode-se fazer uma analogia da memória com um armário para guardar documentos: O armário seria a memória; Cada gaveta possuiria uma etiqueta com número de identificação que seria seu endereço. Dentro da gaveta estaria guardado um objeto (dado com até 1Byte). O computador não mantém toda a informação na CPU, ela armazena muitas coisas na memória e seleciona o que precisa a cada momento.
Registradores são dispositivos de armazenamento temporário, localizados na CPU, extremamente rápidos, com capacidade para apenas um dado (uma palavra). Está localizado no chip. Função: armazenar temporariamente dados intermediários durante um processamento. Por exemplo, quando um dado resultado de operação precisa ser armazenado até que o resultado de uma busca da memória esteja disponível para com ele realizar uma nova operação. Custo muito elevado. Registradores são VOLÁTEIS, isto é, dependem de estar energizados para manter armazenado seu conteúdo. Memória de acesso rápido, porém mais lento do que o registrador. Memória Principal. Custo maior do que a Memória Principal e menor do que o registrador. Função: Acesso rápido à memória, mas com um custo mais baixo. Memória intermediária entre o registrador e a Memória Principal. Fica localizada ou no “chip” ou na placa mãe. A memória cache opera em função de um princípio estatístico comprovado: em geral, os programas tendem a referenciar várias vezes pequenos trechos de programas, como loops, subrotinas, funções. Desta forma, algoritmos (chamados algoritmos de cache) podem controlar qual parte do código ficará copiado na cache, a cada momento. Com isso a CPU pode ter acesso a dados mais rapidamente do que quando a informação se encontra na MP. Esta transferência (Memória Principal <--> Cache) é feita pelo hardware que independe do software, que ignora se existe ou não memória cache. Nem o programador nem o sistema operacional têm que se preocupar com a cache. Wait States – tempo que a CPU fica esperando para se buscar um dado na memória. Cache Hit – o processador busca um determinado trecho de código e o encontra na cache. O índice da cache hit ou taxa de acerto do cache é em torno de 90%. Cache Miss ou Cache Fault – quando o dado não estiver presente na cache será necessário requisitar o mesmo à MP. Causa atraso no processamento. Memórias cache também são VOLÁTEIS, isto é, dependem de estar energizadas para manter gravado seu conteúdo. 23
Microprocessador 80386 DX 80486 SLC/DLC 80486 DX/DX2/SX 80486 DX4 Pentium 80586 Pentium II
Cache interno não possui 1 KB 8 KB 8 ou 16 KB 16 KB 16 KB 32 KB
Cache externo* 8, 16, 32, 64 ou 128 KB 128 ou 256KB 128 ou 256 KB 128 ou 256 KB 256 ou 512 KB 128, 256 ou 512 KB 128, 256 ou 512 KB
Memórias auxiliares resolvem problemas de armazenamento de grandes quantidades de informações. As memórias auxiliares têm maior capacidade e menor custo, portanto o custo por bit armazenado é muito menor. Acesso mais lento do que a Memória Principal e a cache e o registrador. Memórias auxiliares não são VOLÁTEIS, isto é, não dependem de estar energizadas para manter gravado seu conteúdo. Os principais dispositivos de memória auxiliar são: discos rígidos (ou HD), drives de disquete, unidades de fita, CD-ROM, DVD, unidades ótico-magnéticas, etc. Memória Principal é a parte do computador onde programas e dados são armazenados para processamento. A informação permanece na memória principal apenas enquanto for necessário para seu emprego pela CPU. Quem controla a utilização da memória principal é o Sistema Operacional. Custo mais baixo do que o Registrador e o cache, mas maior do que a memória auxiliar. Localizada na placa mãe. A memória precisa ter uma organização que permita ao computador guardar e recuperar informações quando necessário. É preciso ter como encontrar essa informação quando ela for necessária e para isso existe um mecanismo que registra exatamente onde a informação foi armazenada. É 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 têm o mesmo tamanho. Cada célula é identificada por um único, pela qual é referenciada pelo sistema e pelos programas. As células são numeradas seqüencialmente de 0 a (N-1), chamado o . (endereço de memória). Unidade de transferência - é a quantidade de bits que é transferida da memória em uma única operação de leitura ou escrita.
24
- é a unidade de processamento da CPU. Uma palavra deve representar um dado ou uma instrução, que poderia ser processada, armazenada ou transferida em uma única operação. Em geral, o termo "célula" é usado para definir a unidade de armazenamento (o tamanho de células de memória) e o termo "palavra" para definir a unidade de transferência e processamento. Não confundir: célula não é sinônimo de palavra, embora em algumas máquinas a palavra seja igual à célula. A palavra de um computador pode ter 1 byte (p.ex, 8080), 2 bytes (p.ex. 80286), 4 bytes (p.ex. 486, o Pentium, e muitos mainframes IBM) e mesmo 8 bytes (p.ex. o Alpha da DEC). Células de memória muitas vezes tem o tamanho de 1 ou 2 bytes - de 8 a 16 bits. A estrutura da memória principal é um problema do projeto de hardware:
Expressão geral: MP com endereços de 0 a (N-1) Tempo de acesso (ou tempo de acesso para leitura) é o 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 CPU. Ou seja, o tempo que a memória consome para colocar o conteúdo de uma célula no barramento de dados. O tempo de acesso de uma memória depende da tecnologia da memória. As memórias DRAM (Dynamic RAM - as mais comuns hoje) têm tempo de acesso na faixa de 60 ns. Tempo de ciclo (ou ciclo de memória) é conceituado como o 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 (ciclo de "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 têm ciclo de memória maior que o tempo de acesso. O tempo de acesso de qualquer memória tipo RAM (Random Access Memory ou memória de acesso aleatório) é independente do endereço a ser acessado (a posição de memória a ser escrita ou lida), isso é, o tempo de acesso é o mesmo qualquer que seja o endereço acessado. Tabela comparativa de memórias: Registrador Memória Cache Memória Principal Memória Auxiliar
Bytes Kbytes Mbytes Gbytes
muito alta alta média baixa
muito alto alto médio baixo
CPU CPU/placa Placa Externa
Volátil Volátil Volátil Não Volátil 25
A CPU vê nesta ordem e acessa primeiro a que está mais próxima. Subindo na hierarquia, quanto mais próximo da CPU, maior velocidade, maior custo, porém menor capacidade de armazenamento.
Quanto à leitura e escrita, as memórias podem ser classificadas como: (memória de leitura e escrita), comumente (e impropriamente) chamada de RAM (Random Access Memory ou memória de acesso aleatório), embora não seja a única RAM. Esta memória permite operações de escrita e leitura pelo usuário e pelos programas. Seu tempo de acesso é da ordem de 70ns e independe do endereço acessado. É construída com tecnologia de semicondutores (bipolar, CCD), pode ser estática (SRAM) ou dinâmica (DRAM) e é volátil. A MP é construída com memória R/W. ou Memória de Acesso Randômico ou Aleatório, memória volátil ou de rascunho, pois seu conteúdo se perde quando cessa a energia, e sua maior parte serve para armazenar informações do usuário. ou memória apenas de leitura. Esta memória permite apenas a leitura e uma vez gravada não pode mais ser alterada. Também é de acesso aleatório (isto é, é também uma RAM), mas não é volátil. É utilizada geralmente por fabricantes para gravar programas que não se deseja permitir que o usuário possa alterar ou apagar acidentalmente (tal como por ex..a BIOS - Basic Input Output System e microprogramas de memórias de controle). Quando se liga uma máquina, é da ROM que vem os programas que são carregados e processados no "boot" (na inicialização o hardware aponta automaticamente para o primeiro endereço da ROM). Desta forma, parte do espaço de endereçamento da MP é ocupado por ROM. A ROM é mais lenta que a R/W e é barata, porém o processo produtivo depende de ser programada por máscara ("mask programmed") em fábrica e devido ao alto custo da máscara somente se torna econômica em grandes quantidades. é o processo de inicialização e carga dos programas básicos de um computador, automática, sem intervenção externa. Este termo vem de uma analogia com um processo (impossível) que seria uma pessoa se levantar puxando-se pelos cordões de suas próprias botas. - Programmable Read Only Memory ou memória apenas de leitura, programável. Esta memória é uma ROM programável (em condições e com máquinas adequadas, chamadas queimadores de PROM) e geralmente é comprada "virgem" (sem nada gravado), sendo muito utilizada no processo de testar programas no lugar da ROM, ou sempre que se queira produzir ROM em quantidades pequenas. Uma vez programada (em fábrica ou não), não pode mais ser alterada. - Erasable Programmable Read Only Memory ou memória apenas de leitura, programável (com queimadores de PROM) e apagável (com máquinas adequadas, à base de raios ultra-violeta). Esta memória é uma PROM apagável. Tem utilização semelhante à da PROM, para testar programas no lugar da ROM, ou sempre que se queira produzir ROM em quantidades pequenas, com a vantagem de poder ser apagada e reutilizada. (ou E2PROM) - Electrically Erasable Programmable Read Only Memory ou memória apenas de leitura, programável e eletronicamente alterável. Também chamada EAROM (Electrically Alterable ROM). 26
Esta memória é uma EPROM apagável por processo eletrônico, sob controle da CPU, com equipamento e programas adequados. É mais cara e é geralmente utilizada em dispositivos aos quais se deseja permitir a alteração, via modem, possibilitando a carga de novas versões de programas à distância ou então para possibilitar a reprogramação dinâmica de funções específicas de um determinado programa, geralmente relativas ao hardware (p.ex., a reconfiguração de teclado ou de modem, programação de um terminal, etc).
: um dos primeiros padrões de memória. Padrão utilizado por módulos SIMM 30 e algumas SIMM 72, em processadores 80286, 80386 e 80486. Geralmente possui 70 ns de acesso. : um padrão mais rápido do que o FPM, utilizado por alguns módulos SIMM 72 e DIMM 168, em processadores Pentium. Geralmente possui 60 ns de acesso. : é a memória mais conhecida no computador. Muitas vezes, quando dizemos que o nosso computador tem 16 ou 32 MB de memória ou de RAM, na verdade estamos nos referindo à DRAM. A DRAM é uma memória relativamente rápida e que tem o objetivo de armazenar o maior volume de dados na troca dinâmica CPU-Memória. : é uma memória bem mais rápida do que a DRAM. Na verdade, ela está antes da DRAM, no caminho CPU-Memória, com o objetivo de absorver rapidamente as informações fornecidas pela CPU e transferi-las para a DRAM. Isso faz com que a CPU fique "livre" mais rapidamente. Tal memória localiza-se na placa mãe (cache externo). Os processadores 486, 586 e Pentium possuem uma pequena quantidade de memória cache internamente, dentro do próprio chip. Isso aumenta mais ainda a velocidade de troca de informações. Abaixo vemos um quadro que mostra a quantidade de memória SRAM que cada tipo de sistema possui:
A Memória Principal pode ser acessada através de duas operações:
Significa requisitar à Memória Principal o conteúdo de uma determinada célula (recuperar uma informação). Esta operação de recuperação da informação armazenada na Memória Principal consiste na transferência de um conjunto de bits (cópia) da Memória Principal para a CPU e é , isto é, o conteúdo da célula não é alterado.
: a.1) a CPU armazena no REM o endereço onde a informação requerida está armazenada; a.2) a CPU comanda uma leitura; a.3) o conteúdo da posição identificada pelo endereço contido no REM é transferido para o RDM e fica disponível para a CPU.
27
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 CPU para a MP e é (isto significa que qualquer informação que estiver gravada naquela célula será sobregravada).
b.1) a CPU armazena no REM o endereço de memória da informação a ser gravada e no RDM a própria informação; b.2) a CPU comanda uma operação de escrita; b.3) a informação armazenada no RDM é transferida para a posição de memória cujo endereço está contido no REM.
28
O usuário se comunica com o núcleo do computador (composto por UCP e memória principal) através de dispositivos de entrada e saída (dispositivos de E/S ou I/O devices). Os tópicos a seguir vão analisar como funcionam os dispositivos de entrada e saída e como se faz a comunicação entre eles e o núcleo do computador. 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. · As características que regem a comunicação de cada um dos dispositivos de E/S (entrada e saída) com o núcleo do computador (composto de UCP e memória principal) são muito diferentes entre si. Cada dispositivo de E/S se comunica com o núcleo de forma diversa do outro. Entre outras diferenças, 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. Outra diferença fundamental diz respeito às características das ligações dos sinais dos dispositivos. Os primeiros computadores, especialmente os de pequeno porte, eram muito lentos e os problemas de diferença de velocidade eram resolvidos sem dificuldade e não representavam problema importante. Dessa forma, a ligação dos dispositivos de E/S era feita através de circuitos simples (as interfaces) que apenas resolviam os aspectos de compatibilização de sinais elétricos entre os dispositivos de E/S e a UCP. Os aspectos relativos a diferenças de velocidade (especialmente tempo de acesso) eram resolvidos via software. Entre esses componentes, trafegam informações relativas a dados, endereços e controle.
6.1 TIPOS DE DISPOSITIVOS Os dispositivos de ENTRADA são: teclado, mouses, scanners, leitoras óticas, leitoras de cartões magnéticos, câmeras de vídeo, microfones, sensores, transdutores, etc. As funções desses dispositivos são coletar informações e introduzir as informações na máquina, converter informações do homem para a máquina e vice-versa, e recuperar informações dos dispositivos de armazenamento. Os dispositivos de SAÍDA são: impressoras, monitores de vídeo, plotters, atuadores, chaves, etc. As funções desses dispositivos são exibir ou imprimir os resultados do processamento, ou ainda controlar dispositivos externos.
A UCP não se comunica diretamente com cada dispositivo de E/S e sim com "interfaces", de forma a compatibilizar as diferentes características. O processo de comunicação ("protocolo") é feito através de transferência de informações de controle, endereços e dados propriamente ditos. Inicialmente, a UCP interroga o dispositivo, enviando o endereço do dispositivo e um sinal dizendo 29
se quer mandar ou receber dados através da interface. O periférico, reconhecendo seu endereço, responde quando está pronto para receber (ou enviar) os dados. A UCP então transfere (ou recebe) os dados através da interface, e o dispositivo responde confirmando que recebeu (ou transferiu) os dados (acknowledge ou ACK) ou que não recebeu os dados, neste caso solicitando retransmissão (not-acknowledge ou NAK). 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 a UCP e as libera para o dispositivo à medida que este as pode receber.
30
7.1 Introdução
Em qualquer sistema digital¹ a unidade básica construtiva é o elemento denominado Porta Lógica. Este capítulo descreve as portas lógicas usuais, seu uso e funcionalidade. Portas lógicas são encontradas desde o nível de integração em larga escala (circuitos integrados de processadores pentium, por exemplo) até o nível de integração existente em circuitos integrados digitais mais simples (famílias de circuitos integrados TTL e CMOS por exemplo). As portas lógicas são os componentes básicos da eletrônica digital. Elas são usadas para criar circuitos digitais e até mesmo circuitos integrados complexos. Por exemplo, circuitos integrados complexos podem ser um circuito digital completo pronto para serem usados – processadores e microcontroladores são os melhores exemplos – mas, internamente estes circuitos integrados foram projetados usando várias portas lógicas. Na eletrônica digital apenas dois números são permitidos, “0” e “1”. Zero representa tensão de 0 V, enquanto que “1” representa uma tensão de 5 V ou de 3,3 V, no caso de circuitos integrados mais novos. Você pode pensar nos números “0” e “1” como uma lâmpada sendo acesa ou apagada quando você liga ou desliga o seu interruptor. Passamos a descrever, então, o conjunto básico de portas lógicas utilizadas em Eletrônica Digital bem como a forma em que são comercialmente disponíveis. 7.2 A Porta AND
Figura 1: Símbolo gráfico de uma porta lógica AND de 2 entradas ( A e B ). Figura 2: Diagrama de pinos de um circuito integrado (CI) disponível comercialmente (TTL – 7408), contendo 4 po 1rtas AND. Para a família de Cis TTL, a alimentação é + Vcc = 5V .
0 0 1 1
0 1 0 1
0 0 0 1
Tabela 1: Tabela verdade de uma porta lógica AND de 2 entradas. Observações: (I) Em lógica digital o valor lógico 0 significa FALSO (F) e normalmente é representado por um nível de tensão 0 V , isto é, um nível baixo de tensão – LOW (L). (II) O valor lógico 1 significa VERDADEIRO (V) e normalmente é representado por um nível de tensão + Vcc , isto é, um nível alto de tensão – HIGH (H).
1
Por exemplo, o sistema digital que controla as ações a serem executadas por motores e acionadores de um conjunto de elevadores, o controlador de um processo industrial, o microprocessador de um computador, etc ...
31
F F F F V F V F F V V V Tabela 2: Representação alternativa da tabela verdade de uma porta lógica AND de 2 entradas.
0V 0V 0V 0V +Vcc 0V +Vcc 0V 0V +Vcc +Vcc +Vcc Tabela 3: Representação alternativa da tabela verdade de uma porta lógica AND de 2 entradas assumindo que o valor de tensão + Vcc represente VERDADEIRO (V) e que o valor de tensão 0 V represente FALSO (F).
L L L L H L H L L H H H Tabela 4: Representação alternativa da tabela verdade de uma porta lógica AND de 2 entradas.
Figura 3: Exemplo do diagrama de tempo que seria observado na tela de um osciloscópio para uma porta lógica AND de 2 entradas (TTL – 7408 – ver Figura 2). Note que os níveis de tensão ao longo do tempo obedecem a Tabela 3.
32
7.3 A Porta OR
Figura 4: Símbolo gráfico de uma porta lógica OR de 2 entradas ( A e
B ).
Figura 5: Diagrama de pinos de um circuito integrado (CI) disponível comercialmente (TTL – 7432) , contendo 4 portas OR.
0 0 1 1
0 1 0 1 Tabela 5: Tabela verdade de uma porta lógica OR de 2 entradas.
0 1 1 1
Figura 6: Exemplo do diagrama de tempo que seria observado na tela de um osciloscópio para uma porta lógica OR de 2 entradas (TTL – 7432 – ver Figura 5). 7.4 A Porta XOR XOR significa OR exclusivo (“ou exclusivo”). A porta lógica XOR compara dois valores e se eles forem diferentes a saída será “1”. A operação XOR é representada pelo símbolo Å e sua fórmula pode ser resumida como Y = A Å B.
Figura 7: Símbolo gráfico de uma porta lógica XOR de 2 entradas ( A e B ).
0 0 0 1 1 0 1 1 Tabela 6: Tabela verdade de uma porta lógica XOR de 2 entradas.
0 1 1 0 33
7.5 A Porta NOT
Figura 8: Símbolo gráfico de uma porta lógica NOT.
0 1 1 0 Tabela 7: Tabela verdade de uma porta lógica NOT. Figura 9: Diagrama de pinos de um circuito integrado (CI) disponível comercialmente (TTL – 7404) , contendo 6 portas NOT.
Figura 10: Exemplo de diagramas de tempo que seriam observados na tela de um osciloscópio para uma porta lógica NOT (TTL – 7404 – ver Figura 9). 7.6 A Porta NAND Uma porta NAND é equivalente a uma porta AND seguida de uma porta NOT:
Figura 11: Símbolo gráfico de uma porta lógica NAND de 2 entradas ( A e B ).
0 0 1 0 1 1 1 0 1 1 1 0 Tabela 8: Tabela verdade de uma porta lógica NAND de 2 entradas.
7.7 A Porta NOR Uma porta NOR é equivalente a uma porta OR seguida de uma porta NOT:
Figura 12: Símbolo gráfico de uma porta lógica NOR de 2 entradas ( A e B ). 34
0 0 1 1
0 1 1 0 0 0 1 0 Tabela 9: Tabela verdade de uma porta lógica NOR de 2 entradas.
7.8 A Porta XNOR
Figura 13: Símbolo gráfico de uma porta lógica XNOR de 2 entradas ( A e B).
0 0 1 0 1 0 1 0 0 1 1 1 Tabela 10: Tabela verdade de uma porta lógica XNOR de 2 entradas.
Figura 14: Símbolo gráfico de uma porta lógica AND de (a) 2 entradas , (b) 3 entradas, (c) 4 entradas, (d) 12 entradas. Figura 15: Símbolo gráfico de uma porta lógica OR de (a) 2 entradas , (b) 3 entradas, (c) 4 entradas, (d) 12 entradas.
35
7.10 Portas Lógicas Disponíveis Comercialmente
Tabela 11: Portas lógicas da família TTL disponíveis comercialmente em forma de circuito integrado (CI). 7.11 Interligação de Porta s Lógicas
Figura 16 Exemplo de combinação de uma porta lógica NOR de duas entradas com uma porta NAND de duas entradas formando uma Função Lógica de 3 variáveis (A, B e C ). 0 0 0 0 0 1 0 1 0 0 1 1 1 0 0 1 0 1 1 1 0 1 1 1 Tabela 12: Tabela verdade da Função Lógica de 3 variáveis implementada pela combinação de portas da Figura 16. 7.12 Equação Booleana de Funções Lógicas Para facilitar o tratamento analítico das diversas funções lógicas possíveis de serem implementadas através de portas lógicas utiliza-se a representação da função lógica através de Equações Booleanas.
36
37
Até o processador 386, os processadores da família x86 eram capazes de processar apenas uma instrução de cada vez. Uma instrução simples podia ser executada em apenas um ciclo de clock, enquanto instruções mais complexas demoravam vários ciclos de clock para serem concluídas. Seria mais ou menos como montar um carro de maneira artesanal, peça por peça. Para melhorar o desempenho do 486, a Intel resolveu usar o pipeline, uma técnica inicialmente usada em processadores RISC, que consiste em dividir o processador em vários estágios distintos. O 486, possui um pipeline de 5 níveis, ou seja, é dividido em 5 estágios. Quando é carregada uma nova instrução, ela primeiramente passa pelo primeiro estágio, que trabalha nela durante apenas um ciclo de clock, passando-a adiante para o segundo estágio. A instrução continua então sendo processada sucessivamente pelo segundo, terceiro, quarto e quinto estágios do processador. A vantagem desta técnica, é que o primeiro estágio não precisa ficar esperando a instrução passar por todos os demais para carregar a próxima, e sim carregar uma nova instrução assim que se livra da primeira, ou seja, depois do primeiro pulso de clock. As instruções trafegam dentro do processador na ordem em que são processadas. Mesmo que a instrução já tenha sido processada ao passar pelo primeiro ou segundo estágio, terá que continuar seu caminho e passar por todos os demais. Se por acaso a instrução não tenha sido completada mesmo após passar pelos 5, voltará para o primeiro e será novamente processada, até que tenha sido concluída. Desta maneira, conseguimos que o processador seja capaz de processar simultaneamente, em um único ciclo de clock, várias instruções que normalmente demorariam vários ciclos para serem processadas. Voltando ao exemplo do carro, seria como se trocássemos a produção artesanal por uma linha de produção, onde cada departamento cuida de uma parte da montagem, permitindo montar vários carros simultaneamente. O uso dos 5 estágios de pipeline no 486 não chegava a multiplicar por cinco a performance do processador, na verdade a performance não chegava nem mesmo a dobrar, mas o ganho é bem significativo. Os processadores atuais utilizam um número muito maior de estágios de pipeline. O Pentium II possui 10, o Athlon Thunderbird possui 12 e o Pentium 4 possui 20. No Pentium 4 por exemplo, cada estágio processa uma pequena parte da instrução, que só são concluídas pelo último estágio, a cada ciclo, cada um dos estágios passa a instrução para a frente e recebe uma nova. Cada instrução demora 20 ciclos para ser processada, mas em compensação são processadas 20 instruções ao mesmo tempo, em fila. Mais estágios permitem que o processador seja capaz de atingir frequências mais altas, já que cada estágio fará menos trabalho por ciclo, suportando mais ciclos por segundo, mas, por outro lado, o uso de muitos estágios pode prejudicar o desempenho do processador nas operações de tomada de decisão, já que cada instrução demorará mais ciclos para ser concluída.
Existem situações, chamadas de Hazards, que impedem a próxima instrução dentro de uma fila de instruções de ser executada no ciclo esperado. Os Hazards reduzem a velocidade obtida pelo pipelining. Existem três classes de hazards: ·
·
Hazards Estruturais: Têm como origem uma implementação de hardware que não comporta a sobreposição simultânea de todas as combinações possíveis de instruções. Em termos de nosso carro utilizado para apresentar o conceito de pipelining seria o equivalente a implementar um pipeline onde só existisse uma tomada para a esteira e uma para o robô. Hazards de Dados: Ocorrem quando uma instrução para ser executada depende dos resultados gerados por alguma instrução anterior que ainda não foi completada.
38
·
Hazards de Controle: Ocorrem quando executamos um desvio ou alteração ou alguma outra instrução que altera o PC.
Uma forma de solucionar os Hazards é inserindo no pipeline uma "bolha" que simplesmente atrasa o processamento até que o recurso que esteja causando o hazard esteja disponível. Chamamos este processo de stall. Sempre que o pipeline faz um stall todas as instruções anteriores ao stall prosseguem normalmente, enquanto que todas as instruções posteriores são atrasadas, de forma a eliminar a causa do hazard.
n
n
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.
No começo da década de 80, a tendência era construir chips com conjuntos de instruções cada vez mais complexos, os famosos processadores CISC. Alguns fabricantes porém, resolveram seguir o caminho oposto, criando o padrão 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. Justamente por isso, os chips baseados nesta arquitetura são mais simples e muito mais baratos. Outra vantagem dos processadores RISC, é que, por terem um menor número de circuitos internos, podem trabalhar com clocks mais altos. Um exemplo são os processadores Alpha, que em 97 já operavam a 600 MHz. Tanto a Intel quanto a AMD, perceberam que usar alguns conceitos da arquitetura RISC em seus processadores poderia ajudá-las a criar processadores mais rápidos. Porém, ao mesmo tempo, existia a necessidade de continuar criando processadores compatíveis com os antigos. Não adiantaria muito lançar um Pentium II ou Athlon extremamente rápidos, se estes não fossem compatíveis com os programas que utilizamos. A idéia então passou a ser construir chips híbridos, que fossem capazes de executar as instruções x86, sendo compatíveis com todos os programas, mas ao mesmo tempo comportando-se internamente como chips RISC, quebrando estas instruções complexas em instruções simples, que podem ser processadas por seu núcleo RISC. Tanto o Pentium II e III, quanto o Athlon, Duron e Celeron, utilizam este sistema. Do lado dos chips supostamente RISC, como por exemplo o G4 usados nos Macs, temos esta mesma tendência de construir chips cada vez mais complexos, abandonando a idéia dos chips RISC simples e baratos em favor da complexidade típica dos processadores CISC. Atualmente pode-se dizer que não existem mais chips CISC ou RISC, mas sim chips híbridos, que misturam características das duas arquiteturas, a fim de obter o melhor desempenho possível. Instruções simples em apenas um ciclo. Números limitados de instruções referenciam a memória. Presença forte de pipeline Instruções executadas pelo hardware Poucas instruções e modos. Complexidade no compilador. Vários conjuntos de registradores.
Instruções complexas de múltiplos ciclos. Qualquer instrução referencia a memória. Pouco ou nenhum pipeline. Instruções interpretadas por microprograma. Muitas Instruções e modos. Complexidade no microprograma. Único conjunto de registradores. 39
n
n
10.1. Conjunto de instruções O conjunto de instruções é um dos pontos centrais na arquitetura de um processador. Vários aspectos na definição e implementação da arquitetura são influenciados pelas características do conjunto de instruções. Por exemplo, as operações realizadas pela unidade lógica e aritmética, o número e função dos registradores e a estrutura de interconexão dos componentes da seção de processamento. Além disso, as operações básicas que acontecem dentro da seção de processamento dependem das instruções que devem ser executadas. O conjunto de instruções afeta o projeto da seção de controle. A sua estrutura e a sua complexidade são determinadas diretamente pelas características do conjunto de instruções. 10.1.1 Conjunto de Instruções no Contexto de Softwar e A Figura a seguir situa o conjunto de instruções do processador dentro dos diversos níveis de software existentes em um sistema de computação. Programa em Linguagem de Alto Nível
Comandos de Alto Nível
Compilador Programa em Linguagem Assembly
Instruções da Arquitetura Assembler
Linker/Loader
Programa Executável
O conjunto de instruções dentro do contexto de software.
Em geral, os programas são desenvolvidos em uma linguagem de alto nível como FORTRAN, Pascal ou C. O compilador traduz o programa de alto nível em uma seqüência de r. O resultado desta tradução é o programa em 40
ou (assembly languag ). A linguagem de montagem é uma forma de representar textualmente as instruções oferecidas pela arquitetura. Cada arquitetura possui uma linguagem de montagem particular. No programa em linguagem de montagem, as instruções são representadas através de mnemônicos, que associam o nome da instrução à sua função, por exemplo, ADD ou SUB , isto é soma e subtração, O programa em linguagem de montagem é convertido para um programa em pelo (assemble r). O montador traduz diretamente uma instrução da forma textual para a forma de código binário. É sob a forma binária que a instrução é carregada na memória e interpretada pelo processador. Programas complexos são normalmente estruturados em módulos. Cada módulo é compilado separadamente e submetido ao montador, gerando diversos módulos em código objeto. Estes módulos são reunidos pelo (linke r), resultando finalmente no programa executável que é carregado na memória. O conjunto de instruções de uma arquitetura se distingue através de diversas características. As principais características de um conjunto de instruções são: tipos de instruções e operandos, número e localização dos operandos em instruções aritméticas e lógicas, modos de endereçamento para acesso aos dados na memória, e o formato dos códigos de instrução.
41
Uma linguagem de montagem é uma linguagem em que cada comando produz exatamente uma instrução de máquina. Em outras palavras, existem uma correspondência um para um entre instruções de máquina e os comandos do programa em linguagem de montagem. A razão de ser utilizar linguagem de montagem, ao invés de utilizar linguagem de máquina, é que é muito mais fácil programar em linguagem de montagem. O uso de nomes e endereços simbólicos em vez de binários e octais fazem uma diferença enorme. Para a maioria das pessoas é mais fácil guardar as abreviaturas das operações de adição, subtração, multiplicação ... do que lembrar do código correspondente em linguagem de máquina. Quando se constrói programas em linguagem de montagem, utiliza-se um programa chamado montador que vai fazer a tradução para a linguagem de máquina. 11.1 CONJUNTO DE INSTRUÇÕES EM UM MICROCOMPUTADOR .
MOV MOV MOV MOV MOV
AL,15 BL,[15] [15],CL DL,[AL] [CL],AL
AL = 15 Copia 15 para AL BL = [15] Copia RAM[15] para BL [15] = CL Copia CL para RAM[15] DL = [AL] Copia RAM[AL] para DL [CL] = AL Copia AL para RAM[CL]
Modo de endereçamento Direto ADD AL,BL SUB BL,CL MUL CL,DL DIV DL,AL MOD AL,BL INC DL DEC AL AND AL,BL OR CL,BL XOR AL,BL NOT BL ROL AL ROR BL SHL CL SHR DL
AL = AL + BL BL = BL – CL CL = CL * DL DL = DL / AL AL = AL mod BL DL = DL + 1 AL = AL – 1 AL = AL AND BL CL = CL OR BL AL = AL XOR BL BL = NOT BL Rotate bits left. LSB := MSB Rotate bits right. MSB := LSB Shift bits left. Discard MSB Shift bits right. Discard LSB.
ADD SUB MUL DIV
AL BL CL DL
AL,12 BL,15 CL,03 DL,02
= = = =
AL + 12 BL – 15 CL * 03 DL / 02 42
MOD AND OR XOR
AL,10 AL,0F CL,F0 AL,AA
CMP AL,BL CMP BL,13 CMP CL,[20] JA JAE JE JNE JB JBE
AL AL CL AL
= = = =
AL mod 10 AL AND 0F CL OR F0 AL XOR AA
Set 'Z' if AL = BL Set 'S' if AL less than BL Set 'Z' if BL = 13 Set 'S' if BL less than 13 Set 'Z' if CL = [20] Set 'S' if CL less than [20] Pula se maior Pula se maior ou igual Pula se igual Pula se diferente Pula se menor Pula se menor ou igual
As portas de I/O são utilizadas para comunicação do processador com o mundo exterior. Portas de entrada, servem para entrada de dados, já as portas de saída estão conectadas. 00 01 02 03 04 05 OUT (01,AL) IN (00, AL) OUT (02,AL)
Teclado Traffic Lights Display 7 Segmentos Heater and Thermostat Snake and Maze Stepper Motor (Motor de Passo) Envia AL para porta 01 Armazena valor lido no registrador AL Envia AL para porta 02
CLO – fecha todas as janelas de dispositivos HALT – pára o relógio do processador NOP – não faz nada por um período de clock ORG x – inicia a carga do programa na memória a partir do endereço x END – encerra a execução do programa DB – carrega dados diretamente na RAM DB “Hello” DB 22
Carrega a palavra Hello na memória Carrega o valor 22 na memória 43
· · · ·
· ·
pedidos de atenção de periféricos (externos ao CPU): invocação de serviços do SO: ; detecção de anomalias na execução de instruções (no CPU): detecção de anomalias no funcionamento do hardware :
modo modo o
; e pelo menos um , ou supervisor, ou kernel , ou ... modo normalmente usado para execução de código do SO, incluindo as rotinas de atendimento a interrupções/excepções
São eventos de hardware que, a exemplo dos desvios ( jumps e branchs ), mudam o fluxo normal de execução das instruções. Uma exceção é um evento inesperado (não sequencial) que vem de dentro do processador, p.ex. o overflow aritmético, instrução indefinida etc. Uma interrupção também é um evento que causa uma mudança inesperada no fluxo de controle das instruções, mas ao contrário das exceções, tem origem fora do processador, por exemplo, num periférico. As interrupções são utilizadas pelos para se comunicar com o processador. Muitas arquiteturas e muitos autores não distinguem interrupções e exceções. No Mips o termo exceção refere-se a qualquer mudança inesperada no fluxo do programa sem distinguir se a causa é interna ou externa. O termo interrupção refere-se aos eventos originados externamente. A arquitetura Intel 80x86 usa o termo interrupção para indicar ambos os eventos de alteração inesperada no fluxo do programa, ao passo que a arquitetura PowerPC usa exceção para indicar qualquer evento inesperado, e interrupção para referir-se a mudança no fluxo de controle. Aqui vamos associar o termo interrupção aos eventos de hardware externos à UCP e o termo exceção aos eventos de hardware internos a UCP. As interrupções foram criadas inicialmente para tratar eventos inesperados, como overflow aritmético, e para sinalizar requisições de serviços por parte dos dispositivos de E/S. Os mesmos mecanismos básicos foram estendidos para tratar de exceções geradas internamente. A exemplo dos processadores, a maioria das características dos sistemas de entrada e saída, interrupção e exceção são extremamente dependentes da tecnologia. A figura a seguir mostra um esquema de organização dos dispositivos E/S utilizando interrupção.
44
As conexões entre os dispositivos de E/S, processador e a memória são realizadas por meio dos barramentos. A comunicação entre os dispositivos e o processador é implementada a partir de um protocolo e de interrupções. Uma IRQ (Interrup Request) é a forma pela qual componentes de hardware requisitam tempo computacional da CPU. Uma IRQ é a sinalização de um pedido de interrupção de hardware. Os computadores modernos compatíveis com o IBM PC possuem 16 designações de IRQ (0-15), cada uma delas representando uma peça física (ou virtual) de hardware. Por exemplo, a IRQ0 é reservada para o temporizador do sistema, enquanto a IRQ1 é reservada para o teclado. Quanto menor for o número de IRQ, mais crítica é sua função. No passado existiam apenas 8 designações de IRQ (0-7). À medida que novos hardwares emergiam, surgiu também a necessidade de novas IRQs. A solução foi criar mais 8 IRQs, adicionadas pelo desvio da IRQ2 para a nova IRQ9.
A lista de IRQs é: IRQ0= temporizador do sistema. 45
IRQ1= teclado. IRQ2= reservada para ligação ao chip 8259B (IRQ9). IRQ3= COM 2 E COM4. IRQ4= COM1 E COM3. IRQ5= LPT2 ou placa de som. IRQ6= floppy disk. IRQ7= LPT1. IRQ8= Relógio de tempo real IRQ9= ligada ao chip 8259A (IRQ2). IRQ10= não definida. IRQ11= não definida. IRQ12= mouse PS/2. IRQ13= CO-processador aritmético. IRQ14= IDE primária. IRQ15= IDE secundária.
46
As arquiteturas paralelas são designadas por dois ou mais processadores ou unidades de processamento trabalhando em conjunto para executar uma única tarefa. Existem dois tipos de arquiteturas paralelas: '''Multiprocessador''' e '''Multicomputador'''. 13.1 MULTIPROCESSADOR
Multiprocessadores ou Sistemas Fortemente Acoplados: São dois ou mais processadores, executando instruções diferentes para concluir uma mesma tarefa. Os processadores compartilham uma mesma memória. No entanto os processadores não são capazes de executar um programa sozinhos, eles se tornam totalmente dependentes desde que cada processador depende das respostas(resultados) dos outros processadores em paralelo para concluírem suas tarefas. É obrigatoriamente usado um único sistema operacional. é a capacidade de um sistema operacional executar simultaneamente dois ou mais processos. Pressupõe a existência de dois ou mais processadores. Difere da multitarefa, pois esta simula a simultaneidade, utilizando-se de vários recursos, sendo o principal o compartilhamento de tempo de uso do processador entre vários processos.
Arquitetura Padrão
Multiprocessadores
Um multiprocessador ou sistema multiprocessado é um sistema integrado de computação com as seguintes características: Envolve dois ou mais processadores físicos (sejam processadores separados ou múltiplos · núcleos encapsulados no mesmo chip) ou lógicos (processador(es) com a tecnologia HyperThreading da Intel) com o mesmo poder computacional e cada um capaz de executar processos autonomamente. Isto implica que não há nenhuma unidade central de controle; cada processador contém sua própria unidade de controle. Assim, efetivamente, a lógica de controle é distribuída pelo sistema. Os processadores compartilham um único espaço de endereçamento de memória. · O sistema de hardware é como um todo gerenciado por um único sistema operacional. · O sistema operacional com suporte a multiprocessamento deve ser capaz de: suportar multitarefa; · manter múltiplas filas de processos, uma para cada processador. ·
47