Baixe o app para aproveitar ainda mais
Prévia do material em texto
Autores: Prof. Alexandre Bozolan Profa. Sandra Muniz Colaboradoras: Profa. Vanessa Lessa Profa. Larissa Rodrigues Damiani Arquitetura de Computadores Modernos Professores conteudistas: Alexandre Bozolan / Sandra Muniz Alexandre Bozolan É doutor em Ciências, subárea Engenharia Elétrica, com ênfase em Telecomunicações pela Escola de Engenharia de São Carlos da Universidade de São Paulo – USP, e mestre em Engenharia Elétrica e Computação pela Universidade Presbiteriana Mackenzie com ênfase em Óptica não linear e Telecomunicações Ópticas. Engenheiro de computação, formado pela Universidade Brás Cubas, licenciado em Matemática pela Universidade Paulista – UNIP, atua como professor no curso de bacharelado em Ciência da Computação e nos cursos tecnólogos de Automação Industrial, Gestão em Análise e Desenvolvimento de Sistemas, Gestão em Tecnologia da Informação na UNIP. Sandra Muniz Doutora em Tecnologias da Inteligência e Design Digital pela Pontifícia Universidade Católica de São Paulo, mestre em Tecnologias da Inteligência e Design Digital pela mesma instituição e especialista em Segurança da Informação e graduada em Tecnologia da Informação. É coordenadora auxiliar dos cursos Análise e Desenvolvimento de Sistemas, Gestão de Tecnologia da Informação. Atua como professora no curso de bacharelado em Ciência da Computação e Sistemas da Informação nos cursos tecnólogos de Automação Industrial, Gestão em Análise e Desenvolvimento de Sistemas, Gestão em Tecnologia da Informação na UNIP. © Todos os direitos reservados. Nenhuma parte desta obra pode ser reproduzida ou transmitida por qualquer forma e/ou quaisquer meios (eletrônico, incluindo fotocópia e gravação) ou arquivada em qualquer sistema ou banco de dados sem permissão escrita da Universidade Paulista. Dados Internacionais de Catalogação na Publicação (CIP) B793a Bozolan, Alexandre. Arquitetura de Computadores Modernos / Alexandre Bozolan, Sandra Muniz. – São Paulo: Editora Sol, 2023. 268 p., il. Nota: este volume está publicado nos Cadernos de Estudos e Pesquisas da UNIP, Série Didática, ISSN 1517-9230. 1. Processador. 2. Memória. 3. Transmissão. I. Bozolan, Alexandre. II. Muniz, Sandra. III. Título. CDU 681.3.026 U517.38 – 23 Profa. Sandra Miessa Reitora Profa. Dra. Marilia Ancona Lopez Vice-Reitora de Graduação Profa. Dra. Marina Ancona Lopez Soligo Vice-Reitora de Pós-Graduação e Pesquisa Profa. Dra. Claudia Meucci Andreatini Vice-Reitora de Administração e Finanças Prof. Dr. Paschoal Laercio Armonia Vice-Reitor de Extensão Prof. Fábio Romeu de Carvalho Vice-Reitor de Planejamento Profa. Melânia Dalla Torre Vice-Reitora das Unidades Universitárias Profa. Silvia Gomes Miessa Vice-Reitora de Recursos Humanos e de Pessoal Profa. Laura Ancona Lee Vice-Reitora de Relações Internacionais Prof. Marcus Vinícius Mathias Vice-Reitor de Assuntos da Comunidade Universitária UNIP EaD Profa. Elisabete Brihy Profa. M. Isabel Cristina Satie Yoshida Tonetto Prof. M. Ivan Daliberto Frugoli Prof. Dr. Luiz Felipe Scabar Material Didático Comissão editorial: Profa. Dra. Christiane Mazur Doi Profa. Dra. Ronilda Ribeiro Apoio: Profa. Cláudia Regina Baptista Profa. M. Deise Alcantara Carreiro Profa. Ana Paula Tôrres de Novaes Menezes Projeto gráfico: Prof. Alexandre Ponzetto Revisão: Vitor Andrade Vera Saad Sumário Arquitetura de Computadores Modernos APRESENTAÇÃO ......................................................................................................................................................9 INTRODUÇÃO ...........................................................................................................................................................9 Unidade I 1 INTRODUÇÃO .................................................................................................................................................... 11 1.1 Fundamentos dos computadores digitais .................................................................................. 11 1.2 Período histórico e evolução dos computadores modernos............................................... 13 1.2.1 Computadores de primeira geração: válvulas (1936-1953) .................................................. 15 1.2.2 Computadores de segunda geração: transistores (1954-1965) .......................................... 20 1.2.3 Computadores de terceira geração: circuitos integrados (1965-1980) ........................... 22 1.2.4 Computadores de quarta geração e além: VLSI (1980-atual) .............................................. 23 1.3 A evolução do poder de processamento e a lei de Moore .................................................. 24 1.4 Definição da organização e arquitetura de computadores ................................................. 26 1.5 Sobre a hierarquia de função do computador: processamento, armazenamento, movimentação e controle de dados ..................................................................................................... 27 1.5.1 Operação funcional ................................................................................................................................ 27 1.5.2 Dados e seu processamento ............................................................................................................... 28 1.5.3 Como o computador armazena dados .......................................................................................... 28 1.5.4 Como os dados são movimentados................................................................................................. 29 1.5.5 Unidade de controle .............................................................................................................................. 30 1.6 Sua estrutura ......................................................................................................................................... 30 1.7 Definições de computadores multiníveis modernos .............................................................. 32 1.7.1 Os níveis de evolução das máquinas multiníveis ....................................................................... 34 1.8 Sistemas operacionais e seu desenvolvimento ........................................................................ 34 2 UNIDADE CENTRAL DE PROCESSAMENTO E OS PROCESSADORES MODERNOS .................. 37 2.1 Fundamentos da CPU (Central Unit Processing – unidade central de processamento) ...................................................................................................................................... 37 2.1.1 Como acontece o processo de fabricação da CPU .................................................................... 39 2.1.2 Conceitos dos chips de CPU ............................................................................................................... 43 2.1.3 Como surge o Intel Core i7 ................................................................................................................. 46 2.1.4 Como é a organização geral de um processador ....................................................................... 50 2.1.5 Um processador e sua microarquitetura ....................................................................................... 51 2.1.6 Principal dispositivo interno do processador – Unidade lógica e aritmética (ULA) .... 52 2.1.7 Dispositivo mais complexo da CPU – Unidade de controle (UC) ........................................ 52 2.2 Principais conceitos sobre o desempenho de operação do processador....................... 54 2.2.1 Sinal elétrico de sincronismo – clock ............................................................................................. 56 2.2.2 Cálculo da taxa de execução de instruções por segundo ...................................................... 58 2.3 A arquitetura da máquina de von Neumann ............................................................................ 59 2.3.1 Fundamentos do computador IAS ...................................................................................................59 2.3.2 Histórico e a arquitetura Harvard .................................................................................................... 62 2.4 Como os registradores de um computador são organizados ............................................. 63 2.4.1 A linguagem de baixo nível e os registradores de propósito geral ou visíveis ao usuário .............................................................................................................................................. 64 2.4.2 Registradores de controle e estado ................................................................................................. 64 2.4.3 Passo a passo da organização de registradores nos processadores modernos ............. 67 2.5 Processador Intel x86 e sua evolução .......................................................................................... 70 3 MEMÓRIAS E SUA HIERARQUIA: MEMÓRIAS PRIMÁRIAS E MEMÓRIAS SECUNDÁRIAS............. 79 3.1 Principais características das memórias ..................................................................................... 79 3.1.1 Como acontece o acesso à memória .............................................................................................. 81 3.1.2 Entendendo os endereços de memória ......................................................................................... 84 3.1.3 Projeto de hierarquia de memória ................................................................................................... 84 3.2 Memória cache ...................................................................................................................................... 86 3.2.1 Dados de cache e instruções .............................................................................................................. 88 3.2.2 Endereçamento de cache .................................................................................................................... 89 3.2.3 Caches associativas ................................................................................................................................ 90 3.2.4 Mapeamento direto com caches ...................................................................................................... 90 3.3 Memória somente de leitura ........................................................................................................... 91 3.3.1 ROM programada por máscara ......................................................................................................... 92 3.3.2 PROM ........................................................................................................................................................... 93 3.3.3 EPROM ......................................................................................................................................................... 94 3.3.4 EEPROM e flash ....................................................................................................................................... 94 3.4 Memória RAM ........................................................................................................................................ 95 3.4.1 Memória DRAM e SRAM ...................................................................................................................... 96 3.4.2 Organização de memória: endereço, conteúdo, armazenamento e posição na memória RAM .......................................................................................................................... 99 3.4.3 Operação de leitura ..............................................................................................................................102 3.4.4 Operação de escrita .............................................................................................................................103 3.4.5 DRAM síncrona ......................................................................................................................................105 3.4.6 DRAM Rambus .......................................................................................................................................106 3.4.7 DDR-SDRAM ...........................................................................................................................................108 3.5 Memórias secundárias ......................................................................................................................109 3.5.1 Organizando o funcionamento dos discos rígidos ...................................................................111 3.5.2 Principais propriedades e o funcionamento dos discos rígidos ........................................ 114 3.5.3 Calculando o espaçamento e armazenamento em discos rígidos....................................114 3.5.4 Funcionamento do desempenho em discos rígidos ...............................................................115 3.6 RAID em discos rígidos.....................................................................................................................117 3.6.1 RAID 0 ........................................................................................................................................................117 3.6.2 RAID 1 ........................................................................................................................................................118 3.6.3 RAID 2 ........................................................................................................................................................118 3.6.4 RAID 3 ........................................................................................................................................................118 3.6.5 RAID 4 ........................................................................................................................................................119 3.6.6 RAID 5 ........................................................................................................................................................119 3.6.7 Memória virtual .................................................................................................................................... 120 3.7 Drive de estado sólido (SSD) ..........................................................................................................121 3.8 Discos ópticos ......................................................................................................................................123 3.8.1 CD-ROM ................................................................................................................................................... 123 3.8.2 DVD ............................................................................................................................................................ 125 3.8.3 Blu-ray ...................................................................................................................................................... 125 3.9 Disquetes ...............................................................................................................................................126 3.10 Fitas magnéticas ...............................................................................................................................128 4 COMPUTADOR E SEUS BARRAMENTOS E TIPOS DE TRANSMISSÃO DE DADOS..................130 4.1 Barramentos do computador ........................................................................................................130 4.2 Largura de barramento ....................................................................................................................132 4.3 Barramentos síncronos ....................................................................................................................133 4.4 Barramentos assíncronos ................................................................................................................1354.5 Barramento ISA ...................................................................................................................................136 4.6 Barramento PCI ...................................................................................................................................137 4.7 Barramento AGP .................................................................................................................................137 4.8 Barramento PCI Express ...................................................................................................................138 4.9 Barramento serial universal USB .................................................................................................139 4.10 Principais tipos de transmissão ..................................................................................................141 4.10.1 Transmissão serial ...............................................................................................................................141 4.10.2 Transmissão paralela ........................................................................................................................ 143 Unidade II 5 O COMPUTADOR E SEUS DISPOSITIVOS DE ENTRADA E SAÍDA (E/S) .......................................150 5.1 Principais características dos dispositivos de E/S ..................................................................150 5.2 Interfaces e dispositivos de E/S ....................................................................................................152 5.3 Teclado ....................................................................................................................................................153 5.4 Mouse ......................................................................................................................................................155 5.5 Impressoras matriciais, jato de tinta e a laser ........................................................................156 5.6 Monitores de vídeo ............................................................................................................................160 6 COMPUTADOR E O CONJUNTO DE INSTRUÇÕES DE MÁQUINA .................................................162 6.1 Aspecto fundamental do ciclo de instrução ...........................................................................162 6.2 Os tipos de operandos ......................................................................................................................163 6.2.1 Números .................................................................................................................................................. 163 6.2.2 Caracteres ............................................................................................................................................... 164 6.2.3 Dados lógicos ........................................................................................................................................ 165 6.3 Execução de instrução: ciclo indireto ........................................................................................165 6.4 Busca e execução de instruções ...................................................................................................166 6.5 Formatos de instrução .....................................................................................................................168 6.5.1 A expansão de opcodes ......................................................................................................................170 6.6 Intel Core i7 e suas instruções ......................................................................................................172 6.7 Endereçamento de instruções .......................................................................................................173 6.7.1 Tipo de endereçamento imediato ................................................................................................. 173 6.7.2 Tipo de endereçamento direto ....................................................................................................... 174 6.7.3 Tipo de endereçamento indireto ................................................................................................... 174 6.7.4 Tipo de endereçamento de registradores ................................................................................... 174 6.7.5 Endereçamento indireto por registradores ............................................................................... 175 6.7.6 Endereçamento por deslocamento ............................................................................................... 175 6.7.7 Endereçamento de pilha ................................................................................................................... 177 6.8 O computador e as interrupções .................................................................................................179 6.8.1 As interrupções e o ciclo de instrução .........................................................................................181 6.8.2 Interrupções múltiplas ....................................................................................................................... 186 6.9 Pipeline de instruções.......................................................................................................................188 6.9.1 Desempenho do pipeline .................................................................................................................. 194 6.9.2 Hazards de pipeline ............................................................................................................................. 199 6.9.3 Previsão de desvio em pipeline .......................................................................................................201 6.10 Princípios da linguagem de montagem ..................................................................................205 7 FUNDAMENTOS DAS ARQUITETURAS RISC X CISC, PROCESSAMENTO PARALELO, PROCESSADORES SUPERESCALARES, MULTITHREADING E MULTICORE ...................................212 7.1 Arquitetura RISC .................................................................................................................................212 7.1.1 Menor quantidade de instruções e todas com largura fixa ................................................212 7.1.2 Execução otimizada de chamada: funções ................................................................................212 7.1.3 Menor quantidade de modos de endereçamento ...................................................................213 7.1.4 Modos de execução baseados no uso de pipeline...................................................................213 7.1.5 Execução de cada instrução em um ciclo de clock .................................................................213 7.2 Arquitetura RISC da IBM .................................................................................................................213 7.3 Pipeline na arquitetura RISC .........................................................................................................215 7.4 Processador superescalar e superpipeline ................................................................................217 7.4.1 Comparativo entre processadores superescalar e superpipeline .......................................219 7.4.2 Limitações ............................................................................................................................................... 220 7.5 Multithreading ....................................................................................................................................222 7.6 Multicore ................................................................................................................................................225 8 TÓPICOS EM SISTEMAS EMBARCADOS, IOT, SMART CITIES E TI VERDE ..................................2308.1 Sistemas embarcados .......................................................................................................................230 8.1.1 Sistemas padronizados de hardware embarcado ................................................................... 234 8.2 Internet das coisas (IoT – Internet of Things) .........................................................................242 8.2.1 IoT versus M2M..................................................................................................................................... 244 8.3 Smart houses e smart cities ...........................................................................................................246 8.3.1 Casas inteligentes (smart houses) ................................................................................................. 246 8.3.2 Cidades inteligentes (smart cities) ................................................................................................ 249 8.4 TI verde e sustentabilidade .............................................................................................................252 9 APRESENTAÇÃO O objetivo desta disciplina é oferecer ao aluno conhecimentos básicos e ao mesmo tempo fundamentais para uma boa compreensão do funcionamento dos computadores em geral e/ou dos sistemas embarcados, por exemplo os dispositivos móveis, que possuem funcionamento equivalente. A evolução dos computadores nos tem possibilitado um elevado nível de acessibilidade e interação com as máquinas, o que facilitou sua aplicação em diversas áreas da ciência e tecnologia, tornando nosso cotidiano muito mais prático e versátil. Devido a essa rápida evolução dos computadores, se faz necessário estudarmos um pouco mais essa máquina, além de conhecermos toda sua trajetória evolutiva até chegarmos às máquinas atuais. Há aproximadamente 70 anos, desde quando os computadores eletromecânicos foram desenvolvidos, que os rumos da história tecnológica do homem mudaram para sempre. Logicamente que, em seu início, os computadores ainda não tinham o pleno alcance de usabilidade como nos dias de hoje. Na verdade, eles não possuíam a capacidade de processamento sequer comparada a um celular mais simples atualmente. Hoje em dia, computadores estão em toda a parte, sejam de grande, sejam de pequeno porte, em cima de uma mesa ou no bolso da calça, no pulso, nas televisões modernas, nas geladeiras etc., realizando todos os tipos de tarefas a que foram programados. Entre algumas dessas tarefas, podemos exemplificar as tarefas simples, que vão desde escrever/ler um e-mail, manipular fotografias, construir tabelas e gráficos, até tarefas mais complexas, como simular colisão de partículas subatômicas, efetuar cálculos meteorológicos, controlar voos, toda uma malha ferroviária, robôs em uma linha de produção etc. INTRODUÇÃO O novo profissional do século XXI deverá estar adaptado às diferentes funcionalidades apresentadas por um computador, inclusive saber utilizar essas novas tecnologias para sugerir outras novas que ainda não chegaram a nossas residências. Os profissionais da área de tecnologia da informação deverão se apropriar dos conhecimentos de funcionamento interno dos computadores para que assim possam também contribuir nesse desenvolvimento das novas tecnologias. Por fim, um conhecimento aprofundado da organização de computadores oferece ao profissional/aluno um pleno entendimento de como a relação hardware/software é implementada, e poderá, assim, embasar todas as suas implementações futuras na área de tecnologia. Neste livro-texto, são abordadas, primeiramente, a organização e a arquitetura básica dos computadores, além de sua evolução a partir do desenvolvimento do primeiro computador eletromecânico. São apresentados os sistemas de numeração e métodos de conversão em binário e hexadecimal, utilizados em sistemas computacionais, além do conceito de portas lógicas digitais, fundamentais para realizar o processamento e o armazenamento de dados. 10 São apresentados os temas referentes à organização dos sistemas computacionais, quanto à arquitetura de um processador, e o conjunto de instruções executadas internamente em um computador. São explanados os tipos e as características das memórias primárias e secundárias de um computador, responsáveis por operacionalizar todo o armazenamento dos dados e instruções na máquina. Finalmente, são tratados temas como os meios de transmissão (barramentos) de comunicação de dados e instruções nos computadores. Também são abordados meios de comunicação entre dispositivos de entrada e saída, além de métodos de processamento paralelo e máquinas com vários núcleos de processadores. Esperamos que você tenha um ótimo aproveitamento deste material e se sinta motivado a ler e conhecer mais sobre a arquitetura de computadores. Boa leitura! 11 ARQUITETURA DE COMPUTADORES MODERNOS Unidade I 1 INTRODUÇÃO 1.1 Fundamentos dos computadores digitais Os computadores podem nos libertar de enfadonhas tarefas repetitivas e rotineiras, nos ajudando a utilizar nossas principais qualidades e características humanas em outras tarefas que exijam maior criatividade. Outra forma de encarar a importância dos computadores é sua utilização no processo de ensino/aprendizagem do século XXI. Nos dias atuais não há meios didáticos e pedagógicos eficientes que, em pelo menos uma de suas fases de produção, não houve a utilização de um computador. Essas máquinas, além de facilitar nossos trabalhos e estudos, em sua maioria atualmente, servem como uma forma de lazer para muitas pessoas, seja por meio de interações sociais, compras online, serviços de delivery, navegação por GPS (Global Positioning System – sistema de posicionamento global) ou jogos digitais. Dessa forma, se faz necessária uma abordagem técnica e incisiva sobre o assunto computador e por que é tão importante em nossas vidas. Figura 1 – Uso dos dispositivos computacionais no dia a dia Disponível em: https://bit.ly/3kogkgU. Acesso em: 18 jan. 2023. 12 Unidade I Uma das possíveis definições para um computador moderno é o de uma máquina, constituída por diversas partes eletrônicas ou eletromecânicas, capazes de operar dados digitais ou analógicos fornecendo assim, de forma sistêmica e controlada, informações usadas em uma gama variada de aplicações que facilitam nosso cotidiano. Os computadores modernos são, de certa forma, implementações de algoritmos que executam diversos outros algoritmos. Dessa forma, esse conjunto de algoritmos aninhados (estruturas hierárquicas) contém o princípio da equivalência de hardware e software que diz: “Qualquer coisa que possa ser feita com software pode ser feita com hardware, e qualquer coisa que possa ser feita com hardware pode ser feita com software” (NULL; LOBUR, 2010, p. 37). Um computador, que tenha um certo propósito de funcionamento, pode ser projetado para realizar qualquer tarefa, como a edição de um texto, análise orçamentária, desenhos de plantas de edifícios, controle funcional de uma linha de produção em uma fábrica, sistemas embarcados etc. Outro enfoque mais abrangente do assunto se refere aos diferentes tipos de arquiteturas e organização de computadores. Entende-se como organização de computadores o tratamento de questões relacionadas à sua estrutura e comportamento dos sistemas lógicos, do ponto de vista do programador de computador. No caso da arquitetura de computadores, incluirá muitos outros elementos, tais como conjuntos de instruções, códigos de operações, tipos de dados, quantidade de registradores, modos de endereçamento, modelos de acesso aos diferentes tipos de memórias e aos diferentes tipos de acessos aos dispositivos de E/S (entrada e saída). Dessa forma podemos ressaltar que a arquitetura de computadores afeta, de forma direta, a execução lógica dos programas. E qual é a verdadeira importância em estudarmos os computadores de forma aprofundada? Uma das formas de entender a relevânciado estudo das diferentes arquiteturas de computadores está justamente na otimização de softwares e programas que, em conjunto com os compiladores, realiza toda a interface para a comunicação do hardware (nível mais baixo) com o software (nível mais alto). Outra forma de entender a importância dos computadores em nossas vidas é a sua exímia capacidade de resolver problemas complexos do mundo real, baseando-se em simulações de modelos matemáticos abstratos. Para que os computadores “computem”, ou seja, façam com que sinais elétricos se transformem em informação, vários processos precisam ocorrer no tratamento ou processamento de dados. O dado, por exemplo, é definido como o elemento primordial ou entrada original a ser processada por algum computador. Já a informação é definida como a saída do processamento dos dados de entrada (MONTEIRO, 2019). Para que haja um bom funcionamento e otimização do desempenho, todos os dados introduzidos em um computador precisam ser interpretados pela máquina, de modo que ela possa processá-los corretamente. Por outro lado, a informação resultante do processamento deverá ser compativelmente armazenável. Para que isso ocorra, temos como menor unidade de informação o “algarismo binário” ou “dígito binário”, popularmente conhecido como bit, originário da contração das palavras em inglês binary digit. Os dígitos binários alternam entre duas possibilidades de valores, sendo eles (0 e 1). Tais valores digitais são representados em volts. O byte (conjunto contendo oito bits), implementado pela IBM, foi a primeira padronização de ordenação para um grupo de bits e é utilizado até os dias de hoje por todos os fabricantes de computadores. 13 ARQUITETURA DE COMPUTADORES MODERNOS Lembrete Para que operem de forma correta, os computadores modernos necessitam realizar o processamento dos dados, que consiste basicamente em uma série de atividades ordenadas e controladas, a fim de manipular um arranjo de dados que resultarão em uma informação relevante para o usuário. Para que possamos entender melhor o funcionamento dos computadores modernos se faz necessário um estudo sobre como eles chegaram até os dias atuais e como ocorreu essa evolução tecnológica pelas décadas. 1.2 Período histórico e evolução dos computadores modernos O estudo do histórico dos computadores se baseia, principalmente, em sua capacidade evolutiva a fim de produzir um ganho no poder computacional a cada nova geração de computadores desenvolvidos, otimizando o processamento dos dados, atingindo a diminuição de tamanho dos seus componentes eletrônicos, aumentando a capacidade de armazenamento em bytes e, por fim, atingindo melhorias na comunicação entre os diversos dispositivos de E/S. Observação A evolução dos computadores teve origem incerta, às vezes atribuída ao ábaco, desenvolvido no Iraque em 2700 a.C., ao mecanismo de Anticítera, desenvolvido na Grécia antiga cerca de 125 a.C. Cita-se também a máquina de cálculo mecânica de Blaise Pascal (1623-1662), construída em 1642, ou mesmo a máquina diferencial de Charles Babbage (1791-1871), construída em 1822. Podemos atribuir como um dos principais fatores que contribuíram para o aumento do desempenho dos processadores e, por consequência, dos computadores, seu emprego em substituição a atividades até então realizadas inteiramente por humanos. A partir do momento em que as máquinas foram capazes de realizar tarefas complexas, difíceis até para nós, ficou claro também que era necessário aumentar cada vez mais seu poder. Chegou-se também à conclusão de que componentes eletrônicos menores poderiam consumir menos energia e aquecer menos, e mesmo assim apresentar um ganho de desempenho. Assim, o encolhimento de componentes recém-desenvolvidos na década de 1940, como os transistores, possibilitaram um aumento no desempenho dos computadores. 14 Unidade I Figura 2 – Miniaturização dos componentes e circuitos de um computador Disponível em: https://bit.ly/3D0RB8P. Acesso em: 18 jan. 2023. Além disso, outros fatores têm contribuído para o aperfeiçoamento dos computadores nas décadas seguintes como a melhoria no desempenho dos processadores, incluindo o uso do processamento paralelo, baseando-se no uso de técnicas de pipeline, superpipeline, computadores superescalares ou mesmo execução de instruções de forma preditiva. Para que todas essas técnicas possam ocasionar ganho de desempenho seu projeto deve conter um equilíbrio, a fim de que o ganho final não ocasione algum tipo de atraso entre dispositivos. De fato, a miniaturização dos dispositivos eletroeletrônicos teve seu início nas décadas de 1930 e 1940, justamente com o surgimento dos computadores da chamada “primeira geração”. Podemos observar, de forma sintetizada, a tabela a seguir, contendo dados sobre o desempenho (operações por segundo) em função da quantidade de dispositivos envolvidos em realizar o processamento (relés, válvulas, transistores e integração de transistores). Tabela 1 – Gerações dos computadores modernos Geração Datas (aproximadas) Tecnologia utilizada Velocidade de dados em operações por segundo 1 1946-1957 Válvula 40.000 2 1958-1964 Transistor 200.000 3 1965-1971 Integração em pequena escala 1.000.000 4 1972-1977 Integração em grande escala 10.000.000 5 1978-1991 Integração em escala muito grande 100.000.000 6 1991-? Integração em escala ultra grande 1.000.000.000 Adaptada de: Stallings (2010, p. 20). 15 ARQUITETURA DE COMPUTADORES MODERNOS 1.2.1 Computadores de primeira geração: válvulas (1936‑1953) Não há um consenso histórico conclusivo sobre quem inventou o primeiro computador eletrônico ou eletromecânico. Muitas pessoas, equivocadamente, creditam como sendo o primeiro computador o ENIAC. Na verdade, o ENIAC foi o primeiro computador a válvulas patenteado, o que lhe rendeu toda essa “fama”. Figura 3 – Válvula termiônica Disponível em: https://bit.ly/3YlVUUB. Acesso em: 18 jan. 2023. Alguns pesquisadores, redescobrindo fatos históricos, apontam que na verdade o primeiro computador binário programável foi construído na Alemanha entre 1936 e 1938. Seu projeto não foi, inicialmente, uma ideia com aplicações militares (o que era muito comum nesse período pré-Segunda Guerra Mundial), mas sim um trabalho do brilhante engenheiro Konrad Zuse (1910-1995). Zuse construiu uma série com quatro, chamados V1, V2, V3 e V4, cuja letra V significava Versuchmodell ou modelo experimental (WAZLAWICK, 2016, p. 120). Apesar dessas máquinas iniciais, o computador Z1, concebido para ser uma continuação do projeto inicial do modelo de Babbage (1791-1871), foi o computador que mais lhe trouxe os resultados pretendidos. Diferentemente da máquina analítica de Babbage, que utilizava discos para representar a aritmética decimal, o Z1 já operava em base binária (base 2), o que representa uma automatização e processamento muito mais simples. 16 Unidade I Figura 4 – Réplica da máquina Z1 de Konrad Zuse no museu de Berlim Fonte: Wazlawick (2016, p. 122). O Z1 inicialmente não possuía relés (dispositivos eletromagnéticos capazes de produzir uma variação súbita através da aplicação de uma corrente elétrica). Os relés foram de fato incorporados em seu projeto Z3, de maneira que o Z1 possuía apenas pinos metálicos que podiam estar em duas posições distintas, a fim de representarem os bits 0 e 1. Figura 5 – Relé eletromecânico Disponível em: https://bit.ly/3IXpcEo. Acesso em: 18 jan. 2023. 17 ARQUITETURA DE COMPUTADORES MODERNOS Embora construído de forma amadora (na sala de estar da casa dos seus pais) o Z1 era um computador bastante avançado para a época, usando uma programação de instruções inseridas através de cartões perfurados, utilizados para escrever instruções e/ou dados. Figura 6 – Processo de transcrição de programas em cartões perfurados utilizados em computadores Disponível em: https://bit.ly/3ZImvwp. Acesso em: 18 jan. 2023. A máquina possuía um clock de processamento de 4 Hz (quatro ciclos de operaçãopor segundo), capaz de realizar operações de soma e subtração através de somas sucessivas e subtrações sucessivas, respectivamente. Além disso, o Z1 utilizava números em ponto flutuante, ou seja, números representados por uma mantissa e um expoente. Apesar de a primeira geração ser marcada pelos computadores a válvula, o Z1 foi considerado pertencente a essa geração dos computadores que também estavam em pleno desenvolvimento, tanto na Europa quanto nos Estados Unidos. Ainda em 1936, Zuse convidou um de seus amigos (Helmut Schreier 1912-1984) para conhecer o Z1 e participar do projeto do Z2. Zuse estava propenso a construir esse novo projeto utilizando relés, mas Schreier indicou que ele deveria usar um dispositivo mais rápido, a válvula. De fato, Schreier projetou um computador baseado no uso de válvulas, mas foi inicialmente refutado tanto por Zuse quanto pelos 18 Unidade I militares. Entretanto, na mesma época o físico e professor norte-americano John Atanasoff (1903-1995), em conjunto com seu aluno Clifford E. Berry, tiveram a mesma ideia de construir um computador a válvulas, denominado ABC (Atanasoff-Berry Computer), considerado o primeiro computador a válvulas termiônicas em 1939. O ABC possuía 300 válvulas e mais de 1,5 km de fios em sua estrutura interna. Um dos supostos motivos para o não conhecimento dessa máquina foi sua baixa eficiência, visto que essa máquina não era programável, assim como a máquina de Babbage, projetada para o cálculo de polinômios ou sistemas de equações lineares. Sendo assim, o computador ABC não pode ser considerado uma máquina de Turing completa, ou seja, uma máquina capaz de realizar qualquer cálculo utilizando algum programa codificado especificamente para determinada tarefa (FOROUZAN; MOSHARRAF, 2012). Figura 7 – Réplica do computador ABC Disponível em: https://bit.ly/3RsQIf7. Acesso em: 18 jan. 2023. Por causa de sua representatividade histórica, é de suma importância abordarmos o computador ENIAC (Electronic Numerical Integrator and Computer – computador integrador numérico eletrônico), apresentado em 1945 pelos cientistas John Mauchly (1907-1980) e John Presper Eckert (1919-1995), também se baseando no trabalho de John Atanasoff (computador ABC). O ENIAC ocupava uma área correspondente a 1.800 metros quadrados, pesando aproximadamente 30 toneladas e consumindo cerca de 174 quilowatts de energia elétrica. Diferentemente do Z1, o ENIAC utilizava 17.468 válvulas, capazes de auxiliar na realização das operações computacionais. Além dessas características, o ENIAC possuía uma memória com capacidade de cerca de 1.000 bits ou 1k de informação, armazenados em cartões perfurados (NULL; LOBUR, 2010). 19 ARQUITETURA DE COMPUTADORES MODERNOS Figura 8 – Computador ENIAC em operação Disponível em: https://bit.ly/3ZXR95l. Acesso em: 18 jan. 2023. Assim como o Z1, o ENIAC foi desenvolvido para fins militares, principalmente no cálculo de trajetórias balísticas. O modo como o ENIAC tomava decisões foi uma forte influência para a criação da linguagem FORTRAN alguns anos depois. Apesar de sua sofisticação (para a época), o trabalho de programação no ENIAC era demorado. Inicialmente, seis mulheres foram escolhidas entre “computadores humanos” para realizar sua programação, o que era tarefa para várias semanas e era realizada na seguinte sequência (WAZLAWICK, 2016): 1 O problema a ser resolvido deveria ser representado por um conjunto de equações matemáticas. 2 As operações mais complexas dessas equações deveriam ser reduzidas em operadores aritméticos básicos para que sejam executados pelo ENIAC. 3 Em cada passo era necessário “plugar” os acumuladores que receberiam os dados e onde também seriam armazenados os resultados. 4 Outros passos de computação precisavam ser plugados em sua sequência correta para que cada um fosse executado através do controle principal. 20 Unidade I 1.2.2 Computadores de segunda geração: transistores (1954‑1965) A década de 1950 viu o surgimento da computação comercial como vemos hoje em dia. Em se tratando de hardware, essa década foi responsável pela transição gradual dos computadores a válvula e relés para um dispositivo revolucionário, o transistor. Isso porque o uso de válvulas não era muito prático, do ponto de vista de engenharia, pois as válvulas tinham um elevado consumo de eletricidade, superaqueciam e queimavam com muita facilidade. Chegava-se ao ponto de que elas queimavam mais rápido do que podiam ser repostas, de modo que os computadores passavam mais tempo em manutenção do que funcionando. Conhecendo esses problemas, os cientistas John Bardeen (1908-1991), Walter Brattain (1902-1987) e William Shockley (1910-1989) desenvolveram o transistor, derivação da palavra transfer resistor, ou resistor de transferência. Figura 9 – Réplica do primeiro transistor Disponível em: https://bit.ly/3YhpfiN. Acesso em: 18 jan. 2023. O transistor é um componente totalmente eletrônico, geralmente utilizado como um amplificador ou como um interruptor de sinais elétricos, entre outras funções. Ele opera basicamente abrindo ou fechando a passagem de corrente elétrica. O transistor não foi capaz de revolucionar apenas a indústria dos computadores, mas também foi responsável pelo desenvolvimento de vários outros dispositivos como rádio, televisão, calculadora de bolso, máquina de lavar, geladeira, micro-ondas, aviões, refrigeradores, possibilitando até chegarmos aos robôs. O uso de transistores nos eletroeletrônicos se tornou muito vantajoso, pois, além de seu custo de fabricação ser menor, seu consumo de energia elétrica é irrisório se comparado às antigas válvulas termiônicas. Atualmente, os processadores contêm mais de um bilhão de transistores em uma única placa microprocessada, formando circuitos capazes de realizar cálculos extremamente complexos de maneira bastante rápida. 21 ARQUITETURA DE COMPUTADORES MODERNOS Observação Os transistores modernos que equipam nossos computadores, celulares, tablets etc. possuem apenas alguns nanômetros de diâmetro (1 nanômetro equivale a 1 milímetro dividido por 1 milhão). Na 11ª geração de processadores Intel os transistores possuem dimensão de apenas 10 nanômetros. A primeira máquina construída para ser um computador de propósito geral totalmente transistorizado foi o Harwell Cadet, desenvolvido em 1953 no Reino Unido. Esse computador possuía um clock de apenas 58 kHz, o que era aproximadamente 20 vezes mais lento que os processadores a válvula ou relés da época. Figura 10 – Primeiro computador totalmente transistorizado Disponível em: https://bit.ly/3WeO25O. Acesso em: 18 jan. 2023. Posteriormente, em 1956 o MIT (Massachusetts Institute of Technology) também desenvolveu um computador totalmente transistorizado, o TX-0 (Transistorized Experimental Computer – computador transistorizado experimental), ao qual reivindicam como sendo o primeiro. 22 Unidade I Saiba mais Aprofunde-se no assunto com a leitura de: OLIVEIRA, J. Intel anuncia CPUs de 11ª geração de alto desempenho para notebooks gamer. Canaltech, 11 maio 2021. Disponível em: https://bit.ly/3XhIl8q. Acesso em: 18 jan. 2023. 1.2.3 Computadores de terceira geração: circuitos integrados (1965‑1980) A década de 1950 introduziu o conceito do uso contínuo de transistores de estado sólido substituindo as válvulas termiônicas. Entretanto, o crescimento das demandas por máquinas com cada vez maior desempenho forçou os pesquisadores, juntamente com os grandes fabricantes de dispositivos, a buscar maneiras de integrarem cada vez mais transistores em suas máquinas. Um problema decorrente era que um único ponto de solda malfeita nos transistores poderia inviabilizar totalmente o funcionamento do computador. Dessa forma, podemos considerar que o grande avanço no uso dos computadores ocorreu justamente a partir da terceira geração, principalmente devido à construção do circuito integrado (CI ou IC – Integrated Circuit), desenvolvido pelos cientistas Jack Kilby(1923-2005) e Robert Noyce (1927-1990). O CI consiste no empacotamento de vários transistores conectados, formando uma rede interligada, onde é possível controlar a passagem da corrente elétrica de forma lógica. Isso levou a um desenvolvimento exponencial na eletrônica, inclusive aperfeiçoar o funcionamento das portas lógicas básicas (AND, OR, NOT, XOR, XNOR) responsáveis pelo processamento de dados e instruções no computador e que até então eram realizadas por válvulas ou relés. Figura 11 – Réplica do primeiro circuito integrado Disponível em: https://bit.ly/3XBUogs. Acesso em: 19 jan. 2023. 23 ARQUITETURA DE COMPUTADORES MODERNOS Pode-se afirmar que um dos marcos do início da terceira geração moderna de computadores ocorreu em 1963, quando a IBM apresentou o computador IBM 360, desenvolvido por John Watson Jr. (1914-1993). Esse computador utilizava circuitos integrados (CIs) capazes de operar instruções de máquina em bilionésimos de segundos, além de serem rápidos e confiáveis. Apesar de revolucionário, esse projeto foi considerado um suicídio para a IBM, pois foram gastos mais de 5 bilhões de dólares, de modo que o seu sucesso poderia representar a obsolescência de muitos outros produtos da empresa (WAZLAWICK, 2016). Por fim, o IBM 360 se consolidou como o fim da distinção entre compradores para uso científico e para uso comercial, pois ele poderia servir qualquer demanda que fosse necessária, apresentando um alto poder de processamento. Figura 12 – Mainframe IBM 360 Disponível em: https://bit.ly/3wfvxUo. Acesso em: 19 jan. 2023. 1.2.4 Computadores de quarta geração e além: VLSI (1980‑atual) A terceira geração ocasionou a rápida expansão dos computadores para várias aplicações, desde o uso militar até em pequenas e grandes corporações comerciais. Isso foi possível devido à integração de milhares de transistores em um chip e, à medida que as técnicas de fabricação avançavam, um número maior de transistores poderia ser agrupado, possibilitando uma variedade de escalas de integração de circuitos eletrônicos muito grande, o que fez surgir toda uma indústria da microeletrônica. Tecnicamente existem várias categorias de integração de circuitos, a começar pelo SSI (Small Scale Integration – integração em pequena escala), onde é possível compactar cerca de 10 a 100 componentes eletrônicos (transistores, capacitores, resistores etc.) por chip; o MSI (Medium Scale Integration – integração em média escala), capaz de conter de 100 a 1.000 componentes por chip; LSI (Large Scale Integration – integração em larga 24 Unidade I escala), onde se acoplam de 1.000 a 10.000 componentes; e, por fim, VLSI (Very Large Scale Integration – integração em escala muito larga), que contém mais de 10.000 componentes por chip e que marca o início da quarta geração dos computadores (NULL; LOBUR, 2010). A tecnologia conhecida como VLSI possibilitou o desenvolvimento do microcomputador ou PC (Personal Computer – computador pessoal), dispositivo suficientemente pequeno, barato (se comparado aos antigos Mainframes) e de fácil fabricação, tornando seu acesso ao público muito mais simples. Figura 13 – IBM PC modelo 5150 Disponível em: https://bit.ly/3Hg1h1G. Acesso em: 19 jan. 2023. Saiba mais Conheça mais sobre a evolução dos computadores modernos: EVOLUÇÃO dos computadores. Brasil Escola, 2022. Disponível em: https://bit.ly/3HbWtuc. Acesso em: 17 jan. 2023. 1.3 A evolução do poder de processamento e a lei de Moore A indústria de manufatura de computadores e seus dispositivos periféricos continua em plena expansão, principalmente devido à constante evolução da capacidade e desempenho dos microchips e sua aplicação direta nos sistemas embarcados. O que tornou possível a melhora no desempenho nos computadores foi a miniaturização dos transistores, que, em menor tamanho e maior quantidade, foram capazes de proporcionar melhores condições para que um chip possa efetuar mais cálculos lógicos e aritméticos que um processador de uma geração anterior. 25 ARQUITETURA DE COMPUTADORES MODERNOS O fundador da Intel, o famoso cientista Gordon Moore (1929-), publicou em 1965 na Electronic Magazine um artigo científico baseado em suas pesquisas, onde ele verificou que cada nova geração de chips de memória era lançada três anos após a geração anterior. Dessa forma, se cada geração tiver quatro vezes mais memória do que a geração anterior, o número de transistores do chip também crescerá a uma taxa constante, permitindo-nos observar um crescimento contínuo e estável pelas próximas décadas (TANENBAUM; AUSTIN, 2013). Essa pesquisa ficou conhecida mundialmente como lei de Moore, embora não seja uma lei, propriamente dita. Hoje em dia costuma-se empregá-la referenciando-se que o número de transistores pode aumentar a cada 18 meses, o que equivale a um aumento de 60% do número de transistores por ano. Saiba mais Leia o artigo na íntegra no link a seguir: MOORE, G. Cramming more components onto integrated circuits. Electronics, v. 38, n. 8, abr. 1965. Disponível em: https://intel.ly/2OZhsWY. Acesso em: 18 jan. 2023. 1970 1975 1980 1985 Ano de lançamento 1990 1995 2000 2005 2010 Lei de Moore para chips de CPU (Intel) 4004 8008 8080 8008 8086 80286 Lei de Moore Pentium II Pentium 4 Core Duo Core 2 Core i7 Pentium III Pentium Pro Pentium 80386 80486 10G 10K 10M 10 100 100K 100M Tr an sit or es 1 1K 1M 1G Figura 14 – Número de transistores versus ano de lançamento Fonte: Tanenbaum e Austin (2013, p. 34). 26 Unidade I Como é possível observar na figura, até meados da década de 1970 o número de transistores ainda estava abaixo de 10K (10 mil) transistores. Durante os anos 1990 foi alcançada a incrível marca de 1M (1 milhão) de transistores em um chip de processador. Após os anos 2010 e até a atualidade, o número de transistores em um chip ultrapassa a barreira de 10G (10 bilhões). A lei de Moore é apenas uma observação empírica sobre como a engenharia de materiais pode avançar na produção de processadores digitais. Alguns cientistas afirmam que a lei de Moore ainda pode continuar válida por pelo menos mais uma década, apesar de isso já ter sido dito há mais de uma década. Outros pesquisadores acreditam que o “calcanhar de Aquiles” seja a dissipação de energia, fuga de corrente elétrica e outros efeitos indesejados da eletrônica, que se tornam um obstáculo, pois tais efeitos podem causar problemas sérios nos processadores, diminuindo sua vida útil. Outro fator importante é que, devido à diminuição dos transistores, a tendência é de que as espessuras desses dispositivos cheguem a um nível atômico, impossibilitando maiores diminuições de tamanho, exigindo assim blocos de montagem subatômicos, o que dificultaria o processo de fabricação. Contudo, novas pesquisas com transistores estão sendo realizadas, incluindo os novos avanços em computação quântica, nanotubos de carbono além das pesquisas utilizando o grafeno, trazendo um novo patamar para o poder computacional. Saiba mais Conheça mais sobre a tecnologia do Grafeno: HELERBROCK, R. Grafeno. Mundo Educação. [s.d.]. Disponível em: https://bit.ly/3wfkYQU. Acesso em: 18 jan. 2023. 1.4 Definição da organização e arquitetura de computadores Podemos definir a arquitetura de computadores como os atributos acessíveis a um programador de computador e com impacto direto sobre a execução lógica da máquina. Por outro lado, a organização de computadores são unidades operacionais pertencentes à arquitetura e suas interconexões (meios de se comunicar com outros dispositivos). Fazem parte dos atributos de uma arquitetura de computadores o conjunto de instruções ou códigos de operação que uma máquina necessita para poder operar, o número de bits utilizados para que seja realizada a representação dos dados, por exemplo números ou caracteres, mecanismos de entrada e saída (E/S) de dados e instruções, além de técnicas de endereçamento de memórias internas ou externas (STALLINGS, 2010). Algunsatributos presentes em sistemas computacionais podem incluir todos os hardwares acessíveis a um programador, por exemplo sinais de controle, interfaces entre o computador e seus periféricos e estrutura de memória utilizada no sistema etc. 27 ARQUITETURA DE COMPUTADORES MODERNOS Observação De modo geral, não há uma distinção entre a arquitetura e a organização de computadores. Alguns fabricantes de computadores oferecem uma família de computadores (grupo de computadores tendo como base o uso de processadores com características em comum) utilizando a mesma arquitetura, mas com diferenças em sua organização. Em uma classe de computadores denominada PC (Personal Computer – computador pessoal), o relacionamento entre a arquitetura e organização de computadores é de fato praticamente idêntica. 1.5 Sobre a hierarquia de função do computador: processamento, armazenamento, movimentação e controle de dados A hierarquia dos sistemas computacionais consiste em componentes de entrada e saída que se inter-relacionam com os níveis mais baixos de sua estrutura e é essencial em um projeto de um computador moderno. Assim, cada nível hierárquico dependerá de uma caracterização simplificada e resumida do sistema local, ficando os demais níveis caracterizados separadamente, de modo que, quando um computador é projetado, essas características são analisadas em relação à sua estrutura e função. 1.5.1 Operação funcional A operação funcional de um computador pode ser representada através de um diagrama, contendo funções básicas, que são: processamento de dados, armazenamento de dados, movimentação de dados e controle. A figura a seguir mostra uma visão funcional de um computador, com cada uma das funções citadas anteriormente. Ambiente operacional (origem e destino dos dados) Aparato de movimentação de dados Mecanismo de controle Capacidade de processamento de dados Capacidade de armazenamento de dados Figura 15 – Interconexão e fluxo de dados entre sistemas de armazenamento, processamento e controle Fonte: Stallings (2010, p. 8). 28 Unidade I Observa-se que o sistema necessita de uma interface física para que ocorra a movimentação de dados, constituída por dispositivos periféricos, que servirão de receptores/transmissores (RX/TX) para os dados após a inserção de dados no sistema ou seu processamento. Em seguida, o mecanismo de controle indica qual tipo de operação o dado requererá, seja processamento de dados, seja armazenamento de dados. Após o processamento de dados, estes são armazenados de forma temporária ou definitiva, e uma cópia desses dados é devolvida para o operador no ambiente externo à máquina pelos periféricos do computador, como monitor, impressora, pendrive, impressora etc. 1.5.2 Dados e seu processamento O processamento de dados é o processo que consiste na extração de informações de forma ordenada e concatenada, resultando em uma combinação de novos resultados a serem utilizados pelo próprio hardware e/ou pelo sistema operacional. O processamento de dados é subdividido em três etapas: entrada, processamento e saída. Os dados geralmente ficam armazenados, sendo necessária a movimentação deles para que seja realizado o processamento, como observado na figura a seguir. Controle Movimentação Armazenamento Processamento Figura 16 – Movimentação dos dados desde o armazenamento, controle, processamento de dados e de volta ao armazenamento Fonte: Stallings (2010, p. 9). 1.5.3 Como o computador armazena dados O computador deve ser capaz de armazenar dados temporariamente, tornando o armazenamento de dados e instruções um processo dinâmico e contínuo. Dessa forma, os dados transferidos do ambiente externo para o interno podem ser armazenados no computador para a realização dos processos de leitura e escrita, como mostra a figura. 29 ARQUITETURA DE COMPUTADORES MODERNOS Controle Movimentação Armazenamento Processamento Figura 17 – Armazenamento de dados internos/externos Fonte: Stallings (2010, p. 9). 1.5.4 Como os dados são movimentados Como mencionado anteriormente, um computador também deve ser capaz de movimentar dados gerados internamente para dispositivos externos. Dessa forma, ele será capaz de receber dados e processá-los. Os dispositivos responsáveis pela interconexão com seu exterior (entrada/saída – E/S) são conhecidos como periféricos e são muito importantes para que o usuário tenha a possibilidade de interação com a máquina. Um computador pode funcionar como um dispositivo para movimentação de dados transferindo-os de um periférico para outro, como ilustra a figura. Controle Movimentação Armazenamento Processamento Figura 18 – Movimentação de dados Fonte: Stallings (2010, p. 9). 30 Unidade I 1.5.5 Unidade de controle O controle, como o próprio nome diz, controla as operações realizadas pelo processador, fornecendo instruções para a realização das três funções descritas anteriormente (processamento de dados, armazenamento de dados e movimentação de dados). O gerenciamento dessas funções é realizado pelo processador do computador, mais especificamente pela unidade de controle (UC), gerenciando os recursos computacionais através de instruções, além de coordenar o desempenho e as funcionalidades do processador. 1.6 Sua estrutura Um computador moderno está estruturado a partir de quatro componentes, responsáveis pelo seu pleno funcionamento, classificados em (STALLINGS, 2010): • Unidade central de processamento (UCP ou CPU – central processing unit): constituída pela unidade lógica e aritmética (ULA) e pela unidade de controle (UC), tem como função o controle de toda a operação do computador, realizando suas funções de processamento de dados e instruções, além de gerenciar o armazenamento de dados. • Memória principal: tem como função armazenar os dados de forma dinâmica e temporária. • Entrada e saída (E/S ou I/O – input/output): responsável por mover os dados entre o computador e seu ambiente externo (periféricos) ou de um ambiente externo para seu processamento interior. • Interconexão do sistema: é formada por mecanismos que oferecem meios de comunicação entre a CPU, a memória principal e os dispositivos de E/S. Um exemplo comum de interconexão do sistema é pelo barramento de dados e instruções, que consiste em uma série de fios de cobre condutores aos quais todos os outros componentes se conectam. A figura a seguir ilustra uma visão ampliada dos dispositivos contidos na estrutura interna de um computador moderno. 31 ARQUITETURA DE COMPUTADORES MODERNOS (a) E/S Memória principal CPU Barramento do sistema Computador (b) Registradores ULA Unidade de controle Barramento interno CPU (c) Lógica de sequenciação Memória de controle Registradores e decodificadores da unidade de controle Unidade de controle Figura 19 – Estrutura organizacional expandida de um computador moderno Adaptada de: Stallings (2010, p. 10). Conforme observado na figura 19, a estrutura interna organizacional de um computador moderno é constituída principalmente por barramentos (fios) que fazem o elo entre os diferentes dispositivos e níveis de um computador. Na figura 19a, é possível observar o nível de dispositivos internos do computador, como CPU, memória principal e dispositivos de E/S; na figura 19b, é possível ter uma visão ampliada da CPU, constituída pelos registradores, ULA, UC e o barramento interno, que faz a interconexão entre esses dispositivos; na figura 19c, um nível mais abaixo mostra uma visão ampliada da UC, constituída por registradores e decodificadores da UC, memória de controle e dispositivos lógicos, que realizam a sequenciação de instruções. 32 Unidade I Observação A UC (unidade de controle) realiza todo o controle operacional da CPU (unidade central de processamento), a ULA (unidade lógica e aritmética) realiza a função de processamento de dados, e os registradores oferecem armazenamento interno na CPU para o armazenamento de dados einstruções. 1.7 Definições de computadores multiníveis modernos Os computadores modernos possuem diversos estágios de desenvolvimento onde foram introduzidos diferentes níveis de abstrações e organizações para o tratamento de dados/instruções. Atualmente, são aceitos, basicamente, seis níveis, que vão do nível zero, também conhecido como nível lógico, até o nível cinco, que é o nível mais alto, onde estão as linguagens de programação (TANENBAUM; AUSTIN, 2013). A figura a seguir mostra como estão separados os multiníveis de computadores atualmente. Nível de linguagem orientada a problemas Nível de linguagem de montagem (assembly) Nível do sistema operacional da máquina Nível de arquitetura de conjunto de instruções Nível de microarquitetura Nível lógico digital Nível 5 Tradução (compilador) Interpretação parcial (sistema operacional) Interpretação (microprogramação) ou execução direta Hardware Tradução (assembler) Nível 4 Nível 3 Nível 2 Nível 1 Nível 0 Figura 20 – Níveis de abstração de um computador moderno Fonte: Tanenbaum e Austin (2013, p. 4). O nível mais baixo da estrutura (nível 0 ou nível lógico digital) contém todo o hardware da máquina. Nesse nível são encontrados os dispositivos fundamentais para a operação de um computador (portas lógicas ou logic gates). As portas lógicas são responsáveis pelo comportamento digital binário de um computador, tratando os dados apresentados a partir de estados eletrônicos 0 (desligado) e 1 (ligado). 33 ARQUITETURA DE COMPUTADORES MODERNOS F A B F A B A F A B F A B FAND Nome Símbolo gráfico OR NOT NAND NOR XOR F A B Figura 21 – Diferentes tipos de portas lógicas digitais Fonte: Stallings (2010, p. 320). As portas lógicas são constituídas por elementos analógicos como transistores, que, combinados com outros componentes eletrônicos, resultam em um comportamento digital. Cada porta lógica é constituída por alguns transistores, e a junção de várias portas lógicas formam circuitos digitais combinacionais ou sequenciais, que operaram sobre dados binários constituídos por 8, 16, 32, 64, 128 bits ou mais. O próximo nível é o 1, conhecido como nível de microarquitetura, que ainda está na categoria de nível de hardware. No nível 1 também se encontra uma coleção de registradores, que são dispositivos de memória interna, contidos dentro da CPU, e são basicamente constituídos por portas lógicas. Nesse nível também se encontra a ULA, que é responsável pela organização lógica e aritmética do processador. Os registradores também servem como base para a transferência de dados e instruções para dentro e fora da ULA. Geralmente, em computadores modernos a operação do fluxo dos dados é controlada por um programa denominado microprograma. O nível 2, também conhecido como nível de arquitetura do conjunto de instruções de máquina ou ainda instruction set architecture (ISA), contém instruções de operação do hardware. As empresas fabricantes de computadores geralmente entregam, ao venderem o computador, um manual de referência da máquina com seus princípios práticos operacionais. Nesse manual se encontra o nível ISA e como as instruções são executadas e interpretadas pela máquina. 34 Unidade I O nível 3 (nível de máquina do sistema operacional) costuma ser conhecido como nível híbrido, pois a maioria de suas instruções operacionais está contida no nível ISA, informando que há uma mescla entre os níveis mais baixos, dificultando sua separação exata. Os acréscimos feitos nesse nível implicam a introdução de um interpretador, que realiza o controle dos hardwares contidos nos níveis abaixo (nível 0 e nível 1), além de interpretar o conjunto de instruções produzidas no nível 2. O nível 4 foi criado especificamente para atender desenvolvedores de sistemas e aplicativos, ou seja, profissionais especializados no projeto e execução de emuladores, para que possam ter acesso direto ao hardware das camadas mais abaixo, usando uma linguagem de baixo nível, como a linguagem assembly. Por fim, o último nível (5) é conhecido como nível de linguagem orientada a objeto e trata dos softwares utilizados por desenvolvedores de aplicações, também conhecidas popularmente como linguagens de alto nível. Há uma lista extensa dessas linguagens, sendo algumas das mais conhecidas C, C++, C#, Java, Javascript, Python, PHP, Perl, R etc., que possuem como função a compilação (interpretação) de instruções obtidas em alto nível (nível de usuário) convertendo-as em instruções de máquinas (baixo nível). 1.7.1 Os níveis de evolução das máquinas multiníveis Os seis níveis adotados atualmente são responsáveis pelo funcionamento do processamento de dados de um computador. Antes disso, a ideia de níveis sofreu algumas mudanças necessárias para que essa separação fosse de fato uma implementação prática. Os programas escritos em linguagem de máquina (nível 1) podiam inicialmente ser executados diretamente pelos circuitos digitais encontrados no nível 0 (hardware), sem a necessidade de algum interpretador ou tradutor para realizar essa leitura e transferência de dados. Entretanto, ao evoluírem, os níveis mais altos, que constituem basicamente no uso de softwares, ficaram cada vez mais responsáveis por realizar o intercâmbio das informações entre o hardware e o software, com o intuito de otimizar o processamento e armazenamento das informações. Os primeiros computadores digitais da história, desenvolvidos na década de 1940, continham apenas dois níveis de abstração: nível 0 e nível 1, onde era realizada toda a programação em nível lógico digital. Durante a década de 1950, foi introduzido mais um nível, com o intuito de facilitar a inserção e interpretação de dados. Esse nível era baseado no uso de microprogramação, e executava programas do nível ISA através da interpretação de instruções. Os três níveis mais baixos perduraram até a década de 1970, quando os demais níveis foram elaborados e aperfeiçoados, principalmente através do desenvolvimento dos sistemas operacionais (nível 3). 1.8 Sistemas operacionais e seu desenvolvimento Um sistema operacional pode ser definido como um programa capaz de gerenciar todo o hardware de um computador (SILBERSCHATZ; GALVIN; GAGNE, 2015). Um sistema operacional também pode ser definido como um ambiente de software que facilita, no âmbito do usuário, a inserção/extração de dados e instruções de um ambiente para outro (software/hardware). 35 ARQUITETURA DE COMPUTADORES MODERNOS Lembrete Um sistema operacional é o principal software de um computador, pois além de realizar todo o controle dos componentes de hardware, ele nos permite um acesso facilitado e intuitivo a tarefas importantes como edição de textos, navegação web, elaboração de planilhas, comunicação com outros usuários etc. O surgimento dos sistemas operacionais advém da necessidade de facilitar a interação homem-computador (IHC). Nos anos de 1960, quando um usuário necessitava operar um computador, seu acesso à máquina era diretamente através do hardware. Aliado a essa necessidade, o volume de dados e instruções ocorria em crescimento exponencial, sendo necessário algum software para realizar o gerenciamento de dados e instruções contidos nos cartões perfurados ou nas fitas magnéticas. De modo que, durante a segunda geração de computadores (1955-1965), surgiram os primeiros softwares para gerenciamento de arquivos em lote (batch), ou seja, para controle de um lote de cartões perfurados. Nesse período, computadores (mainframes) começaram a processar um volume muito grande de dados. Os cartões perfurados continham os programas de computadores que possuíam o programa que, depois de inseridos um a um para leitura, eram processados. Porém, a inserção de dados manualmente e unitária de cada cartão perfurado se mostrou ineficaz. Logo, se mostrou necessário o uso do lote de cartões perfurados para serem lidos e processados mais rapidamente pelo computador, otimizando o tempo de execução das tarefas. A partir disso,notou-se também a necessidade do desenvolvimento de algum software que realizasse o controle dessa tarefa, surgindo os primeiros sistemas operacionais em lote, desenvolvidos na linguagem Fortran ou assembly. A figura a seguir mostra uma sequência lógica de como o processo era realizado. 7094 Leitor de cartão Acionador de fita Fita de entrada Fita de saída Sistema de fita Impressora 1401 1401 (a) (b) (c) (d) (e) (f) Figura 22 – Funcionamento de um sistema operacional em lote Fonte: Tanenbaum (2010, p. 5). No início do processo (figura 22a), o primeiro operador é responsável pela inserção de um lote de cartões perfurados em um leitor de cartões que fazem parte do sistema de mainframe IBM 1401 (figura 22b). O processo tem sequência com o mainframe 1401 realizando a operação de conversão dos dados contidos nos cartões para um sistema de fita magnética. Depois de terminar da transferência, os dados gravados nas fitas de entrada (figura 22c) agora são inseridos em outro mainframe (IBM 7094) 36 Unidade I (figura 22d), que de fato realiza o processamento do programa escrito inicialmente nos cartões perfurados. Terminado o processamento, os dados eram armazenados em outro conjunto de fitas magnéticas de saída (figura 22e), que serão lidos por outro mainframe 1401, sendo por fim realizada a impressão dos dados resultantes na saída (figura 22f). A figura a seguir ilustra em qual sequência as instruções eram realizadas em um lote (batch) de cartões perfurados. $JOB, 10,6610802, MARVIN TANENBAUM $FORTRAN $RUN $END Dados para programa $LOAD Programa Fortran Figura 23 – Conjunto estruturado de cartões perfurados em lote Fonte: Tanenbaum (2010, p. 6). No início da sequência, um cartão $JOB contém informações com o tempo máximo para o processamento e os dados do programador que está utilizando o sistema. Em seguida, encontra-se o cartão $FORTRAN, que informa ao sistema operacional o acionamento do compilador Fortran a partir de informações contidas em uma fita magnética. A próxima leitura será justamente do programa Fortran desenvolvido pelo programador contendo os dados a ser processados pelo sistema. Na sequência, o cartão $LOAD ordena ao sistema operacional o carregamento do programa-objeto recém-compilado. O próximo cartão a ser lido será o $RUN, que indica ao sistema operacional que naquele momento deve ser executado o programa constituído pelo conjunto de dados já ordenados nos cartões. Por fim, o cartão $END indica a conclusão das tarefas. Um dos sistemas operacionais mais populares a executar as tarefas de leitura e processamento de dados e instruções nesse período (1960-1970) foi o Fortran Monitor System (FMS) e o sistema operacional da IBM, IBSYS (TANENBAUM, 2010). Saiba mais Para conhecer um pouco mais sobre os sistemas operacionais modernos, leia os capítulos 1 e 2 de: SILBERSCHATZ, A.; GALVIN, P. B.; GAGNE, G. Fundamentos de sistemas operacionais. 9. ed. Rio de Janeiro: LTC, 2015. 37 ARQUITETURA DE COMPUTADORES MODERNOS 2 UNIDADE CENTRAL DE PROCESSAMENTO E OS PROCESSADORES MODERNOS 2.1 Fundamentos da CPU (Central Unit Processing – unidade central de processamento) O processador é considerado o “cérebro” do computador, controlando suas tarefas, como processar, gravar ou interpretar dados, operando sobre dígitos binários (bits 0 e 1). Ele também é considerado o elemento mais ativo de um computador, pois realiza, constantemente, a execução de programas armazenados na memória principal (memória RAM), buscando por novas instruções, decodificando-as e, por fim, executando-as sequencialmente. No geral, as CPUs são “empacotadas” em um único chip multiprocessado constituído por um núcleo de silício, ligado a um conjunto de pinos capazes de realizar toda a comunicação de dados/instruções eletronicamente. Figura 24 – UCP (unidade central de processamento) Intel I5 Disponível em: https://bit.ly/3wfNTVa. Acesso em: 19 jan. 2023. Lembrete A CPU é constituída por diferentes partes distintas em unidade de controle, responsável pela busca e decodificação de instruções e pela unidade lógica e aritmética (ULA), que efetua operações lógicas booleana (AND, OR, NOT, NAND, NOR, XOR, XNOR). 38 Unidade I Figura 25 – George Boole Disponível em: https://bit.ly/2m1YbXT. Acesso em: 19 jan. 2023. A origem da lógica booleana data em 1854, quando o matemático britânico George Boole escreveu um trabalho científico intitulado “An investigation of the laws of thought” (Uma investigação das leis do pensamento). Em seu trabalho, Boole prenunciou que as tarefas poderiam ser resolvidas com base em decisões lógicas como verdadeiro (V) ou falso (F) (TOCCI; WIDMER; MOSS, 2011). Essa teoria é amplamente utilizada até os dias atuais e emprega um sistema baseado em símbolos ou operadores lógicos para descrever as tomadas de decisão. Saiba mais Da mesma forma que se utilizam símbolos algébricos, por exemplo x e y, assim também a teoria booleana se baseia no uso de símbolos para representar uma expressão lógica. Saiba mais em: MONTEIRO, M. A. Introdução à organização de computadores. 5. ed. Rio de Janeiro: LTC, 2019. 39 ARQUITETURA DE COMPUTADORES MODERNOS 2.1.1 Como acontece o processo de fabricação da CPU É muito importante entender como ocorre o processo de fabricação dos processadores desde o seu início, com a preparação do silício bruto, até a obtenção final do microchip encapsulado. A partir da visão do processo de fabricação também é possível diagnosticar quais são as limitações que a indústria da eletrônica atravessa atualmente com a escassez de matéria-prima além das dificuldades em se produzirem componentes cada vez menores. É de conhecimento de todo usuário que cada vez mais os dispositivos integrados na CPU diminuem de maneira que novas tecnologias precisam ser modificadas para manter a indústria da microeletrônica em constante evolução. A indústria deve continuar a oferecer o máximo em desempenho aos usuários que, por sua vez, utilizam cada vez mais os recursos computacionais para o lazer e a diversão e que, por consequência, requerem mais desempenho das máquinas. Figura 26 – Operador de uma máquina de litografia durante o processo de fabricação do chip Disponível em: https://bit.ly/3wfmh2r. Acesso em: 19 jan. 2023. O processo para a fabricação de um processador envolve várias etapas, desde a obtenção do silício em altíssimo grau de pureza até o estágio final com a litografia (impressão de circuitos eletrônicos) e encapsulamento do processador. 40 Unidade I Observação O processo de litografia, que deriva das palavras gregas lithos (pedra) e graphein (escrever) não é uma descoberta recente, mas remonta ao século XVIII. Logicamente, em seu início, essa tecnologia não era empregada na fabricação de processadores, e sim na escrita em peças de calcário. Somente em meados do século XX é que todo o processo de fabricação de peças eletrônicas, utilizando a escrita de dispositivos com lasers, foi de fato implementada nos processadores. Em um primeiro estágio de fabricação, o silício está num estado sólido (como pode ser observado na figura 27) e, na sequência, ele é triturado até ficar reduzido ao tamanho de pequenos grãos de pó (figura 28). Figura 27 – Pedaço de silício com alto grau de pureza Disponível em: https://bit.ly/3WjInLH. Acesso em: 19 jan. 2023. 41 ARQUITETURA DE COMPUTADORES MODERNOS Figura 28 – Silício em pó Disponível em: https://bit.ly/3kYZGoq. Acesso em: 19 jan. 2023. Após a trituração e obtenção do pó, ele será inserido em uma máquina, conhecida como câmara de crescimento epitaxial (figura 29), para que possa ser aquecido em altas temperaturas (aproximadamente 1000 °C). Figura 29 – Máquina de crescimento epitaxial Disponível em: https://bit.ly/3WsiHfY. Acesso em: 19 jan. 2023. 42 Unidade I Durante o processo de aquecimento e crescimento epitaxial, o silício passa por um processo de rotação para que seja obtido um formato cilíndrico, também conhecido como pré-forma ou
Compartilhar