Universidade Federal de Santa Catarina Depto de Informática e de Estatística. Curso de Graduação em Sistemas de Informação. Prof.

Tamanho: px
Começar a partir da página:

Download "Universidade Federal de Santa Catarina Depto de Informática e de Estatística. Curso de Graduação em Sistemas de Informação. Prof."

Transcrição

1 Universidade Federal de Santa Catarina Depto de Informática e de Estatística Curso de Graduação em Sistemas de Informação Florianópolis, Setembro de 22

2

3 Capítulo Conceitos Básicos de Informática. Índice Geral. Índice Geral....2Introdução Computador Modelo de Von Neumann Evolução histórica das arquiteturas de computador Precursores Geração zero (século XVII) As máquinas de primeira geração (93-958) Computadores de segunda geração ( ) Computadores de terceira geração (965-98) Computadores de quarta geração ( ) Sistemas Numéricos Sistema Binário Sistema Octal Sistema Hexadecimal Operações Aritméticas Aritmética Binária Aritmética Hexadecimal Operações Lógicas Operações lógicas com bits Operações Lógicas com números Tipos de Dados Tratados pelo Computador Representação Interna de Caracteres Código de 6 bits Códigos de 7 bits (ASCII) EBCDIC ASCII Estendido IS O Latin Caracteres ANSI Caracteres Unicode Representação Interna de Números Representação de Números Inteiros Vírgula fixa (Fixed Point) Ponto Flutuante Representação Digital de Áudio, Imagem e Vídeo Sinais Analógicos para representar informações Porque Digitalizar? Digitalização, Amostragem e Quantificação Áudio Vídeos e Imagens Analógicos Representação digital de imagens e vídeos Especificação da Cor Sistema RGB Introdução Componentes básicos de um computador Processador Unidade Lógica e Aritmética Unidade de Controle (UC) Registradores Clock... 6

4 2 Capítulo : Conceitos Básicos de Informática 3.4 Processadores CISC e RISC Memória Memória Principal Tecnologias de memória RAM Memória Secundária Memória Cache Barramentos Barramento do processador Barramento de Cache Barramento da Memória Barramento de E/S Barramento ISA Barramento MCA Barramento EISA Local bus VESA Local Bus Barramento PCI Barramento PC-Card (PCMCIA) USB Firewire (IEEE 394) Dispositivos de Entrada/Saída Programação de Computadores Níveis de Linguagens de Programação Linguagem de Máquina Linguagem Hexadecimal Linguagem Assembly Linguagem de Alto Nível Linguagens estruturadas Execução de Programas Desenvolvimento de Programas Geração do código fonte (codificação) Tradução do Código Fonte (código objeto) Editores de ligação Depuradores ou debuggers Paradigmas de programação Programação não-estruturada Programação Procedural Programação Modular Programação Orientada a Objetos Linguagens de programação e seus paradigmas Linguagens Interpretadas Compilador Versus Interpretador Máquina Virtual Java... 4

5 3 Capítulo : Conceitos Básicos de Informática.2Introdução A Informática engloba toda atividade relacionada ao desenvolvimento e uso dos computadores que permitam aprimorar e automatizar tarefas em qualquer área de atuação da sociedade. Podemos definir a informática como a ciência do tratamento automático das informações. Muito mais que visar simplesmente a programação de computadores para executar tarefas específicas, a informática estuda a estrutura e o tratamento das informações sob suas mais variadas formas: números, textos, gráficos, imagens, sons, etc. O computador em si intervém apenas como um instrumento para agilizar o tratamento da informação, e não como seu objetivo final. A informática busca criar uma abstração da realidade dentro de um sistema de computação, com o objetivo de reproduzila mais fielmente possível e assim poder substituila, ou melhorar sua compreensão. O profissional de Informática vai atuar basicamente no desenvolvimento do que se pode chamar de um Sistema Computacional, o qual abrangem a combinação de hardware (circuitos), software (programas) e outros elementos essenciais. A crescente evolução na área de Informática, particularmente no que diz respeito ao desenvolvimento de equipamentos de informática (processadores cada vez mais velozes, o surgimento de novas tecnologias de armazenamento de dados e novos periféricos), aliada às constantes quedas nos preços do hardware, possibilitou um avanço das atividades relacionadas à informática na quase totalidade das atividades humanas, iniciando pelas Engenharias e atingindo as mais diversas áreas como a Medicina, as Artes, o Entretenimento, a Economia, etc... Como conseqüência disto, é real a necessidade de que em cada área, os profissionais desenvolvam um conhecimento da tecnologia de Informática que seja útil na solução dos problemas relacionados com o seu eixo profissional. Neste capítulo inicial, serão apresentados os conceitos básicos da Informática, partindo dos principais conceitos relacionados às arquiteturas de computadores até introduzir os primeiros aspectos relativos à programação e das linguagens utilizadas na programação de computadores..3computador O computador é uma máquina capaz de receber, armazenar, tratar e produzir informações de forma automática, com grande rapidez e precisão. A evolução dos sistemas de computação teve seu início no século 6, mas estes somente mostraramse úteis neste século, e sua vulgarização se deu graças à recente evolução na microeletrônica. Tipos de Computadores Digitais Atualmente, as famílias de computadores podem ser classificadas em 5 grupos distintos: os computadores pessoais (PCs), os minicomputadores, os superminicomputadores, os computadores de grande porte (mainframes) e os supercomputadores. A tabela a seguir dá um exemplo das máquinas comerciais que se enquadram nestes grupos e as suas aplicações típicas. GRUPO Computador pessoal MÁQUINA IBM Pentium Minicomputador Supermini Mainframes Supercomputador PDP-/84 Sun SPARC IBM 39/3 Cray-2 APLICAÇÃO Tratamento de texto, aplicações científicas, etc Tempo real Pesquisa, servidor de arquivos Banco, Universidade Cálculo

6 4 Capítulo : Conceitos Básicos de Informática.3.Modelo de Von Neumann A grande maioria dos computadores existentes atualmente segue um modelo proposto pelo matemático americano Von Neumann, por volta de 94. Nesse modelo, um elemento processador segue as instruções armazenadas em uma memória de programas, para ler canais de entrada, enviar comandos sobre canais de saída e alterar as informações contidas em uma memória de dados. A.3. indica a estrutura desse modelo. Entradas Memória de Programas Processador Memória de Dados Saídas Φιγυρα.Modelo de Von Neuman Esse modelo inicial evoluiu para uma estrutura em barramento (.3.), que é a base dos computadores modernos. Nessa estrutura, as memórias de dados e de programa são fundidas em uma memória única, e as comunicações entre elementos são efetuadas através de uma via comum de alta velocidade: Memória Processador Periféricos Barramento Φιγυρα 2.Estrutura em Barramento.4Evolução histórica das arquiteturas de computador A história dos computadores começou no momento em que o homem sentiu a necessidade de efetuar cálculos complexos de maneira automática..4.precursores O primeiro elemento com que o homem contou para fazer seus cálculos foi o conjunto de dedos de suas mãos, daí veio a palavra digital, vindo de dígito, que significa dedo. Com a evolução da humanidade fez-se necessário novas invenções para auxiliar os cálculos: Ábaco (aprox. 35 a.c.). A palavra CÁLCULO tem sua origem no termo latino CALCULUS. Que a milhares de anos servia para denominar pequenas pedras que eram usadas para contar deslizandose por sulcos cavados no chão. Essa espécie de Ábaco foi descoberta em recentes escavações arqueológicas. A partir desse elemento de cálculo, outros similares apareceram em diversos lugares do mundo, sendo chamados de ábaco. O mais antigo data de aproximadamente 35 a.c., no Vale entre os rios Tigre e Eufrates. Por volta do ano 26a.C. apareceu o ábaco

7 5 Capítulo : Conceitos Básicos de Informática chinês que evoluiu rapidamente e foi chamado em sua forma final de Suan-Pan, de modo semelhante apareceu no Japão, o Soroban. O ábaco constituiu portanto o primeiro dispositivo manual de cálculo; servia para representar números no sistema decimal e realizar operações com eles. A.4. apresenta um ábaco, que consiste numa moldura dividida em 2 partes; possui uma vareta vertical para cada dígito, sendo que cada vareta tem em sua parte inferior 5 anéis que em repouso ficam para baixo, e na parte superior 2 anéis que em repouso ficam para cima. Cada unidade acrescentada a um dos dígitos do número é representada pelo movimento para cima de um dos anéis da parte inferior da vareta. Quando os 5 estão na parte de cima devem ser movidos para baixo. O mesmo deve ser feito com os mesmo anéis na parte superior da mesma vareta, se os dois anéis da parte superior estão para baixo, devem ser movidos para cima acrescentando-se uma unidade a vareta seguinte, à esquerda dessa vareta. O maior número que pode ser cálculado depende do número de varetas. EMBED Word.Picture.8 Φιγυρα 3.Ábaco Bastões de Napier (6-64) Passaram-se séculos sem que qualquer invenção ficasse registrada até que fossem criados tais bastões. Eram tabelas móveis de multiplicação e divisão feitas de marfim. O responsável foi um nobre escocês chamado John Napier, inventor também dos logaritmos. Apesar de dispositivos semelhantes aos bastões terem sido usados desde o final do século XVI, eles só apareceram documentados a partir de 64. Um conjunto completo de bastões de Napier consiste em 9 peças: uma para cada dígito de a 9. Cada uma destas hastes é essencialmente uma coluna de uma tabela de multiplicação. Para obter o produto, os dígitos de cada diagonal são somados da direita para a esquerda. Réguas de Cálculo (62) As tabelas de Napier influenciaram diretamente a invenção da régua de cálculo, concretizada pelo matemático inglês William Oughtred com uma forma circular considerada como um dos primeiros dispositivos analógicos de computação. A Régua de Cálculo e as calculadoras mecânicas foram largamente utilizadas até 97, quando surgiram as calculadoras eletrônicas..4.2geração zero (século XVII) Os primeiros computadores, ou de geração zero, apareceram no século XVII e eram compostos exclusivamente por elementos mecânicos. Além disso, caracterizavam-se por uma grande rigidez no que diz respeito aos programas a executar, a grande parte delas sendo o que se chama hoje de máquinas dedicadas. Calculadora de Pascal (642) Dos trabalhos conhecidos deste período, destaca-se o trabalho de Blaise Pascal, que em 642 desenvolveu uma máquina de calcular totalmente mecânica. A máquina, também chamada de Pascaline (.4.2), era baseada na existência de um disco para cada potência de, cada disco sendo dotado de dígitos (de a 9). Embora fosse capaz de realizar apenas adições e subtrações, outras operações, como multiplicações e divisões podiam ser realizadas através da combinação das primeiras. Pascal esperava comercializar sua máquina, mas foi um fracasso comercial, apesar de ser uma importante invenção.

8 6 Capítulo : Conceitos Básicos de Informática Φιγυρα 4.Pascaline Calculadora de Leibnitz (67) Em 67, o filósofo e matemático alemão de Leipzig, Gottfried Wilhelm von Leibnitz (2/6/646-4//76) introduziu o conceito de realizar multiplicações e divisões através de adições e subtrações sucessivas. Em 694, a máquina foi construída e apresentava uma certa evolução em relação à Calculadora de Pascal. Através de somas repetidas era capaz de efetuar multiplicações, também era capaz de realizar divisões, assim sendo capaz de executar as quatro operações básicas da matemática. Sua operação apresentou-se muito deficiente e sujeita a erros, tendo sido, portanto, abandonada. Φιγυρα 5.Máquina de Leipzig Placa Perfurada (8) Joseph Marie Jacquard introduziu o conceito de armazenamento de informações em placas perfuradas, que não eram usadas especificamente em processamento de dados, mas para controlar uma máquina de tecelagem. Esse processo despertou, já nessa época, temor pelo desemprego, provocando uma grande reação popular contra essa espécie de pré-automação. Arithmometer (82) Em 82, Charles Xavier Thomas (785-87, conhecido como Thomas de Colmar, Paris - FR) projetou e construiu uma máquina capaz de efetuar as 4 operações aritméticas básicas: a Arithmometer. Esta foi a primeira calculadora realmente comercializada com sucesso: até 85 vendeu-se cerca de 5 Arithmometers. Ela fazia multiplicações com o mesmo princípio da calculadora de Leibnitz e com a assistência do usuário efetuava as divisões. Φιγυρα 6.Arithmometer

9 7 Capítulo : Conceitos Básicos de Informática Máquina Diferencial de Babbage (823) Entre 82 e 822, Charles Babbage (792-87), um matemático e engenheiro britânico, construiu uma máquina - a máquina de diferenças que baseava-se também no princípio de discos giratórios e era operada por uma simples manivela. Babbage é considerado o precursor dos modernos computadores eletrônicos digitais. Esta máquina de diferenças surgiu devido a preocupação de Babbage com os erros contidos nas tabelas matemáticas de sua época. Esta máquina permite calcular tabelas de funções (logaritmos, funções trigonométricas, etc.) sem a intervenção de um operador humano. Ao operador cabia somente iniciar a cadeia de operações, e a seguir a máquina tomava seu curso de cálculos, preparando totalmente a tabela prevista. Em 823, o governo britânico financiou a construção de uma nova versão mas não obteve resultado satisfatório, devido os limites do ferramental industrial da época. Babbage se viu obrigado a desenhar peças e ferramentas, retardando o desenvolvimento do projeto. Após anos de trabalho, tudo que Babbage havia conseguido era uma pequena máquina de 3 registros e 6 caracteres, sendo que deveria ser, de acordo com o projeto, uma máquina de 7 registros e 2 caracteres cada, além de apresentar seus resultados impressos! Φιγυρα 7.Máquina de Diferenças Máquina Analítica Em 833, Babbage projetou uma máquina bastante aperfeiçoada (com o auxílio de Ada Lovelace), que chamou de Máquina Analítica. Ada é uma das poucas mulheres a figurar na história do computador. Matemática talentosa, compreendeu o funcionamento da Máquina Analítica e escreveu os melhores relatos sobre o processo. Ela criou programas para a máquina, tornando-se a primeira programadora de computador do mundo. A Máquina Analítica poderia ser programada para calcular várias funções diferentes, era constituída de unidade de controle de memória aritmética e de entrada e saída. Sua operação era governada por conjunto de cartões perfurados, de modo que, de acordo com os resultados dos cálculos intermediários, a máquina poderia saltar os cartões, modificando dessa forma o curso dos cálculos.

10 8 Capítulo : Conceitos Básicos de Informática Φιγυρα 8.Máquina Analítica Babbage investiu toda sua fortuna pessoal e de seu filho, que com ele trabalhou durante anos, na construção de sua máquina Analítica, vindo a falecer em 87, sem findar a construção. Máquina de Hollerith (886) Aproximadamente em 885, Herman Hellerith, funcionário do Departamento de Recenseamento dos E.U.A., percebeu que a realização do censo anual demorava cerca de anos para ser concluído e que a maioria das perguntas tinha como resposta sim ou não. Em 886 idealizou um cartão perfurado que guardaria as informações coletadas no censo e uma máquina capaz de tabular essas informações. Construiu então a Máquina de Recenseamento ou Máquina Tabuladora, perfurando-se cerca de 56 milhões de cartões. A máquina Tabuladora era composta das seguintes unidades (.4.2): Unidade de controle, que dirigiria a seqüência das operações de toda a máquina através de furos em cartões perfurados. Entrada de dados, que utilizava também cartões perfurados. Saída, que perfuraria os resultados em cartões para uso posterior como entrada, aumentando assim a memória interna com armazenamento externo, indefinidamente grande. Saída impressa utilizada na apresentação dos resultados finais, tais como tabelas matemáticas, a qual de uma linotipo automática acoplada ao sistema. Φιγυρα 9.Máquina Tabuladora Foi Herman Hollerith, que concebeu a idéia de processar dados a partir de cartões perfurados (o problema a resolver era a computação de dados do censo dos Estados

11 9 Capítulo : Conceitos Básicos de Informática Unidos). Com esta solução, Hollerith conseguiu que o tempo de processamento dos dados do censo baixasse de 8 para 3 anos. A tecnologia de cartões perfurados foi adotada rapidamente por diversos países da Europa, difundindo a utilização das máquinas Hollerith a nível mundial e por bastante tempo. Dez anos mais tarde, Hollerith fundou uma companhia, a Tabulating Machine Company. Em 924, esta firma mudou de nome, tornando-se a International Business Machines Corporation, hoje mais conhecida como IBM. No início, as vendas da IBM eram baseadas na linha de equipamentos de escritório e, em particular, máquinas tabulares. Com isso a empresa orientou suas atividades para o mercado externo, abrindo sua primeira filial fora dos Estados Unidos, no Canadá em As máquinas de primeira geração (93-958) Já no século XX, um grande número de projetos foram implementados, baseados na utilização de relés e válvulas eletrônicas (.4.3) para a realização de cálculos automaticamente eram os computadores de primeira geração. Relés são eletroímãs cuja função é abrir ou fechar contatos elétricos com o intuito de interromper ou estabelecer circuitos. Válvula é um dispositivo que conduz a corrente elétrica num só sentido. Φιγυρα.Relé e Válvula Uma das grandes vantagens das máquinas a relé sobre as máquinas de calcular mecânicas era, sem dúvida, a maior velocidade de processamento. Ainda, um outro aspecto positivo era a possibilidade de funcionamento contínuo, apresentando poucos erros de cálculo e pequeno tempo de manutenção. Os computadores da primeira geração são todos baseados em tecnologias de válvulas eletrônicas. Normalmente quebravam após não muitas horas de uso. Tinham dispositivos de entrada/saída primitivos e calculavam com uma velocidade de milissegundos (milésimos de segundo). Os cartões perfurados foram o principal meio usado para armazenar os arquivos de dados e para ingressá-los ao computador. A grande utilidade dessas máquinas era no processamento de dados. No entanto tinham uma série de desvantagens como: custo elevado, relativa lentidão, pouca confiabilidade, grande quantidade de energia consumida e necessitavam de grandes instalações de ar condicionado para dissipar o calor gerado por um grande número de válvulas (cerca de 2 mil). A seguir serão apresentados alguns destes computadores. MARK I O Mark I (.4.3) foi criado entre 937 e 944, durante a II Guerra Mundial. Uma calculadora eletromecânica muito grande, idealizada por H. Aiken na Universidade de Harvard, foi considerado o primeiro projeto de computador. Utilizava muitas válvulas, as operações internas eram controladas por relés e os cálculos eram realizados mecanicamente. Integrava conceitos de computadores digitais e analógicos, pois tinha sistema eletrônico e mecânico na mesma máquina. Media 2,5 m de altura e 8 m de comprimento. Com o apoio da IBM e da Marinha dos Estados Unidos, Howard Aiken, o pesquisador que desenvolveu Mark I, construiu outras versões deste computador (Mark II a Mark IV).

12 Capítulo : Conceitos Básicos de Informática Φιγυρα.Mark I ABC (Atanasoff Berry Computer) Criado em 939. Foi o primeiro a usar válvulas para circuitos lógicos e o primeiro a ter memória para armazenar dados, princípio no qual se baseiam os computadores digitais. Atanasoff levou 4 princípios em consideração em seu projeto de computador: usar eletricidade e eletrônica como meio; recorrer à lógica binária para as operações; usar um condensador para memória que pudesse ser regenerado para evitar intervalos; calcular por ação lógica direta, não por via convencional de numeração. ENIAC (Electronic Numeric Integrator and Calculator) Criado entre 943 e 946. Foi considerado o primeiro grande computador digital. Não usava um programa de armazenamento interno. Os programas eram introduzidos por meio de cabos, o que fazia sua preparação para cálculos demorar semanas. Ocupava 7 m², pesava 3 toneladas, funcionava com 8 mil válvulas e mil capacitores, além de milhares de resistores a relé, consumindo uma potência de 5 Kwatts. Como tinha vários componentes discretos, não funcionava por muitos minutos seguidos sem que um deles quebrasse. Chega a ser, em algumas operações, mil vezes mais rápido que o MARK I. Φιγυρα 2.ENIAC A entrada de dados no ENIAC era baseada na tecnologia de cartões perfurados e os programas eram modificados através de reconfigurações no circuito. Apesar das dúvidas

13 Capítulo : Conceitos Básicos de Informática com relação à sua confiabilidade, o ENIAC permaneceu operacional por mais de anos. Outra contribuição importante desta época foi o conceito de programa armazenado, introduzida por John Von Neuman. Von Neuman tinha sido consultor no projeto ENIAC e conhecia os problemas da programação destas máquinas. Os programas para os computadores da época eram feitos através de modificações nos circuitos, o correspondia a um trabalho de dias para um programa relativamente simples. A proposta de Von Neuman foi inspirada na tecnologia de entrada de dados utilizada na época, fazendo com que os programas fossem introduzidos através de cartões perfurados como se fazia com os dados. John Von Neuman assim desenvolveu a lógica dos circuitos, os conceitos de programa e operações com números binários. Estes conceitos, adotados nos computadores atuais, revolucionou o conceito de programação de computadores da época, tornando muito mais flexíveis e versáteis. O novo conceito de programação introduzido por Von Neuman deu origem a muitos outros projetos nos quais ele próprio esteve envolvido, como por exemplo o EDVAC (Electronic Discrete Variable Automatic Computer), o IBM 65 (o primeiro computador da IBM), e o UNIVAC (Universal Automatic Computer), que foi o primeiro computador a ser fabricado em linha. Juntamente com o ENIAC, ocorreu também o desenvolvimento na área de periféricos de computador com o aparecimento de equipamentos tais como as unidades de fita magnética, impressoras, etc... Em 96 chegou o primeiro computador no Brasil: um UNIVAC 5, ainda com válvulas, para o IBGE..4.4Computadores de segunda geração ( ) Com a invenção do transistor em 948, o mundo dos computadores é tomado de assalto por uma onda de novos projetos que dá origem, na década de 6 a empresas hoje mundialmente conhecidas no que diz respeito à fabricação destas máquinas DEC e IBM. Φιγυρα 3.Transistor Com a segunda geração apareceram as memórias com anéis ferromagnéticos. As fitas magnéticas foram a forma dominante de armazenamento secundário: permitiam capacidade muito maior de armazenamento e o ingresso mais rápido de dados que as fitas perfuradas. Também nesse período houve avanços no que se refere às unidades de memória principal, como por exemplo, a substituição do sistema de tubos de raios catódicos pelo de núcleos magnéticos, utilizado até hoje nos chips de memória RAM. Os dispositivos de memória auxiliar introduzidos na primeira geração continuam a ser utilizados. Esses computadores, além de menores, eram mais rápidos e eliminavam quase que por completo o problema do desprendimento de calor, característico da geração anterior. Exemplos de computadores dessa geração são o IBM 4 e o Honeywell 8. O IBM 4 apareceu na década de 6 e com ele a IBM assumiu uma posição dominante na industria de computadores. A Digital Equipment Corporation tinha então uma posição proeminente no setor com sua linha PDP. O primeiro minicomputador foi o PDP-, criado em 959 e instalado em 96. O primeiro produzido comercialmente foi o PDP-5.

14 2 Capítulo : Conceitos Básicos de Informática Um dos computadores mais comercializados nesta época foi o IBM 79, que eram comercializados a um custo de três milhões de dólares. Já no início dos anos 6, a IBM passou a produzir os computadores da linha IBM 74, que eram menos poderosos que seus predecessores, mas de custo bastante inferior..4.5computadores de terceira geração (965-98) Essa geração é marcada pela substituição dos transistores pela tecnologia dos circuitos integrados (transistores e outros componentes eletrônicos miniaturizados e montados numa única pastilha de silício - o chip). Entrou no mercado em 96 pela Fairchild Semiconductor e pela Texas Instruments, localizadas no Vale do Silício na região de Palo Alto e Stanford, na Califórnia. A tecnologia dos circuitos integrados, que permitiu a substituição de dezenas de transistores numa única peça de silício, permitiu o surgimento de computadores de menores dimensões, mais rápidos e menos caros. Com esses circuitos integrados o tempo passou a ser medido em nanossegundos (bilionésimos de segundos). Φιγυρα 4.Transistores, integrados e válvulas A tecnologia utilizada na época era a de pequena escala de integração (SSI -Small Scale of Integration) com a qual ao redor de mil transistores podiam-se integrar no circuito de uma pastilha. Com isso os computadores eram menores, mais confiáveis, com maior velocidade de operação e um custo bem mais baixo do que as máquinas das gerações anteriores. Também eram usados discos magnéticos para armazenamento, o que permitiu o acesso direto à arquivos muito grandes. O exemplo típico dessa geração foi o IBM 36 (.4.5), série que introduziu o conceito de família de computadores compatíveis, facilitando a migração dos sistemas quando é necessário mudar para um computador mais potente. Esta estratégia permitiu que a IBM se posicionasse, já neste período, como líder do mercado de computadores. Essa família era composta por seis modelos básicos e várias opções de expansão que realizava mais de 2 milhões de adições por segundo e cerca de 5 mil multiplicações. Outra novidade introduzida por esta classe de computadores foi o conceito de multiprogramação, na qual diversos programas poderiam estar residentes na memória da máquina. No caso em que um programa entrasse em espera para uma operação de entrada/saída de dados, a unidade central passava a executar a parte de um outro programa. Φιγυρα 5.IBM 36

15 3 Capítulo : Conceitos Básicos de Informática Um outro computador desta geração que conheceu grande sucesso, particularmente nas universidades e centros de pesquisa foram os minicomputadores da série PDP- (DEC), apresentado na.4.5. Φιγυρα 6.PDP.4.6Computadores de quarta geração ( ) Durante a década de 7, com a tecnologia da alta escala de integração (LSI - Large Scale of Integration) pôde-se combinar até 65 mil componentes em uma só pastilha de silício (chip). Os anos 8, com o grande desenvolvimento da tecnologia de circuitos integrados, o número de transistores podendo ser integrados numa pastilha de silício atingiu a faixa dos milhares e, logo em seguida, dos milhões. Foi assim que surgiram os novos computadores, ainda menores, mais velozes e mais poderosos que aqueles da geração anterior. Na segunda metade da década de 9, houve a passagem da LSI para a VLSI (Very Large Scale of Integration - muito alta escala de integração). As máquinas de todas as gerações têm como característica comum a existência de uma única CPU para executar o processamento. Porém, mais recentemente, já existem computadores funcionando com mais de uma CPU. Desde o início da década de 8 os preços haviam caído de tal maneira que já começava a ser possível a uma pessoa ter o seu próprio computador começava então a era da informática pessoal. Os computadores pessoais passaram então a ser utilizados de uma maneira relativamente distinta dos grandes computadores de então. No início dessa geração nasceu a Intel, que começou a desenvolver o primeiro microprocessador, o Intel 44 (.4.6) de 4 bits, um circuito integrado com 225 transistores, equivalente ao ENIAC. O 44 foi seguido pelo Intel 88 de 8 bits e, mais tarde, pelo Intel 88. O primeiro microcomputador da história foi o Altair 88 (.4.6), que usava o chip Intel 888, tornouse padrão mundial da época para os microcomputadores de uso pessoal, abrindo uma nova era na história da informática. Φιγυρα 7.Intel 44

16 4 Capítulo : Conceitos Básicos de Informática Φιγυρα 8.Altair Sthephen Wozniak e Steve Jobs formaram em 976 uma pequena empresa, a Apple, onde construíram, numa garagem de fundo de quintal, o Apple I (.4.6). Um ano depois, com um novo e melhor projeto, surge o Apple II, primeiro microcomputador com grande sucesso comercial e, mais tarde, o Apple III. Em 983 entra no mercado o Lisa e em 984 o Macintosh, com tecnologia de 32 bits. Φιγυρα 9.Apple I Em 98, a IBM entrou no mercado de micros, introduzindo o PC, um microcomputador com tecnologia de 6 bits (Intel 888) que em pouco tempo se tornou um padrão. Os principais modelos de PC são: PC: possui cinco slots, dos quais dois são ocupados na configuração mínima - um para o controlador de disco flexível e o outro para a placa de vídeo e impressora, um PC tem a seguinte configuração típica a 64 K de memória RAM na placa principal, duas unidades de disco flexível de 36 K, controlador de vídeo gráfico, monitor monocromático e interface serial ou paralela para a impressora. Seu clock era de 4,77 MHz. PX-XT: possui oito slots, sendo dois ou três ocupados na configuração inicial - placa controladora de vídeo mais uma ou duas placas para controlar discos (flexível e winchester). A configuração típica de um XT é 52 a 768 K de memória RAM na placa principal, um drive de 36 K, um winchester de, 2 ou 3 Mb, placa controladora de vídeo gráfica, monitor monocromático e interface paralela ou serial. Seu clock era de 8, até 2 MHz. PC-XT 286: modelo intermediário entro o PC-XT e o PC-AT ou, como era chamado, um AT simplificado, uma vez que usa o microprocessador do AT o Intel Esse era três vezes mais rápido que o XT e podia executar várias tarefas ao mesmo tempo. É um PC-XT com o PC-AT: usa o microprocessador da Intel 8286 de 32 bits e possui maior capacidade de processamento, com memória principal de até 4 Mbytes. Sua configuração inicial típica é: Mbyte de RAM, um drive de 5,25 polegadas de alta capacidade, winchester de 2 ou 3 Mbytes com alta velocidade de acesso, interface paralela e serial RS-232, controlador de

17 5 Capítulo : Conceitos Básicos de Informática vídeo e monitor monocromático. Sua velocidade de processamento alcançava entre 6 e 2 Mhz. A grande importância do AT está na maior capacidade do 8286, que resulta em um desempenho duas a três vezes maior que os XT. PC-386: É um PC-AT com o microprocessador da Intel, o Com isso adquiriram grande velocidade de processamento e era capaz da multitarefa em 32 bits. O 8386 foi o grande marco da popularização da computação pessoal. PC 486 utiliza o microprocessador Intel 8486, com um co-processador aritmético embutido e mais de,2 milhão de transistores encolhidos em um chip. Em 993 chegou ao mercado o Pentium, cuja versão Pentium III possui cerca de nove milhões de transistores, possibilitando. O Pentium trouxe um novo fôlego às chamadas estações de trabalho (microcomputadores poderosos usados em tarefas pesadas, como computação gráfica e aplicações científicas). Uma das novidades dele é que possibilita a simulação de dois processadores, ou seja, um princípio de paralelização antes possível apenas em supercomputadores e que agora está ao alcance dos usuários de microcomputadores. Supercomputadores A história dos supercomputadores começa, de fato, no final de 975 com o Cray-. As aplicações para esses computadores são muito especiais e incluem laboratórios e centros de pesquisa aeroespaciais, empresas de altíssima tecnologia, previsão do tempo e a produção de efeitos e imagens computadorizadas de alta qualidade. Os supercomputadores são os mais poderosos, mais rápidos e de maior custo. Utilizam o conceito de processamento paralelo e são máquinas vetoriais, isto é, podem executar a mesma operação em diversas variáveis simultaneamente. Como exemplos de supercomputadores podemos citar: Cray-, Cyber 25, Fujitsu Facon-APU, Hitachi M2HIAP, Galaxy, Cray-2, Cray-3.

18

19 Capítulo 2 Sistemas Numéricos e a Representação Interna dos Dados no Computador 2. Sistemas Numéricos Sistemas numéricos são sistemas de notação usados para representar quantidades abstratas denominadas números. Um sistema numérico é definido pela base que utiliza. A base é o número de símbolos diferentes, ou algarismos, necessários para representar um número qualquer, dos infinitos possíveis no sistema. Por exemplo, o sistema decimal, utilizado hoje de forma universal, utiliza dez símbolos diferentes ou dígitos para representar um número e é, portanto, um sistema numérico na base. Valores posicionais Em um sistema de número posicional, um número é representado por uma seqüência de dígitos onde cada posição de dígito tem um peso associado. Tomando como exemplo o sistema decimal, ou base, que é sistema numérico que utilizamos diariamente (,, 2,... 9), o valor D de um número decimal de 4 dígitos d3d2dd é D = d3*3 + d2*2+ d* + d*. Cada dígito di tem um peso de i. Por exemplo, o número (base ) é a representação de 3*6 + *5 + 9*4 + 8*3 + 3*2 + 2* + 3*. 2..Sistema Binário O sistema binário, ou base 2, apresenta unicamente dois dígitos:,. Neste sistema a contagem é realizada como segue:,,,,,,,,,... Conversão Binário para Decimal Sendo binário um sistema de número posicional, o valor B de um número binário de 8 dígitos b7b6b5b4b3b2bb é B = b7*27 + b6*26+ b5*25 + d4*24 + d3*23 + d2*22+ d*2 + d*2. Cada dígito bi tem um peso de 2i. Assim o valor binário b é calculado como segue b = *+*2+*4+*8+*6+*32+*64+*28 = 7d. Esta é a conversão de um número binário para decimal. Outro exemplo b = =53d Conversão Decimal para Binário No sistema decimal, por exemplo, o número 654 corresponde a 4 unidades, 5 dezenas e 6 centenas. Para verificar isto, divide-se o número pela sua base (que é ): 654/ = 65 / = 6 / Resto 4 (*) Resto 5 (*) Resto 6 (*) Para a conversão de decimal para binário utilizamos o mesmo processo. Por exemplo, para obtermos o correspondente binário do número 2d, dividimos primeiramente este valor por 2 e anotamos o resto de cada divisão. Em seguida, dividimos novamente o dividendo da operação anterior por 2 e anotamos novamente o resto da divisão. Isto é repetido até que o resto da divisão seja, conforme abaixo: 2/2= /2= 5 5/2 = 25 25/2 = 2 2/2 = 6 6/2 = 3 Resto Resto Resto Resto Resto Resto

20 2 Capítulo 2: Sistemas Numéricos e a Representação Interna 3/2 = Resto /2 = Resto O correspondente binário de 2d é obtido unindo-se os restos da divisão por 2 na ordem inversa, assim 2d=b Sistema Octal O sistema binário ou base 8 apresenta oito dígitos:,, 2, 3, 4, 5, 6, 7. Neste sistema, a contagem é realizada como segue:,, 2, 3, 4, 5, 6, 7,,, 2, 3, 4, 5, 6, 7, 2,... Conversão Octal para Decimal Sendo o sistema octal um sistema de número posicional, o valor O de um número octal de 4 dígitos o3o2oo é O = d3*83 + d2*82+ d*8 + d*8. Cada dígito oi tem um peso de 8i. Assim o valor octal 758 é calculado como segue 758 = 5*+7*8+*64 = 25. Esta é a conversão de um número octal para decimal. Conversão Decimal para Octal Para a conversão de decimal para octal utilizamos o mesmo processo da conversão do sistema decimal para binário. Por exemplo, para obtermos o correspondente octal do número 2d, dividimos primeiramente este valor por 8 e anotamos o resto de cada divisão. Em seguida, dividimos novamente o dividendo da operação anterior por 8 e anotamos novamente o resto da divisão. Isto é repetido até que o resto da divisão seja, conforme abaixo: 2/8= 25 Resto 25/8 = 3 Resto 3/8 = Resto 3 O correspondente octal de 2d é obtido unindo-se os restos da divisão por 8 na ordem inversa, assim 2d=3o Sistema Hexadecimal Na base hexadecimal tem-se 6 dígitos que vão de à 9 e da letra A até F. Estas letras representam os números d a 5d. Assim nós contamos os dígitos hexadecimais da seguinte forma:,, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F,,, 2,..., 9, A, B, C, D, E, F, 2, 2,... Conversão Binário para Hexadecimal A conversão entre números binários e hexadecimais é simples. A primeira coisa a fazer é dividir o número binário em grupos de 4 bits, começando da direita para a esquerda, os lugares que faltam são complementados por zeros. Por exemplo, o número b ( =43d), nós dividimos este em grupos de 4 bits e nós temos ;. Nós completamos o último grupo com zeros: ;. Após nós tomamos cada grupo como um número independente e nós convertemos estes em dígitos decimais: ;=2;. Mas desde que nós não podemos representar o número hexadecimal como 2 porque isto é um erro, nós temos que substituir todos os números decimais maiores que 9 pelas suas respectivas representações em hexadecimal, com o que nós obtemos: 2Bh. A tabela abaixo pode auxiliar na conversão de números binário para hexadecimal. Binário Hexadecimal Decimal

21 3 Capítulo 2: Sistemas Numéricos e a Representação Interna A B C D E F Afim de obter um número hexadecimal em binário é apenas necessário inverter os passos. Conversão Hexadecimal em Decimal Para converter um número hexadecimal em decimal, nós utilizamos a mesma fórmula utilizada na conversão binário para decimal, sendo que a base 2 é trocada por 6. Por exemplo, para converter B2Ah em decimal: B -> *62 = 286d 2 -> 2*6 = 32d A -> *6 = d 2858d Conversão Decimal para Hexadecimal Para converter um número decimal em hexadecimal, nós utilizamos a mesma fórmula utilizada na conversão de um número decimal para binário, dividindo por 6 em vez de 2. Por exemplo, para converter 69d em hexadecimal: 69/6= 66 Resto 3d = Dh 66/6 = 4 Resto 2d = 2h 4/6 = Resto 4d = 4h 69d = 42Dh 2.2 Operações Aritméticas 2.2. Aritmética Binária Esta seção apresenta as quatro operações básicas no sistema binário: adição, subtração, divisão e multiplicação. Adição Para somar dois números binários, fazem-se as contas coluna a coluna, da direita para a esquerda, como de costume, fazendo o transporte de um (<e vai um>) quando for o caso. Para isto, observe as seguintes operações básicas: += += + = ( mais é igual a e vai ) + + = ( mais mais é igual a e vai ) Exemplos: Subtração Existem duas formas para fazer a subtração binária:

22 4 Capítulo 2: Sistemas Numéricos e a Representação Interna Como o conjunto de símbolos contém apenas 2 dígitos, ao se efetuar a subtração parcial entre 2 dígitos, um do diminuendo e outro do diminuidor, se o segundo (diminuidor) exceder o primeiro (diminuendo), subtrai-se uma unidade ao dígito imediatamente à esquerda no diminuendo (se existir e o seu valor for ), convertendo-o a. Em seguida, substituímos o diminuendo por 2, que corresponde à equivalência *2, da unidade extraída. Se o dígito imediatamente à esquerda for, procura-se nos dígitos consecutivos. Exemplos: Exemplos: A segunda forma de realizar a subtração, por exemplo de a-b, e realizar a soma de a por -b. Esta subtração é feita pelo chamado método do complemento de dois. O complemento de dois transforma um número positivo em negativo. Neste método, o diminuendo (a) é somado com o complemento de dois do diminuidor (-b). Note que o número de dígito dos operandos devem ser o mesmo: para isto complemente o operando com menor número de dígitos com zeros a esquerda (antes do complemento). Para realizar o complemento de dois, basta trocar os uns pelos zeros e vice-versa e adicionar um ao resultado. Por exemplo, a subtração de - é feita da seguinte maneira:. Completa-se o número de dígitos do diminuidor: 2. Realiza-se o complemento de dois do diminuidor: +=. 3. Soma-se os dois operandos += 4. Despreza-se o transporte final: Multiplicação A multiplicação na base 2 - ou em qualquer outra base - pode fazer-se por adições sucessivas; para calcular A*B basta somar A a si própria B vezes. Exemplo: b * b =? Lembrado que b = 4b, então * = Uma forma, e a ideal, é fazer a operação semelhante à multiplicação decimal, exceto pelo fato da soma final dos produtos se fazer em binário. Para tal, as seguintes igualdades devem ser respeitadas: *=; *=; *=; *= Exemplos: Multiplicar os números e.

23 5 Capítulo 2: Sistemas Numéricos e a Representação Interna Multiplicar os números e. Divisão Analogamente, a divisão pode ser feita por subtrações sucessivas, até obtermos uma diferença igual a zero (no caso de uma divisão exata), ou um número menor que o divisor. Exemplo: Mas esta divisão pode ser feita de maneira idêntica à divisão decimal, exceto pelo fato das multiplicações e subtrações internas ao processo serem feitas em binário. Exemplo: Dividir e.

24 6 Capítulo 2: Sistemas Numéricos e a Representação Interna Dividir e. A prova é: Aritmética Hexadecimal Adição Como exemplo, suponha a adição de 8h+5h, se somada em decimal o valor seria 3. Em hexadecimal, o valor 3 é representado por Dh. Deve-se reparar que, tal como nos habituamos a fazer na Escola Primária, sempre que o resultado iguala ou ultrapassa a base, subtraímos esta ao resultado, e fazemos um transporte para a coluna seguinte («e vai um», neste caso). Suponha agora a adição de 9 por 9: Em decimal, o resultado seria 28; Em hexadecimal, inicialmente somamos os dígitos menos significativos: 9h+9h = 8; como o resultado é maior que a base (6), então 8-6 = 2 e vai um para o dígito mais significativo. Portanto, 9h+9h=22h; Não é preciso converter os números F8h e A34h para decimal, somá-los e reconverter o resultado para a base 6. Podemos fazer a conta coluna a coluna. Então F8 h + A34h é calculado da seguinte forma: Subtração Vamos ver a subtração a partir de um exemplo: 27H-EH. Efetuamos a operação de subtração coluna a coluna. Na primeira coluna, o diminuidor (E) é superior ao diminuendo (7). Então, adicionamos a base ao diminuendo, executamos a subtração, e há transporte de uma unidade que somamos ao diminuidor da coluna seguinte.

25 7 Capítulo 2: Sistemas Numéricos e a Representação Interna retirando o número transportado do diminuendo da coluna da esquerda, 2-, obtemos, e subtraindo do diminuidor, obtemos : Multiplicação Esta operação pode fazer-se facilmente por meio da tabela de dupla entrada apresentada: Como se vê, temos todos os algarismos hexadecimais (exceto o zero) nas entradas verticais e horizontais da tabela. Se quiséssemos calcular 5h*9h, por exemplo, encontraríamos o resultado na intercessão da coluna 5 com a linha 9. Então, 5h*9h = 2Dh. Uma vez que a multiplicação é comutativa, então, o mesmo resultado se verifica na intercessão da coluna 9 com a linha 5. º. Exemplo: Ah* 2h = (complete) 2h*7h = (complete) 2º. Exemplo: Procedendo como de costume, vamos começar pelo produto do multiplicando pelo algarismo mais à direita do multiplicador:

26 8 Capítulo 2: Sistemas Numéricos e a Representação Interna Calculamos em seguida o produto do multiplicando pelo 2º. algarismo (contando a partir da direita) do multiplicador. Agora é só somar os produtos parciais. Fica: Fazer o produto dos seguintes números hexadecimais: B2H e 3FCH Divisão Esta é a operação mais difícil de fazer sem recorrermos à tabela anterior. Veja alguns exemplos: º. Exemplo: dividir os números hexadecimais 2F por 2. Para verificarmos se é verdade, nada melhor que fazer a prova:

27 9 Capítulo 2: Sistemas Numéricos e a Representação Interna 2º. Exemplo: Dividir os números hexadecimais 3F4 por A 2.3Operações Lógicas Existem quatro tipos de operações lógicas que se podem operar sobre números binários: AND, OR, XOR (ou exclusivo), e NOT Operações lógicas com bits AND A operação lógica AND é uma operação que aceita dois operandos. Estes operando são binários simples (base 2). A operação AND é and = and = and = and = Uma maneira compacta de representar a operação lógica AND é com a tabela verdade, apresentada abaixo. As duas colunas a esquerda representam os dois operandos da operação AND Op OP2. Op Op2 AND Op Op2 Em português, a operação lógica AND é: se o primeiro operando é e o segundo operando é, o resultado é, senão o resultado é. OR A operação lógica OR também é uma operação com dois operandos. Ela é definida como: or = or = or = or = A tabela verdade da operação OR tem a seguinte forma: Op Op2 OR Op Op2 A operação lógica OR significaria: Se o primeiro operando ou o segundo operando (ou os dois) forem, o resultado é, senão o resultado é. Esta operação também é conhecida como ou inclusivo (inclusive-or). XOR A operação lógica XOR (ou exclusivo) também é uma operação com dois operandos. Ela é definida como:

28 Capítulo 2: Sistemas Numéricos e a Representação Interna xor = xor = xor = xor = A tabela verdade da operação XOR tem a seguinte forma: Op Op2 XOR Op Op2 Em português a operação lógica XOR significaria: Se o primeiro operando ou o segundo operando, mas não os dois, for, o resultado é, senão o resultado é. NOT A operação lógica XOR (ou exclusivo) também é uma operação com um operando. Ela é definida como: not = not = A tabela verdade da operação NOT tem a seguinte forma: Op NOT Op Em português a operação lógica NOT significaria: Se o operando for, o resultado é, senão o resultado é Operações Lógicas com números As operações lógicas trabalham apenas com operandos com bit único. Para realizar estas operações sobre um número, por exemplo de 8, 6, 32 bits, é necessário realizar a operação bit-a-bit. Por exemplo se quisermos realizar a operação lógica AND com dois operandos de 8 bits cada, teríamos que executar a operação lógica AND sobre cada par de bits independentemente: AND Como as operações lógicas são definidas em termos de valores binários, deve-se converter os números decimais, hexadecimais, etc., para números binários antes de realizar as operações lógicas. 2.4 Tipos de Dados Tratados pelo Computador Todos os dados e as instruções armazenados em memória são codificados sob a forma de sinais elétricos do tipo ligado e desligado, representado pelos números e. Cada unidade de informação deste tipo é chamada de bit, abreviação de Binary digit. Assim o sistema numérico adotado em sistemas computacionais é o binário, ou base 2. Os computadores podem receber valores decimais, através do teclado, e escrever valores decimais, através do vídeo, por exemplo. Mas internamente os valores são armazenados e processados no sistema binário. Um bit pode representar dois valores: ou, ou então verdadeiro ou falso. Como isto é muito pouco, nós podemos unir dois ou mais bits para representar mais de dois valores. Neste caso, a quantidade de valores representáveis por uma seqüência de n bits é de 2 n. Algumas strings de bits têm nomes próprio: uma seqüência de 8 bits são chamados de byte

29 Capítulo 2: Sistemas Numéricos e a Representação Interna uma seqüência de 4 bits é chamada de nibble. um grupo de 6 bits é chamado de word. um grupo de 32 bits é chamado de double word. um grupo de 64 bits é chamado de quad word. Por razões de simplificação de hardware, o número 24 foi o escolhido para representar o "k" da computação. Na vida cotidiana e na física, o "k" vale : km = metros kg = gramas kv = volts Entretanto, na informática, o multiplicador "k" (lê-se "quilo" ou "ká") vale 24. Da mesma forma, o multiplicador "M" (lê-se "mega"), que normalmente vale.., na computação vale: M = 24 k = 24x24 = Portanto, MB (lê-se "um megabyte") são exatamente bytes. Mas para efeitos práticos, podemos dizer que MB é aproximadamente milhão de bytes. O multiplicador "G" (lê-se "giga"), que normalmente vale bilhão, na computação vale: G = 24 M = 24x24x24 = Portanto, GB (lê-se "um gigabyte") são exatamente bytes, mas para efeitos práticos podemos dizer que GB é aproximadamente bilhão de bytes. 2.5 Representação Interna de Caracteres Os bytes são usados para representar caracteres, números, figuras, ou qualquer outro tipo de dado armazenado ou processado em um computador. Esta seção apresenta estas diversas formas de representação interna de caracteres. Na maioria dos códigos alfanuméricos cada caractere é representado através de um byte. Por exemplo, no código ASCII (visto mais adiante) a letra 'A' é representada pelo byte " ". Uma seqüência de caracteres é expressa por uma cadeia de bytes sucessivos. Nem todos os tipos de códigos utilizam os 8 bits de um byte para a representação de caracteres Código de 6 bits Os primeiros códigos utilizados foram os de 6 bits, que permitiam a representação de 2 6 = 64 caracteres (2.5.), que correspondem a: 26 letras maiúsculas. algarismos ( ). 28 caracteres chamados especiais, incluindo SP (caractere em espaço em branco). Φιγυρα 2.Código de 6 bits. Por exemplo, a codificação da frase "OLA!" é: X X X X Códigos de 7 bits (ASCII) Com o desenvolvimento das linguagens de programação de alto nível começaram a ser utilizados os códigos de 7 bits que permitiam a representação de minúsculas e de

30 2 Capítulo 2: Sistemas Numéricos e a Representação Interna caracteres cujo significado são ordens de controle para periféricos. Um exemplo desse tipo de códigos é o ASCII de 7 bits (2.5.2). Φιγυρα 2.Código ASCII de 7 bits. Os significados dos caracteres de controle são: ASCII é uma codagem a 7 bits, mas muitos computadores manipula uma quantidade de 8 bits (byte). Portanto, os caracteres ASCII devem ser freqüentemente armazenados um por byte, com o bit mais significante igual a. O bit extra é algumas vezes usado para propósitos específicos, dependendo da aplicação. Por exemplo, algumas impressoras reconhecem um ASCII estendido, com os caracteres adicionais iniciando pelo bit mais significativo a. Estes caracteres habilitam a impressora a imprimir símbolos adicionais, como o alfabeto grego ou fontes do tipo itálico.

31 3 Capítulo 2: Sistemas Numéricos e a Representação Interna EBCDIC O EBCDIC (Extended Binary Coded Decimal Interchange Code) é uma codagem de caracteres de 8 bits (2.5.3) e se trata de um padrão proprietário desenvolvido pela IBM. Φιγυρα 22.Código EBCDIC de 8 bits. O significados dos caracteres de controle do EBCDIC são: ASCII Estendido É um conjunto de códigos que estende o conjunto ASCII básico. Os caracteres ASCII estendido usam 8 bits para representar os caracteres. Os caracteres extras representam caracteres de línguas mortas e caracteres especiais para desenhas figures. Veja estes caracteres na figura abaixo.

32 4 Capítulo 2: Sistemas Numéricos e a Representação Interna Φιγυρα 23.Caracteres ASCII estendidos 2.5.5IS O Latin- ISO Latin- é uma codificação de caracteres padronizada pela Organização Internacional de Padronização (ISO), que recebe o código ISO Ele é um conjunto de caracteres ASCII estendido e é muito similar aos caracteres ANSI usado pelo Windows, embora os dois não sejam idênticos. A linguagem HTML (Hypertext Meta Language) adota também esta representação de caracteres. A figura abaixo apresenta os caracteres ISO Latin-, com os caracteres adicionais propostos pelo Microsoft Windows Latin- Added Characters (em claro). Φιγυρα 24.Caracteres ISO Latin Caracteres ANSI O Windows 9x suporta o conjunto de caracteres ANSI (American National Standards Institute), que é uma representação de 8 bits (256 caracteres), numerados de a 255. Os valores de a 27 são os mesmos dos caracteres ASCII. Valores entre 28 a 255 são similares ao conjunto de caracteres ISO Latin-, mas naturalmente tem extensões e incompatibilidades.

33 5 Capítulo 2: Sistemas Numéricos e a Representação Interna Caracteres Unicode Windows NT usa o conjunto de caracteres Unicode 6-bits, que cobre grande parte dos caracteres das maiores línguas vivas, incluindo também caracteres de linguagens mortas que tem muito uso escolar. Veja detalhes em Representação Interna de Números Esta seção apresenta estas diversas formas de representação interna de números Representação de Números Inteiros Para representar números positivos, utiliza-se normalmente o valor do próprio número binário. Por exemplo, o número 6 é representado por e o número 2 é representado por. Existem quatro maneiras de se representar números negativos: módulo e sinal (MS); complemento de (C-), complemento de 2 (C-2) e excesso de 2 elevado a (N-) Nessas representações de números utiliza-se o sistema binário e considera-se que temos um número limitado de bits para cada dado numérico. Esse número de bits disponíveis é representado nesta seção por N. Módulo e Sinal (MS) Neste sistema de representação, o bit que está situado mais à esquerda representa o sinal, e o seu valor será para o sinal + e um para o sinal -. Os bits restantes (N-) representam o módulo do número. Por exemplo, supondo que exista a limitação de 8 bits (N=8), o valor representa o número +42 e o valor representa o número -42. Denomina-se amplitude ou faixa (range) de representação num determinado método o conjunto de números que podem ser nele representados. Para o sistema módulo e sinal, a faixa de representação para N dígitos é de -2N-+ X 2N--. Assim: Para o caso de 8 bits (byte), a faixa é: -27 X 27 Para 6 bits (word), a faixa é: X Para 32 bits (double word), a faixa é: X A vantagem deste sistema em relação a outros é a de possuir faixa simétrica. Por outro lado, apresenta a inconveniência de possuir duas representações para o número. Para 8 bits o tem as seguintes representações: (+) e (-). Complemento de (C-) Este sistema de representação também utiliza o bit mais à esquerda para o sinal, correspondendo o ao sinal + e o ao sinal -. Para os números positivos, os N - bits da direita representam o módulo (assim como no MS). O simétrico de um número positivo é obtido pelo complemento de todos os seus dígitos (trocando por e viceversa), incluindo o bit de sinal. Por exemplo, supondo que exista a limitação de 8 bits (N=8 ), o valor representa o número +42 e o valor representa o número -42. Este método tem a mesma faixa de representação para N dígitos do método MC, que é de -2N-+ X 2N--. E tem a mesma desvantagem do anterior, que é de ter duas representações para o número : (+) e (-). Complemento de 2 (C-2) Este sistema também utiliza o bit mais à esquerda para o sinal, correspondendo o ao sinal + e o ao sinal -. Para os números positivos, os N- dígitos da direita representam o módulo (igualmente ao MS e C-). O simétrico de um número é obtido em dois passos:

34 6 Capítulo 2: Sistemas Numéricos e a Representação Interna Primeiro passo: Obtém-se o complemento de todos os bits do número positivo (trocando por e vice-versa) incluindo o bit do sinal, isto é, executa-se o Complemento de. Segundo passo: Ao resultado obtido no primeiro passo soma-se (em binário), desprezandose o último transporte, se existir. Vejamos a representação em Complemento de 2 dos números e - para 8 bits: A faixa de representação neste caso é assimétrica, o que constitui o seu maior inconveniente, e é dada pela fórmula -2N- X 2N-- Para o caso de 8 bits (byte), a faixa é: -28 X 27 Para 6 bits (word), a faixa é: X Para 32 bits (double word), a faixa é: X A principal vantagem é ter uma única representação para o número. Para 8 bits, teremos: O último transporte é desprezado. Portanto, o e o - têm uma mesma representação. O método C-2 é o mais utilizado para representar números negativos. Excesso de 2 elevado a (N-) O método de representação em excesso não utiliza nenhum bit para o sinal, de modo que todos os bits representam um módulo ou valor. Esse valor corresponde ao número representado mais um excesso, que para N bits é igual a 2 elevado a N-. Por exemplo, para 8 bits o excesso é 28 ( 27 = 28 ), logo, o número é representado por +28 = 38 (). O número - é representado por -+28 = 8 (). Neste método, o número tem uma única representação, que para 8 bits corresponde a: +28 = 28 () A faixa de representação é assimétrica (o que é um inconveniente) e é dada da mesma forma que o método C-2: -2N- X 2N-- É interessante observar que todo o número representado em excesso é igual à sua correspondente representação em Complemento de 2, exceto que o bit de sinal é invertido Vírgula fixa (Fixed Point) Este nome vem da posição em que se supõe estar situado o ponto decimal, que é uma posição fixa. A vírgula fixa é hoje utilizada exclusivamente para a representação de números inteiros, supondo-se a vírgula decimal implicitamente situada à direita dos dígitos.

35 7 Capítulo 2: Sistemas Numéricos e a Representação Interna Existem quatro maneiras de representar números com vírgula fixa: binário puro, decimal, decimal não compactado, decimal compactado. Binário Puro O número é representado através dos métodos vistos anteriormente. Por exemplo, considerando um computador com palavra de 32 bits que utiliza o método Complemento de 2 (C-2), qual é a sua faixa de representação e qual a configuração interna dos números,, -, e ? A faixa de representação é: -23 X 23-, ou então: X Representação de : Representação de : Representação de -: Representação de : Representação de : Decimal não Compactado Neste sistema um número é armazenado com um byte para cada um de seus algarismos. Cada byte contém no seu quarteto da esquerda quatro 's denominados bits de zona, e no quarteto da direita, o algarismo em BCD (Binary-coded display - codificado em binário ), que é um número entre e 9. Esses quatro bits são denominados bits de dígito. O quarteto da esquerda do último algarismo do número dado representa o sinal, e pode conter para o sinal + e para o sinal - (C e D em hexadecimal, respectivamente). Por exemplo, a representação do número 234 é, e a representação do número é. Decimal Compactado Cada dígito é representado num quarteto (sem bits de zona), exceto o primeiro quarteto da direita que representa o sinal com os mesmos valores (C e D). Por exemplo, a representação do número 234 é, e a representação do número é Ponto Flutuante Uma vez que número de bits que representa um número real é limitado, os números reais sofrem truncamento na sua parte fracionária. É importante lembrar de que, por utilizar a vírgula flutuante, nem todos os números têm representação, razão pela qual estes números são representados de forma aproximada, acarretando pequenos erros de representação. Números de ponto flutuante tem duas partes. A primeira parte contem a fração (algumas vezes chamada de mantissa) e a segunda parte define a posição do ponto decimal e é chamada de expoente. Por exemplo, o número decimal +632,789 é representado em ponto flutuante como: Fração: Expoente: +4 O valor do expoente indica que a posição real do ponto decimal é quatro pontos a direita do ponto decimal indicado na fração. Esta representação é equivalente a notação científica: x +4. Generalizando, os números decimais ponto flutuante são representados na forma Fx E, onde F é a fração e E o expoente. Apenas a fração e o expoente são fisicamente representados em termos computacionais. A base e o ponto decimal da fração são assumidos e não são mostrados explicitamente. Um número binário ponto flutuante é representado de uma maneira similar, exceto que ele usa a base 2 para o expoente. Por

36 8 Capítulo 2: Sistemas Numéricos e a Representação Interna exemplo, o número binário +. é representado por uma fração de 8 bits () e um expoente de 6 bits (). Um número ponto flutuante é dito normalizado se o dígito mais significativo da fração não é zero. Por exemplo, a fração decimal.35 é normalizada, mas.35 não é. Números normalizados fornecem a melhor precisão para números ponto flutuante. O intervalo representado por um ponto flutuante é determinado pelo número de dígitos do expoente e a precisão pelo número de dígitos da fração. Para estudar as propriedades deste método de representação de números, considere uma representação R, que comporta uma fração sinalizada de três dígitos no intervalo, f (ou zero) e um expoente sinalizado de dois dígitos. Esta representação permite expressar números nas seguintes regiões Números negativos entre -,999*+99 até -,*-99. Números positivos entre +,*-99 até +,999*+99. Zero Os números fora desta faixa não podem ser representados. Os números em vírgula flutuante expressos segundo a representação R podem ser utilizados para modelizar os números reais da matemática, mas ele impõem alguns problemas: os números reais fora das faixas apresentadas acima não podem ser representados. Se por exemplo a soma de dois números positivos ultrapassar a +,999*+99, tem-se o que se chama de overflow (ultrapassagem do valor superior). Este erro é devido a natureza finita dos computadores. No caso de se somar dois números negativos e o resultado ultrapassar -,999*+99, tem-se o que é chamado de underflow. Uma outra diferença importante entre os reais e os ponto flutuante é sua densidade. Entre dois números reais distintos, x e y, existe sempre um outro número real, tão próximo que sejam x e y. Esta propriedade vem do fato que para todo par de números reais distintos x e y, z=(x+y)/2 é um número real, de valor intermediário entre x e y. Os números reais formam uma continuidade. Ao contrário, os números em vírgula flutuante não formam uma continuidade; no caso da representação R acima, não se pode expressar mais que 79 números positivos diferentes, 79 números negativos e, ou seja ao total 3582 números. Por exemplo, +,*3 dividido por 3 não pode ser expresso exatamente no nosso sistema de representação. Nós tomamos o número mais próximo que se pode representar: é realizado o arredondamento. Normalização de um ponto flutuante Seja a representação do número 432, na exponenciação em base 2, expresso sob a forma :. Sendo o primeiro bit representando o sinal (+) da fração, os 7 bits seguinte representam o expoente codificado em excedente a 64 (8464=2), e os 6 bits seguintes representando a fração. Observe que o valor da fração é dado por x2-+x2-2+x2-3+x2-4+x2-5+x2-6+x2-7+x2-8+x2-9+x2-+x2-+x2-2+x23 +x2-4+x2-5+x2-6. Portanto, o número 432 é expresso como 22x(x2-2+x2-3+x25 +x2-6) = 432. Para normalizar o número acima, deve-se deslocar a fração bits a esquerda e se subtrai do expoente. Assim obtém-se a seguinte representação. A representação ponto flutuante: IEEE 754 Até o início dos anos 8, cada computador tinha sua própria forma de representação de números de ponto flutuante. Para eliminar esta situação, um comitê da IEEE (Institute of Electrical and Electronics Engineers) foi criado para definir um padrão para os cálculos aritméticos ponto flutuante. Sua meta não era somente permitir a troca de números entre computadores diferentes, mas sobretudo oferecer um modelo funcional preciso aos construtores de computadores. Os resultado destes trabalhos conduziram ao padrão IEEE 754.

37 9 Capítulo 2: Sistemas Numéricos e a Representação Interna O padrão IEEE define três formas de representação de ponto flutuante: a precisão simples (32 bits), precisão dupla (64 bits) e a precisão estendida (8 bits). Este último formato é destinado sobretudo para reduzir os erros de arredondamento em cálculos; eles são encontrados principalmente nas unidades de cálculo flutuante. O processador Pentium III suporta estes três precisões. Os formatos de simples e dupla precisão utilizam o binário para codificar a fração e o expoente. Eles são representados na (a) sinal Expoente Fração 52 (b) Φιγυρα 25.Formato dos números flutuante segundo o padrão IEEE: (a) Precisão simples (b) Precisão dupla Como para todos os números, cada formato começa com um bit de sinal, que vale para os números positivos e para os números negativos. Em seguida vem o expoente, codificado em excedente a 27 para a precisão simples e em excedente a 23 para a precisão dupla. Os expoentes variam de a 255 ou 247. Os números tendo como expoente os valores mínimos ou máximos acima tem uma especificidade própria e não são normalizado como os outros. Isto será visto mais adiante. Enfim, o último componente do formato, a fração, é codificada em binário de 23 ou 52 bits. Uma fração é dita normalizada quando o primeiro bit que segue a vírgula vale. Considerando que o primeiro bit da fração é sempre igual a, o padrão define uma fração cuja significação difere um pouco das frações habituais: uma fração IEEE compreende um bit pressuposto a, que se chama bit escondido, após 23 ou 52 bits de valor. A vírgula também é implícita. O valor numérico da fração, para a precisão simples, é calculado da seguinte forma: x2 + b22x2- + b2x2-2 + b2x2-3 + b9x2-4 +b8x2-5+b7x2-6+ b6x2-7 + b5x2-8 + b4x2-9 + b3x2- + b2x2- + bx2-2 + bx2-3 + b9x2-4+b8x2-5+b7x2-6+ b6x2-7 + b5x2-8 + b4x2-9 + b3x2-2 + b2x2-2 + bx bx2-22. Assim, os números reais associados aos pontos flutuantes de precisão simples são calculados da seguinte maneira: (-)S x 2(E - 27) x (,F). Quando todos os bits são, seu valor decimal é igual a,. Se todos os bits são a, o valor da fração é igual a 2,. Para evitar ambigüidade entre os formatos convencionais de representação de fração, no padrão IEEE diz-se pseudo-fração e não fração. Assim, os números normalizados tem uma pseudo-fração variando em s 2. Alguns exemplos de números flutuantes na precisão simples são apresentados abaixo:,5 = (-) x 2- x (,) =,5x sinal: expoente: 27- = 26 = fração: = (primeiro é implícito),5 =,5 = 3FH = (-) x 2 x (,) = x2 sinal: expoente: 27+ = 27 = fração: = (primeiro é implícito) = = 3F8H -,5 = x2 = (-) x 2 x (,5)

38 2 Capítulo 2: Sistemas Numéricos e a Representação Interna sinal: expoente: 27+ = 27 = fração: = (primeiro é implícito) -,5 = -,5 = BFCH Características dos números flutuantes IEEE 754 As características dos números flutuantes representados segundo o padrão IEEE são apresentados na tabela abaixo. Bit de sinal Bit do expoente Bit da fração Número total de bits Codagem do expoente Variação do expoente Menor número normalizado Maior número normalizado Escala de número decimais Menor número não normalizado Precisão simples Excesso de a Aprox Aprox. -38 a +38 Aprox. -45 Precisão dupla Excesso de a Aprox Aprox. -38 a +38 Aprox Underflow O que fazer quando o resultado de um cálculo é inferior ao menor número ponto flutuante normalizado que se pode representar? Existem duas soluções: dizer que o número vale zero (arredondamento), sem outra indicação gerar um desvio para causar uma ultrapassagem da borda inferior (underflow) Nenhuma das abordagens acima é satisfatória. É por isso que o conceito de número não normalizado aparece no padrão IEEE. Os números não normalizados tem seus expoentes iguais a zero e a fração não é mais normalizada. Isto significa que não há mais o bit implícito a. A fração é codificada unicamente sobre 23 ou 52 bits, ela evolui então de a (e não de a 2 como na pseudo-fração). O menor número que se pode representar em precisão simples tem um expoente igual a e a fração constituída de zeros, isto é o número,*2-26. O maior número não normalizado tem seu expoente que todo a zero (-27), e todos os bits da fração iguais a, isto é o número, *2-27. O menor número não normalizado tem uma fração em precisão simples com 22 bits a zero e um bit a, o mais a direita. Neste caso, o expoente representa 2-27 e a fração 2-23, que corresponde ao número 2-5. É assim que os números não normalizados existem afim de permitir uma ultrapassagem gradual para baixo para as operações produzindo resultados inferiores ao menor número normalizado, em vez de substituí-los por zero. Representação do zero Na representação IEEE existem duas representações para o zero: + e -. Seus bits de sinal valem ou. Seus expoentes valem e todos os bits da fração são iguais a zero. Assim, na precisão simples, o valor zero corresponde a : Overflow As ultrapassagens de borda a esquerda são difíceis de serem geradas e não há nenhuma combinação particular de bits para representá-los. Uma representação específica é reservada ao valor do maior número possível que se possa representar. Dizse que é infinito. O expoente deste número é composto de bits a, sua fração é composta de bits a zero. Ou seja, o infinito é representado por

39 2 Capítulo 2: Sistemas Numéricos e a Representação Interna ou Este número particular pode ser visto como um operando sobre o qual se aplicam o conjunto de regras de cálculo sobre os grandes números (ou números infinitos). Por exemplo, a soma de um número infinito com um número qualquer resulta em infinito. Da mesma maneira, a divisão de um número finito pelo infinito resulta em zero e a divisão de um número finito por zero resulta infinito. O que se pode dizer da divisão de um número infinito por um número infinito? Neste caso o resultado é indefinido. Uma representação particular foi definida para isto: NaN (Not a Number), que é igual a ou Toda configuração menos todos a zero 2.7Representação Digital de Áudio, Imagem e Vídeo Esta seção apresenta como imagens, áudios e vídeos são capturados do mundo real a partir de sinais analógicos e como estes sinais são transformados numa forma digital Sinais Analógicos para representar informações Esta seção apresenta uma introdução às formas de onda e sinais analógicos e seus uso na descrição de informações detectadas pelos sentidos humanos. Informações percebidas e variáveis físicas Informações que os sentidos humanos podem detectar podem ser descritas como uma ou várias variáveis físicas cujos valores podem ser funções do tempo e do espaço. Note que por informações é entendido aqui como a representação física em termos de estímulos para um sentido humano, e não o conteúdo semântico, que é o significado deste estímulo. Descrevendo sons com formas de onda Um som, que atravessa o ar, é uma onda de ar comprimido ou expandido cuja pressão altera no tempo e espaço. Na posição de um locutor ou de um detector, os sons podem ser descritos por valores de pressão que variam apenas com no tempo (valores dependentes do tempo). O padrão de oscilação, como mostrado na 2.7., é chamado de forma de onda (waveform). A forma de onda é caracterizado por um período e amplitude. O período é o tempo necessário para a realização de um ciclo; intervalo de tempo que, num fenômeno periódico, separa a passagem do sistema por dois estados idênticos. A freqüência é definida como o inverso do período e representa o número de períodos em um segundo. A freqüência é normalmente medida em Hz (Hertz) ou ciclos por segundo (cps). A amplitude do som é define um som leve ou pesado. Pressão de ar Amplit ude t empo P eríodo Φιγυρα 26.Forma de onda Como a onda de som ocorre naturalmente, ela nunca é perfeitamente suave ou uniformemente periódica como a forma de onda da 2.7..

40 22 Capítulo 2: Sistemas Numéricos e a Representação Interna Descrevendo imagens monocromáticas com variáveis físicas As imagens refletem radiações eletromagnéticas (luz) incidentes que estimulam os olhos do observador. A intensidade de luz é uma função da posição espacial do ponto refletido sob a imagem. Portanto, a imagem pode ser descrita pelo valor da intensidade de luz que é uma função de duas coordenadas espaciais. Se a cena observada não foi plana, uma terceira coordenada espacial é necessária. Descrevendo imagens coloridas com formas de onda Se a imagem não é monocromática, ela reflete diferentes comprimentos de onda. Assim uma função simples não é suficiente para descrever imagens coloridas, mas um espectro completo de comprimento de onda refletida, cada um com sua própria intensidade, é necessário. Assim as imagens teriam que ser descritas pela conjunção de várias funções bidimensionais. Felizmente, o sistema visual humano tem certas propriedades que simplificam a descrição de imagens coloridas. A Luz que consiste em uma distribuição espectral de intensidade estimula o sistema visual e cria uma resposta. A resposta nos olhos depende da sensibilidade do sistema visual aos comprimentos de onda. Testes realizados mostram que diferentes distribuições espectrais da luz pode dar a mesma resposta visual. Em outras palavras, é possível criar sensações de cores idênticas com diferentes combinações de comprimentos de onda (isto é diferentes combinações de cores). A teoria da cor foi desenvolvida por Thomas Young no início de 82 e afirma que qualquer sensação de cor pode ser reproduzida pela mistura em proporções apropriadas de três luzes coloridas monocromáticas primárias. Cores primárias são independentes no sentido que uma cor primária não pode ser obtida misturando outras duas cores primárias. A Commission Internationale de l Eclairage (CIE) recomendou o uso de uma tripla particular de luz monocromática. Cada fonte de luz é definida pelo seu comprimento de onda (λ = 7 nm, vermelho; λ 2 = 546. nm, verde; λ3 = nm, azul). Em vez de ser descrita por uma infinidade de funções bidimensionais, qualquer imagem colorida plana pode ser representada por um conjunto de três funções bidimensionais Porque Digitalizar? A utilização de informações na forma digital trás as várias vantagens. Universalidade de representação Sistemas computacionais manipulam apenas dados digitais. Quando áudio, imagens, vídeos estão na forma digital, eles podem ser facilmente armazenados e manipulados (processados, transmitidos e apresentados) pelos sistemas computacionais tal qual outros dados. Desta forma, como todas as mídias de apresentação (textos, imagens, som, etc.) são codificadas numa única forma, elas podem ser manipuladas de uma mesma forma e pelo mesmo tipo de equipamento. Além disso, informações de áudio e vídeo digitalizadas são facilmente integradas com outros tipos de dados e são de fácil interação com mídia digitais usando sistemas computacionais. Processamento Informações de áudio e vídeo digitais são processadas, analisadas, modificadas, alteradas, ou complementadas por programas de computador tal qual outros dados. A seguir são apresentados alguns exemplos de processamentos possíveis graças a representação digital de informações de áudio e vídeo [Fluckiger, 95]: reconhecimento de conteúdos semânticos (voz, escrita a mão, formas e padrões); estruturas de dados, ligações usando apontadores entre elementos de informações podem ser criados para rápida obtenção de informações; editores poderosos com funções cut-and-paste para criar monomídia (p.e. som apenas) ou documentos multimídia são possíveis;

41 23 Capítulo 2: Sistemas Numéricos e a Representação Interna qualidade da informação pode ser aumentada pela remoção de ruídos ou erros como a digitalização de velhos discos de vinil para criar CD s de alta qualidade; informações sintetizadas e vídeos podem ser mixadas Qualidade Sistemas digitais são mais confiáveis. Sinais digitais são mais tolerantes a ruídos e interferências que os analógicos. Na forma analógica, o valor do sinal é alterado se há ruídos ou interferências. Este erro é acumulativo de um estágio para outro do sistema. Na forma digital, há apenas dois níveis de sinal: alto () ou baixo (). Se o erro causado pela interferência ou ruído é abaixo de um certo limiar, o sinal pode ser reconhecido corretamente. Além disso, em cada estado do processamento digital ou transmissão, o sinal digital são reconstruídos, assim erros não são acumulativos. Segurança Se segurança na comunicação é necessária, a representação digital da informação facilita a criptografia. Armazenamento A utilização unicamente de mídias digitais permite a existência de um dispositivo único de armazenamento de dados para todas as mídias, sendo que diferenças podem estar ligadas a requisitos de tamanho. Imagens e vídeos necessitam de uma maior capacidade de armazenamento que textos ou gráficos. Som necessita de uma capacidade de armazenamento um pouco menor que imagens. Dispositivos digitais apropriados podem ser necessários, tal como CD-ROMs (Compact Disk-Read Only Memories). Transmissão Qualquer sistema de comunicação de dados podem ser (potencialmente) utilizado para a transmissão de informações de áudio e vídeo digitais. Uma única rede de comunicação suportando a transmissão digital das informações multimídia é possível (Rede Digital de Serviços Integrados). A este nível existem dificuldades causados pelos requisitos de certas aplicações, em particular aquelas que necessitam o respeito da fidelidade de dependências temporais dos sinais digitais. A vantagem da transmissão digital em relação a transmissão de sinais analógicos é que ela é menos sensíveis a ruídos, a detecção de erros, recobrimentos e a criptografia são facilitadas Digitalização, Amostragem e Quantificação Esta seção apresenta a forma de digitalização dos vários tipos de mídias de apresentação. Digitalização aqui é o processo envolvido na transformação de sinais analógicos em sinais digitais: Sinal analógico é uma medida física que varia continuamente com o tempo e/ou espaço. Eles são descritos por uma função dependente apenas do tempo (s=f(t)), dependente apenas do espaço (s=f(x,y,z)), ou dependente do tempo e do espaço (s=f(x,y,z,t)). Sinais analógicos são produzidos por sensores que detectam fenômenos físicos (que simulam os sensos humanos) e os transformam em uma medida que toma a forma de uma corrente ou tensão elétrica. A precisão é ditada pelas características dos sensores. Sinais digitais são seqüências de valores dependentes do tempo ou do espaço codificados no formato binário. Para a conversão de sinais analógico em digital é necessário a realização de três passos: amostragem, quantificação e codificação. A figura ilustra o processo de digitalização de um sinal analógico no domínio do tempo.

42 24 Capítulo 2: Sistemas Numéricos e a Representação Interna Amostragem Nesta etapa um conjunto discreto de valores analógicos é amostrado em intervalos temporais (p.e., para sons) ou espaciais (p.e., para imagens) de periodicidade constante, como apresentado na figura a. A freqüência de relógio é chamado de taxa de amostragem ou freqüência de amostragem. O valor amostrado é mantido constante até o próximo intervalo. Isto é realizado através de circuitos sampling and hold. Cada uma das amostras é analógica em amplitude: ele tem qualquer valor em um domínio contínuo. Mas isto é discreto no tempo: dentro de cada intervalo, a amostra tem apenas um valor. Segundo o teorema de Nyquist: se um sinal analógico contem componentes de freqüência até f Hz, a taxa de amostragem deve ser ao menos 2f Hz. Na prática, esta freqüência é um pouco maior que 2f Hz. Por exemplo, a taxa de amostragem de CDaudio é de 44, khz, e dos tapes de áudio digital (DAT) é de 48kHz para cobrir uma faixa audível de freqüência de 2 khz. Outro exemplo, os componentes principais de freqüência da voz humana estão dentro de 3, khz, com isto os sistemas de telefonia analógicos limitam o sinal transmitido a 3. khz; é comum usar uma freqüência de amostragem de 8 khz para converter este sinal em digital. Quantificação O processo de converter valores de amostras contínuas em valores discretos é chamado de quantificação. Neste processo nós dividimos o domínio do sinal em um número fixo de intervalos. Cada intervalo tem o mesmo tamanho e recebe um número. Na figura c estes intervalos são numerados de a 7. A cada amostra dentro de um intervalo é atribuído o valor do intervalo. O tamanho deste intervalo de quantificação é chamado de passo de quantificação. A técnica que utiliza o mesmo passo de quantificação é chamada modulação PCM (Pulse Coded Modulation). Algumas vezes, nem todos os valores amostrados são retidos após a quantificação. No caso ilustrado pela figura c, todos os valores amostrados foram retidos. Amplit ude (a) T em po (b) T em po (c) T em po (d) Φιγυρα 27. Conversão A/D [Lu, 96]: (a) sinal analógico; (b) pulsos de amostragem; (c) valores amostrados e intervalos de quantificação; (d) seqüência digital Codificação A codificação consistem em associar um conjunto de dígitos binários, chamado de codeword, a cada valor quantificado. No caso da figura d, oito níveis de quantificação são usados. Estes níveis podem ser codificados usando 3 bits, assim cada amostra é representada por 3 bits.

43 25 Capítulo 2: Sistemas Numéricos e a Representação Interna Em algumas aplicações de telefonia, a digitalização da voz humana utiliza 6 bits por amostra, que então leva a 26 ou passos de quantificação. Em outras aplicações de compressão de voz, algumas vezes, apenas 8 quantificações por bits são necessários, produzindo apenas 256 passos de quantificação. Taxa de bits Taxa de bits é definida como o produto entre taxa de amostragem e o número de bits usados no processo de quantificação. Por exemplo, supondo uma freqüência de 8k Hz e 8 bits por amostra, a taxa de bits necessária à telefonia é igual a 8x8 = 64 kbps. Conversão analógica/digital e digital/analógica Em sistemas computacionais, geralmente todas as informações são representadas internamente no formato digital. Mas humanos reagem a estímulos sensoriais físicos, assim a conversão digital-para-analógico (ou conversão D/A) é necessária na apresentação de certas informações (figura 2). Conversor A/D Sinal Analógico (... ) Conversor D/A Sinal Digital Sinal Analógico Φιγυρα 28. Conversão analógico/digital e digital/analógica Áudio Áudio é causado pelo distúrbio da pressão de ar que alcança o tímpano. Quando a freqüência do distúrbio de ar está na faixa de 2 Hz a 2. Hz ele é audível. A maioria dos sistemas trabalham com esta faixa de freqüência. Outro parâmetro usado para a medição do som é a amplitude (medido em decibéis - db), variação que causa o som leve ou pesado. Por exemplo, o limiar da dor é de a 2 db. A onda sonora é uma onda contínua no tempo e amplitude. A onda apresentada na 2.7. pode ser um exemplo de onda sonora. Representação digital de áudio A forma de onda de áudio é convertida em um sinal elétrico contínuo (analógico) por um microfone. Este sinal elétrico é medido normalmente em volts. Para que sistemas computacionais processem e comuniquem sinais de áudio, o sinal elétrico deve ser convertido em um sinal digital. Este processo de conversão de um sinal analógico em digital foi apresentado na seção O mecanismo que converte o sinal de áudio digital em analógico é chamado de Conversor Analógico para Digital (CAD). Áudio digital necessita ser amostrado continuamente em uma taxa fixa. Cada amostra é representada por um número fixo de bits. A tabela abaixo mostra a taxa de amostragem e o número de bits usados para cada amostra para várias aplicações de áudio. Relembrando, quanto maior a taxa de amostragem e maior o número de bits por amostragem, maior é a qualidade do áudio restituído, mas com isso maior é a taxa de bits. Note na tabela que para áudio estéreo, tal como CD-Audio, dois canais são necessários. Aplicações CD-Audio DAT Telefone Digital Rádio digital, long play DAT No de canais Taxa de amostragem 44. khz 48 khz 8 khz 32 KHz Bits por amostragem Taxa de bits,4 Mbps,53 Mbps 64 Kbps,2 Mbps

44 26 Capítulo 2: Sistemas Numéricos e a Representação Interna Para a apresentação do áudio digitalizado é necessário realizar a transformação de uma representação artificial do som em uma forma de onda física audível pelo ouvido humano. Para isto são utilizados Conversores Digital para Analógico (CDA). Normalmente os conversores CAD e CDA são implementados em uma única placa. Um exemplo de placa de audio é Creative Sound Blaster AWE64, possibilitando até 6 bits por amostras, produzindo áudio qualidade CD Vídeos e Imagens Analógicos Captura e reprodução de imagens e vídeos analógicos As imagens são capturadas usando câmeras da seguinte maneira: as lentes da câmera focam uma imagem de uma cena em uma superfície foto-sensível de sensores CCD (Charge-Coupled Device); o brilho de cada ponto é convertido em uma carga elétrica por uma camada foto-sensível, estas cargas são proporcionais ao brilho nos pontos; a superfície foto-sensível é rastreada por um feixe de elétrons para capturar as cargas elétricas, devendo ser feito rapidamente antes que a cena mude. Desta maneira a imagem ou cena é convertida em um sinal elétrico contínuo. Nesta seção, por simplificação assume-se a captura e reprodução de vídeos monocromáticos, onde apenas um sinal de luminância é produzido (apenas a luminosidade é capturada, temos a imagem em tons de cinza). Neste caso são usadas câmeras de Luminância, que captam a imagem em tons de cinza, e gera um sinal só com a luminância da imagem. A imagem é gerada por um CCD monocromático que capta o tom de cinza que incide em cada célula do circuito. Este tipo de câmera é utilizada em geral para aplicações em visão computacional e nos casos onde a informação sobre a luminosidade da imagem é suficiente. O dispositivo de apresentação de imagens mais utilizado é o tubo de raios catódicos (CRT). Eles são usados nos aparelhos de TV e monitores de computadores. Há uma camada de fósforo fluorescente no interior do CRT. Esta camada é rastreada por um feixe de elétrons na mesma forma do processo de captura na câmera. Quando o feixe toca o fósforo ele emite luz durante um curto instante. O brilho da luz depende da força do feixe. Quando quadros repetem-se suficientemente rápidos a persistência da visão resulta na reprodução de um vídeo. Em implementação prática, o sinal elétrico enviado da câmera para o dispositivo de apresentação deve conter informações adicionais para assegurar que o rastreamento esteja sincronizado com o rastreamento do sensor na câmera. Esta informação é chamada sync information. Vídeos e Imagens Coloridos Nesta seção é discutido a captura e a reprodução de imagens e vídeos coloridos. Todos os sistemas de TV a cores são baseados na teoria Tristimulus de reprodução da cor. Esta teoria afirma que qualquer cor pode ser reproduzida com a mistura das três cores primárias: vermelho, verde e azul. Para capturar imagens coloridas, uma câmera divide a luz nos seus componentes vermelho, verde e azul. Estas três componentes de cor são focalizados em sensores de vermelho, verde e azul, que convertem estes três componentes em sinais elétricos separados. Em um monitor colorido, há 3 tipos de fósforos fluorescentes que emitem luzes vermelha, verde e azul quando tocadas por 3 feixes de elétrons. Estes fósforos são arranjados de tal forma que cada posição do vídeo tem 3 tipos de fósforo. A mistura da luz emitida destes 3 fósforos produz um ponto de cor. A visão acima descreve o sinal RGB. Na realidade, o sinal analógico pode ser gerado da seguinte maneira [França Neto, 98]:

45 27 Capítulo 2: Sistemas Numéricos e a Representação Interna Sinal RGB (red, green, blue) - O sinal é separado pelas cores básicas, com isso é possível ter uma imagem mais pura. Ele é utilizado em câmeras e gravadores profissionais, imagens geradas por computador, etc. Sinal de vídeo composto colorido - os sinais das cores (RGB) são codificados em um único sinal seguindo um determinado padrão (NTSC, PAL-M, SECAM, etc) ; Sinal de luminância e crominância ou Y/C (S-video) - o sinal é composto por duas partes, a luminância e a crominância; como isso a imagem tem uma melhor qualidade do que no vídeo composto. Muito usado por vídeos SVHS, laser disc, DVD e outros aparelhos que geram imagens de boa qualidade (acima de 4 linhas); Representação digital de imagens e vídeos A seção anterior discutiu muitos conceitos e nomenclaturas de vídeos analógicos. Esta seção discute a representação digital de imagens e vídeos. Imagens Digitais Imagens não são revisáveis porque seu formato não contêm informações estruturais. Elas podem resultar de capturas do mundo real (via escaneamento de uma página impressa ou foto, câmeras digitais) ou elas podem ser sintetizadas pelo computador (via programas de paint, captura da tela, conversão de gráficos em imagens bitmap). Após digitalizadas, as imagens podem ser manipuladas com editores de imagens (por exemplo, Photoshop), que não produzem documentos que retém a estrutura semântica. Formatos de Imagens Imagens no computador são representadas por bitmaps. Um bitmap é uma matriz bidimensional espacial de elementos de imagem chamados de pixeis. Um pixel é o menor elemento de resolução da imagem, ele tem um valor numérico chamado de amplitude. O número de bits disponíveis para codificar um pixel é chamado de profundidade de amplitude (ou de pixel). Exemplos típicos de profundidade de pixel é (para imagens preto&branco), 2, 4, 8, 2, 6 ou 24 bits. O valor numérico pode representar um ponto preto e branco, um nível de cinza, ou atributos de cor (3 valores) do elemento de imagem em imagens coloridas. O número de linhas da matriz de pixeis (m) é chamado de resolução vertical da imagem, e o número de colunas (n) é chamado de resolução horizontal. Denominamos resolução espacial, ou resolução geométrica, ao produto m x n da resolução vertical pela resolução horizontal. A resolução espacial estabelece a freqüência de amostragem final da imagem. Dessa forma, quanto maior a resolução mais detalhe, isto é, altas freqüências, da imagem podem ser captadas na representação matricial. A resolução espacial dada em termos absolutos não fornece muita informação sobre a resolução real da imagem quando realizada em dispositivo físico. Isso ocorre porque ficamos na dependência do tamanho físico do pixel do dispositivo. Uma medida mais confiável de resolução é dada pela densidade de resolução da imagem que fornece o número de pixels por unidade linear de medida. Em geral se utiliza o número de pixels por polegada, ppi ("pixels per inch") também chamada de dpi ("dots per inch"). Formatos bitmap necessitam mais capacidade de armazenamento do que gráficos e textos. Como bitmaps ignoram a semântica, duas imagens de mesma dimensão (altura e largura) ocupam o mesmo espaço. Por exemplo, um quadrado ou uma foto digitalizada com dimensões idênticas ocupam o mesmo espaço. Os gráficos, como eles consideram a semântica, ocupam menos espaço. Imagens e Gráficos Animados As imagens e os gráficos podem ser apresentados na tela do computador como uma sucessão de imagens/gráficos que podem criar a sensação de movimento.

46 28 Capítulo 2: Sistemas Numéricos e a Representação Interna Uma imagem ou gráfico individual de uma animação é chamado de quadro (ou frame). Para ser compreensível, os quadros que compõem a animação devem ser apresentados geralmente em uma taxa aproximadamente fixa. O número de quadros apresentados por segundo é definido como freqüência de quadros e é medido em termos de quadros por segundo (fps frames per seconds). A taxa de quadros de uma animação é determinada por 3 fatores: A taxa deve ser alta suficiente para produzir a sensação de movimento. Para isto, taxas maiores ou iguais a 25 fps devem ser utilizadas. A tabela abaixo resume as principais freqüências de quadro utilizadas atualmente. Fps < à 6 >6 24 3/25 6 Comentários Apresentação sucessiva de imagens Impressão de movimento mas com sensação de arrancos Efeito do movimento começa Cinema Padrão de TV americana/européia Padrão HDTV Maior a freqüência de quadros utilizada mais alto é a largura de banda necessária à transmissão. Isto pois maior a taxa, maior é o números de quadros que devem ser enviados. Portanto a rede utilizada pode ditar a freqüência de quadros a ser utilizada. Problema de freqüência de restauração (refreshing) de tela: a tela deve ser restaurada 5 vezes por segundo para evitar tremulações. Mas se a freqüência de quadros for 5 fps, a largura de banda necessária aumentará substancialmente. Para evitar problemas de tremulação utiliza-se vídeos entrelaçados, onde reduz-se pela metade o número de quadros requeridos por segundo, ou seja, 25 fps. Imagens Bitmap Animadas (Vídeo) Na animação de imagens, cenas são registradas como um sucessão de quadros representados por imagens bitmap possivelmente compactadas. Estas imagens podem ser capturadas da vida real com câmeras ou criadas através do computador. A primeira técnica produz o que é chamado de vídeo. Animação de imagens tem as mesmas características que as imagens: falta de uma descrição semântica e necessidade de uma grande capacidade de armazenamento. Gráficos Animados O termo gráfico animado ou animação gráfica é utilizado para referenciar apresentação sucessiva de objetos visuais gerados pelo computador em uma taxa suficiente para dar a sensação de movimento e onde cada atualização é comutada de uma descrição abstrata em tempo de apresentação. A principal vantagem das animações gráficas é que elas são mais compactas: elas são descritas por um conjunto de objetos com diretivas temporais (em outras palavras um programa a ser executado em tempo de apresentação). Outra vantagem é que animações gráficas são revisáveis. Existe uma desvantagens: é necessário um poder de processamento suficiente para apresentação Especificação da Cor Esta seção procura apresentar a forma de especificação da cor na representação de imagens e vídeos digitais. Propriedades da Cor A luz visível é uma forma de radiação eletromecânica que tem um espectro de comprimento de onda variando aproximadamente de 4 nm a 78 nm. Uma luz de diferente comprimento de onda produz uma sensação de cor diferente (p.e. violeta de 38 a 45 mn, azul de 45 a 49 nm, verde de 49 a 56nm). As três propriedades físicas básicas da cor são: luminância (brilho), nuança (cor) e saturação (puridade).

47 29 Capítulo 2: Sistemas Numéricos e a Representação Interna Sistema de especificação de cores Para comunicar imagens e vídeos coloridos, a cor deve ser especificada usando certo método. A CIE, Comissão Internacional de Iluminação, é o órgão responsável pela padronização na área de fotometria e colorimetria. Existem vários padrões de cor estabelecidos pela CIE, entre eles o CIE-RGB e o CIE-XYZ Sistema RGB No sistema RGB de representação de cor, uma cor é representada pela intensidade de três cores primárias (teoria Tristimulus): vermelho (Red), verde (Green) e azul (Blue), com cada valor variando de a 255. Exemplos de cores familiares são apresentadas abaixo: Branco = 255,255,255 Vermelho = 255,, Verde =,255, Azul =,,255 Amarelo = 255,255, Preto =,, A representação de imagens coloridas pode ser feita através de cores por componente (true color), cores indexadas, ou cores fixas. Essa representação vai depender do propósito e dos dispositivos que vão ser usados para trabalhar com essas imagens. True Color No True Color, cada pixel da imagem é representado por um vetor de 3 componentes de cores (RGB) com um certo número de bits para representar cada componente de cor (resolução de cor). Com isso, quanto maior for a resolução de cor mais qualidade teremos para representar as cores de cada pixel. Geralmente o número de bits para cada componente RGB é igual, ou seja quando temos um pixel sendo representado por 9 bits, usamos 3 bits para cada componente (3-3-3). Mas pode ser feito uma representação com diferentes valores para as componentes, por exemplo uma representação 8 bits/pixel, pode ser usado 3 para componentes R, 3 para G e 2 para B (3-3-2), tal representação em um byte é comumente usado e tira proveito do fato que a percepção humana da componente azul é menos sensível que as outras componentes. O número de bits para representar cada componente fornece a quantidade de cores que podem ser representados por essa componente. Ou seja, se n é a resolução de cor então a quantidade de níveis possíveis é de 2 n níveis. Por exemplo, uma imagem colorida representada por 2 bits/pixel, com 4 bits para cada componente RGB. Temos então: 24=6 níveis para cada componente de cor RGB, o que nos possibilita representar até 4.96 cores diferentes (6 x 6 x 6 = 4.96), o que é equivalente à 22 = Temos alguns padrões de cores nesse formato que são: Bits/pixel Padrão 5 bits/pixel High Color (5 bits) 6 bits/pixel High Color (6 bits) 24 bits/pixel True Color, (24 bits) Componente de cor RGB 5 bits/pixel, 32 níveis por componente 5/6 bits/pixel, 32/64 níveis por componente 8 bits/pixel, 256 níveis por componente Máximo de cores cores cores cores

48 3 Capítulo 2: Sistemas Numéricos e a Representação Interna O padrão com 24 bits/pixel é o mais usado para representar com fidelidade as cores, pois o número de cores que podem ser representadas com essa resolução de cores é maior do que a visão humana pode reconhecer. Cores Indexadas Nas cores indexadas, cada pixel é representado por um índice que aponta para uma tabela de cores (paleta) que contem as informações sobre as cores (2.7.8). Temos então um número de cores que podem ser representadas, que é o número de entradas na paleta. A paleta por sua vez, tem em geral 24 bits para representar cada cor no formato RGB. Dessa forma podemos representar n cores de um conjunto com mais de 6 milhões de cores. Nesse caso, para representar esse tipo de imagem, as informações das cores da paleta devem constar da estrutura além das dimensões e seqüência de índices. Φιγυρα 29.Índice e paleta de cores O número de cores e a resolução de cor da paleta podem variar. Os dois padrões mais usados são apresentados na tabela abaixo. Bits/pixel Padrão 4 bits/pixel 8 bits/pixel 6 cores indexadas 256 cores indexadas Resolução de cor da paleta (RGB) 24 bits/cor 24 bits/cor Cores fixas Nas cores fixas, cada pixel é representado por um índice que aponta para uma tabela de cores fixa. Esse sistema geralmente é usado quando o dispositivo não permite a representação de muitas cores, como no caso de placas de vídeos antigas ou padrões de cores (padrão de cores do MS Windows 3.x, 6 cores). O número de bits para representar um pixel depende do número de cores fixas, ou seja para representar por exemplo 6 cores, são necessários 4 bits/pixel. Imagens em Tons de Cinza A representação de imagens em tons-de-cinza é feita discretizando a informação de luminância de cada ponto da imagem. Ou seja, cada pixel contém a intensidade de luminosidade representada em um certo número de bits. Assim uma imagem com resolução de cor de 8 bits, pode representar até 256 níveis de cinza, variando do preto ao branco. Os padrões mais usados são de 6 e 256 tons-de-cinza, 4 e 8 bits/pixel respectivamente. Representações com mais que 256 tons-de-cinza não são percebidas pela vista humana, ou seja representar uma imagem com 256 níveis é suficiente para a maioria das aplicações. Imagens Binárias As imagens binárias são imagens com dois níveis, como preto e branco. São muito usadas por dispositivos de impressão e para representar imagens de documentos monocromáticos. Para representar um pixel de uma imagem binária, como o próprio nome diz, é necessário apenas (um) bit. Essa informação é suficiente para representar cada pixel, ou seja temos uma representação de bit/pixel. Em alguns casos, temos uma informação extra sobre a cor de cada informação, a cor para o bit com valor (zero)

49 3 Capítulo 2: Sistemas Numéricos e a Representação Interna e a cor para o bit de valor (um). Essa informação de cor é geralmente é representada em 24 bits/cor no padrão RGB, podendo porém ser representada de outras formas.

50

51 Capítulo 3 Introdução à Arquitetura de Computadores 3. Introdução Como foi mencionado no capítulo, tem-se observado uma atuação cada vez maior dos computadores nas diversas atividades do nosso dia a dia. As operações bancárias, as telecomunicações e o manuseio de muitos aparelhos eletrodomésticos são exemplos claros das facilidades trazidas pela utilização dos computadores, isto sem falar em aplicações mais clássicas, como os sistemas de reservas de passagens aéreas e a previsão meteorológica. A evolução da informática foi caracterizada pelo desenvolvimento de computadores com características as mais diversas, traduzidas pelos diferentes parâmetros, cada vez mais conhecidos da maioria de usuários de computador: a CPU adotada, a capacidade de memória, a capacidade do disco rígido, a existência de memória cache e outros menos conhecidos. A definição destes parâmetros e a forma como os diversos componentes de um computador são organizados, define aquilo que é conhecido por arquitetura de computador e vai determinar aspectos relacionados à qualidade, ao desempenho e à aplicação para a qual o computador vai ser orientado. 3.2 Componentes básicos de um computador Apesar da existência de uma grande diversidade em termos de arquiteturas de computador, pode-se enumerar, num ponto de vista mais genérico os componentes básicos desta classe de equipamentos. A 3.2 apresenta um esquema de um computador, destacando os elementos que o compõem. Apesar da grande evolução ocorrida na área de informática desde o aparecimento dos primeiros computador, o esquema apresentado na figura pode ser utilizado tanto para descrever um sistema computacional atual como os computadores da década de 4, projetados por engenheiros como John Von Neuman. Memória Processador Periféricos Barramento Φιγυρα 3.Elementos básicos do computador Os principais elementos do computador são: O processador (ou microprocessador) é responsável pelo tratamento de informações armazenadas em memória (programas em código de máquina e dos dados). A memória é responsável pela armazenagem dos programas e dos dados. Periféricos, que são os dispositivos responsáveis pelas entradas e saídas de dados do computador, ou seja, pelas interações entre o computador e o mundo externo. Exemplos de periféricos são o monitor, teclados, mouses, impressoras, etc. Barramento, que liga todos estes componentes e é uma via de comunicação de alto desempenho por onde circulam os dados tratados pelo computador.

52 2 Capítulo 3: Introdução à Arquitetura de Computadores 3.3 Processador Um microprocessador, ou simplesmente processador, é um circuito integrado (ou chip), que é considerado o "cérebro" do computador (3.3). É ele que executa os programas, faz os cálculos e toma as decisões, de acordo com as instruções armazenadas na memória. Φιγυρα 3.Microprocessador Os microprocessadores formam uma parte importantíssima do computador, chamada de UCP (Unidade Central de Processamento), ou em inglês, CPU (Central Processing Unit). Antes da existência dos microprocessadores, as CPUs dos computadores eram formadas por um grande número de chips, distribuídos ao longo de uma ou diversas placas. Um microprocessador nada mais é que uma CPU inteira, dentro de um único CHIP. Podemos ver na 3.3 um microprocessador e uma placa de circuito. Um microprocessador contém todos os circuitos que antigamente eram formados por diversas placas. Φιγυρα 32.Microprocessador e placa de circuito impresso Ligando-se um microprocessador a alguns chips de memória e alguns outros chips auxiliares, tornou-se possível construir um computador inteiro em uma única placa de circuito. Esta placa, como visto na 3.3, é comumente chamada de placa mãe dos microcomputador. Φιγυρα 33.Placa Mãe Não importa de que tipo de CPU estamos falando, seja um microprocessador, ou uma das várias placas que formam a CPU de um computador de grande porte, podemos dizer que a CPU realiza as seguintes tarefas:

53 3 Capítulo 3: Introdução à Arquitetura de Computadores a) Busca e executa as instruções existentes na memória. Os programas e os dados que ficam gravados no disco (disco rígido ou disquetes), são transferidos para a memória. Uma vez estando na memória, a CPU pode executar os programas e processar os dados. b) Comanda todos os outros chips do computador. A CPU é composta basicamente de três elementos: unidade de controle, unidade lógica e aritmética e registradores. As sessões que seguem apresentam cada um destes componentes Unidade Lógica e Aritmética O primeiro componente essencial num computador (ou sistema computacional) é a Unidade Lógica e Aritmética (ALU), a qual, como o próprio nome indica, assume todas as tarefas relacionadas às operações lógicas (ou, e, negação, etc.) e aritméticas (adições, subtrações, etc...) a serem realizadas no contexto de uma tarefa. Neste contexto, é importante observar a evolução que a ALU sofreu ao longo dos anos e quais são os parâmetros que influenciam no desempenho global de um sistema computacional: Um parâmetro importante é o tamanho da palavra processada pela unidade lógica e aritmética. Como o sistema de numeração adotado nas arquiteturas de computadores é o binário, o tamanho de palavra é dado em números de bits. Quanto maior o tamanho da palavra manipulada pelo microprocessador, maior é o seu potencial de cálculo e maior a precisão das operações realizadas. A velocidade de cálculo obviamente é outro fator de peso para o desempenho do computador, uma vez que ela será determinante para o tempo de resposta de um sistema computacional com respeito à execução de uma dada aplicação. A velocidade de cálculo está diretamente relacionada com a freqüência do relógio que pilota o circuito da CPU como um todo. Outro parâmetro importante associado ao desempenho do computador é a quantidade de operações que ela suporta. Por exemplo, os primeiros processadores suportavam um conjunto relativamente modesto de operações lógicas e aritméticas. Em particular, no que diz respeito às operações aritméticas, os primeiros processadores suportavam apenas operações de adição e subtração, sendo que as demais operações tinham de ser implementadas através de seqüências destas operações básicas. Os processadores suportando um conjunto mais complexo de instruções surgiu de 5 anos para cá, graças à adoção da tecnologia CISC (Complex Instruction Set Computer). A evolução nos tempos destes parâmetros será apresentada aqui a partir da história dos microprocessadores da família Intel, resumida na tabela abaixo. Nome Ano Clock (MHz) REG (bits). N. de Transistores 4 Barramento (bits) Memória Endereçável 64 bytes 44 97, , KB KB MB MB 6 MB 8386DX 8386SX 8486 DX 8486 SX Pentium GB 4 GB 4 GB GB 4 GB Pentium Pro GB Comentários primeiro microprocessador (manipulação aritmética) primeiro micro 8 bits (manipulação de dados/caracteres) primeira CPU num chip (x o desempenho do 88) primeira CPU 6 bits num chip (x o desempenho do 886) processador do IBM-PC aumento no endereçamento (3-6x o desempenho do 886 primeira CPU 32 bits 8386 com barramento 8286 versão 8386 mais rápida 8486 sem coprocessador matemático Arquitetura Super-escalar, 5x o desempenho do 486DX 33 Arquitetura de Execução dinâmica

54 4 Capítulo 3: Introdução à Arquitetura de Computadores Pentium II Pentium II Xeon Pentium III Pentium III Xeon GB GB a 3 5 e GB GB 999 Barramento Duplo independente, execução dinâmica, e tecnologia MMX Para estações de trabalho e servidores PCs de negócio e de consumidores, servidores e estações de trabalho PCs de negócio e servidores e estações de trabalho. A sociedade Intel fundada em 968, iniciou a fabricação de memórias para computadores, até que um fabricante de computadores lançou o desafio de construir uma unidade central de processamento (CPU), num único circuito para uma calculadora eletrônica. Assim, foi desenvolvida a CPU 44 de 4 bits, e logo depois o 88. Estes foram as primeiras CPUs integradas num único chip. A fabricação foi em pequena escala, pois a empresa não pensou que estas pudessem interessar a outros fabricantes. Esses chips eram caríssimos. Custavam, na época do seu lançamento, mais de dólares. Em função do sucesso do 88, a Intel lançou-se na fabricação de um novo chip que permitisse ultrapassar a barreira dos 6 Kbytes de memória, limite imposto devido ao número de pinos do 88. Nasceu então o 88 (974), que provocou uma revolução no que diz respeito à indústria dos computadores. O 88 foi o primeiro microprocessador a ser usado em larga escala nos chamados "computadores pessoais". Antes deles, os microcomputadores eram usados apenas em laboratórios científicos, em fábricas e em universidades. O 88 popularizou o uso de microcomputadores por pequenas empresas e até para uso pessoal. Era comuns os micros pessoais baseados no 88 e em outros microprocessadores rivais: o MC68 da Motorola, o 652, usando em um antigo microcomputador chamado de APPLE, e o Z-8 fabricado pela ZILOG, usado em um antigo computador chamado TRS-8. Surgia então a indústria dos microcomputadores. Ao mesmo tempo, surgia a indústria do software para microcomputadores, que criava programas de vários tipos para serem usados nessas máquinas. Os microcomputadores dessa época já tinham teclado, vídeo e impressora. Seus dados e programas eram gravados normalmente em gravadores de fita K-7 adaptados para trabalhar com microcomputadores. A INTEL produziu ainda, no final dos anos 7, um outro microprocessador para substituir o 88. Chamava-se 885. Todos esses microprocessadores (88, 885, Z-8, 652, 68 e outros) operavam com 8 bits. A 3.3. mostra um dos primeiros microcomputadores brasileiros, o SCHUMEC M-/85, lançado em 98. Tinha um microprocessador INTEL 885 de 6 MHz, 6 KB de memória e um gravador de fita K-7 para armazenamento de programas e dados. Seu monitor de vídeo era na verdade uma TV PHILIPS adaptada, já que nesta época o Brasil não fabricava monitores. Φιγυρα 34.Microcomputador SCHUMEC M /85 Pouco depois, é lançada a primeira CPU em 6 bits, o 886, concebido no mesmo espírito do 88. O próximo passo foi o 888, que possuía a mesma arquitetura do 886, mas com um barramento interno de 8 bits e não de 6 como seu antecessor. Nessa ocasião, a IBM, que é o maior fabricante de computadores em todo o mundo, ainda não fabricava microcomputadores. Seus produtos eram os computadores de grande porte usados nos grandes centros de processamento de dados, e custavam alguns milhões de dólares. A IBM decidiu então entrar no mercado de computadores pessoais. Escolheu então o microprocessador 888 para usar em seu microcomputador, chamado de "IBM Personal Computer", ou simplesmente, IBM PC. O IBM PC, o primeiro microcomputador de 6 bits, passou logo a dominar o mercado. Até os dias atuais, os modernos microcomputadores são compatíveis com o IBM PC original, lançado em 98. Este microcomputador tinha as seguintes características:

55 5 Capítulo 3: Introdução à Arquitetura de Computadores Microprocessador 888, operando a 4.77 MHz Monitor de vídeo monocromático 2 drives de 32 KB 6 KB de memória, possibilitando expansão até 64 KB Conexão para gravador K-7 Pouco tempo depois, a IBM realizou melhorias no projeto deste microcomputador e lançou o IBM PC-XT. A sigla "XT" significa "Extended Technology" (Tecnologia estendida). As características dos primeiros modelos do IBM PC-XT eram as seguintes: Microprocessador 888, operando a 4.77 MHz Monitor de vídeo monocromático ou colorido 2 drives de 36 KB 64 KB de memória, possibilitando expansão até 256 KB Disco rígido de MB A grande vantagem do IBM PC-XT em relação ao IBM PC era a possibilidade de operar com um disco rígido (também chamado de winchester) de MB, uma altíssima capacidade para aquela época. Os microprocessadores 886 e 888 foram extensões aos dois chips anteriores, do ponto de vista das E/S. Entretanto, estes nunca foram chips altamente utilizados. O passo seguinte e natural seria a passagem para 32 bits, o que foi concretizado com o lançamento do 8386 e 8386SX. Logo após surgiu o 8486 e que possui, integrados, um coprocessador de ponto flutuante e um controlador de memória. Atualmente, os computadores são baseados nos processadores Pentium II e III, cujas características estão na tabela acima Unidade de Controle (UC) A Unidade de Controle tem a maior importância na operação de um computador, uma vez que é esta unidade que assume toda a tarefa de controle das ações a serem realizadas pelo computador, comandando todos os demais componentes de sua arquitetura. É este elemento quem deve garantir a correta execução dos programas e a utilização dos dados corretos nas operações que as manipulam. É a unidade de controle que gerencia todos os eventos associados à operação do computador, particularmente as chamadas interrupções, tão utilizadas nos sistemas há muito tempo Registradores A CPU contém internamente uma memória de alta velocidade que permite o armazenamento de valores intermediários ou informações de comando. Esta memória é composta de registradores (ou registros), na qual cada registro tem uma função própria. Os registros, geralmente numerosos, são utilizados para assegurar o armazenamento temporário de informações importantes para o processamento de uma dada instrução. Conceitualmente, registro e memória são semelhantes: a localização, a capacidade de armazenamento e os tempos de acesso às informações que os diferenciam. Os registros se localizam no interior de um microprocessador, enquanto a memória é externa a este. Um registro memoriza um número limitado de bits, geralmente uma palavra de memória. Os registros mais importantes são: Contador de programa (PC - Program Counter), que aponta para a próxima instrução a executar. Registro de instrução (IR - Instruction Register) que armazena a instrução em execução. Outros registros que permitem o armazenamento de resultados intermediários.

56 6 Capítulo 3: Introdução à Arquitetura de Computadores Clock Clock é um circuito oscilador que tem a função de sincronizar e ditar a medida de velocidade de transferência de dados no computador, por exemplo, entre o processador e a memória principal. Esta freqüência é medida em ciclos por segundo, ou Hertz. Existe a freqüência própria do processador, comandando operações internas a ele, e a freqüência do computador a ele associado, basicamente ciclos CPU-Memória principal. Os processadores Pentium-, Pentium MMX-233, Pentium II-3, acessam a memória principal a 66 MHz. Suas freqüências respectivas de, 233 e 3 MHz são atingidas, tão somente, no interior do chip. Dizem, portanto, respeito ao processamento interno do processador e não à freqüência na relação CPU-Memória do computador. Já os processadores Pentium II-35 e superiores tem uma freqüência externa de MHz, acaretando um desempenho melhor do microcomputador, tanto no processamento propriamente dito quanto nas operações de disco e vídeo. 3.4 Processadores CISC e RISC Uma instrução em um programa de alto nível é implementado por diversas instrução de processador a mais baixo nível. Por exemplo, uma instrução de um programa que imprime um conjunto de caracteres na tela é realizado a nível de processador por um conjunto de instruções. De acordo com o número de instruções suportadas, pode-se classificar um processador como RISC (Reduced Instruction Set Computing) ou CISC (Complex Instruction Set Computing). Os microprocessadores são, em sua maioria, chips CISC. Um processador CISC suporta um conjunto maior de instruções, sendo cada instrução mais especializada; graças a isso, ele pode executar, de modo direto, a maioria das operações programadas pelos programas de alto nível. Devido a isto, o número de instruções de processador para implementar uma instrução de mais alto nível são menores. Mas quanto maior a quantidade de instruções que um processador suporta, mais lenta é a execução de cada uma delas. Um processador RISC reconhece um número limitado de instrução, que, em contrapartida, são otimizadas para que sejam executadas com mais rapidez. Portanto, a arquitetura RISC reduz o conjunto de instrução ao mínimo, e as instruções não implementadas diretamente são realizadas por uma combinação de instruções existentes. Mas em compensação, um programa é implementado por um número maior de instruções. A Apple desenvolveu, sob a arquitetura RISC, em parceria com a Motorola e a IBM, o chip Powerpc, com mais poder de processamento que o chip Pentium. Ele equipa a linha de microprocessadores MakPower (nos modelos 6, 7, 8). 3.5 Memória Todo computador é dotado de uma quantidade de memória (que pode variar de máquina para máquina) a qual se constitui de um conjunto de circuitos capazes de armazenar os dados e os programas a serem executados pela máquina. Nós podemos identificar diferentes categorias de memória: a memória principal, ou memória de trabalho, onde normalmente devem estar armazenados os programas e dados a serem manipulados pelo processador; a memória secundária que permitem armazenar uma maior quantidade de dados e instruções por um período de tempo mais longo; o disco rígido é o exemplo mais evidente de memória secundária de um computador, mas podem ser citados outros dispositivos menos recentes como as unidades de fita magnética e os cartões perfurados;

57 7 Capítulo 3: Introdução à Arquitetura de Computadores a memória cache, que se constitui de uma pequena porção de memória com curto tempo de resposta, normalmente integrada aos processadores e que permite incrementar o desempenho durante a execução de um programa. Os circuitos de memória são normalmente subdivididos em pequenas unidades de armazenamento, geralmente um byte. Cada uma desta unidade é identificada no circuito por um endereço único, o qual vai ser referenciado pelo processador no momento de consultar ou alterar o seu conteúdo. Por exemplo,.no caso do processador 888 nós temos um espaço de endereçamento de MBytes, então este endereço único vai de a FFFFF, conforme ilustração abaixo. As quantidades de memória hoje são definidas em termos de Kbytes (quilobytes) que correspondem a 24 bytes ou (2 bytes) e MBytes (megabytes), que correspondem a 24 KBytes ou (22 bytes). Endereço hexadecimal FFFFE FFFFF Conteúdo de memória E4 FF 3.5. Memória Principal A memória principal, ou memória de trabalho, é onde normalmente devem estar armazenados os programas e dados a serem manipulados pelo processador. Geralmente é esta memória que se referencia na especificação de um microcomputador. E hoje, as quantidades de memória mais usuais disponíveis nos microcomputadores são 32, 64, 28 e 256 MBytes de memória, ou mesmo até mais para aplicações específicas. Em termos básicos, a memória principal é vista como um conjunto de chips que são inseridas na placa mãe do computador. Pode-se ver na 3.5. alguns tipos de chips de memória, usados para formar a memória principal de microcomputadores. Os dois módulos superiores desta figura são as memórias utilizadas atualmente. Mais adiante serão apresentadas as tecnologias de memória e os tipos de empacotamento. Φιγυρα 35.Chips de memória Os módulos de memória mais usados nos microcomputadores são os dois módulos de memória superiores da O mais superior é conectado no barramento PCI e o segundo no barramento ISA (estes tipos de barramento serão apresentados mais adiante). Estes módulos são colocados na placa mãe, como apresentado na 3.5..

58 8 Capítulo 3: Introdução à Arquitetura de Computadores Φιγυρα 36.Placa Mãe e suas memórias Tipos de memória Os chips de memória podem ser divididos em duas grandes categorias: RAM (memória de leitura e escrita): são chips de memória que podem ser lidos e gravados pela CPU a qualquer instante. A CPU usa a RAM para armazenar e executar programas vindos do disco, para ler e gravar os dados que estão sendo processados. Uma outra característica da RAM, é que se trata de uma memória VOLÁTIL. Isso significa que quando o computador é desligado, todos os seus dados são apagados. Por essa razão, é necessário que os programas e dados fiquem gravados no disco, que é uma memória PERMANENTE. Existem vários tipos de RAM com diversas características e para diversas aplicações. A mais conhecida é a DRAM (dinâmica) e a SRAM (estática) e suas evoluções. Estes tipos serão detalhados mais adiante. Memórias Não Voláteis: são memórias cujas informações mantidas não são perdidas caso o computador seja desligado. Nos microcomputadores, existe um programa muito importante chamado de BIOS (Basic Input-Output System - Sistema Básico de Entrada e Saída). O BIOS tem várias funções, entre as quais, a de realizar a "partida" do computador. Quando ligamos o computador, o BIOS realiza a contagem de memória, faz uma rápida checagem do funcionamento do computador e realiza a carga do Sistema Operacional que deve estar armazenado no disco. O BIOS está gravado em uma memória permanente localizada na placa mãe. Existem diversos tipos de memória permanente: ROM: São chips de memória que podem ser lidos pela CPU a qualquer instante, mas não podem ser gravados pela CPU. Sua gravação é feita apenas pelo fabricante do computador, ou pelo fabricante de memórias. Os dados armazenados nela já saem prontos de fábrica e são produzidas em larga escala na indústria. A característica importante de ROM é que trata-se de uma memória PERMANENTE. Seu conteúdo nunca é perdido, mesmo com o computador desligado Portanto este tipo de memória é usada para armazenar programas estáticos (que não alteram) e produzidos em massa. Este tipo de memória foi usado para armazenar o BIOS, que se localiza na placa-mãe. PROM: Significa Programmable ROM, ou seja, ROM programável. Trata-se de uma espécie de ROM que é produzida apagada. O fabricante pode programá-las, ou seja, gravar seu programa. Esta gravação pode ser feita apenas um vez, pois utiliza um processo irreversível. Por isso, usa-se o termo queimar a PROM quando se grava nesta memória. EPROM: Significa Eraseable PROM, ou seja, uma ROM programável e apagável. Assim como ocorre com a PROM, a EPROM pode ser programada e a partir daí, comporta-se como uma ROM comum, mantendo os dados armazenados mesmo sem corrente elétrica, e permitindo apenas operações de leitura. A grande diferença é que a EPROM pode ser apagada com raios ultravioleta de alta potência. Possuem uma "janela de vidro", através da qual os raios ultravioleta podem incidir nas operações de apagamento. Nota-se que essa janela de vidro fica sempre coberta por um adesivo que tampa a passagem de luz. É fácil identificar um chip EPROM na placa mãe justamente pela presença desse adesivo. EEPROM: Significa Electrically Erasable Programmable ROM (EEPROM ou E2PROM). Esta é o tipo de memória ROM mais flexível, que pode ser apagada sob o controle de software. Este é o tipo que se usa para armazenar as BIOS atuais. Dessa forma, o usuário pode realizar atualizações no BIOS, fornecidas pelo fabricante da placa de CPU. Quando se ouve falar em flash BIOS ou fazendo um upgrade de BIOS, isto se refere a reprogramação do BIOS EEPROM com um programa de software especial.

59 9 Capítulo 3: Introdução à Arquitetura de Computadores Memória fora da placa mãe Como já mostramos, a placa mãe contém quase toda a memória de um microcomputador, mas outras placas também podem conter memórias, do tipo RAM e do tipo ROM. Por exemplo, as placas de vídeo contém uma ROM com o seu próprio BIOS, e contém uma RAM chamada de memória de vídeo, que armazena os caracteres e gráficos que são mostrados na tela. Podemos ver na 3.5. os chips de memória existentes na PLACA DE VÍDEO de um microcomputador. Φιγυρα 37.Placa de vídeo e suas memórias Tecnologias de memória RAM Como já apresentado, existem vários tipos de RAM com diversas características e para diversas aplicações. A mais conhecida é a SRAM (estática) e as várias tecnologias DRAM (dinâmica). SRAM A Static Ram é um tipo de RAM que mantém seus dados sem uma reatualização externa (refresh), na medida que seus circuitos são alimentados continuamente. Ao contrário, as DRAM necessita de pulsos de 5ns para manter seu conteúdo, de forma que a energia não fique o tempo todo abastecendo os chip. Esse pulso periódico é o refresh. Toda a memória RAM é mais lenta ou mais rápida de acordo com o tempo de acesso medido em nano-segundos (bilionésimos de segundo). A SRAM é mais rápida que a DRAM. É comum hoje encontrar nas DRAMs 6 a 5ns de tempo de acesso (dependendo da tecnologia DRAM), enquanto que nas SRAM é de até 5ns. Mas ela apresenta algumas fraquezas. SRAM tem um custo por byte muitas vezes maior que as DRAM. Cada bit da DRAM necessita de um transistor e de um capacitor (que quando energizado mantém a carga elétrica se o bit contém um ou sem carga se ele contém um ). Já a memória SRAM não necessita de refresh, como se a corrente elétrica estivesse o tempo todo ligada a ela, por meio de interruptores que acionam e fecham a memória. Assim, o tempo de acesso é menor. Mas a sua desvantagem é o seu tamanho, pois requer seis transistores para cada bit. Estas vantagens e desvantagens mostram claramente que em termos de desempenho as SRAM são melhores que DRAM. A única coisa que proíbe o uso generalizado da memória SRAM é seu custo. Por isto, as SRAMs são usadas basicamente para compor a memória cache (visto mais adiante). Memórias DRAM Como apresentado, a DRAM é um tipo de memória RAM que apenas mantém os dados se eles são continuamente reforçados por um circuito lógico especial chamado circuito refresh. Devido a esta construção, também a ação de leitura refresca os conteúdos da memória. Se isto não for feito regularmente, então a DRAM perderá seus conteúdos, mesmo se a alimentação for mantida. Esta ação de refrescamento é que dá o nome a memória de dinâmica.

60 Capítulo 3: Introdução à Arquitetura de Computadores Todos os PCs usam DRAM para constituir sua memória de sistema (em vez de SRAM). A razão é simples, elas são mais baratas e tomam menos espaço, tipicamente ¼ da área de silício das SRAMs ou menos. Existem várias espécies de tecnologias de DRAM e as velocidades que elas fornecem são diferentes. Estas tecnologias serão vistas mais adiante. Os chips de DRAM diferenciam nos seguintes aspectos: número de células na memória; tamanho de cada célula na memória; tempo de acesso; encapsulamento; O número de células é relacionado com a capacidade de armazenamento (ou posições de memória), existindo chips com 8KB a 6MB de células de memória. O tamanho das células de memória é o número de bits que cada célula armazena. Existem chips de memória com, 4, 8, 9, 32 ou 36 bits. O tempo de acesso, como já dito, é em bilionésimos de segundo, conhecidos como nano-segundos. Até o final dos anos 8, a memória DRAM era feita com o encapsulamento DIP, que tinha que ser encaixada na placa-mãe. Logo depois surgiu o encapsulamento SIPP, que deu lugar, por sua vez, ao encapsulamento SIMM. Veja cada um dos chips abaixo. Φιγυρα 38.Um chip de memória DIP Φιγυρα 39.Um módulo de memória SIPP Φιγυρα 4.Um módulo de memória SIMM Até hoje os chips de memória que compõem as placas adaptadoras são do tipo DIP (Dual In-Line Package). Com o SIPP (Single In-Line Pin package), surgiu o que é chamado módulos de memória, que eram vários chips de DRAM numa fileira de terminais onde se encaixavam num soquete. Esse tipo de encapsulamento foi bastante usado até o início dos anos 9. O SIMM (Single In-Line Memory Module) surgiu ao redor de 992. Ela é eletricamente igual aos SIPP, possuindo de diferente apenas a forma de seus contatos para afixação na placa-mãe. Podemos dizer que o SIPP possui perninhas e o SIMM, contatos na borda inferior. Entre 992 e 994, usou-se muito os módulos de memória SIMM pequenos, de 3 pinos. Esses módulos operavam com 8 bits cada um, necessitando serem usados em grupos.

61 Capítulo 3: Introdução à Arquitetura de Computadores Então, para completar um banco de memória num 8386, era necessário 4 desses módulos, pois 4x8bits significa 32 bits, o suficiente para um 8386 ou Nota-se que os módulos de 3 pinos (ou vias) conseguiam compor no máximo 4MB em um único módulo. Φιγυρα 4.Módulo de memória de 3 vias Φιγυρα 42.Combinação para chegar a 32 bits num 486 Mais tarde, surgiu os módulos SIMM de memória de 72 vias, que é um pouco maior que o de 3, operando a 32 bits, onde os últimos 486 fabricados usavam muito (algumas vezes em conjunto com os de 3 vias). Esses módulos de memória de 72 vias podem ter até 32MB em um único módulo. Como esses módulos são de 32 bits, para poder completar um banco num Pentium, que é de 64 bits, são necessários 2 módulos. Φιγυρα 43.Módulo de memória de 72 vias:

62 2 Capítulo 3: Introdução à Arquitetura de Computadores Φιγυρα 44.Combinação para se chegar a 64 bits num Pentium Logo, a partir de 995, praticamente todas as placas-mãe passaram a ser fabricadas com soquetes que suportavam esses módulos de 72 vias. Em outros casos, as placasmãe podiam possuir ainda um banco de 3 vias e dois bancos de 72 vias, isto é, quatro soquetes de 3 vias e 2 soquetes de 72 vias. E em 997 surgiram as memória no encapsulamento DIMM (Dual In-Line Memory Module), que é um módulo de memória com um encaixe igual ao do SIMM, mas que é de 68 pinos, praticamente o dobro do tamanho de um SIMM. Essa memória é de 64 bits. Assim, para um Pentium, basta um desses módulos de memória para funcionar. Φιγυρα 45.Módulo de memória DIMM de 32MB É normal encontrar nos computadores de hoje 32 a 256MB de memória, podendo haver mais que isto. Para cada quantidade, deve-se ter a combinação certa de memória a ser colocada. O número de barramentos de memória da placa mãe define a quantidade máxima de memória de um computador. Asynchronous and Synchronous DRAM A DRAM convencional, do tipo que era usada nos PCs desde os dias dos IBM PCs originais, é dita ser assíncrona. Isto se refere ao fato que a memória não é sincronizada com o relógio do sistema (clock). Um acesso a memória é iniciado, e um certo tempo posterior o valor de memória aparece no barramento. Os sinais não são coordenados com o clock do sistema. Estas memórias assíncronas trabalham bem com barramentos de memória de baixa velocidade, mas não trabalham bem com sistemas de memória de alta velocidade (>66MHz). O novo tipo de DRAM, chamada "synchronous DRAM" ou "SDRAM", é sincronizada com o relógio do sistema, todos os sinais são ligados ao clock de maneira que ela é melhor controlada. Como clock é coordenado pela clock da CPU, o tempo de execução de comandos e transmissão de dados é reduzido. Este tipo de memória é muito mais rápida que a DRAM assíncrona e pode ser usada para melhorar o desempenho do sistema.

63 3 Capítulo 3: Introdução à Arquitetura de Computadores Portanto as SDRAM são melhores adaptadas aos sistemas de memória de alta velocidade dos novos PCs. Praticamente todos os micros novos são vendidos com um tipo de memória chamada SDRAM, mas é sempre bom confirmar com o vendedor se a sua memória é desse tipo ou de uma tecnologia mais antiga (como EDO ou FPM), que devem ser evitadas atualmente, pois encontram-se obsoletas e são mais lentas que as memórias SDRAM. Memórias PC-66 e PC- Existem dois tipos de memória SDRAM no mercado atualmente: PC-66 e PC-. O primeiro tipo deve ser utilizado por processadores que trabalham externamente a 66 MHz, como os processadores Pentium II até 333 MHz e Celeron. Já o segundo tipo deve ser obrigatoriamente utilizado pelos processadores que operam a MHz externamente, como o Pentium II a partir de 35 MHz, Pentium III, K6-2 a partir de 3 MHz e K6-III. As memórias SDRAM de ns de tempo de acesso são, teoricamente, capazes de trabalhar a MHz. Mas, na prática, foi constatado que esse tipo de memória era instável para sistemas de MHz. Com isso, somente são aconselhadas para micros com barramento de MHz memórias com tempo de acesso de 8 ns ou menos. Essas memórias são as PC-. Caso uma memória PC-66 for utilizada em processadores que operam externamente a MHz (em vez de memórias PC-), o computador apresenta diversos problemas de congelamentos e resets aleatórios, além dos conhecidos erros de tela azul da morte e GPF ("Esse programa executou uma operação ilegal e será fechado"). É por esse motivo que, ao fazer um upgrade de um processador com barramento de 66 MHz para um com barramento de MHz, é necessário trocar também a memória RAM. Identificar memórias PC-66 e PC- é relativamente simples, são aquelas que tem um tempo de acesso de 8ns ou inferior. Toda memória possui estampada, em seus circuitos, uma codificação após um sinal de "-". Memórias - ou com valores superiores (-2, -5, etc) são memórias do tipo PC-66. Já memórias com marcação 8 ou inferiores (-7, etc.) são memórias do tipo PC-. DDR or SDRAM II Double-data rate SDRAM é uma versão mais rápida de SDRAM que é capaz de ler dados na subida e descida do clock do sistema, assim dobrando a taxa de dados do chip de memória. Rambus DRAM (Rambus RDRAM) RDRAM, desenvolvida pela empresa Rambus, é uma memória extremamente rápida e usada como um canal rápido para transmitir dados a velocidades de vezes mais rápidas que as DRAM padrões. Espera-se que esta tecnologia seja usada como memória principal dos PCs Memória Secundária Além da memória principal, que é diretamente acessada pela CPU, existe também a memória secundária (também chamada de memória de massa). Este tipo de memória não é acessada diretamente pela CPU. Seu acesso é feito através de interfaces ou controladoras especiais. A memória secundária é uma memória do tipo permanente (não se apaga quando o computador está desligado), que tem uma alta capacidade de armazenamento, e um custo muito mais baixo que o da memória principal. A memória secundária não é formada por chips, e sim, por dispositivos que utilizam outras tecnologias de armazenamento. A apresenta alguns exemplos de memória secundária: o disco rígido, disquetes, CD-ROM e fita magnética. O disco rígido, assim como os disquetes e as unidades de fita, usam a tecnologia magnética para armazenar dados. Os discos CD-ROM usam tecnologia ótica.

64 4 Capítulo 3: Introdução à Arquitetura de Computadores Φιγυρα 46.Dispositivos de armazenamento secundário Arquivos Arquivo nada mais é que um conjunto de dados gravados na memória secundária (disco rígido, disquete, fita magnética, CD-ROM, etc). Os arquivos são uma forma de organizar melhor os dados dentro da memória secundária. Nos microcomputadores, os arquivos normalmente recebem nomes, como por exemplo: CURRÍCULO.DOC, COMMAND.COM, CHKDSK.EXE. O nome completo de um arquivo é dividido em duas partes, separadas por um ponto. A primeira parte é chamada de NOME do arquivo. A segunda parte é chamada de extensão Os arquivos podem armazenar diversos tipos de dados: Instruções para a CPU: Dizemos que se trata-se um arquivo executável. Os arquivos executáveis, nos microcomputadores, normalmente usam a extensão COM ou EXE. Por exemplo: FORMAT.COM, COMMAND.COM, SORT.EXE, XCOPY.EXE Documentos: São textos digitados com o auxílio de um tipo de programa chamado de editor de textos, ou processador de textos. Normalmente esses arquivos usam a extensão TXT ou DOC. Por exemplo: CURRIC.DOC, LISTA.TXT, REUNIAO.DOC Gráficos e Imagens: São arquivos que representam figuras. Essas figuras podem ser vistas na tela ou na impressora, com o auxílio de programas apropriados. Por exemplo, foto.jpg, logo.gif, fundo.bmp. Dados genéricos: que são os demais tipos de arquivos, por exemplo, arquivos de som e vídeo. Muitas vezes os programas precisam manipular uma quantidade de dados tão grande que não cabem na memória principal. Nesse caso, esses dados são armazenados em arquivos que são lidos da memória secundária e processados por partes. Muitas vezes esses dados podem até caber na memória principal, mas por uma questão de organização ficam armazenados em arquivos. Dados armazenados em memória secundária podem ser lidos e transformados em impulsos eletrônicos e enviados para a CPU e para a memória. A CPU, por sua vez, pode acessar os dados originários dos arquivos e enviá-los para os dispositivos de saída, como o monitor e a impressora, para que possamos vê-los com nossos próprios olhos. Por exemplo, se um arquivo contém uma carta, só poderemos ver esta carta depois que o arquivo for lido pela CPU e enviado para a impressora.

65 5 Capítulo 3: Introdução à Arquitetura de Computadores Φιγυρα 47.Arquivos "vistos" na tela e na impressora Discos Rígidos Em termos gerais, um disco rígido usa discos achatados chamados pratos, revestido nos dois lados por um material magnético projetado para armazenar informações. Os pratos são montado em uma pilha. Estes pratos (o disco) giram a uma rotação constante (36 a 72 rpm) desde que o computador é ligado. Dispositivos especiais de leitura/escrita, chamados de cabeçotes, são usados para escrever ou ler informações no/do disco, sendo que sua posição no disco é controlada por um braço atuador. Cada prato contém dois cabeçotes, um na parte superior do prato e outro na parte inferior. Assim, um disco rígido com dois pratos tem quatro cabeçotes. Todos os cabeçotes são presos a um único braço atuador, eles não se movem individualmente. Os discos rígidos e a CPU se comunicam via um conjunto de circuitos denominados controladora de disco rígido que está geralmente integrada na placa-mãe, mas pode ser uma placa independente. Um exemplo de placa controladora é a SCSI (Small Compact System Interface), que permite a conexão de diversos periféricos, inclusive de naturezas distintas. Outra controladora muito usada é a IDE (Intelligent Drive Electronics). Dados são organizados no disco em cilindros, trilhas e setores (3.5.3). É a formatação que marca o disco com trilhas e setores. Cilindros são trilhas concêntricos na superfície dos discos. Hoje, existem aproximadamente 3 trilhas em cada lado de um prato de 3,5 polegadas. Uma trilha é dividida em setores. Cada setor tem o tamanho de 52 bytes. Em uma operação de leitura de um setor, o controlador de disco interpreta o endereço do dado e move os cabeçotes para o cilindro que contém os dados. Quando os cabeçotes estão na posição correta, o controlador ativa o cabeçote específico para ler a trilha que contém o dado. O cabeçote então lê a trilha procurando o setor que contém o dado para leitura. A placa controladora do disco coordena o fluxo de informação vinda do disco rígido em uma área de armazenamento temporária (cache). Ela então envia a informação pela interface do disco rígido.

66 6 Capítulo 3: Introdução à Arquitetura de Computadores Setor Trilha Cilindro Φιγυρα 48.Disco Rígido Muitas vezes os blocos de dados de um arquivo estão espalhados ao redor do disco. Portanto, alguns mecanismos são necessários para rastrear os blocos de um arquivo (p.e. lista ligada, FAT File Allocation Table no DOS, I-node do UNIX). Quando da leitura de vários blocos em um arquivo espalhado, uma busca deve ser realizada para a leitura de cada bloco. Os XTs usavam discos rígidos com MB, mas atualmente existem discos rígidos com várias capacidades. Em 99, a maioria dos microcomputadores usava discos rígidos com 4, 6 ou 8 MB. Já em 993, os discos de 2 e 2 MB eram mais comuns. Atualmente a capacidade dos discos rígidos mais usuais são: 4.3, 6.4, 8.4, 9.,.2 GB. Mas existem discos rígidos com maior capacidade, como 8.2 GB. Considere por exemplo, um computador com 64 MB de RAM (que faz parte da memória principal) e um disco rígido de 8.4 GB (que faz parte da memória secundária). Os 8.4 GB do disco rígido servem para armazenar diversos programas e diversos dados. Os 64 MB de RAM servem para manter apenas os programas e os dados que estão sendo efetivamente processados. Podemos também mostrar como o custo da memória secundária é muito mais baixo que o da memória principal. Enquanto 64 MB de RAM custa cerca de R$ 25, (preço de janeiro/2), um disco rígido de 8.4 GB custa cerca de R$ 42 (preço de janeiro/2). CD-ROM (Compact-Disck Read-Only Memory) O CD-ROM é o meio de armazenamento que tem o menor custo por cada MB armazenado. Infelizmente, como o nome já diz, esse tipo de disco não pode ser usado para gravar dados. Pode ser usado apenas para leitura. O CD-ROM tem sido utilizado para veiculação de software, dicionários, enciclopédias, etc. Um CD-ROM utiliza técnicas óticas de laser em vez de eletromagnetismo. A leitura de um CD é feita com a emissão de um feixe de laser sobre a superfície do disco. Sob a mesma tecnologia, encontram-se os WORM (Wirte Once, Read Many), discos óticos que podem ser gravados apenas uma vez, mas lidos inúmeras vezes, e os discos apagáveis (Magneto Optical Erasable Disk), regraváveis, que permitem inúmeras atualizações. Unidades de fita magnéticas A unidade de fita magnética é o dispositivo de alta velocidade que lê e grava fitas magnéticas. A fita magnética, geralmente acondicionada em cartuchos, é o meio de armazenamento de grande capacidade. Um rolo pode conter centenas de megabytes de dados. Elas são normalmente utilizadas para backups de discos rígidos, também pode ser utilizadas no processamento em que os dados tenham que ser acessados seqüencialmente, principalmente quando todo o arquivo ou grande parte dele tem que ser acessado. Seu uso é mais corrente junto a máquinas de porte médio ou grande. Memória secundária como Memória principal A memória secundária é muito mais barata, de maior capacidade, e ainda é permanente, ou seja, não apaga os dados quando o computador é desligado. Por que então esse tipo

67 7 Capítulo 3: Introdução à Arquitetura de Computadores de memória não é usado no lugar da memória principal? Já pensou como seria interessante acoplar um disco rígido de 8.4 GB diretamente a um microprocessador? Você iria dizer: "... possuo um computador Pentium III 45 com 8.4 GB de memória...". Infelizmente, os dispositivos de armazenamento secundário são extremamente lentos. São lentos demais para serem acoplados diretamente ao microprocessador. Além disso, não permitem acessos a seus bytes individuais, como um microprocessador precisa realizar. Os meios de armazenamento secundário só permitem o acesso a bloco de dados. Em um disquete ou em um disco rígido, por exemplo, as leituras são feitas em unidades mínimas chamadas de setores. Cada setor tem 52 bytes. Para ter acesso a um único byte, é preciso ler o setor inteiro. Isso faz com que seu acoplamento direto à CPU seja inviável. As memórias RAM e ROM são milhares de vezes mais rápidas e permitem que sejam feitos acessos a qualquer um de seus bytes, de forma individual. Por isso são usadas para formar a memória principal. Os meios de armazenamento secundário são mais lentos porque envolvem movimento de suas partes mecânicas. O disco rígido, o drive de disquete e o drive de CD-ROM precisam mover a cabeça de leitura até o ponto onde será feita a leitura. A unidade de fita precisa girar a fita até o ponto a ser acessado. As memórias ROM e RAM não precisam desses movimentos, pois seus acesso é inteiramente eletrônico. Por isso são usadas como memória principal Memória Cache Memória cache é uma área reservada de memória que possui duas funções: aumentar o desempenho do computador e aumentar o tempo de vida das unidades de disco. Basicamente há dois tipos de memória cache: A que vem incorporada à máquina. A que é implementada via software na memória RAM do sistema. A memória cache incorporada à máquina é um tipo muito mais rápido do que a memória RAM convencional. Por exemplo, em uma placa mãe típica de MHz, o tempo de acesso à memória principal é de 8 nanosegundos, e o acesso à memória cache é na ordem de 45 nanosegundos. Por isso ela é usada para armazenar tabelas muito usadas pelo sistema operacional ou para executar parte de programas que necessitam de maior velocidade de processamento. A memória cache criada via software é usada para aumentar o desempenho do acesso ao disco do sistema, guardando as informações mais acessadas na memória, ou seja, quando for preciso acessar uma nova informação, ela já está armazenada em memória, que possui um tempo de acesso muito mais rápido do que o disco. Com isso, o número de vezes que a unidade de disco é acessada diminui, reduzindo o desgaste físico do disco e da cabeça de leitura e gravação. Poderia-se fazer uma analogia entre a memória cache e o fichário que ficaria em nossa mesa de trabalho. Um arquivo (memória principal) maior conteria informações completas para realização do trabalho e o fichário (a memória cache) conteria informações mais corriqueiras. Mais próximo do trabalhador (a CPU), o fichário (a cache) aumentaria a rapidez na realização do trabalho e reduziria a pesquisa no arquivo. Níveis de Cache Existem vários níveis de cache em um computador moderno, cada nível agindo como um buffer para informações recentemente usadas para aumentar o desempenho. Mas quando referimos apenas a simplesmente cache, normalmente está se referenciando o nível secundário ou nível 2 que é aquela posicionada entre o processador e a memória principal. Cada nível é mais próximo do processador e mais rápida que o nível mais abaixo. Cada nível também cacheia o nível mais abaixo dela, devido a sua velocidade aumentada relativa aos níveis mais baixo.

68 8 Capítulo 3: Introdução à Arquitetura de Computadores Cache Primária Layer A cache nível (L) ou cache primária é a memória mais rápida de um PC. Ela é def fato construída diretamente no processador. Esta cache é muito pequena, geralmente de 9KB a 64KB, mas é extremamente rápida. Ela roda na mesma velocidade do processador. Se o processador solicita uma informação e pode encontrá-la na cache L, este é o melhor caso, pois a informação é imediatamente disponível e o processador não tem que esperar. O processador Pentium III apresenta uma memória cache L de 6KB para instruções e outra de 6KB para dados. Cache Secundária Layer 2 A cache nível 2 é uma cache secundária para o nível 2, e é maior e um pouco mais lenta. Ela é usada para armazenar endereços recentes que não são mantidos pelo nível. Este nível tem um tamanho variando de 64KB a 2MB e até pouco tempo atrás era encontrada na placa mãe ou um modulo que é inserido na placa mãe. Os processadores Pentium Pro tém a cache L2 no mesmo pacote do processador (embora este não esteja no mesmo circuito do processador e da cache L). Isto significa que ela roda muito mais rápida que a cache L2 que é separada e reside na placa mãe. O Pentium II e III até 6MHz tém um meio termo, sua cache L2, de 52KB, roda na metade da velocidade da CPU. O Pentium III acima 6MHz apresenta uma memória cache L2 de 256KB no mesmo pacote e opera na mesma velocidade da CPU. O nível dois algumas vezes é chamada de cache externa, desde que ela reside fora do processador. Mesmo nos Pentium Pro, que está em um chip separado no mesmo pacote. Cache Externas As primeiras placas-mãe equipadas com SRAM apresentavam pequenas quantidades de cache, entre 8KB a 28KB. Com o 486, tornou-se mais comum que a placa-mãe tivesse 28KB a 52KB de cache. O Pentium geralmente tem 52KB a MB de cache. Até recentemente, os chips que formavam a SRAM eram modularizados em forma de chips DIP, mas atualmente, fabrica-se os módulos d o tipo COAST, semelhante ao SIMM, porém, eletronicamente diferentes. Φιγυρα 49.Módulo COAST. Φιγυρα 5.SRAM do tipo DIP: Praticamente, não se vê mais placas de CPU novas com memória cache do tipo DIP. As placas de CPU atuais incorporam os chip de SRAM na placa mãe, mas não do tipo DIP. Os chips são soldados e geralmente não há bancos vazios para a expansão. Com o módulos COAST, basta trocar o módulo. E com os chips VLSI da Intel, estes possuem a capacidade de detectar automaticamente o tipo de cache em uso, através do BIOS, dispensando a configuração manual, de forma que logo no processo de boot há essa identificação.

69 9 Capítulo 3: Introdução à Arquitetura de Computadores 3.6 Barramentos Um barramento, ou bus, nada mais é do que um caminho comum pelo qual os dados trafegam dentro do computador. Este caminho é usado para comunicações e pode ser estabelecido entre dois ou mais elementos do computador. O tamanho de um barramento é importante pois ele determina quantos dados podem ser transmitidos em uma única vez. Por exemplo, um barramento de 6 bits pode transmitir 6 bits de dado, e um barramento de 32 bits pode transmitir 32 bits de dados a cada vez. Todo barramento tem uma velocidade medida em MHz. Um barramento rápido permite transmitir dados rapidamente, que tornam as aplicações mais rápidas. Um PC tem muitos tipos de barramentos, que incluem: Barramento do processador: é o barramento que o chipset usa para enviar/receber informações do processador. O chipset são os chips de suporte adjacentes contidos na placa mãe. Barramento de Cache: usado pelos Pentium Pro e Pentium III, é um barramento dedicado para acessar o sistema cache. Ele é algumas vezes chamado de barramento backside. Processadores convencionais que usam placas mãe de quinta geração tem uma cache conectada ao barramento de memória padrão. Barramento de memória: é um barramento que conecta o sub-sistema de memória ao chipset e ao processador. Em alguns sistemas o barramento do processador e o barramento de memória são basicamente a mesma coisa. Barramento local de E/S (Entrada/Saída). É usado para conectar periféricos de alto desempenho à memória, chipset e processador. Por exemplo, placas de vídeo, interface de redes de alta velocidade geralmente usam um barramento deste tipo. Os dois tipos barramentos locais de E/S mais comuns são o VESA Local Bus (VLB) e o Peripheral Component Interconnect Bus (PCI). Barramento padrão de E/S: conecta os três barramentos acima ao antigo barramento padrão de E/S, usado para periféricos lentos (modems, placas de som regulares, interfaces de rede de baixa velocidade) e também para compatibilidade com dispositivos antigos. O principal barramento padrão de E/S é o Industry Standard Architecture (ISA) bus. Nos PCs, o barramento ISA (antigo padrão) está sendo substituído por barramentos mais rápidos, como PCI. Geralmente, quando se ouve sobre o barramento de E/S, praticamente falamos de slots de expansão. Alguns novos PCs usam um barramento adicional projetado para comunicação de grafismos apenas. A palavra barramento foi colocada entre aspas pois esta tecnologia não se trata de um barramento, ela é um porto: o Accelerated Graphics Port (AGP). A diferença entre um porto e um barramento é que o barramento é geralmente projetado para vários dispositivos compartilhando um meio de comunicação, enquanto um porto é apenas entre dois dispositivos. Todos os barramentos tem duas partes: um barramento de endereçamento e um barramento de dados. O barramento de dados transfere o dado em si (por exemplo, o valor de memória) e o barramento de endereço transfere a informação de onde o dado se encontra Barramento do processador O barramento do processador é o caminho de comunicação entre a CPU e o chipset. Este barramento é usado para transferir dados entre a CPU e o barramento principal do sistema (3.6.). Pelo motivo de que o barramento do processador serve para conseguir informações para e da CPU à velocidade mais rápida possível, este barramento opera de forma muito mais rápida que qualquer outro tipo de barramento no computador. Não existem congestionamentos neste barramento. Este barramento consiste em circuitos elétricos de dados, endereçamento e controle. No processador 8486, o barramento consiste em 32

70 2 Capítulo 3: Introdução à Arquitetura de Computadores linhas de endereçamento, 32 linhas de dados e algumas linhas para controle. No Pentium, são 32 linhas de endereçamento, 64 linhas de dados e as linhas de controle. O barramento do processador opera a mesma velocidade que a CPU opera externamente. Num Pentium MHz, o barramento opera a 66,6MHz, bem como num Pentium 33MHz, 66MHz e 2MHz. No processador Pentium II, o barramento de processador opera a MHz e no Pentium III, a ou 33 MHz. O barramento do processador é ligado nos pinos de conexão externos do processador e pode transferir bits de dados a cada um ou dois ciclos. Um 8486 transfere 32 bits de dados por vez, enquanto um Pentium transfere 64 bits. Φιγυρα 5.Funcionamento o barramento do processador Barramento de Cache Processadores convencionais usam a cache externa na placa mãe e a CPU acessa esta cache usando o barramento padrão de memória. Para obter um melhor desempenho, a maioria dos novos usam um barramento de alta velocidade conectando o processador à cache L2. No caso do Pentium Pro e Pentium III acima de 6MHz, este barramento é interno ao processador e opera na taxa da CPU. No caso dos Pentium II e III até 6MHz, o barramento de cache opera na metade da taxa do processador. Por exemplo, um Pentium II 266 MHz tem um barramento de cache operando a 33 MHz Barramento da Memória O barramento da memória é usado para transferir informação entre a CPU e a memória principal do sistema (a memória RAM). Estes barramento é uma parte do barramento do processador, ou na maioria dos casos é implementado separadamente por um chipset dedicado que é responsável pela transferência de informação entre o barramento do processador e o barramento da memória (3.6.3). Devido aos limites da capacidade do chips de DRAM, a taxa de transferência de informação no barramento da memória é menor que a do barramento do processador. Vale lembrar que a largura do barramento da memória é a mesma que do barramento do processador. Igualmente, num processador Pentium ou Pentium Pro, que possui um barramento de 64 bit, cada banco de memória que é usado deverá ter 64 bits preenchidos. As placas-mãe atuais possuem um suporte a pentes de memória do tipo DIMM, que são de 64 bits. Assim, somente um pente é necessário para o funcionamento do computador.

71 2 Capítulo 3: Introdução à Arquitetura de Computadores Φιγυρα 52.Funcionamento do barramento da memória Barramento de E/S Desde a criação do PC, muitos barramento de E/S tem sido desenvolvidos, pela simples razão de CPUs mais rápidas, maiores demandas de software e maiores requisitos de vídeo. Para cada avanço obtido nos computadores, requer-se um barramento que atenda às exigências do hardware. Mesmo assim, necessita-se que seja padronizado diante do mercado a nível mundial, sem grandes custos aos usuários (esta também é uma das razões em que os barramento de E/S não puderam evoluir mais do que se esperava). Até foram criados barramento de E/S mais rápidos do que o mercado exige, mas não foram colocados com sucesso no mercado justamente pelos custos gerados na atualização de hardware por parte dos usuários). Pode-se encontrar estes barramento de E/S na arquitetura do computadores de hoje: ISA, MCA, EISA, VESA Local Bus, PCI Local Bus Barramento ISA Este barramento foi introduzido no PC original em 98 como um barramento de 8 bits e mais tarde foi expandido para 6 bits com o PC/AT em 984, chamando-se arquitetura padrão da indústria. O padrão ISA é ainda é utilizado em arquiteturas menos recentes, mas este tipo de barramento é geralmente substituído pelo PCI. Mas o padrão ISA ainda é rápido o bastante para muitos periféricos que usamos hoje, como uma placa fax/modem ou uma placa de som. Existem duas versões do barramento ISA: O barramento ISA de 8 bits surgiu com o XT e opera a 4,77MHz. Esta arquitetura de barramento foi usada inicialmente nos primeiros PCs e é desnecessária nos sistemas atuais. O slot ISA de 8 bits é um conector com 62 contatos, possuindo eletronicamente 8 linhas de dados e 2 linhas de endereçamento, habilitando ao slot manusear MB de memória (3.6.5). Φιγυρα 53.Slot ISA de 8 bits

72 22 Capítulo 3: Introdução à Arquitetura de Computadores O barramento ISA de 6 bits consegue operar num máximo de 8,33MHz, com uma taxa máxima de 8MB/s. Surgiu após a produção de processadores de 6 bits (a partir do 8286, em 984). Para compatibilidade, a IBM teve que criar um tipo de slot que suportasse ambos 8 bits e 6 bits. Criou-se um slot com duas divisões (3.6.5). As placas de expansão de 8 bits poderiam ser colocadas na parte maior do slot e as de 6 bits em ambas as partes do slot. O conector ISA de 6 bits passa a ter, assim, mais 36 pinos de conexão em relação ao ISA de 8 bits, em função do amplo caminho de dados. Esse padrão de slots é usado ainda hoje nos computadores Pentium. Todas as placas de CPU possuem três ou quatro slots em cada placa. Φιγυρα 54.Slot ISA de 6 bits Barramento MCA Com a introdução de chips de 32 bits (8386DX), significou que o ISA não poderia suportar todo o poder dessa nova geração de CPUs. Com o lançamento do 8386DX, a IBM decidiu criar um novo barramento, que resultou no MCA, arquitetura de micro canal. Porém, a IBM não quis somente criar um novo barramento, mas também receber os royalties por ele de outros fabricantes. Outra razão para o MCA não se tornar um padrão da indústria foi que não suportava as placas ISA de 6 bits e 8 bits, haja vista que o conector era fisicamente menor, mais complexo e bem mais diferente Barramento EISA Este barramento foi criado em 988 em resposta ao barramento MCA, sendo primeiramente fabricado pela Compaq. Mesmo assim, poucas placas adaptadoras foram criadas a partir do EISA. Simplesmente não emplacou no mercado, assim como a MCA. Porém, o que salvou esse padrão foi o de poder usar as placas ISA presentes. Isto é, os slots EISA estão presentes, mas foram usados principalmente pelas placas ISA, que não necessitaram dos recursos colocados no EISA Local bus Os barramentos de E/S vistos até agora (ISA, MCA e EISA) possuem algo em comum: velocidade baixa. Esta limitação vem dos PCs originais, onde o barramento de E/S operava a mesma velocidade do barramento do processador. Como a velocidade do processador aumentou, o barramento de E/S aumentou apenas em largura da banda de dados, permanecendo a uma velocidade muito mais baixa, por causa da enorme base de placas adaptadoras instaladas que só poderiam operar a velocidades mais baixas (3.6.8).

73 23 Capítulo 3: Introdução à Arquitetura de Computadores Φιγυρα 55.Layout tradicional do barramento dos PCs A idéia de que o sistema rodasse mais lento do que deveria, iria insatisfazer os usuários. Porém, a velocidade do barramento de E/S muitas vezes é só um incômodo, porque não será necessário altas velocidades para a comunicação com o teclado ou mouse, por exemplo. O problema só existe na lentidão do barramento quando placas de vídeo e controladores de disco se tornam prejudicados. Com os sistemas e ambientes operacionais gráficos, tanto o vídeo como os discos necessitam de mais velocidade para os dados. Muito mais do que os 8MHz oferecidos com o ISA. Uma solução óbvia é mover os caminhos de dados dos slots de E/S para a área onde pode acessar velocidades maiores como a do barramento do processador, como um cache externo (3.6.8). Este arranjo torna-se conhecido como local bus, já que as placas adaptadoras podem acessar diretamente o barramento do processador, que é local. Conseqüentemente, para comportar esse acesso, os slots necessitam ser diferentes do que os existentes, bem como para diferenciar as placas mais lentas das mais rápidas que são destinadas a esse tipo de barramento. Φιγυρα 56.Funcionamento do barramento local

74 24 Capítulo 3: Introdução à Arquitetura de Computadores Nota-se que os primeiros barramento ISA de 8 e 6 bits até rodavam a velocidade do barramento do processador, usando este barramento local. Mas quando o processador se tornou mais rápido (e seu barramento também), o barramento principal do ISA teve que ser desacoplado do barramento do processador VESA Local Bus VESA Local Bus (VLB) foi o primeiro barramento local popular, em 992. VESA é abreviação de Video Electronics Standards Association, que foi formada por um grupo de fabricantes interessados em problemas relacionados com vídeos em computadores pessoais. A principal razão do desenvolvimento do VLB foi aumentar o desempenho de vídeo nos PCs. O VLB é um barramento de 32 bits que é de certo modo uma extensão do barramento processador/memória do 486. Um slot VLB é um slot ISA 6 bits com um terceiro e quarto slots no final. Desta maneira, uma placa ISA pode ser conectada no VLB. O VLB roda a taxas de 33 MHz, embora velocidades maiores são possíveis para alguns sistemas. O VLB foi muito popular durante a era 486, com a introdução do Pentium e seu barramento local PCI, em 994, o VLB começou a ser abandonado. Além das vantagens do PCI em relação ao VLB, existem também várias problemas do VLB que contribuíram para seu abandono: Seu projeto foi duramente baseado no processador 486, e a adaptação para o Pentium causou sérios problemas de compatibilidade e outros problemas. O barramento em si é eletricamente fraco, por exemplo, o número de placas que poderiam ser usadas no barramento era pequeno (normalmente duas ou mesmo uma), e ocorria problemas quando mais de uma placa era conectada. O barramento não tinha um controle muito forte, desde que não havia um bom esquema de árbitro, e não suporta o Plug and Play Barramento PCI PCI é a abreviação de Peripheral Component Interconnect, um padrão de barramento local desenvolvido pela Intel Corporation. Embora ele tenha sido desenvolvido pela Intel, o PCI não é ligado a qualquer família de microprocessadores. A maior parte dos PCs modernos incluem um barramento PCI em adição ao barramento de expansão ISA. Mas a tendência é que o barramento ISA seja totalmente substituído pelo PCI. Como o VESA Local Bus, PCI é um barramento de 32 bits que normalmente roda a um máximo de 33 MHz. Nestas condições, ele funciona a 33 MB/s. A vantagem chave do PCI sobre seu predecessor, o VLB, é a existência de um circuito no chipset que controla o barramento. O VLB era basicamente uma extensão do barramento do processador 486. O PCI deste modo não é casado com 486, e seu chipset fornece funcionalidades para controle, que habilita o PCI a fazer mais coisas que o VLB poderia fazer. A especificação 2. do barramento PCI estende o barramento para 64 bits e opera com a velocidade de 66MHz. Assim, a velocidade pode ser quadruplicada. Na prática o barramento PCI de 64 bits ainda não foi implementado no PC (existem em outras plataformas como o Digital Equipment's Alpha). Atualmente a velocidade é limitada a 33 MHz na maior parte dos PCs. A operação do barramento PCI pode ser configurado como síncrona ou assíncrona, dependendo do chipset e da placa mãe. Na configuração sincronizada (usado por maior parte dos PCs), o PCI roda na metade da velocidade do barramento de memória; como este barramento opera usualmente a 5, 6 ou 66 MHz, o PCI poderia rodar a 25, 3 ou 33 MHz, respectivamente. No modo assíncrono, a velocidade do PCI pode ser setado independente da velocidade do barramento de memória. Isto é controlado por jumpers na placa mãe, ou setado pela BIOS.

75 25 Capítulo 3: Introdução à Arquitetura de Computadores O barramento PCI opera concorrentemente com o barramento do processador. A CPU pode processar os dados como um cache externo enquanto o barramento PCI está ocupado transferindo informação entre outras partes do sistema. Além do ser mais eficiente, o barramento PCI incorpora o recurso Plug and Play, não necessitando que o usuário configure as placas adaptadoras. O sistema se encarrega disso. Para isso, os computadores devem possuir um BIOS com essa característica. Por exemplo, o Award Plug and Play BIOS possui esse recurso. Φιγυρα 57.Estrutura do barramento PCI Os dados trafegam através do barramento PCI a 33MHz, com toda a banda de dados da CPU, isto é, usando-se uma CPU de 32 bits, a largura é de 32 bits, com uma taxa de transferência de 32MB por segundo no máximo. Φιγυρα 58.Slot PCI de 32 bits O slot PCI de 64 bits é constituído de uma divisão a mais, como nos VLB. Com esta banda de dados, a velocidade dobrando para um máximo de 264MB/s Barramento PC-Card (PCMCIA) Este barramento é destinado aos computadores portáteis (notebooks e laptops), desenvolvido pela PCMCIA, com um conjunto de mais de 3 fabricantes, onde se estabeleceu os padrões para os cartões adaptadores e de expansão para notebooks e laptops. Um cartão PCMCIA usa de 68 conectores, sendo ainda mais caro que o ISA. Apesar dos padrões, a indústria flexibilizou demais a arquitetura, de forma que alguns cartões podem não ser compatíveis com algum equipamento ou outro. Os cartões também possuem o recurso de ser Plug and Play.

76 26 Capítulo 3: Introdução à Arquitetura de Computadores USB A interface externa USB fornece uma comunicação serial de 2 Mbps, apenas sobre uma conexão de 4 fios. Um único porto USB pode ser usado para conectar até 27 perifíericos, tal como mouse, modems, teclados, scanners, câmeras. E A USB também atende às especificações Plug and Play da Intel, inclusive de poder conectar os dispositivos com a máquina ligada e sem precisar reiniciá-las. Simplesmente se conecta o dispositivo e a USB irá detectar automaticamente e alocar os recursos necessários para o seu funcionamento. O suporte a USB é fornecido com o Windows 95 e mais ainda pelo BIOS. Outra característica importante é que os dispositivos USB conectados têm o fornecimento de energia pelo próprio USB, o que significa que o USB verifica quais os requisitos de energia requeridos pelos periféricos e avisar se estes dispositivos excederem os limites Firewire (IEEE 394) O firewire é um barramento serial padrão externamente rápido que suporta taxas de transferências de dados de até 4 MBps. Um único porto 394 pode ser usado para conectar até 63 dispositivos externos. Além da alta velocidade, o 394 também suporta dados isócronos, transmitindo dados com uma taxa garantida. Isto é ideal para dispositivos que necessitam altas taxas de transferências em tempo-real, tal como dispositivos de vídeo. Embora muito rápido, o 394 é muito caro. Tal como o USB, o 394 suporta Plug-andPlay, e também fornece potências aos periféricos. A principal diferença entre do 394 e USB é que o 394 suporta taxas de transferências altas e é mais caro. Por esta razão, é esperado usado mais freqüentemente para dispositivos que necessitam taxas altas, como câmeras de vídeo, e o USB conectará os demais periféricos. 3.7 Dispositivos de Entrada/Saída Os Dispositivos de Entrada/Saída são equipamentos utilizados como portadores das informação que o computador irá processar. Por exemplo, quando se pressiona uma tecla, faz com que o teclado transmita o código da tecla pressionada. Este código é recebido por um circuito chamado de INTERFACE DE TECLADO. Ao receber o código de uma tecla, a interface de teclado avisa a CPU que existe um caractere recebido. Por outro lado, quando a CPU precisa enviar uma mensagem para o usuário, precisa que a mensagem seja colocada na tela. Isto é feito com auxílio de um circuito chamado de INTERFACE DE VÍDEO. A CPU envia para a interface de vídeo, a mensagem, seja ela em forma de texto ou figura. A interface de vídeo coloca então a mensagem na tela. Existem portanto no computador, os chamados DISPOSITIVOS DE ENTRADA E SAÍDA, também chamados de PERIFÉRICOS. Através desses dispositivos, o computador pode armazenar, ler, transmitir e receber dados. Dentre os diversos dispositivos de E/S, existem alguns que são especializados apenas em ENTRADA, outros especializados apenas em SAÍDA e outros em ENTRADA E SAÍDA. Podemos citar os seguintes exemplos: ENTRADA: Teclado - Lê os caracteres digitados pelo usuário MOUSE - Lê os movimentos e toque de botões Drive de CD-ROM - Lê dados de discos CD-ROM Microfone - Transmite sons para o computador SCANNER - Usado para o computador "ler" figuras ou fotos SAÍDA: Vídeo - Mostra ao usuário, na tela caracteres e gráficos Impressora - Imprime caracteres e gráficos

77 27 Capítulo 3: Introdução à Arquitetura de Computadores Alto-falante - Realiza comunicação com o usuário através de som ENTRADA E SAÍDA: Disco rígido - Grava e lê dados Drive de disquete - Grava e lê dados em disquetes Unidade de fita magnética - Grava e lê dados em fitas magnéticas MODEM - Transmite e recebe dados pela linha telefônica As 3.7, 32 e 33 mostram diversos tipos de periféricos. Φιγυρα 59.Dispositivos de ENTRADA Φιγυρα 6.Dispositivos de SAÍDA Φιγυρα 6.Dispositivos de ENTRADA E SAÍDA Os microcomputadores muitas vezes são vendidos com apenas alguns de seus periféricos de uso mais prioritário. Nesse caso, dizemos que trata-se de uma CONFIGURAÇÃO BÁSICA. Um exemplo tipo de configuração básica é aquela em que o microcomputador é acompanhado de: Monitor Drives Disco rígido

78 28 Capítulo 3: Introdução à Arquitetura de Computadores Teclado Mouse Alto falante interno O usuário pode, nesse caso, adquirir novos periféricos e realizar sua instalação no microcomputador. Essa tarefa pode ser realizada por usuários mais experientes, ou então por técnicos especializados. Quando instalamos novos periféricos em um computador, dizemos que estamos realizando um EXPANSÃO. Nesse caso, podem ser instalados, por exemplo: Impressora Kit multimídia (alto falantes, placa de som e drive de CD-ROM) Modem SCANNER Tipos de comunicação com os Dispositivos A CPU não pode comunicar-se diretamente com os periféricos. Esta comunicação é feita com a ajuda de circuitos chamados de interfaces ou portas de E/S, as quais podem implementar a transmissão das palavras de dados segundo duas diferentes políticas: a comunicação paralela, onde cada dígito (ou bit) da palavra de dados é conduzido por um fio dedicado, o que significa que os cabos utilizados para a comunicação paralela são dotados de uma grande quantidade de fios (ou vias); o exemplo mais clássico de dispositivos que utilizam a comunicação paralela são as impressoras; a comunicação serial, onde os bits de cada palavra são transmitidos um a um, de forma seqüencial, através de uma única via, o que explica o fato dos cabos que implementam este tipo de comunicação serem constituídos por uma pequena quantidade de fios; os exemplos mais conhecidos de dispositivos que fazem uso desta política de comunicação são o mouse e os modems.

79 Capítulo 4 Linguagens de Programação 4. Programação de Computadores Embora o equipamento básico para a realização das tarefas associadas à Ciência da Computação seja, evidentemente, o Computador, nós utilizaremos, ao longo deste curso, o conceito de Sistema Computacional, pelo seu significado mais abrangente, tanto quanto ao tipo de hardware envolvido quanto pela sua extensão aos demais componentes envolvidos nas atividades computacionais, particularmente os programas, métodos, regras e documentação. Um Sistema Computacional pode ser visto como uma associação entre dois conceitos cada vez mais utilizados na terminologia de informática: o hardware, que está associado à parte física do sistema (os circuitos e dispositivos) que suporta o processamento da informação; o software, que corresponde ao conjunto de programas responsáveis pela pilotagem do sistema para a execução das tarefas consideradas. No que diz respeito a esta segunda classe de componentes, pode-se estabelecer uma classificação segundo o tipo de serviço por ele realizado. Assim, tem-se as seguintes definições: o software de sistema (ou sistema operacional) capaz de oferecer ao usuário, ou a outros softwares, facilidades de acesso aos recursos do computador, seja através de comandos, seja através de serviços especiais ativados a nível de um programa. O sistema operacional administra os arquivos, controla periféricos e executa utilitários. o software utilitário, que podem ser programas desenvolvidos por especialistas ou mesmo por usuários experimentados que tem por objetivo facilitar a realização de determinadas atividades correntes no uso dos computadores (detecção e eliminação de vírus, programas de comunicação em redes de computadores, compressão de arquivos, etc...); o software aplicativo, que são os programas desenvolvidos ou adquiridos pelos usuários para algum fim específico, seja ele de natureza profissional, educacional ou mesmo de lazer (jogos). Informalmente, uma linguagem de programação pode ser definida como sendo um conjunto limitado de instruções (vocabulário), associado a um conjunto de regras (sintaxe) que define como as instruções podem ser associadas, ou seja, como se pode compor os programas para a resolução de um determinado problema. Ao longo dos anos, foram desenvolvidas (e continuam sendo) uma grande quantidade de linguagens de programação, algumas de uso mais geral e outras concebidas para áreas de aplicação específicas. 4. Níveis de Linguagens de Programação As linguagens de programação podem ser classificadas em níveis de linguagens, sendo que os níveis mais baixos são mais próximas da linguagem interpretada pelo processador e mais distante das linguagens naturais. 4.. Linguagem de Máquina Lembrando que o computador corresponde basicamente a um conjunto de circuitos, a sua operação é controlada através de programas escritos numa forma bastante primitiva, baseada no sistema binário de numeração tanto para a representação dos dados quanto das operações. A esta forma de representação dos programas, é dado o nome de

80 2 Capítulo 4: Linguagens de Programação linguagem de máquina, em razão de ser a forma compreendida e executada pelo hardware do sistema. As instruções de linguagem de máquina são representadas por códigos que correspondem palavras binárias cuja extensão pode variar de 8 a 64 bits (4..). Dependendo da operação considerada, o código de uma instrução pode simbolizar a operação a ser executada e os dados envolvidos na operação (ou uma referência à localização dos dados). Φιγυρα 62. Ilustração de um programa em linguagem de máquina Por uma questão de custo a nível do hardware, as operações representadas pelas instruções de linguagem de máquina são bastante elementares, como por exemplo, a transferência de dados entre memória e registro da CPU, a adição de dois valores, o teste de igualdade entre dois valores, etc... A linguagem de máquina é impraticável para escrita ou leitura. É inviável escrever ou ler um programa codificado na forma de uma string de bits Linguagem Hexadecimal Para simplificar a compreensão e a programação de computadores, num primeiro tempo foi adotado a notação hexadecimal para representar programas em linguagem de máquina, onde a seqüência de bits é representada por números hexadecimais, conforme ilustrado na A FB 3 F3 83 AB F F4 83 5F 5B 3A BC FF 6C B4 5F FF D5 74 6C 6F AB 39 FF 7D 85 6B Φιγυρα 63. Ilustração de um programa em linguagem hexadecimal A linguagem hexadecimal é portanto apenas uma simplificação de notação da linguagem de máquina. Apesar disto, a programação e leitura usando a linguagem hexadecimal continua impraticável Linguagem Assembly Embora seja a linguagem diretamente executável pelos processadores, a programação de aplicações diretamente em linguagem de máquina é impraticável, mesmo representada na notação hexadecimal. Por esta razão, a linguagem de máquina de cada processador é acompanhada de uma versão legível da linguagem de máquina que é a chamada linguagem simbólica Assembly. Simbólica pois esta linguagem não é composta de números binários ou hexadecimais como nas duas linguagens anteriores. A linguagem Assembly é na realidade uma versão legível da linguagem de máquina. Ela utiliza palavras abreviadas, chamadas de mnemônicos, indicando a operação. Abaixo são apresentados dois exemplos de instruções Assembly: MOV R, R2 nesta instrução identifica-se o mnemônico MOV (abreviação de MOVE) e dois registradores como parâmetros: R e R2. Quando o processador executa esta instrução, ele comanda o movimento do conteúdo de R2 para R (equivalente a instrução Pascal R:=R2, sendo R e R2 equivalente a duas variáveis); ADD R, R2 nesta instrução identifica-se o mnemônico ADD (abreviação de ADDITION) e dois registradores como parâmetros: R e R2. Quando o processador executa esta instrução, ele comanda a adição do conteúdo de R ao conteúdo de R2 e o resultado é armazenado em R (equivalente a instrução Pascal R:=R+R2).

81 3 Capítulo 4: Linguagens de Programação Escolhendo nomes descritivos para as posições de memória, e usando mnemônicos para representar códigos de operação, a linguagem assembly facilitou significativamente a leitura de seqüências de instrução de máquina. Como exemplo, supomos a operação de dois números inteiros: A:=B+C. Esta operação, em um PC, em notação hexadecimal ficaria: A23622A342. Se associarmos o nome B à posição de memória 2h, C à posição 22h e A à posição 24h, usando a técnica mnemônica, a mesma rotina poderá ser expressa da seguinte forma: MOV AX,B ADD AX,C MOV A,AX ; registro AX recebe o valor de memória contida na variável B ; AX recebe a soma de AX (valor de B) com o valor de C ; variável A recebe valor de AX A maioria concorda que a segunda forma, embora ainda incompleta, é melhor que a primeira para representar a rotina. Apesar de oferecer uma representação mais próxima do que o programador está acostumado a manipular, a linguagem Assembly apresenta certas dificuldades para a realização dos programas, tais como a necessidade de definição de um conjunto relativamente grande de instruções para a realização de tarefas que seriam relativamente simples (se representadas através de outras linguagens) e a exigência do conhecimento de detalhes do hardware do sistema (arquitetura interna do processador, endereços e modos de operação de dispositivos de hardware, etc...). Por outro lado, a utilização da linguagem Assembly proporciona um maior controle sobre os recursos do computador, permitindo também obter-se bons resultados em termos de otimização de código Como a linguagem Assembly é apenas uma versão legível da linguagem de máquina, a passagem de um programa escrito em Assembly para a linguagem de máquina é quase sempre direta, não envolvendo muito processamento. Esta passagem de um programa Assembly para linguagem de máquina é chamada de Montagem, e o programa que realiza esta operação é chamado de montador (Assembler). A linguagem Assembly é orientada para máquina (ou melhor, para processador), é necessário conhecer a estrutura do processador para poder programar em Assembly. A linguagem Assembly utiliza instruções de baixo nível que operam com registros e memórias diretamente. Assim ela é muito orientada às instruções que são diretamente executadas pelo processador. Na seqüência da evolução das linguagens de programação, procurou-se aproximar mais a linguagem de programação à linguagem natural que utilizamos no dia-a-dia: surgiram então as linguagens de alto nível, tipo Pascal, C, C++, etc. Vantagens e Desvantagens da Linguagem Assembly Mas se nós temos as linguagens de alto nível para quê precisamos utilizar a linguagem Assembly? Para responder esta pergunta é necessário conhecer as vantagens e desvantagens da linguagem Assembly e a sua utilização. Desvantagens com relação as linguagens de alto nível: A linguagem Assembly apresenta um número muito reduzido de instruções, do tipo operações de movimentação de dados em memória, para registros e para memórias, e operações lógicas e aritméticas bem simples. Estas instruções são de baixa expressividade, isto é, elas são de baixo nível. O programador deve programar num nível de detalhamento muito maior para fazer a mesma coisa que em um programa escrito em linguagem de alto nível. Como o programador utiliza diretamente os recursos do processador e memória, ele deve conhecer muito bem a máquina onde ele está programando. Um programa escrito em linguagem Assembly não é muito legível, por isso ele deve ser muito bem documentado. Um programa Assembly não é muito portável. Ela é portável apenas dentro de uma família de processadores. Por exemplo, diferente de um programa C, ele não pode ser executado em PCs e estações de trabalho. Devido a sua baixa expressividade, ilegibilidade e exigência do conhecimento sobre a máquina faz a programação Assembly ter um custo de desenvolvimento maior, requerendo um

82 4 Capítulo 4: Linguagens de Programação maior número de homens/hora comparado com a programação utilizando linguagens de alto nível. Apesar das desvantagens acima citadas, a utilização da linguagem Assembly tem algumas vantagens que são listados abaixo: Ela permite o acesso direto ao programa de máquina. Utilizando uma linguagem de alto nível, não tem-se o controle do código de máquina gerado pelo compilador (alguns compiladores permite a otimização de tamanho e de velocidade do programa). Devido a este acesso, o programador pode gerar um programa mais compacto e eficiente que o código gerado pelo compilador. Um programa escrito em linguagem Assembly pode ser ou 3 % menor e mais rápido que um programa compilado. Além disso, esta linguagem permite o controle total do hardware, por exemplo, permitindo a programação de portas seriais e paralela de um PC. Aplicações da Linguagem Assembly A linguagem Assembly é utilizada em vários tipos de aplicações: Controle de processos com resposta em tempo real, devido a possibilidade de gerar programas mais eficientes. Neste tipo de aplicação, geralmente o processador deve executar um conjunto de instruções em um tempo limitado. Por exemplo, a cada milisegundos o processador deve ler um dado, processá-lo e emitir um resultado. Comunicação e transferência de dados, devido a possibilidade de acessar diretamente o hardware, a linguagem Assembly é utilizada para a implementação de programas de comunicação ou transferência de dados. Otimização de subtarefas da programação de alto nível, um programa não precisa somente ser escrito em linguagem Assembly ou linguagem de alto nível. Nós podemos ter programas de alto nível com subtarefas escritas em linguagem Assembly. Sendo assim, nós podemos otimizar partes de programas, no caso de tarefas tempo-real ou para a programação do hardware do computador Linguagem de Alto Nível As linguagens de alto nível são assim denominadas por apresentarem uma sintaxe mais próxima da linguagem natural, fazendo uso de palavras reservadas extraídas do vocabulário corrente (como READ, WRITE, TYPE, etc...) e permitirem a manipulação dos dados nas mais diversas formas (números inteiros, reais, vetores, listas, etc...); enquanto a linguagem Assembly trabalha com bits, bytes, palavras, armazenados em memória. As linguagens de alto nível ou de segunda geração surgiram entre o final da década de 5 e início dos anos 6. Linguagens como Fortran, Cobol, Algol e Basic, com todas as deficiências que se pode apontar atualmente, foram linguagens que marcaram presença no desenvolvimento de programas, sendo que algumas delas têm resistido ao tempo e às críticas, como por exemplo Fortran que ainda é visto como uma linguagem de implementação para muitas aplicações de engenharia. Cobol é um outro exemplo de linguagem bastante utilizada no desenvolvimento de aplicações comerciais. Em comparação com a linguagem Assembly, a passagem de um programa escrito em linguagem de alto nível para o programa em linguagem de máquina é bem mais complexa. Para esta passagem são utilizados compiladores e linkadores. Com o desenvolvimento das linguagens de alto nível, o objetivo da independência de máquina foi amplamente alcançada. Dado que os comandos das linguagens de alto nível não referenciam os atributos de uma dada máquina, eles podem ser facilmente compilados tanto em uma máquina como em outra. Assim, um programa escrito em linguagem de alto nível poderia, teoricamente, ser usado em qualquer máquina, bastando escolher o compilador correspondente. Em realidade, no entanto, provou não ser tão simples. Quando um compilador é projetado, certas restrições impostas pela máquina subjacente são, em última instância, refletidas como características da linguagem a ser traduzida. Por exemplo, o tamanho do registrador e as células de memória de uma máquina limitam o tamanho máximo dos inteiros que nela podem ser convenientemente manipulados. Disso resulta o fato de que,

83 5 Capítulo 4: Linguagens de Programação em diferentes máquinas, uma mesma linguagem pode apresentar diferentes características, ou dialetos. Conseqüentemente, em geral é necessário fazer ao menos pequenas modificações no programa antes de move-lo de uma máquina para outra. A causa deste problema de portabilidade é, em alguns casos, a falta de concordância em relação à correta composição da definição de uma linguagem em particular. Para auxiliar nesta questão, o American National Standards Institute (ANSI) e a International Organization for Standardization (ISO) adotaram e publicaram padrões para muitas das linguagens mais populares. Em outros casos, surgiram padrões informais, devido à popularidade de um dados dialeto de uma linguagem e ao desejo, por parte de alguns autores de compiladores, de oferecerem produtos compatíveis Linguagens estruturadas Nesta classe, encaixam-se as chamadas linguagens de programação de alto nível surgidas em meados dos anos 6. As linguagens concebidas neste período foram resultado da necessidade da produção de código de programa de forma clara, aparecendo o conceito de estruturação do código (endentação, utilização de letras maiúsculas e minúsculas nos identificadores, eliminação de instruções problemáticas como o go to, etc...). O período compreendido entre a década de 6 e a de 8 foi bastante produtivo no que diz respeito ao surgimento de linguagens de programação, o que permitiu o aparecimento de uma grande quantidade de linguagens as quais podem ser organizadas da seguinte forma: as linguagens de uso geral, as quais podem ser utilizadas para implementação de programas com as mais diversas características e independente da área de aplicação considerada; encaixam-se nesta categoria linguagens como Pascal, Modula-2 e C; as linguagens especializadas, as quais são orientadas ao desenvolvimento de aplicações específicas; algumas das linguagens que ilustram esta categoria são Prolog, Lisp e Forth; as linguagens orientadas a objeto, que oferecem mecanismos sintáticos e semânticos de suporte aos conceitos da programação orientada a objetos; alguns exemplos destas linguagens são Smalltalk, Eiffel, C++ e Delphi. 4.2 Execução de Programas Para que um programa possa ser executado, é preciso que seja transferido para a memória principal. A maioria dos programas ficam armazenados em disco (disco rígido, disquetes, etc.), mas a CPU não pode executar nenhum programa diretamente a partir do disco. O programa precisa ser antes lido do disco e carregado na memória principal. Por exemplo, para executar o programa FORMAT (usado para formatar disquetes), é preciso que você forneça pelo teclado um comando como: FORMAT A: Uma vez que você digita este comando, o programa FORMAT.COM é lido do disco rígido e carregado na memória principal. O carregador (loader) é o utilitário do sistema operacional responsável pela cópia do programa do dispositivo de armazenamento para a memória principal. A CPU pode então executar o programa, que fará a formatação de um disquete. A 4.2 simboliza a leitura do programa FORMAT.COM a partir do disco para a memória principal (essa operação é chamada de CARGA), e seu processamento pela CPU (essa operação é chamada de EXECUÇÃO).

84 6 Capítulo 4: Linguagens de Programação Φιγυρα 64.Carga e execução do programa FORMAT.COM O sistema operacional é responsável pela leitura do arquivo FORMAT.COM e a execução. O MS-DOS é um exemplo de sistema operacional. O WINDOWS também pode ser considerado uma espécie de sistema operacional. Uma das várias funções do sistema operacional é permanecer o tempo todo ativo na memória principal, esperando que o usuário comande a execução de algum programa. Portanto, quando se usa um comando como "FORMAT A:", o que ocorrer na verdade é o seguinte: Inicialmente o sistema operacional checa se você fornece algum comando. Você digita o comando "FORMAT A:". O sistema operacional procura no disco o arquivo FORMAT.COM e carrega-o na memória RAM. O sistema operacional momentaneamente transfere o controle da CPU para o programa FORMAT.COM, que a essa altura já está carregado na memória principal. A CPU executa o programa FORMAT.COM Ao terminar a execução do FORMAT.COM, o sistema operacional volta a ter o controle da CPU. Fica então aguardando que você envie um novo comando. Podemos entender então que nenhum programa chega até a memória por mágica, e sim, através do controle feito pelo sistema operacional. Alguém mais observador pode então ficar com a seguinte dúvida: "Se é o sistema operacional quem lê para a memória principal todos os programas a serem executados, como é então que o próprio sistema operacional chegou nesta memória?". No instante em que ligamos o computador, a memória principal não contém programa algum. Nesse instante, o sistema operacional está armazenado no disco (normalmente no disco rígido, no caso dos PC s), e precisa ser carregado na memória. Quem faz a carga do sistema operacional para a memória é um programa chamado BIOS, que fica gravado em memória ROM. Lembre-se que a memória ROM não perde seus dados quando o computador é desligado. Portanto, no instante em que ligamos o computador, o BIOS já está na memória, e é imediatamente processado pela CPU. O processamento do BIOS começa com uma contagem de memória, seguido de alguns testes rápidos no hardware, e finalmente a leitura do sistema operacional do disco para a memória principal. Esse processo, ou seja, a carga do sistema operacional na memória RAM, é chamado de BOOT. A 4.2 mostra o processo de BOOT para a carga do sistema operacional DOS: ) No instante em que o computador é ligado, o sistema operacional está armazenado em disco, a RAM está "vazia", e a CPU executa o BIOS. 2) Mostra o instante em que termina a operação de BOOT. O sistema operacional já está carregado na memória e já está sendo executado pela CPU. 3) Mostra o que ocorre imediatamente antes da execução do programa FORMAT.COM. O sistema operacional recebe um comando do usuário para que leia o arquivo FORMAT.COM do disco para a memória RAM.

85 7 Capítulo 4: Linguagens de Programação 4) O programa FORMAT.COM está sendo executado pela CPU. Φιγυρα 65.BOOT e carga de um programa 4.3 Desenvolvimento de Programas O desenvolvimento de programas é associado ao uso de ferramentas ou ambientes de desenvolvimento que acompanham o programador desde a etapa de codificação propriamente dita até a geração e teste do código executável. Serão apresentadas a seguir as principais etapas de geração de um programa, além das ferramentas utilizadas. Mais adiante serão apresentadas metodologias mais completas que definem os passos para o desenvolvimento de programas. Esta área da informática é chamada de engenharia de software. 4.3.Geração do código fonte (codificação) A codificação é a escrita, utilizando uma linguagem de programação, das instruções que o computador deve realizar para alcançar um resultado. Para a realização desta tarefa são utilizados os chamados editores. Os editores são a primeira ferramenta à qual o programador recorre na etapa de codificação, pois é através dela que será gerado o arquivo (ou o conjunto de arquivos) que vai conter o código-fonte do programa a ser desenvolvido. Apesar de que é possível utilizar qualquer editor de linha (como por exemplo o EDIT do DOS) para gerar o arquivo de programa, alguns ambientes oferecem ferramentas de edição mais poderosas (orientadas à sintaxe ou de coloração de sintaxe). Alguns ambientes mais recentes oferecem a possibilidade de projeto de interfaces gráficas e gerenciadores de eventos, com geração automatizada do código-fonte Tradução do Código Fonte (código objeto) Independente da linguagem utilizada e da arquitetura do sistema computacional, o código-fonte não é executável diretamente pelo processador. Ele permite apenas que o programador consiga definir o programa em uma forma legível aos humanos. Para que se possa obter o programa executável, é necessário que o código-fonte seja traduzido para o código de máquina do processador que compõe a arquitetura do sistema. Felizmente, isto é realizado de forma automática graças à existência de ferramentas como os Montadores (ou Assemblers que, como o nome indica, são orientados para traduzir programas escritos na linguagem Assembly) e os Compiladores, construídos para gerar o código de programas originalmente escritos em linguagens de alto nível

86 8 Capítulo 4: Linguagens de Programação como Pascal, C, Fortran e outras. O código gerado por estas ferramentas é representado segundo o sistema de numeração binária e é denominado código-objeto. O código-objeto é o código produzido pelo compilador. Ele se trata de uma forma intermediária similar a linguagem de máquina do computador. O código-objeto, apesar de estar representado em binário, não é auto-contido, ou seja, não é executável diretamente pelos processadores. A principal razão disto é que o código-objeto é caracterizado normalmente por referências a partes de programa que não estão necessariamente definidas no mesmo arquivo que gerou o aquele arquivo objeto. Estas outras partes do código do programa podem ter sido geradas a partir de outros arquivos de código-fonte concebidos pelo mesmo programador ou existirem sob a forma de arquivos de bibliotecas de sub-rotinas. O processo de tradução do código fonte em código objeto compreende três atividades: análise léxica, análise sintática e geração de código, que são processadas pelos módulos do tradutor conhecidos como analisador léxico, sintático e gerador de código. Análise léxica é o processo de reconhecer quais cadeias de símbolos do programa-fonte representam entidades indivisíveis. Por exemplo, os três símbolos 53 não devem ser interpretados como, seguido por 5, seguido por 3, mas são reconhecidos como um valor numérico apenas. Do mesmo modo, as palavras que aparecem no programa, embora compostas de caracteres individuas, devem ser interpretadas cada qual como uma unidade inseparável. A maioria dos seres humanos executa a atividade de análise léxica com um esforço consciente pequeno. Quando solicitados a ler em voz alta, pronunciamos palavras completas, em vez de caracteres individuais. Dado que o analisador léxico identifica um grupo de símbolos que representam uma única entidade, ele a classifica como sendo ou um valor numérico, ou uma palavra, ou um operador aritmético, e assim por diante, e gera um padrão de bits conhecido como átomo (token), indicativo da classe do elemento. Esses átomos são os dados de entrada do analisador sintático. Análise sintática é o processo de identificação da estrutura gramatical do programa, e de reconhecimento do papel de cada um dos seus componentes. O processo de análise sintática é feito com base em um conjunto de regras sintáticas, que definem a sintaxe da linguagem de programação. Uma forma de expressar tais regras é través de diagramas de sintaxe, representações gráficas da estrutura gramatical de um programa. A apresenta um diagrama de sintaxe do comando if-then-else existente em muitas linguagens de programação. Este diagrama indica que uma estrutura if-then-else começa com a palavra if, seguida de uma Expressão Booleana, seguida pela palavra then e, finalmente, por um Comando. Esta combinação pode ser ou não seguida por uma palavra else e outro Comando. Note que os termos de fato contidos num comando ifthen-else são representados em uma elipse, enquanto os que exigem explicação adicional, tal como Expressão Booleana e Comando, estão em retângulo. Termos que exigem explicação adicional (aqueles nos retângulos) são chamados não-terminais; aqueles contidos nas elipses são os terminais. Na descrição completa da sintaxe de uma linguagem, os não terminais são descritos por meio de diagramas adicionais. if Expressão Booleana then Comando else Comando Φιγυρα 66.Diagrama de sintaxe do comando if-then-else A apresenta um diagrama de sintaxe que descreve a sintaxe de uma estrutura chamada Expressão. Ela é formada por um Termo que pode aparecer isolado ou então seguido pelos símbolos +, e de outra Expressão. O segundo diagrama descreve um Termo como sendo, na sua forma mais simples, uma variável, e em sua forma mais complexa, qualquer Termo já construído, seguido de um símbolo * ou /, seguido de uma Expressão.

87 9 Capítulo 4: Linguagens de Programação Expressão: + Term Expressão - Termo: / Term Expressão * Variável Φιγυρα 67.Diagrama de sintaxe descrevendo a estrutura de uma expressão algébrica simples Pode-se representar, de forma gráfica, a maneira pela qual uma cadeia adere à sintaxe descrita por um conjunto de diagramas de sintaxe, através de uma árvore sintática, como ilustrado na 4.3.2, que apresenta uma árvore sintática para a cadeia x+y*z com base no diagrama da figura acima. Note-se que a raiz da árvore é o não-terminal Expressão, e que cada nível mostra a maneira como os não-terminais daquele nível vão sendo decompostos, até que finalmente sejam obtidos os símbolos da própria cadeia analisada. Expressão Termo + Expressão x Termo Termo * Expressão y Termo z Φιγυρα 68.Árvore sintática da cadeia x+y*z O processo de análise sintática de um programa consiste, essencialmente, em construir uma árvore de sintaxe para o programa-fonte. Por isso, as regras de sintaxe que descrevem a estrutura gramatical de um programa não devem propiciar que duas ou mais árvores de sintaxe distintas possam ser construídas para a mesma cadeia, dado que isto levaria a ambigüidades no analisador sintático. Esta falha pode ser bastante sutil. Com efeito, a própria regra da contém esse defeito, pois aceita as duas árvores de sintaxe mostradas na figura para o único comando seguinte: If B then if B2 then S else S2

88 Capítulo 4: Linguagens de Programação Comando if Expressão booleana then Comando else Comando S2 B if Expressão booleana then Comando S B2 Comando if Expressão booleana then Comando B if Expressão booleana B2 then Comando S else Comando S2 Φιγυρα 69.Duas árvores de sintaxe distintas para o comando if B then B2 then S else S2 Note-se que as duas interpretação são significativamente diferentes. A primeira implica que o comando S2 será executado se B for falso, enquanto a segunda implica que S2 só será executado se B for verdadeiro e B2, falso. As definições de sintaxe para linguagens formais de programação são projetadas para evitar tais ambigüidades. Em muitas linguagens, evita-se tais problemas usando chaves, ou então Begin-End. Em particular, escreveríamos: If B then Begin End if B2 then S else S2 e If B then Begin End; if B2 then S else S2 para distinguir as duas possibilidades. À medida que um analisador sintático recebe átomos do analisador léxico, ele vai analisando os comandos e ignorando os comentários. As informações extraídas das declarações são tabeladas em uma estrutura conhecida como tabela de símbolos. Dessa forma, a tabela de símbolos guarda informações sobre as variáveis declaradas, os tipos de dados e as estruturas de dados associadas a tais variáveis. O analisador sintático, então, utiliza como base estas informações ao analisar comandos tais como:

89 Capítulo 4: Linguagens de Programação Total:=Custo+Imposto; De fato, para determinar o significado do símbolo +, o analisador sintático deverá saber qual o tipo de dados associados às variáveis Custo e Imposto. Se Custo for do tipo real e Imposto for do tipo caractere, estão somar Custo e Imposto faz pouco sentido e deverá ser considerado um erro. Se Custo e Imposto forem ambos de tipo inteiro então o analisador sintático solicitará ao gerador de código a construção de uma instrução em linguagem de máquina que utilize o código de operação correspondente à adição de inteiros. Se, porém, ambos forem de tipo real, o analisador solicitará o uso do código de operação correspondente à adição de valores em ponto flutuante. O comando acima também tem sentido quando os dados envolvidos não forem do mesmo tipo. Por exemplo, se Custo for inteiro e Imposto for real, o conceito de adição ainda será aplicável. Neste caso, o analisador sintático poderá decidir que o gerador de código construa as instruções necessárias para converter um dado de um tipo para outro, antes de executar a adição. Tal conversão implícita entre tipos é denominada coerção. As operações de coerção são mal-vistas por muitos projetistas de linguagens. Eles argumentam que a necessidade da coerção é um sintoma de falha no projeto do programa, não devendo, pois, ser contornada pelo analisador sintático. O resultado é que a maioria das linguagens modernas são fortemente tipadas, o que significa que todas as ações solicitadas por um programa devem envolver dados de tipos compatíveis, sem coerção. Analisadores sintáticos para estas linguagens consideram como erros quaisquer incompatibilidade de tipo. A geração de código, ação final do processo de tradução, é o processo de construção das instruções, em linguagem de máquina. Este processo envolve numerosos problemas, um dos quais é o da construção de um código eficiente. Por exemplo, consideremos a tarefa de traduzir a seguinte seqüência de dois comandos: x:=y+x; w:=x+z; Estes comandos poderiam ser traduzidos como comandos independentes. Todavia, esta interpretação tende a não produzir um código eficiente. O gerador de código deve ser construído de tal forma que seja capaz de identificar que, ao ser completado o primeiro comando, os valores de x e de z já se encontram em registradores de propósito geral do processador, não necessitando, pois, serem carregados a partir da memória para o cálculo do valor de w. Melhorias como essa constituem a otimização de código, cuja realização constitui importante tarefa do gerador de código. Note-se que as análises léxica e sintática e a geração de código não são efetuadas em ordem estritamente seqüencial, mas de forma intercalada. O analisador léxico começa identificando o primeiro átomo e fornecendo-o ao analisador sintático. Já com esta pista sobre a estrutura que vem a seguir, o analisador sintático solicita ao analisador léxico o próximo átomo. À medida que o analisador sintático reconhece sentenças ou comandos completos, vai ativando o gerador de código, para que este possa produzir as correspondentes instruções de máquina Editores de ligação A tarefa realizada pelo editor de ligações, ou linker como é mais conhecido é rearranjar o código do programa, incorporando a ele todas as partes referenciadas no código original, resultando num código executável pelo processador. Esta tarefa pode ser feita também pelos chamados carregadores. A figura abaixo resume as três etapas anteriores.

90 2 Capítulo 4: Linguagens de Programação Código Fonte Código Fonte Código Fonte Código Fonte Código Objeto Código Objeto Código Objeto Código Objeto Biblioteca Programa executável Φιγυρα 7.Desenvolvimento de um programa Depuradores ou debuggers Os debuggers são assim chamados devido à sua função essencial que é de auxiliar o programador a eliminar (ou reduzir) a quantidade de bugs (erros) de execução no seu programa. Eles executam o programa gerado através de uma interface apropriada que possibilita uma análise efetiva do código do programa graças à: execução passo-a-passo (ou instrução por instrução) de partes do programa; visualização do estado do programa através das variáveis e eventualmente dos conteúdos dos registros internos do processador; alteração em tempo de execução de conteúdos de memória ou de variáveis ou de instruções do programa; etc Paradigmas de programação Do Assembly às linguagens mais sofisticadas de inteligência artificial, a programação evoluiu para técnicas de programação de mais em mais transparentes frente à máquina, numa tentativa de prover uma maior modularidade e um crescimento em desempenho e expressividade. Existem vários paradigmas de programação, que são estilos utilizados pelos programadores para conceber um programa. A evolução das linguagens de programação pode ser apresentada a partir da forma como os paradigmas de programação evoluíram desde a programação não estruturada à programação orientada a objetos. A seguir serão apresentados alguns destes paradigmas de programação Programação não-estruturada Usualmente, pessoas aprendem a programação escrevendo programas pequenos e simples, consistindo apenas de um programa principal. Aqui programa principal significa uma seqüência de comandos ou declarações que modificam dados que são acessível a todos os pontos do programa. Esta técnica de programação tem várias desvantagens no caso de programas grandes. Por exemplo, se a mesma seqüência é necessária em localizações diferentes ela deve ser copiada. Isto leva a idéia de extrair estas seqüências, nomear elas e oferecer uma técnica para chamar e retornar destes procedimentos Programação Procedural Aqui um programa pode ser visto como uma seqüência de chamadas de procedimentos. Um exemplo de procedimento clássico é o cálculo de uma raiz quadrada. Uma chamada

91 3 Capítulo 4: Linguagens de Programação de procedimento é usada para invocar o procedimento, podendo ser passado alguns parâmetros (por exemplo, o número cuja raiz quadrada deve ser calculada). Após a seqüência ser executada, o controle retorna justo após o ponto de chamada do procedimento. Introduzindo parâmetros tão bem quanto procedimentos de procedimentos (sub-procedimentos), programas podem ser escritos mais em mais estruturados e livres de erro. Por exemplo, se um procedimento é correto, toda vez que ele é usado ele produz um resultado correto. Conseqüentemente, no caso de erros você pode direcionar sua busca àqueles lugares que não são livres de erros Programação Modular No passar dos anos, a ênfase no projeto de programas passou do projeto de procedimentos para a organização dos dados, surgindo a programação modular. Nela, procedimentos relacionados e dados que eles utilizam são agrupados em módulos separados. Por exemplo, todas as funções de manipulação de uma pilha (empilhar, desempilhar, etc.) e a pilha em si podem ser agrupadas em um módulo. Um programa portanto não consiste mais de apenas uma parte única. Ele é agora composto de várias pequenas partes que interagem através de chamadas de procedimento. Cada módulo tem seus próprios dados. Isto permite que cada módulo gerencie um estado interno que é modificado por chamadas a procedimentos deste módulo Programação Orientada a Objetos Em contraste com as outras técnicas apresentadas, nós agora temos uma malha de objetos que interagem, cada um mantendo seu próprio estado. A essência da programação orientada a objetos consiste em tratar os dados e os procedimentos que atuam sobre os dados como um único objeto uma entidade independente com uma identidade e certas características próprias. Este paradigma de programação será o objeto de estudo deste curso. Uma abordagem orientada a objetos identifica as palavras-chaves no problema. Estas palavras-chaves são descritas então em um diagrama e setas são desenhadas entre estas palavras-chaves para definir uma hierarquia interna. As palavras-chaves serão os objetos na implementação e a hierarquia define a relação entre estes objetos. O termo objeto é usado aqui para descrever uma estrutura bem definida, contendo todas as informações sobre certa entidade: dados e funções para manipular os dados. Os objetos introduzem uma maneira diferente de conceber, de programar, de analisar e de manter as aplicações. Após um longo período de maturação em laboratórios de pesquisa, as linguagens à objetos começam a invadir os domínios profissionais. É possível hoje em dia dizer que não se trata de um modo, mas de um processo de mutação. O principal argumento desses novos produtos inclui as facilidade de reutilização de código e em conseqüência ganhos de produtividade são alcançados. A reusabilidade depende em muito da modularidade dos programas Linguagens de programação e seus paradigmas Uma linguagem de programação fornece o suporte a um estilo ou paradigma de programação se ela fornece funcionalidades que a tornam conveniente para usar determinado estilo. Uma linguagem não suporta uma técnica se é necessário esforços excepcionais ou destreza para escrever tal programa: ela meramente habilita a técnica a ser usada. Por exemplo, você pode escrever programas estruturados em Fortran e programas orientados a objetos em C, mas isto é desnecessariamente difícil de fazer porque estas linguagens não suportam diretamente estas técnicas. É de responsabilidade do programador aplicar certa técnica de programação. 4.5 Linguagens Interpretadas As etapas de desenvolvimento anteriores consideram que o uso de linguagens de programação compiladas, ou seja, aquelas que produzirão um programa na forma da

92 4 Capítulo 4: Linguagens de Programação linguagem de máquina do processador. Portanto, as instruções definidas pelo programador usando uma linguagem de alto nível serão traduzidas para as instrução na linguagens de máquina. Existe outra forma de execução de um programa, que é a sua interpretação por um outro programa, chamado interpretador. São as ditas linguagens interpretadas. A linguagem Java é a linguagem de programação interpretada mais conhecida atualmente. Ela é interpretada por uma máquina virtual chamada JVM (Java Virtual Machine). Um interpretador é um programa que executa as instruções escritas em linguagem de alto nível. Geralmente, o interpretador translada as instruções de alto nível em uma forma intermediária, que é executada. Ao contrário do compilador que traduz as instruções de alto nível em uma linguagem de máquina Compilador Versus Interpretador Um programa compilado geralmente executa mais rapidamente que um programa interpretado. A vantagem do interpretador é que ele não necessita passar por um estágio de compilação durante a qual as instruções de máquina são gerados. Este processo pode consumir muito tempo se o programa é longo. O interpretador, por outro lado, pode executar imediatamente os programas de alto-nível. Por esta razão, os interpretadores são algumas vezes usados durante o desenvolvimento de um programa, quando um programador deseja testar rapidamente seu programa. Além disso, os interpretadores são com freqüência usados na educação, pois eles permitem que o estudante programe interativamente. Tanto os interpretadores como os compiladores são disponíveis para muitas linguagens de alto nível. Mas, Java, Basic e LISP são especialmente projetadas para serem executadas por um interpretador. Embora se obtenha um programa mais lento, algumas linguagens interpretadas tem outra vantagem: a portabilidade. Como não é gerado um código de máquina, e sim um código intermediário que será interpretado por uma máquina virtual, pode-se obter a portabilidade do código se esta máquina virtual for desenvolvida para várias plataformas (computadores diferentes). Este é o caso da linguagem Java Máquina Virtual Uma máquina virtual é um ambiente operacional (ambiente onde os usuários executam o programa) auto-contido que se comporta como se fosse um computador separado. Por exemplo, uma applet Java executa em uma Máquina Virtual Java que não acessa ao sistema operacional do computador hospedeiro. Este projeto tem duas vantagens: Independência de sistema: uma aplicação poderá ser executada em qualquer máquina virtual, sem se preocupar com o hardware e software dando suporte ao sistema. Segurança: como a máquina virtual não tem contato com o sistema operacional, existem poucas possibilidade de um programa interpretado danifique outros arquivos ou aplicações. Esta vantagem trás consigo uma limitação: os programas executando em uma máquina virtual não pode tomar vantagem das funcionalidades do sistema operacional Java Java uma das linguagens interpretadas mais conhecidas no momento. Ela é uma linguagem de programação de alto nível, desenvolvida pela Syn Microsystems. Ela é uma linguagem orientada a objetos similar ao C++, mas simplificada para eliminar características que causam erros comuns de programação. Códigos fontes de Java (arquivos com a extensão.java) são traduzidos na forma de um código intermediário chamado bytecode (arquivos com a extensão.class), que podem ser executados por um interpretador Java. O bytecode pode ser transferido através de uma rede e executada por uma Máquina Virtual Java (JVM). Existem várias implementações de JVM s para diversos sistemas operacionais, incluindo UNIX, Macintosh OS e Windows. Além disso, o bytecode pode ser convertido

93 5 Capítulo 4: Linguagens de Programação diretamente em instruções de linguagem de máquina, usando o compilador JIT (Just-Intime Compiler). Java é uma linguagem de programação de propósito geral com um número de características que fazer ela muito interessante para ser usada na World Wide Web. Aplicações Java menores, chamadas applets, podem ser baixadas de um servidor Web e executar no seu navegador por um navegador compatível com o Java, tal como o Netscape Navigator ou o Microsoft Internet Explorer. Φιγυρα 7.Criação e Execução de uma aplicação Java

Conceitos Básicos de Informática

Conceitos Básicos de Informática Conceitos Básicos de Informática Introdução Informática Ciência do tratamento automático das informações Engloba toda atividade relacionada ao desenvolvimento e uso dos computadores Computador que permitam

Leia mais

Sistemas Numéricos, Operações Lógicas e Tipos de Dados Tratados pelo Computador

Sistemas Numéricos, Operações Lógicas e Tipos de Dados Tratados pelo Computador Capítulo 2 Sistemas Numéricos, Operações Lógicas e Tipos de Dados Tratados pelo Computador 2.0 Índice 2.1 Sistemas Numéricos 2 2.1.1 Sistema Binário 2 2.1.2 Sistema Octal 3 2.1.3 Sistema Hexadecimal 3

Leia mais

C onceitos B ás icos de Informática

C onceitos B ás icos de Informática C onceitos B ás icos de Informática Ricardo Azambuja Silveira INE-CTC-UFSC E-Mail: silveira@inf.ufsc.br URL: http://www.inf.ufsc.br~silveira Material elaborado pelo prof Roberto Willrich Introdução Informática

Leia mais

Fundamentos em Informática Introdução e Conceitos

Fundamentos em Informática Introdução e Conceitos Fundamentos em Informática 01 - Introdução e Conceitos Subsequente / 2011 - Disciplina: Fundamentos ago/2011 em Informática - 1 Introdução Informática: ciência do tratamento automático das informações

Leia mais

Sistemas Numéricos e a Representação Interna dos Dados no Computador (modificado)

Sistemas Numéricos e a Representação Interna dos Dados no Computador (modificado) Capítulo 2 Introdução `a Informática Prof. Willrich Sistemas Numéricos e a Representação Interna dos Dados no Computador (modificado) 2.0 Índice 2.1 Sistemas Numéricos 2 2.1.1 Sistema Binário 2 2.1.2 Sistema

Leia mais

S is temas numéricos e a Repres entação Interna dos Dados no Computador

S is temas numéricos e a Repres entação Interna dos Dados no Computador S is temas numéricos e a Repres entação Interna dos Dados no Computador Ricardo Azambuja Silveira INE-CTC-UFSC E-Mail: silveira@inf.ufsc.br URL: http://www.inf.ufsc.br~silveira Material elaborado pelo

Leia mais

Sistemas de Numeração. Tiago Alves de Oliveira

Sistemas de Numeração. Tiago Alves de Oliveira Sistemas de Numeração Tiago Alves de Oliveira Sumário Sistemas Numéricos Binário Octal Hexadecimal Representação Interna de Caracteres Sistemas Numéricos Sistemas numéricos Sistemas de notação usados para

Leia mais

INTRODUÇÃO. Introdução a Informática. Vinícius Pádua

INTRODUÇÃO. Introdução a Informática. Vinícius Pádua INTRODUÇÃO Introdução a Informática Introdução Para que serve o computador? Word, Filme, Facebook,... Resolver problemas do usuário Coletar, manipular e fornecer os resultados Processamento eletrônico

Leia mais

Manutenção de Computadores e Redes

Manutenção de Computadores e Redes Manutenção de Computadores e Redes Cleidson Souza Fundação Educacional Montes Claros FEMC Técnico em Informática para Internet Geração zero Computadores Mecânicos (1642 1945) Época de surgimento dos primeiros

Leia mais

INFORMÁTICA ELETROTÉCNICA SUBSEQUENTE AULA I. Prof. MSc. Glécio Rodrigues de Albuquerque

INFORMÁTICA ELETROTÉCNICA SUBSEQUENTE AULA I. Prof. MSc. Glécio Rodrigues de Albuquerque INFORMÁTICA ELETROTÉCNICA SUBSEQUENTE - 2014.1 AULA I de Albuquerque A história da evolução dos computadores Objetivo: entender como foi a invenção computador e sua evolução no decorrer do tempo. Definição

Leia mais

CONCEITOS BÁSICOS DE INFORMÁTICA. Disciplina: Informática Professor: Gustavo Sabry

CONCEITOS BÁSICOS DE INFORMÁTICA. Disciplina: Informática Professor: Gustavo Sabry CONCEITOS BÁSICOS DE INFORMÁTICA Disciplina: Informática Professor: Gustavo Sabry FEVEREIRO/2016 O QUE É INFORMÁTICA? INFORMAÇÃO AUTOMÁTICA 2 Ábaco 3 Ábaco Criado em 5500 a.c.; Seu nome original era Calculus

Leia mais

Micr c o r co c ntr t o r lad a or o es

Micr c o r co c ntr t o r lad a or o es Microcontroladores O que é um computador? O computador é basicamente uma máquina, eletrônica automática. tica. Lê dados,, efetua cálculos e fornece resultados. Máquina que recebe dados, compara valores,

Leia mais

Hardware. Computador. Computador. Computador. Evolução dos Computadores. Laboratório de Utilização de Microcomputadores (DCA0302) Aula 01

Hardware. Computador. Computador. Computador. Evolução dos Computadores. Laboratório de Utilização de Microcomputadores (DCA0302) Aula 01 Laboratório de Utilização de Microcomputadores (DCA0302) Diogo Pedrosa Hardware Aula 01 Computador Combinação de diversos dispositivos e circuitos digitais que podem executar uma seqüência de operações

Leia mais

ARITMÉTICA BINÁRIA. São duas as operações executadas pelo computador:

ARITMÉTICA BINÁRIA. São duas as operações executadas pelo computador: ARITMÉTICA BINÁRIA São duas as operações executadas pelo computador: - A adição - A comparação Todas as outras operações são executadas por meio de adições. Assim, para a subtracção, acha-se o complemento

Leia mais

Informática básica. Professor: Francisco Ary

Informática básica. Professor: Francisco Ary Informática básica Professor: Francisco Ary Informática, ou ainda, automação da informação. Sem dúvida, se não a maior, uma das mais importantes ferramentas de trabalho nos dias atuais; Presente em todos

Leia mais

Softwares, Aplicativos e Sistemas Operacionais

Softwares, Aplicativos e Sistemas Operacionais Softwares, Aplicativos e Sistemas Operacionais Aula 03 Informática Básica Arthur Porto - IFNMG Campus Salinas arthur.porto@ifnmg.edu.br arthurporto.com.br Aula 03 Informática Básica Softwares, Aplicativos

Leia mais

Unidade I ORGANIZAÇÃO DE. Prof. Antônio Palmeira

Unidade I ORGANIZAÇÃO DE. Prof. Antônio Palmeira Unidade I ORGANIZAÇÃO DE COMPUTADORES Prof. Antônio Palmeira Apresentação da disciplina Conhecer as estruturas de hardware de um sistema computacional. Entender o funcionamento dos vários módulos que compõem

Leia mais

Ábaco. Ipad HISTÓRIA DA INFORMÁTICA E SUA EVOLUÇÃO. Tecnologias de Informação e Comunicação

Ábaco. Ipad HISTÓRIA DA INFORMÁTICA E SUA EVOLUÇÃO. Tecnologias de Informação e Comunicação PC Ábaco Ipad HISTÓRIA DA INFORMÁTICA E SUA EVOLUÇÃO Tecnologias de Informação e Comunicação Professor: Email: Marconitorquato@catolicadocariri.edu.br PRINCIPAIS MARCOS 2 CONSTANTES DA EVOLUÇÃO 3 ÁBACO

Leia mais

Fat-Uerj: Introdução à computação

Fat-Uerj: Introdução à computação Fat-Uerj: Introdução à computação Profa Pryscilla Pires Aula 1: Apresentação da disciplina Uma breve história da computação Apresentação da disciplina UNIDADE: Faculdade de Tecnologia DEPARTAMENTO: Matemática,

Leia mais

Campus Avançado Capivari Análise e Desenvolvimento de Sistemas (ADS) Prof. André Luís Belini

Campus Avançado Capivari Análise e Desenvolvimento de Sistemas (ADS) Prof. André Luís Belini Campus Avançado Capivari Análise e Desenvolvimento de Sistemas (ADS) Prof. André Luís Belini E-mail: prof.andre.luis.belini@gmail.com MATÉRIA: APRESENTAÇÃO / CONCEITOS Aula N : 01 Tema: Apresentação da

Leia mais

HISTÓRIA DO COMPUTADOR

HISTÓRIA DO COMPUTADOR HISTÓRIA DO COMPUTADOR Introdução a Computação e Engenharia de Software Profa. Cynthia Pinheiro Já há muito tempo o homem vem tentando livrar-se dos trabalhos manuais e repetitivos, entre os quais estão

Leia mais

Informática básica. Professor: Francisco Ary

Informática básica. Professor: Francisco Ary Informática básica Professor: Francisco Ary A era da computação; Informática, ou ainda, automação da informação. Uma das mais importantes ferramentas de trabalho nos dias atuais; Uso para trabalho e pessoal;

Leia mais

Sistemas de Numeração

Sistemas de Numeração Infra-Estrutura de Hardware Sistemas de Numeração Conversão entre bases Bit e byte ECC Prof. Edilberto Silva www.edilms.eti.br edilms@yahoo.com Sumário Conversão de bases Aritmética binária e hexadecimal

Leia mais

Os computadores ditigais podem ser classificados em 5 grupos distintos:

Os computadores ditigais podem ser classificados em 5 grupos distintos: Informática A informática engloba toda atividade relacionada ao uso dos computadores, permitindo aprimorar e automatizar tarefas em qualquer área de atuação da sociedade. Informática é a "Ciência do tratamento

Leia mais

Unidade Índice

Unidade Índice Unidade 1 Conceitos Básicos de Informática 1.0 Índice 1.1 Introdução 2 1.2 Computador 2 1.2.1 Modalidades de computadores Error! Bookmark not defined. 1.2.2 Modelo de Von Neumann 3 1.3 Evolução histórica

Leia mais

Algoritmos e Lógica de Programação Histórico

Algoritmos e Lógica de Programação Histórico Algoritmos e Lógica de Programação Histórico Agostinho Brito Departamento de Engenharia da Computação e Automação Universidade Federal do Rio Grande do Norte 20 de julho de 2017 Objetivos Fornecer noções

Leia mais

História do Computador. Introdução ao Computador 2010/1 Renan Manola

História do Computador. Introdução ao Computador 2010/1 Renan Manola História do Computador Introdução ao Computador 2010/1 Renan Manola Invenção dos números Necessidades de contar E contar números cada vez maiores... Surgimento do Ábaco Ábaco muito antigo Ábaco moderno

Leia mais

Fundamentos de Arquiteturas de Computadores

Fundamentos de Arquiteturas de Computadores Fundamentos de Arquiteturas de Computadores Prof. Marcos A. Guerine mguerine@ic.uff.br http://www.ic.uff.br/~mguerine 1 Introdução Capítulo 1 Livro do Mário Monteiro Conceitos Básicos Processamento de

Leia mais

http://www.ic.uff.br/~debora/fac! 1 Dar noções iniciais dos componentes básicos de um sistema de computador, assim também como conceitos fundamentais necessários para a manipulação de informação dentro

Leia mais

INFORMÁTICA E CONTABILIDADE. Prof. Me. Fábio Assunção CMP 1128 Parte 01

INFORMÁTICA E CONTABILIDADE. Prof. Me. Fábio Assunção CMP 1128 Parte 01 INFORMÁTICA E CONTABILIDADE Prof. Me. Fábio Assunção CMP 1128 Parte 01 INFORMAÇÃO Informação significa fatos. Expressada verbalmente, visualmente, por ondas, etc. Primórdios do processamento da informação:

Leia mais

Introdução ao Processamento de Dados (I P D)

Introdução ao Processamento de Dados (I P D) Introdução ao Processamento de Dados (I P D) O ponto mais significativo da evolução dos computadores, começou na década de 40, durante a 2ª guerra mundial, onde vários equipamentos foram desenvolvidos.

Leia mais

William A. Zacariotto

William A. Zacariotto Computação e Sociedade www.zacariotto.com.br zacariotto@hotmail.com www.colunaregional.com.br William A. Zacariotto O que é a Informação? Fatos ou dados susceptíveis de transportar conhecimento. Automatizaveis

Leia mais

CURSO TÉCNICO PROFISSIONALIZANTE. Disciplina: Informática Básica (História da Informática)

CURSO TÉCNICO PROFISSIONALIZANTE. Disciplina: Informática Básica (História da Informática) CURSO TÉCNICO PROFISSIONALIZANTE Disciplina: Informática Básica (História da Informática) 1 Necessidade de realizar cálculos matemáticos Ábaco criado por volta de 2000 A.C., foi a primeira calculadora

Leia mais

Engenharia Civil. Representação da Informação. Introdução à Computação

Engenharia Civil. Representação da Informação. Introdução à Computação Engenharia Civil Representação da Informação Introdução à Computação Sumário Retomada... Representação de informação Bit, byte Conversão numérica Exercício Referência link na página 2.2.1 O bit, o byte,

Leia mais

Aula Breve História dos Computadores - Informatiquês - O Computador - Software vs. Hardware. Introdução à Engenharia da Computação

Aula Breve História dos Computadores - Informatiquês - O Computador - Software vs. Hardware. Introdução à Engenharia da Computação Aula 02 - Breve História dos Computadores - Informatiquês - O Computador - Software vs. Hardware Slide 1 de - Qual é a origem etimológica da palavra COMPUTADOR? Computador procede do latim computatore.

Leia mais

Evolução e Desempenho. Alberto Felipe Friderichs Barros

Evolução e Desempenho. Alberto Felipe Friderichs Barros Evolução e Desempenho Alberto Felipe Friderichs Barros Anterior a 1946 dispositivos mecânicos e manuais para contas. Ábaco Existiu em diversas versões/civilizações: Criado na Mesopotâmia por volta de 2400

Leia mais

Tópicos de Ambiente Web Tópico: História do Computador

Tópicos de Ambiente Web Tópico: História do Computador Tópicos de Ambiente Web Tópico: História do Computador Professora: Sheila Cáceres 2 3 História do Computador Fonte: http://www.estv.ipv.pt/paginaspessoais/caldeira/paginas%2007-08/tic/material/acetatos/01%20-%20historia%20computadores.pdf

Leia mais

Histórico da evolução dos. Ermeson Andrade

Histórico da evolução dos. Ermeson Andrade Histórico da evolução dos computadores Ermeson Andrade Histórico A evolução dos computadores tem sido caracterizada pelo: Aumento da velocidade dos Processadores Diminuição do Tamanho dos Componentes Aumento

Leia mais

Máquinas de Calcular Mecânicas

Máquinas de Calcular Mecânicas Máquinas de Calcular Mecânicas Seu surgimento e sua evolução Alunos : Érico, Gladson, Marcela Ábaco Chinês Introdução John Napier-Bastões ou Ossos de Napier Willian Oughtred-Réguas de Cáculo Blaise Pascal

Leia mais

Organização de Computadores I

Organização de Computadores I Organização de Computadores I Primeira Aula Material: Diego Passos http://www.ic.uff.br/~debora/orgcomp/pdf/parte1.pdf Organização de Computadores I Primeira Aula 1/57 Conteúdo Básicas. Básicos... Organização

Leia mais

FB7E3J 07/03/ QUEM SOU? 2. O QUE EU QUERO? 3. O QUE EU TRAGO? 4. O QUE ESPERO. Aula Introdução. Informática Básica

FB7E3J  07/03/ QUEM SOU? 2. O QUE EU QUERO? 3. O QUE EU TRAGO? 4. O QUE ESPERO. Aula Introdução. Informática Básica CENTRO DE EDUCAÇÃO SUPERIOR DE GUANAMBI FACULDADE GUANAMBI Disciplina: Informática Básica Aula Introdução email: pereira@portalfg.com.br 1. QUEM SOU? 2. O QUE EU QUERO? 3. O QUE EU TRAGO? 4. O QUE ESPERO

Leia mais

1. História dos Computadores 17/02/2011. Unidade I. TECNOLOGIA DA INFORMAÇÃO NA GESTÃO Prof.Matheus Foureaux. 2. Hardware 2.1. Periféricos 3.

1. História dos Computadores 17/02/2011. Unidade I. TECNOLOGIA DA INFORMAÇÃO NA GESTÃO Prof.Matheus Foureaux. 2. Hardware 2.1. Periféricos 3. Unidade I TECNOLOGIA DA INFORMAÇÃO NA GESTÃO Prof.Matheus Foureaux 1. História dos Computadores 2. Hardware 2.1. Periféricos 3. Software 1. História dos Computadores Informática: ciência do tratamento

Leia mais

CES-10 Introdução à Computação. Prof. Paulo André IEC - ITA

CES-10 Introdução à Computação. Prof. Paulo André IEC - ITA CES-10 Prof. Paulo André Estrutura do Curso Conceitos Básicos de Programação Algoritmos Estruturas de Controle Comandos de Entrada e Saída e Manipulação de Arquivos Rotinas, Variáveis Estruturadas e Ponteiros

Leia mais

Unidade I. Organização de Computadores. Prof. Renato Lellis

Unidade I. Organização de Computadores. Prof. Renato Lellis Unidade I Organização de Computadores Prof. Renato Lellis O que é um computador? Computador Datação 1789 cf. MS1 Acepções substantivo masculino 1 o que computa; calculador, calculista 2 Rubrica: informática.

Leia mais

Aula 1: Introdução à Organização de Computadores

Aula 1: Introdução à Organização de Computadores BC1503: Arquitetura de Computadores 1o Trimestre / 2009 Aula 1: Introdução à Organização de Computadores Prof. Raphael Y. de Camargo raphael.camargo@ufabc.edu.br Roteiro da Aula Introdução História da

Leia mais

IAC001 - Arquitetura e Organização de Computadores.

IAC001 - Arquitetura e Organização de Computadores. IAC001 - Arquitetura e Organização de Computadores. Professor: Milton Rocha Auxiliares Docentes: Milene Conceição e Júlio Francisco Horário de aulas: Quarta-feira 7:20 Sexta-feira: 11:00 Histórico e evolução

Leia mais

Informática Básica. 1.Introdução a Informática e Tecnologia

Informática Básica. 1.Introdução a Informática e Tecnologia Informática Básica Curso Técnico em Informática 1º Ano Tarde CEEP Ruy Leite Berger Filho Professora Evelyn Karinne Silva www.evelynkarinne.wordpress.com 1.Introdução a Informática e Tecnologia A Informáticae

Leia mais

Sistemas numéricos e a Representação Interna dos Dado no Computador

Sistemas numéricos e a Representação Interna dos Dado no Computador Sistemas numéricos e a Representação Interna dos Dado no Computador Ricardo Azambuja Silveira INE-CTC-UFSC E-Mail: silveira@inf.ufsc.br URL: http://www.inf.ufsc.br~silveira Material elaborado pelo prof

Leia mais

Universidade de Brasília Histórico e Introdução

Universidade de Brasília Histórico e Introdução Universidade de Brasília Histórico e Introdução Organização e Arquitetura de Computadores Objetivo Apresentar a evolução dos computadores, sua estrutura em termos de componentes básicos e funções principais.

Leia mais

Histórico e Introdução

Histórico e Introdução Universidade de Brasília Histórico e Introdução Organização e Arquitetura de Computadores Objetivo Apresentar a evolução dos computadores, sua estrutura em termos de componentes básicos e funções principais.

Leia mais

Depois do estudo deste capítulo, o estudante deve ser capaz de:

Depois do estudo deste capítulo, o estudante deve ser capaz de: 1 Introdução 1.1 Objetivos: Depois do estudo deste capítulo, o estudante deve ser capaz de: Definir o modelo de Turing de um computador; Definir o modelo de von Neumann do computador; Descreve os três

Leia mais

Introdução histórica. José Delgado. Arquitetura de Computadores Introdução histórica 1

Introdução histórica. José Delgado. Arquitetura de Computadores Introdução histórica 1 Introdução histórica Arquitetura de Computadores Introdução histórica 1 Primeiro objeto de cálculo Ábaco - desde 3000 A.C. Usado ainda hoje (China, por exemplo) Arquitetura de Computadores Introdução histórica

Leia mais

Fundamentos de Programação 1

Fundamentos de Programação 1 Fundamentos de Programação 1 Slides N. 2 C / Prof. SIMÃO Slides elaborados pelo Prof. Robson Linhares elaborados pelo Prof. Robson Linhares http://www.dainf.ct.utfpr.edu.br/~robson/ Jean Marcelo SIMÃO

Leia mais

ORGANIZAÇÃO DE COMPUTADORES

ORGANIZAÇÃO DE COMPUTADORES ORGANIZAÇÃO DE COMPUTADORES CAMPUS SANTO ANDRÉ CELSO CANDIDO SEMESTRE 2014-1 1 EVOLUÇÃO HISTÓRICA 2 Ábaco: Aproximadamente 4.000 a.c. Palavra que vem do Latim, que significa Quadro. No início o Ábaco era

Leia mais

Uma visão geral sobre computadores e Internet

Uma visão geral sobre computadores e Internet Uma visão geral sobre computadores e Internet O que é um computador? Breve histórico do computador Como um computador funciona? Por dentro das tecnologias A rede mundial (Internet) Sistemas operacionais:

Leia mais

SSC304 Introdução à Programação Para Engenharias

SSC304 Introdução à Programação Para Engenharias Universidade de São Paulo Instituto de Ciências Matemáticas e de Computação Departamento de Sistemas de Computação Introdução à Para Engenharias Estrutura de um Computador GE4 Bio GE4Bio Grupo de Estudos

Leia mais

História dos Computadores

História dos Computadores História dos Computadores Tudo começou com o Sr. Charles Babbage no início do século XIX. Charles Babbage dedicou sua vida a construção de duas máquinas calculadoras. Ambas as tentativas foram fracassadas.

Leia mais

INFORMÁTICA APLICADA AULA 01 CONCEITOS BÁSICOS DE INFORMÁTICA

INFORMÁTICA APLICADA AULA 01 CONCEITOS BÁSICOS DE INFORMÁTICA UNIVERSIDADE FEDERAL RURAL DO SEMI-ÁRIDO CURSO: Bacharelado em Ciências e Tecnologia INFORMÁTICA APLICADA AULA 01 CONCEITOS BÁSICOS DE INFORMÁTICA PROF.ª DANIELLE CASILLO SUMÁRIO Objetivos; Ementa; Técnicas

Leia mais

O que é um computador. Segundo o Dicionário Escolar da Língua Portuguesa, computador é avaliador, calculador.

O que é um computador. Segundo o Dicionário Escolar da Língua Portuguesa, computador é avaliador, calculador. O que é um computador Segundo o Dicionário Escolar da Língua Portuguesa, computador é avaliador, calculador. Primeiras Máquinas de Calcular O ábaco foi criado há aproximadamente 4.000 a.c., um aparelho

Leia mais

Máquinas Multiníveis Aula 04. Prof. Jadir Eduardo Souza Lucas Universidade Federal do Espírito Santo Departamento de Informática

Máquinas Multiníveis Aula 04. Prof. Jadir Eduardo Souza Lucas Universidade Federal do Espírito Santo Departamento de Informática Máquinas Multiníveis Aula 04 Evolução... Computadores Mecânicos Geração Zero Mecânicos (1642-1945) Blaise Pascal (1623-1662) - máquina de calcular, adições e subtrações Leibniz (1646-1716) - mesmo estilo,

Leia mais

GFM015 Introdução à Computação. Plano de Curso e Introdução. Ilmério Reis da Silva UFU/FACOM

GFM015 Introdução à Computação. Plano de Curso e Introdução. Ilmério Reis da Silva  UFU/FACOM GFM015 Introdução à Computação Plano de Curso e Introdução Ilmério Reis da Silva ilmerio@facom.ufu.br www.facom.ufu.br/~ilmerio/ic UFU/FACOM Plano de Curso Ementa Noções básicas sobre os componentes de

Leia mais

Fundamentos de Arquiteturas de Computadores

Fundamentos de Arquiteturas de Computadores Departamento de Ciência da Computação - UFF Fundamentos de Arquiteturas de Computadores Profa. Débora Christina Muchaluat Saade debora@midiacom.uff.br http://www.midiacom.uff.br/debora/ Objetivos ü Dar

Leia mais

Disciplina de Informática. Curso Tecnólogo em Gestão Ambiental Unidade Erechim Profª. Me. Valéria Espíndola Lessa

Disciplina de Informática. Curso Tecnólogo em Gestão Ambiental Unidade Erechim Profª. Me. Valéria Espíndola Lessa Disciplina de Informática Curso Tecnólogo em Gestão Ambiental Unidade Erechim Profª. Me. Valéria Espíndola Lessa Valeria-lessa@uergs.edu.br 1 O que é Informática? Informática A Informática nasceu da ideia

Leia mais

Arquitetura de Um Computador

Arquitetura de Um Computador Arquitetura de Um Computador José Costa Introdução à Arquitetura de Computadores Departamento de Engenharia Informática (DEI) Instituto Superior Técnico 2013-09-20 José Costa (DEI/IST) Arquitetura de Um

Leia mais

Conceitos Básicos de Informática. Profª Patricia Schiavon

Conceitos Básicos de Informática. Profª Patricia Schiavon Conceitos Básicos de Informática Profª Patricia Schiavon O QUE É INFORMÁTICA? Informática pode ser considerada como significando informação automática, ou seja, a utilização de métodos e técnicas no tratamento

Leia mais

FACULDADE PITÁGORAS PRONATEC

FACULDADE PITÁGORAS PRONATEC FACULDADE PITÁGORAS PRONATEC DISCIPLINA: ARQUITETURA DE COMPUTADORES Prof. Ms. Carlos José Giudice dos Santos carlos@oficinadapesquisa.com.br www.oficinadapesquisa.com.br Objetivos Ao final desta apostila,

Leia mais

Introdução a Arquitetura e Organização de Computadores. Stallings: Cap.1 e 2, Monteiro: Cap. 1, Tanenbaum: Cap. 1. Prof. Alexandre Beletti Ferreira

Introdução a Arquitetura e Organização de Computadores. Stallings: Cap.1 e 2, Monteiro: Cap. 1, Tanenbaum: Cap. 1. Prof. Alexandre Beletti Ferreira Introdução a Arquitetura e Organização de Computadores Stallings: Cap.1 e 2, Monteiro: Cap. 1, Tanenbaum: Cap. 1 Prof. Alexandre Beletti Ferreira Tópicos Visão Geral de um Computador Lei de Moore Gerações

Leia mais

Primórdios da computação e histórico dos Computadores

Primórdios da computação e histórico dos Computadores Infra-Estrutura de Hardware Primórdios da computação e histórico dos Computadores Prof. Edilberto Silva www.edilms.eti.br edilms@yahoo.com Sumário Conceituação Histórico Computadores Mecânicos Computadores

Leia mais

Informática Aplicada. Introdução

Informática Aplicada. Introdução Informática Aplicada Introdução Breve histórico da computação moderna Principais eventos 1000ac - Ábaco 1614 - Logaritmos (John Napier) 1623 - Sistema Binário (Francis Bacon) 1642 - Máquina de Turing 1946

Leia mais

INTRODUÇÃO À INFORMÁTICA

INTRODUÇÃO À INFORMÁTICA INTRODUÇÃO À INFORMÁTICA 1 Conteúdo 1. Tipos de computadores 2. Representação da informação 3. Hardware Hardware (componentes de um computador) Gabinete Placa-mãe Unidade Central de Processamento 2 1)

Leia mais

GRANDES MARCOS NA HISTÓRIA DAS TIC

GRANDES MARCOS NA HISTÓRIA DAS TIC fantastic 7 8 GRANDES MARCOS NA HISTÓRIA DAS TIC São vários os marcos históricos que contribuíram para evolução da tecnologia e da comunicação como hoje a conhecemos. O ábaco é considerado o primeiro instrumento

Leia mais

Prof. Sandro Wambier

Prof. Sandro Wambier Prof. Sandro Wambier São elementos da Arquitetura de um computador: conjunto de instruções de um processador, os modos de endereçamentos, o tipo e tamanho dos dados manipulados pelo processador, ex.: Intel

Leia mais

Conceitos Básicos. Capítulo Sumário

Conceitos Básicos. Capítulo Sumário 1 Capítulo 1: Conceitos Básicos Grupo de Sistemas Digitais Capítulo 1 Conceitos Básicos 1.0 Sumário 1.1 Introdução... 2 1.2 Computador... 2 1.3 Evolução histórica das arquiteturas de computador... 3 1.3.1

Leia mais

Informática I. Aula 9. Aula 9-24/09/2007 1

Informática I. Aula 9.  Aula 9-24/09/2007 1 Informática I Aula 9 http://www.ic.uff.br/~bianca/informatica1/ Aula 9-24/09/2007 1 Ementa Noções Básicas de Computação (Hardware, Software e Internet) HTML e Páginas Web Internet e a Web Javascript e

Leia mais

Sistemas de Computação

Sistemas de Computação A EVOLUÇÃO DO COMPUTADOR O ÁBACO é um calculador decimal manual. Médio Oriente. CALCULADORA MECÂNICA - Atribui-se a Blaise Pascal (1623-1662) a construção da primeira calculadora mecânica capaz de fazer

Leia mais

Informática I. Aula 1. Aula 1-30/08/2006 1

Informática I. Aula 1.  Aula 1-30/08/2006 1 Informática I Aula 1 http://www.ic.uff.br/~bianca/informatica1/ Aula 1-30/08/2006 1 Ementa O objetivo da disciplina é dar ao aluno uma visão geral sobre a área de ciência da computação: Histórico dos Computadores

Leia mais

Arquitetura de Microprocessadores

Arquitetura de Microprocessadores Arquitetura de Computadores UNIDADE 4 Arquitetura de Microprocessadores Aula nº 3 e 4 1º Período Ano letivo 2017/2018 Lição nº 5 e 6 09-10-2017 Sumário Resumo histórico Evolução dos microprocessadores

Leia mais

EVOLUÇÃO DOS COMPUTADORES

EVOLUÇÃO DOS COMPUTADORES EVOLUÇÃO DOS COMPUTADORES 1 EVOLUÇÃO DOS COMPUTADORES Caracterização da evolução dos computadores Computadores da 1ª Geração ENIAC Máquinas de Von Newman EDVAC (1945-1952) Computador comercial UNIVAC da

Leia mais

Princípios de Sistemas de Informação. Histórico da Computação

Princípios de Sistemas de Informação. Histórico da Computação Princípios de Sistemas de Informação Histórico da Computação redes de computador Pastores - Antigos pastores gregos e egípcios utilizavam pedrinhas para controlar a quantidade de ovelhas de seus rebanhos.

Leia mais

Introdução à Ciência da Computação

Introdução à Ciência da Computação 1 Universidade Federal Fluminense Campus de Rio das Ostras Curso de Ciência da Computação Introdução à Ciência da Computação Professor: Leandro Soares de Sousa e-mail: lsousa@id.uff.br site: http://www.ic.uff.br/~lsousa

Leia mais

Disciplina de Arquitetura e Manutenção de Computadores

Disciplina de Arquitetura e Manutenção de Computadores Disciplina de Arquitetura e Manutenção de Computadores Ensino Médio Integrado Técnico em Informática 2013 Professor Eduardo Alberto Felippsen Definição de computador: Dicionário Michelis com.pu.ta.dor

Leia mais

Histórico - Evolução INTRODUÇÃO À ENGENHARIA DA COMPUTAÇÃO. Professor: Rosalvo Ferreira de Oliveira Neto

Histórico - Evolução INTRODUÇÃO À ENGENHARIA DA COMPUTAÇÃO. Professor: Rosalvo Ferreira de Oliveira Neto INTRODUÇÃO À ENGENHARIA DA COMPUTAÇÃO Professor: Rosalvo Ferreira de Oliveira Neto Estrutura 1. Definição 2. Primeiras máquinas de calcular 3. Cartões-perfurados 4. Máquina Diferencial 5. Primeiros computadores

Leia mais

Curso de Montagem e Manutenção de Computadores. Prof.: Bruno Rafael de Oliveira Rodrigues

Curso de Montagem e Manutenção de Computadores. Prof.: Bruno Rafael de Oliveira Rodrigues Curso de Montagem e Manutenção de Computadores FORM A ÇÃ O P R O F IS S I O N A L Prof.: Bruno Rafael de Oliveira Rodrigues História da Informática O que é computador? Pode se dizer que o "Computador é

Leia mais

História e Evolução dos computadores DISCIPLINA: BIOINFORMÁTICA PROF. RAPHAEL DE MELO GALVÃO

História e Evolução dos computadores DISCIPLINA: BIOINFORMÁTICA PROF. RAPHAEL DE MELO GALVÃO 1 História e Evolução dos computadores DISCIPLINA: BIOINFORMÁTICA PROF. RAPHAEL DE MELO GALVÃO Definição do Termo Informática 2 - Informática pode ser definida como sendo a ciência que estuda o tratamento

Leia mais

Capítulo 2 Livro do Mário Monteiro Componentes Representação das informações. Medidas de desempenho

Capítulo 2 Livro do Mário Monteiro Componentes Representação das informações. Medidas de desempenho Capítulo 2 Livro do Mário Monteiro Componentes Representação das informações Bit, Caractere, Byte e Palavra Conceito de Arquivos e Registros Medidas de desempenho http://www.ic.uff.br/~debora/fac! 1 2

Leia mais

http://www.ic.uff.br/~debora/fac! 1 Capítulo 2 Livro do Mário Monteiro Componentes Representação das informações Bit, Caractere, Byte e Palavra Conceito de Arquivos e Registros Medidas de desempenho 2

Leia mais

Sistemas Numéricos. Tiago Alves de Oliveira

Sistemas Numéricos. Tiago Alves de Oliveira Sistemas Numéricos Tiago Alves de Oliveira Sumário Sistemas Numéricos Binário Octal Hexadecimal Operações aritméticas binária e hexadecimal Operações lógicas binárias e decimais Representação Interna de

Leia mais

ARQUITETURA DE COMPUTADORES. Adão de Melo Neto

ARQUITETURA DE COMPUTADORES. Adão de Melo Neto ARQUITETURA DE COMPUTADORES Adão de Melo Neto 1 TÓPICOS Introdução Memória Secundária Memória Cache Histórico 2 INTRODUÇÃO 3 INTRODUÇÃO O objetivo da disciplina é oferecer uma discussão sobre os conceitos

Leia mais

Arquitetura de Computadores. Prof. Dr. Eng. Fred Sauer

Arquitetura de Computadores. Prof. Dr. Eng. Fred Sauer Arquitetura de Computadores Prof. Dr. Eng. Fred Sauer fsauer@gmail.com http://www.fredsauer.com.br Professor Prof. Frederico Sauer (Fred Sauer) Doutor pela COPPE-UFRJ em Sistemas Computacionais Dissertação

Leia mais

Informática Básica INFORMAÇÃO AUTOMATIZADA. 1.Introdução a Informática e Tecnologia. 1.Introdução a Informática e Tecnologia

Informática Básica INFORMAÇÃO AUTOMATIZADA. 1.Introdução a Informática e Tecnologia. 1.Introdução a Informática e Tecnologia 1.Introdução a Informática e Tecnologia Informática Básica Curso Técnico em Informática 1º Ano Tarde CEEP Ruy Leite Berger Filho Professora Evelyn Karinne Silva www.evelynkarinne.wordpress.com A Informática

Leia mais

Organização de Computadores I

Organização de Computadores I Organização de Computadores I Aula 2 Material: Diego Passos http://www.ic.uff.br/~debora/orgcomp/pdf/parte2.pdf Organização de Computadores I Aula 2 1/29 Tópicos de Computação. de um Sistema de Computação..

Leia mais

Disciplina: Introdução à Engenharia da Computação

Disciplina: Introdução à Engenharia da Computação Colegiado de Engenharia de Computação Disciplina: Introdução à Engenharia da Computação Aula 06 (semestre 2011.2) Prof. Rosalvo Ferreira de Oliveira Neto, M.Sc. rosalvo.oliveira@univasf.edu.br 2 Representação

Leia mais

1. Introdução à informática: histórico e evolução

1. Introdução à informática: histórico e evolução 1. Introdução à informática: histórico e evolução Fabiano Cavalcanti Fernandes 1.1 Histórico O monumento pré-histórico de Stonehenge, localizado na Inglaterra e construído por volta de 3.500 a.c., ou seja,

Leia mais

Prof. Leonardo Augusto Casillo

Prof. Leonardo Augusto Casillo UNIVERSIDADE FEDERAL RURAL DO SEMI-ÁRIDO CURSO: CIÊNCIA DA COMPUTAÇÃO Aula 1 Conceitos necessários Prof. Leonardo Augusto Casillo Sistema de numeração: conjunto de regras que nos permite escrever e ler

Leia mais

14/03/2011. A INFORMAÇÃO E SUA REPRESENTAÇÃO (Parte I)

14/03/2011. A INFORMAÇÃO E SUA REPRESENTAÇÃO (Parte I) A INFORMAÇÃO E SUA REPRESENTAÇÃO (Parte I) Prof: Alberto Melo O computador, sendo um equipamento eletrônico, armazena e movimenta as informações internamente sob forma eletrônica; tudo o que faz é reconhecer

Leia mais

ENIAC Primeiro computador de Propósito Geral. William Stallings Computer Organization and Architecture 6 th Edition (2003)

ENIAC Primeiro computador de Propósito Geral. William Stallings Computer Organization and Architecture 6 th Edition (2003) William Stallings Computer Organization and Architecture 6 th Edition (2003) ENIAC Primeiro computador de Propósito Geral Electronic Numerical Integrator And Computer Chapter 2 Computer Evolution and Performance

Leia mais

Estrutura dos Computadores. Arquitetura de Computadores

Estrutura dos Computadores. Arquitetura de Computadores Estrutura dos Computadores Arquitetura de Computadores Noções de Computador Hardware: Componentes mecânicos e eletroeletrônicos Software: Sequência de instruções e comandos que fazem o computador realizar

Leia mais

Arquitetura de Computadores Aula 1 - Introdução

Arquitetura de Computadores Aula 1 - Introdução Arquitetura de Computadores Aula 1 - Introdução Prof. Othon M. N. Batista Mestre em Informática Roteiro Introdução Uma Visão em Camadas do Hardware Componentes Básicos de um Computador Descrição de Bit,

Leia mais

O que é Arquitetura de Computadores?

O que é Arquitetura de Computadores? O que é Arquitetura de Computadores? Coordenação de um conjunto de níveis de abstração de um computador sobre um grande conjunto de forças de mudança Arquitetura de Computadores = Arquitetura de Conjuntos

Leia mais