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“tarugo”. Figura 30 – Pré-forma ou “tarugo” de silício dentro de uma máquina de crescimento epitaxial Disponível em: https://bit.ly/3J1URoi. Acesso em: 19 jan. 2023. Essa pré-forma é finalmente fatiada transversalmente, facilitando o próximo estágio da fabricação, que será a litografia. Na sequência, é possível observar o próximo estágio de fabricação do processador, em que se retira um pequeno pedaço do wafer, que será empacotado num chip. 43 ARQUITETURA DE COMPUTADORES MODERNOS Figura 31 – Dezenas de processadores no wafer Disponível em: https://bit.ly/3XEdv9Q. Acesso em: 19 jan. 2023. Saiba mais Aprofunde seus conhecimentos sobre a fabricação dos processadores com a leitura de: ALECRIM, E. Processadores: fabricação, miniaturalização e encapsulamento. Infowester, 2009. Disponível em: https://bit.ly/3GU25YC. Acesso em: 18 jan. 2023. 2.1.2 Conceitos dos chips de CPU Um chip de CPU, basicamente, contém três funcionalidades, a saber: alocação de endereços, processamento e controle de dados. Assim, essas premissas de operação poderão ser conectadas a pinos na memória e a chips de E/S através de um conjunto de fios de cobre paralelos (barramento), para que as operações básicas ocorram na CPU. Ao buscar uma instrução na memória, inicialmente a CPU coloca o endereço da posição de memória desejada daquela exata instrução em seus pinos de 44 Unidade I endereços. Após essa primeira etapa, ela ativa uma ou mais linhas de controle com a finalidade de informar à memória que ela necessita ler uma palavra. A palavra, do inglês word, é um termo técnico utilizado em computação para denominar uma sequência fixa de bits contendo 8, 16, 32 ou 64 bits de acordo com a arquitetura do processador e que representa uma informação útil para o computador (MONTEIRO, 2019). Então a memória responde colocando a palavra requisitada nos pinos de dados da CPU e ativa um sinal que informará o que acabou de ser realizado. Ao receber esse sinal, a CPU aceita a palavra e executa a instrução indicada. A instrução indicada pode ser uma requisição para realizar alguma leitura ou escrita de palavra de dados, em que todo o processo deverá ser repetido para cada palavra adicional que será processada. Nos chips de CPU também existem dois parâmetros que determinam o seu desempenho, que são a quantidade de pinos de endereços e o número de pinos para dados. Um chip com m pinos de endereços poderá realizar o endereçamento de até 2m localizações na memória. Os valores mais comuns para o número de pinos m são 16, 32 e 64 (TANENBAUM; AUSTIN, 2013). Assim, um chip consistindo em n pinos de dados pode ler ou escrever uma palavra de n bits em uma única operação. Portanto, um chip de 64 pinos de dados será muito rápido, porém de altíssimo custo. Além dos pinos para endereçamento, a CPU possui pinos de controle. Os pinos de controle servem para regular o fluxo e a temporização de dados que chegam da CPU e que passam por ela, além de outras funcionalidades. As CPUs também possuem pinos para energização (entre 1,2 volt a 1,5 volt), um pino de aterramento (negativo) e um pino para o sinal de sincronismo de clock (onda quadrada de frequência bem definida). Existem outros pinos que realizam o controle e que podem ser agrupados nas seguintes categorias: • Controle de barramento • Interrupções • Arbitragem de barramento • Sinalização de coprocessador • Estado • Diversos 45 ARQUITETURA DE COMPUTADORES MODERNOS A figura a seguir mostra um chip de CPU genérico baseado no uso desses grupos de pinos de sinais. Microprocessador típico Dados Controle de barramento Interrupções Endereçamento Estado Coprocessador Diversos Símbolo para aterramento elétrico Arbitragem de barramento Alimentação Símbolo para sinal de clock Φ Figura 32 – Pinagem lógica de uma CPU genérica Fonte: Tanenbaum e Austin (2013, p. 147). Como observado na figura anterior, as diversas setas indicam os sinais de entrada e os sinais de saída do chip. Além dessas, outras setas indicam a utilização de vários pinos para realização da comunicação de dados e instruções. Também é possível observar, logo abaixo da figura, a pinagem para alimentação elétrica, aterramento e entrada para realização do sincronismo de clock. Lembrete A maioria dos pinos de controle do barramento interno do chip são, na verdade, pinos de saídas de comunicação da CPU para o barramento; portanto, são linhas de comunicação dos dispositivos de E/S para a memória principal (RAM). Outros diversos pinos do chip são utilizados para sinalização de interrupções, oriundas dos dispositivos de E/S que se conectam à CPU e necessitam interromper processos em execução. Assim, a principal função nesse caso é a de controlar algum dispositivo de E/S, ativando um sinal dos pinos para interromper a CPU ou fazê-la realizar algum tipo de serviço para o dispositivo de E/S, como a verificação de ocorrências de erros de comunicação de E/S. Algumas CPUs, como a observada na figura anterior, possuem um pino de saída para confirmação do sinal de interrupção. Os pinos de arbitragem de 46 Unidade I barramento são utilizados para realizar o controle do tráfego no barramento, de modo a impedir que dois ou mais dispositivos tentem usá-lo simultaneamente e, por consequência, ocorra algum conflito. Outros chips são projetados para operarem como processadores auxiliares ou coprocessadores, como o Sprow ARM7 observado na figura a seguir, especializado em processamento paralelo e processamento gráfico. Figura 33 – Coprocessador Sprow ARM7 Disponível em: https://bit.ly/3GR0mDt. Acesso em: 19 jan. 2023. 2.1.3 Como surge o Intel Core i7 Talvez o mais conhecido e também o processador mais bem-sucedido da Intel é o Core i7. Ele foi lançado no ano de 2008 em sua primeira geração e é considerado a maior evolução dos processadores Intel desde o Intel 8088. Como comparativo, o 8088 possuía míseros 29 mil transistores e um clock de 4,77 MHz e que foi amplamente utilizado no desktop IBM PC da década de 1980, enquanto em seu lançamento (2008) o i7 possuía cerca de 731 milhões de transistores distribuídos em quatro processadores, operando à frequência de clock de 3,2 GHz (3,2 bilhões de hertz ou ciclos por segundo), utilizando uma largura de linha (fios de cobre de ligação entre os transistores) de 45 nanômetros (45 x 10-9 metros). Aqui pode-se ressaltar que quanto menor for a largura de linha (o que também implica transistores menores), mais transistores serão empacotados em um chip, aumentando, assim, seu poder de processamento em hertz. A primeira geração da arquitetura i7 era baseada na arquitetura Nahalem, que na época substituiu a arquitetura Core utilizada nos processadores anteriores e evoluiu para uma arquitetura Sandy Bridge, composta por 1,16 bilhão de transistores, trabalhando a uma velocidade de até 3,5 GHz, com largura de linha de 32 nanômetros (TANENBAUM; AUSTIN, 2013). Outra diferença interessante é que o i7 é uma máquina completa de 64 bits multicore, que corresponde ao tamanho da palavra/instrução que o processador consegue interpretar. 47 ARQUITETURA DE COMPUTADORES MODERNOS Figura 34 – Intel Core I7 Disponível em: https://bit.ly/3QYwCcz. Acesso em: 19 jan. 2023. O i7 é compatível em aplicações que requerem o uso de processamento paralelo e de threads de hardware e software. O sistema de hyper‑threading (conceito de processamento paralelo desenvolvido em 2002 nos processadores Pentium 4), também conhecido como multithreading simultâneo, permite que latências com quantidade de tempo para acesso a outro hardware em tempos muito curtos sejam utilizadas quando há falta de espaço em memória cache. Além disso, todos os processadores Core i7 possuem três níveis (layer) de memória cache (L1, L2 e L3), em que cada núcleo possui uma cache de dados L1 (layer 1) com 32 kB (kilobytes) e uma cache L1 de instruções também com 32 kB. Os núcleos dos processadores i7 também possuem sua própria cache L2 com 256 kB, além de compartilharem entretodos os núcleos uma cache unificada L3 com tamanhos que variam de 4 a 15 MB (megabytes). Como descrito anteriormente, todos os processadores Core i7 possuem múltiplos núcleos com caches específicas para dados. Isso pode ocasionar um problema quando a CPU modifica a palavra na cache e que também esteja contida em outro núcleo, sendo utilizada ao mesmo tempo. Se outro processador tenta ler a mesma palavra da memória, poderá obter um valor ultrapassado, ou seja, sem as modificações mais recentes, visto que as palavras de cache modificadas não são escritas imediatamente de volta na memória. Assim, para manter uma consistência de informações da memória, cada núcleo em um sistema microprocessado realiza a operação snoops (escuta) no barramento de memória, em busca de referências de palavras contidas na cache. Quando ela acha uma dessas referências, são fornecidos os dados antes que a memória faça a leitura deles, assim não haverá risco de os dados não estarem atualizados. 48 Unidade I Outro problema apresentado no projeto do Intel i7 se refere ao consumo elevado de energia, o que também ocorre naturalmente com outras CPUs. Um processador Core i7 consome entre 17 e 150 watts, dependendo de seu modelo ou frequência de operação (hertz). A fim de impedir que algum dano ocorra no silício devido ao aquecimento excessivo, em todo projeto de processadores a Intel utiliza métodos de resfriamento com o uso de dissipadores de calor, para que o calor não danifique o substrato do processador e o silício queime. Na figura a seguir é possível observar um dissipador de calor anexo à CPU. Figura 35 – Dissipador de calor anexo na parte superior da CPU Disponível em: https://bit.ly/3iNh9zv. Acesso em: 19 jan. 2023. O projeto original do Intel i7 também possui um soquete de conexões land grid array (LGA) com 37,5 milímetros de borda e 1.155 pinos em sua parte inferior, em que 286 são para alimentação e 360 para aterramento. Os pinos estão dispostos como um quadrado de 40 x 40 pinos com 17 x 25 pinos faltando no meio. Outros 20 pinos também estão faltando no perímetro de forma assimétrica, para impedir que o chip seja inserido de forma incorreta pelo usuário na sua base situada na placa-mãe Essa disposição física da pinagem é observada na figura a seguir. 49 ARQUITETURA DE COMPUTADORES MODERNOS Figura 36 – Vista inferior da disposição física dos pinos do Intel Core i7 Fonte: Tanenbaum e Austin (2013, p. 160). A pinagem lógica de funcionamento é mostrada na próxima figura, onde é possível observar que em seu lado esquerdo há cinco grupos principais de sinais de barramento, incluindo comunicações com a memória principal (RAM) através de comunicação double data rate (DDR); e no seu lado direito, uma diversidade de sinais, para diagnósticos, monitoramento térmico, detecção e gerenciamento de energia etc. 50 Unidade I CPU do Core i7 Canal de memória DDR#2 Canal PCle Interface de mídia direta Interface de monitor flexível Canal de memória DDR#1 Monitoramento térmico Gerenciamento de energia Diversos Detecção de energia Configuração Diagnósticos Energia 286 360 21 16 80 124 124 12 24 7 10 4 18 TerraCK Figura 37 – Pinagem lógica do Intel Core i7 Fonte: Tanenbaum e Austin (2013, p. 161). Após o estudo externo, incluindo sua pinagem lógica e física, agora é necessária uma abordagem das principais características de funcionamento da CPU. 2.1.4 Como é a organização geral de um processador O processador é organizado de acordo com as seguintes funcionalidades: • Buscar instruções: o processador deve ser capaz de realizar a leitura de uma ou várias instruções que ocupam endereços específicos na memória (registrador, cache, memória principal). • Interpretar instruções: as instruções são decodificadas a fim de se determinar qual ação é requerida naquele momento. • Obter dados: o ato da execução de uma ou mais instruções pode requerer a leitura de dados da memória ou algum dispositivo de E/S. • Processar dados: a execução de instruções pode requerer a realização de operações lógicas e/ou aritméticas com os dados. • Gravar dados: os resultados obtidos através do processamento de dados podem ser gravados na memória ou dispositivos de E/S. 51 ARQUITETURA DE COMPUTADORES MODERNOS 2.1.5 Um processador e sua microarquitetura A microarquitetura de um processador é constituída por um conjunto de instruções contendo operações complexas, além de três subsistemas principais: unidades de execução, banco de registradores e lógica de controle. Essas unidades também podem ser descritas como o caminho dos dados do processador, pois os dados e instruções fluem regularmente por eles (CARTER, 2002), como indica a figura seguinte. Banco de registradores Lógica de controle Sinais de controle Unidade artimética de ponto flutuante Dados para memória Dados para memória Dados fornecidos pela memória Instruções de memória Unidade artimética de inteiros Figura 38 – Diagrama de blocos de uma CPU moderna Fonte: Carter (2002, p. 49). O diagrama da figura anterior mostra quais são as etapas envolvidas na execução de uma ou várias instruções e como os módulos do processador interagem entre si durante o processamento e a decodificação da instrução. Inicialmente, o processador busca a instrução que está contida na memória principal (externa ao processador) e a direciona para ser decodificada pela lógica de controle. Após a decodificação da instrução, esta é representada em um padrão de bits a fim de informar ao hardware como ela deverá ser executada. Esse padrão de bits será então enviado para a próxima sessão da unidade de execução da instrução, através de sinais de controle, a qual lê as entradas da instrução na memória interna do processador (banco de registradores). Assim que a instrução é decodificada e os valores são armazenados nos registradores, as instruções são executadas em uma unidade lógica aritmética (ULA) de inteiros e/ou ponto flutuante, a fim de se obter resposta ao processamento desejado. Por fim, os dados obtidos são devolvidos como resposta à memória principal do computador, primeiro passando pelo banco de registradores através do barramento interno do processador. 52 Unidade I 2.1.6 Principal dispositivo interno do processador – Unidade lógica e aritmética (ULA) A ULA é o principal dispositivo interno do processador e realiza efetivamente as operações lógicas/ matemáticas sobre dados e instruções. Qualquer ULA é considerada um conjunto de circuitos lógicos simples que, ao se integrarem, realizam as operações (AND, OR, NAND, NOR, XOR e XNOR), operações de deslocamento, incremento, complemento, soma, subtração, multiplicação e divisão (MONTEIRO, 2019). Uma ULA geralmente possui duas entradas de dados conectadas à saída (resultado da operação efetuada), entrada para sinais de controle para determinação da operação a ser realizada, além de saídas de comunicação com registradores e para sinalização de flags. Em processadores mais antigos, o barramento interno para dados é utilizado para interligar a ULA ao registrador acumulador, conhecido também como AC ou ACC (accumulator), e aos demais registradores, e na sequência à mEmória principal, conforme observado na figura a seguir. Saída para flags Saída para registradores Sinais de controle da UC Entradas de sinais de registradores ULA Figura 39 – ULA e suas conexões de entrada e saída Adaptada de: Monteiro (2019, p. 164). Alguns fabricantes de processadores atuais, como a Intel, têm substituído o nome unidade lógica e aritmética (ULA) por unidade de cálculo ou unidade de execução; outros, como a AMD, têm chamado a ULA de integer unit (UI). Alguns processadores atuais também são constituídos por unidades responsáveis por cálculos fracionários (representados em ponto flutuante) denominadas unidade de FPU (Floating Point Unit – ponto flutuante). 2.1.7 Dispositivo mais complexo da CPU – Unidade de controle (UC) A UC é considerada o dispositivo mais complexo dentroda CPU. Ela é responsável pela movimentação de dados/instruções no processador através de sinais de controle sincronizados pelo clock. A UC opera sobre micro-operações (pequenos passos no ciclo de leitura), em que a cada início de um ciclo de instrução ocorrerá uma busca (fetch) da instrução solicitada, trazendo uma cópia dela para o processador, que será armazenada no IR (Instruction Register – registrador de instrução). Cada micro-operação é inicializada por um pulso oriundo da UC em decorrência de uma programação prévia, realizada diretamente no hardware. A estrutura básica diagramada de funcionamento da UC é observada na figura a seguir. 53 ARQUITETURA DE COMPUTADORES MODERNOS Registrador de instrução Decodificador Unidade de controle Pulsos de relógio Código de operação Sinal resultante da decodificação (apenas 1 saída ativada de cada vez) Sinais de controle para dispositivos internos da UCP (registradores, UAL, etc.) Sinais de controle vindos do barramento de sistema Barramento de controle Sinais de controle para o barramento de sistema Gerador de tempo t t t t Figura 40 – Diagrama de bloco de funcionalidade da unidade de controle Fonte: Monteiro (2019, p. 172). Os opcodes oriundos do registrador de instrução (IR) são inicialmente decodificados, ou seja, as instruções são interpretadas e servem de sinais de execução de tarefas na UC. Como é observado na figura anterior, um gerador de tempo está conectado à UC para controlar o ritmo (pulsos) em que as instruções devem ser inseridas no barramento para que alguma ação seja executada pela ULA. Além das tarefas citadas anteriormente, a UC possui requisitos funcionais, como segue: • Definição dos elementos básicos do processador. • Descrição das micro-operações que o processador executa. • Determinação das funções que a UC deve realizar para que as micro-operações sejam efetuadas. A UC também desempenha duas tarefas básicas, que são o sequenciamento e a execução. • Sequenciamento: as micro-operações devem ser executadas em série, baseando-se no programa que está em execução. • Execução: a UC deve garantir que cada micro-operação seja executada. Para que a UC realize a operação da CPU de forma funcional, ela deve ser constituída por sinais de controle de entrada, como: 54 Unidade I • Registrador de instrução: é utilizado para definir qual opcode deverá ser executado no ciclo de instrução corrente. • Flags: são necessárias para que a UC determine o estado do processador e das saídas das operações anteriores da ULA. • Sinais de controle do barramento de controle: fazem parte do barramento do sistema para o fornecimento de sinais para a UC. • Sinais de controle dentro do processador: são sinais que fazem os dados serem movidos de um registrador para outro registrador, além de ativarem funções específicas da ULA. • Sinais de controle para barramento de controle: são constituídos pelos sinais de controle para memória principal e sinais de controle para os módulos de E/S. • Clock: é responsável pelo tempo de ciclo do processador ou tempo de ciclo de clock de operação do processador. 2.2 Principais conceitos sobre o desempenho de operação do processador Os principais fabricantes de processadores como a Intel e a AMD buscam, continuamente, o aumento no desempenho de seus processadores, mesmo que a evolução dos processadores e seu desempenho também estejam atrelados à lei de Moore. Como existem limitações para aumentar a velocidade do processador, atualmente três técnicas são utilizadas para contornar algumas limitações impostas por Moore (STALLINGS, 2010): • A primeira implica aumentar a frequência do hardware do processador, e o aumento deve se fundamentar na diminuição de tamanho das portas lógicas contidas no processador. Assim, quanto mais portas lógicas reunidas dentro de um mesmo chip, maior será a frequência de clock. • A segunda implica aumentar a capacidade e a velocidade das memórias auxiliares do processador (memórias do tipo cache), que fazem a “ponte” e o trânsito de dados/instruções entre o processador e a memória principal (RAM). • A terceira técnica implica a realização de mudanças na arquitetura e organização de um processador, de modo a buscar o aumento na velocidade da execução das instruções, o que pode envolver algum processo de paralelismo na execução de tarefas. Entre os fatores citados, o mais aplicado para que haja ganho no desempenho tem sido o aumento na quantidade de transistores no processador, aumentando assim a capacidade de clock. Entretanto vale ressaltar que uma diminuição constante nos componentes eletrônicos os torna também cada vez mais próximos, ocasionando um aumento no aquecimento do processador. A figura a seguir mostra uma tendência de aumento linear no desempenho do processamento à medida que a densidade de transistores também aumenta. 55 ARQUITETURA DE COMPUTADORES MODERNOS 1970 0,1 1 10 102 103 104 105 106 107 1975 1980 1985 1990 1995 2000 2005 2010 Transistores (milhares) Cores Frequência (MHz) Potência (W) Figura 41 – Tendência de aumento linear no desempenho dos processadores em função do aumento da quantidade de transistores Fonte: Stallings (2010, p. 42). Como citado anteriormente, vários são os problemas que podem ser apontados como limitadores do aumento no desempenho do processador, como: • Potência: aumentar a densidade de transistores e, consequentemente, a velocidade de clock do processador também aumentará a densidade de potência dada em watts/cm2. Isso levará a uma dificuldade para dissipar o calor gerado no chip, de forma que o calor irá se configurar um sério problema a ser considerado no projeto. • Atraso de resistência e capacitância (RC): existe uma limitação física na velocidade em que os elétrons fluem no chip entre os transistores, que é dada pela resistência e capacitância dos fios metálicos que conectam os transistores. Assim, o atraso pode aumentar à medida que o produto RC aumenta. Consequentemente, com a diminuição dos componentes do chip, as interconexões de fios metálicos se tornam mais finas, o que aumenta a resistência elétrica. E, ao diminuir o tamanho e a distância entre os transistores, os transistores também ficarão mais próximos uns dos outros, aumentando a capacitância. • Latência de memória: a baixa frequência na comunicação entre o processador e a memória também limitará a velocidade e o desempenho do processador. 56 Unidade I Saiba mais Aprenda mais sobre a lei de Moore e seus principais impactos em: ROTMAN, D. We’re not prepared for the end of Moore’s Law. Technology Review, 2020. Disponível em: https://bit.ly/3Wu0yi4. Acesso em: 18 jan. 2023. 2.2.1 Sinal elétrico de sincronismo – clock Os processadores e as memórias são componentes digitais, constituídos por milhares de portas lógicas. Os circuitos digitais mudam de estado (comutam de estado) entre os bits 0 e 1 milhão ou até mesmo bilhões de vezes por segundo ao executarem tarefas específicas, de acordo com instruções de um programa. Essas operações precisam estar sincronizadas para que executem as tarefas de forma ordenada, ou seja, com uma sequência lógica de início, meio e fim. Para que isso ocorra, o componente que realiza tal sincronização é o relógio, conhecido também como clock (MONTEIRO, 2019). O clock é considerado um contador de tempo do processador e foi desenvolvido para gerar pulsos; a duração entre o início da contagem do pulso até o início do próximo pulso é denominada ciclo. De forma geral, os pulsos comutam de valor para intensidade alta, que corresponde ao bit 1, para a intensidade baixa, que corresponde ao bit 0. Essa alternância de estado faz que seja possível sincronizar e cadenciar as ações ou atividades do processador. De certa forma, o clock também pode ser entendido como um dispositivo que realiza um controle, sincronizando todos os componentes do computador, visto que é o processador quem dita a frequência de como tudo deve operar. A figuraa seguir mostra um esquema com um conjunto de pulsos gerados por um clock e alguns de seus elementos principais. 1 0 1 ciclo de clock Tempo Período Borda de subida Borda de descida Figura 42 – Diagrama de pulsos de clock Fonte: Monteiro (2019, p. 173). 57 ARQUITETURA DE COMPUTADORES MODERNOS Os elementos contidos na figura anterior podem ser entendidos como: • Ciclo de clock ou ciclo de relógio: determina o intervalo de tempo entre o início da borda de subida (ou descida) do pulso até o início da próxima borda de subida (ou descida) do pulso subsequente. • Período ou ciclo de tempo: é o intervalo de tempo necessário para que o pulso execute uma oscilação completa. • Borda de subida: é constituída pelo período usado pelo pulso para realizar a transição de subida. • Borda de descida: é formada pelo período utilizado pelo pulso para realizar a transição de descida. • Frequência ou taxa de clock: é a quantidade de ciclos por segundo do clock, determinada também pelo inverso do período e medida em hertz (Hz), em que 1 Hz é igual a um ciclo por segundo. A figura a seguir mostra um diagrama de ciclo de clock, onde o sinal de clock original foi denominado (T0), e os demais ciclos de processador subsequentes são constituídos pelos pulsos (T1, T2, T3, T4 e T5). To T1 T2 T3 T4 T5 1 ciclo = t0 1 subciclo = t0 / 5 Figura 43 – Diagrama de ciclos de um processador contendo cinco subciclos Fonte: Monteiro (2019, p. 175). O ciclo de clock geralmente é relacionado a uma operação elementar que ocorre durante o ciclo de instrução. Porém, mesmo as operações elementares não se realizam em um único ciclo, de forma que um ciclo pode se subdividir em outros ciclos menores, conhecidos como subciclos. Os subciclos podem estar defasados no tempo, de maneira que cada um pode acionar um passo diferente da operação elementar inicial. Essas diferenças de operações do ciclo fundamental também são conhecidas como micro-operações e possibilitam, entre outras coisas, o processamento paralelo. Na figura anterior também foi possível observar um subciclo dado por t0/5 que corresponde ao tempo de início da borda de subida do ciclo t0 dividido por 5, que é o tempo de duração do último subciclo t5 e, portanto, de sua borda de descida. 58 Unidade I 2.2.2 Cálculo da taxa de execução de instruções por segundo Como já definido antes, um processador é controlado através de um sinal de clock em uma frequência constante f ou, de forma equivalente, por um tempo de ciclo constante (letra grega tau), onde: τ = 1 𝑓 . Exemplo de aplicação A partir da frequência de operação de um processador de 233 MHz, encontre o tempo de duração de cada ciclo. Resolução Utilizando a fórmula: τ = 1 𝑓’ , tem-se: τ = 1 2,29 x 10-9 233 x 106 segundos ou 4,29 nanossegundos (ns). É importante notar que nesse tipo de cálculo não devemos trabalhar com arredondamentos, pois, como os valores de tempo de resposta são muito pequenos, qualquer diferença ou arredondamento pode ocasionar um erro acumulativo durante a execução dos demais ciclos de clock. A tabela a seguir mostra alguns dos prefixos para valores na base decimal (base 10) e base binária (base 2), organizados pela International Electrotechnical Commission, e que são úteis na resolução dos exemplos e exercícios dados. Tabela 2 – Prefixo de valores e bases utilizados em computação Prefixo Símbolo Potência de 10 Potência de 2 Prefixo Símbolo Potência de 10 Potência de 2 Kilo K 1 mil = 103 210 = 1024 Mili m 1 milésimo = 10-3 2-10 Mega M 1 milhão = 106 220 Micro µ 1 milionésimo = 10-6 2-20 Giga G 1 bilhão = 109 230 Nano n 1 bilionésimo = 10-9 2-30 Tera T 1 trilhão = 1012 240 Pico p 1 trilionésimo = 10-12 2-40 Peta P 1 quadrilhão = 1015 250 Femto f 1 quadrilionésimo = 10-15 2-50 Exa E 1 quintilhão = 1018 260 Atto a 1 quintilionésimo = 10-18 2-60 Zetta Z 1 sextilhão = 1021 270 Zepto z 1 sextilionésimo = 10-21 2-70 Yotta Y 1 setilhão = 1024 280 Yocto y 1 setilionésimo = 10-24 2-80 Adaptada de: Null e Lobur (2010). Outro fator preponderante no cálculo da execução de instruções é a contagem de instruções, dada pela sigla IC. Pode-se também determinar outro parâmetro importante para a aferição do tempo total de execução de várias instruções em função da frequência do processador. Essa outra variável na equação corresponde à medida de CPI (Cycles per Instruction – ciclos por instrução). 59 ARQUITETURA DE COMPUTADORES MODERNOS Para instruções que exigem o mesmo número de ciclos de clock para serem executadas, a CPI será dada por um valor constante, de acordo com a frequência do processador. Dessa forma, é possível calcular o tempo total T necessário para a execução de um determinado programa, dado por: Exemplo de aplicação Qual será o tempo total de resposta para a execução de um determinado programa que possua 445 instruções (IC), 8 ciclos por instrução e uma frequência (f) de processamento de 1,33 GHz? Resolução T = Ic X CPI X τ, mas é importante lembrar que 1 f τ = , então: T = Ic X CPI X 1 f → T = 445 X 8 X, 1( (1,33x109 → T = 2,67 microssegundos (2,67 µs). Outra medida muito utilizada para calcular o desempenho de um processador é a taxa de execução, expressa em MIPS (Millions of Instructions per Second – milhões de instruções por segundo), dada por: 1CPI X 106 . Exemplo de aplicação Considere a execução de um programa contendo 900 instruções, executadas em um processador capaz de operar 4 ciclos por instrução a uma frequência de 1,33 GHz. Qual será a quantidade de MIPS para esses valores? Resolução Substituindo na fórmula: 1 CPI X 106 → 1,33x109 4x106 = 332,5 MIPS ou 332,5 milhões de instruções por segundo. Note que, apesar de no enunciado ter sido citada a quantidade de instruções, na fórmula utilizada esse dado não foi inserido na obtenção do resultado final. 2.3 A arquitetura da máquina de von Neumann 2.3.1 Fundamentos do computador IAS Atualmente a microarquitetura de um processador é bem aceita, mas no início da computação, principalmente durante as gerações dos computadores da década de 1940 e 1950, os computadores ainda não possuíam um padrão bem definido, sobretudo quanto aos componentes necessários para 60 Unidade I que seu funcionamento ocorresse de forma otimizada, pois naquela época não havia uma estruturação de quais componentes deveriam estar contidos em cada máquina para melhor tratar dados/instruções. Coube ao matemático húngaro (naturalizado americano posteriormente) John von Neumann (1903-1957), que trabalhava no Instituto de Estudos Avançados da Universidade de Princeton, nos Estados Unidos, realizar modificações no projeto do já famoso computador ENIAC, em 1946. As tarefas de processamento e armazenamento de dados no ENIAC eram extremamente enfadonhas. Von Neumann verificou que a programação poderia ser facilitada se o programa fosse representado de forma adequada para a realização do armazenamento na memória junto com os dados. Assim, um computador poderia obter suas instruções lendo-as diretamente da memória, e um programa poderia ser criado ou alterado através de endereços da memória, de forma que essa ideia ficou conhecida como conceito de “programa armazenado” (STALLINGS, 2010). A publicação do novo projeto de von Neumann ocorreu em 1945 e foi a base para a construção de um computador com uma nova proposta de arquitetura, o EDVAC (Electronic Discrete Variable Automatic Computer), finalizado em 1949. Após o término do projeto do EDVAC, von Neumann se dedicou à construção do seu novo computador, desenvolvido nos laboratórios do Instituto de Estudos Avançados de Princeton, cujo nome ficou conhecido como computador IAS (Institute of Advanced Studies). O IAS ficou pronto em 1952 e é conhecido como o protótipo para todos os computadores modernos de uso geral. A figura a seguir mostra como foi projetada a estrutura geral do computador IAS. Memória principal (M) Equipamento de E/S (E,S) Unidade lógica e aritmética (CA) Unidadede controle do programa (CC) Unidade central de processamento (CPU) Figura 44 – Estrutura simplificada de um computador IAS Fonte: Stallings (2010, p. 14). 61 ARQUITETURA DE COMPUTADORES MODERNOS A partir dessa máquina, von Neumann definiu que todos os computadores deveriam possuir as seguintes características: • Memória principal para armazenamento dos dados. • Unidade lógica e aritmética (ULA) para realizar operações em dados binários. • Unidade de controle (UC) para interpretar/executar todas as instruções da memória principal. • Dispositivos de entrada e saída (E/S) controlados pela UC. Segundo von Neumann, um computador precisa ser capaz de realizar as operações elementares da aritmética (adição, subtração, multiplicação e divisão), lembrando que nesse caso a aritmética adotada precisa ser a aritmética binária. Assim, é imprescindível que ele contenha as unidades especializadas em realizar essas tarefas. O controle lógico do dispositivo tem como função organizar a sequência apropriada de como as operações devem ser executadas (para que haja sincronismo). Von Neumann estabeleceu também que, para que os dispositivos possam executar operações em sequências longas e complicadas, se faz necessário o uso de uma memória que seja capaz de armazenar um volume grande de dados. Um computador deve ser capaz de estabelecer contato de entrada e saída com dispositivos internos/externos com a finalidade de ler/gravar dados. Como praticamente todos os computadores atuais possuem a mesma função e estrutura, eles também são conhecidos como máquinas de von Neumann. Um fator muito importante do computador de von Neumann é sua memória. No computador IAS a memória era constituída de 1.000 locais para armazenamento, chamados de palavras (words), contendo 40 dígitos binários (40 bits). Uma palavra pode ser definida como um conjunto ordenado de bytes no qual a informação pode ser armazenada, processada e transmitida dentro de um computador. Geralmente, um processador possui um conjunto de instruções de tamanho fixo, de forma que o tamanho da instrução será igual ao tamanho da palavra. Por exemplo, um computador de 64 bits processará palavras de 64 bits ou mesmo duas palavras de 32 bits. A figura 45a mostra a formatação desses dados, em que cada número é representado por um bit de sinal e um valor de 39 bits contendo a palavra. Já na figura 45b é possível observar a mesma palavra de 40 bits podendo ser subdividida em duas instruções de 20 bits cada. 62 Unidade I 390 1 Bit de sinal (a) Palavra de número Instrução esquerda Opcode OpcodeEndereço Endereço 0 8 20 28 39 Instrução direita (b) Palavra de instrução Figura 45 – Estrutura simplificada de um computador IAS Fonte: Stallings (2010, p. 15). Cada instrução/palavra subdividida em duas instruções de 20 bits será constituída de um opcode (código de operação) de 8 bits que especifica a operação realizada naquele momento, e um endereço de 12 bits que designa uma das palavras na memória, com valores numerados de 0 a 999. A máquina de von Neumann foi desenvolvida basicamente utilizando componentes de memória (registradores) que auxiliam em toda as tarefas da UC e da ULA. Saiba mais Conheça mais sobre a máquina de von Neumann: FREIBERGER, P. A. Von Neumann machine. Encyclopedia Britannica, 2022. Disponível em: https://bit.ly/3XnAoyH. Acesso em: 18 jan. 2023. 2.3.2 Histórico e a arquitetura Harvard A arquitetura Harvard teve seu início com o desenvolvimento do computador eletromecânico Mark III, em 1950. Esse computador possuía memórias diferentes para dados e instruções. 63 ARQUITETURA DE COMPUTADORES MODERNOS Figura 46 – Computador Mark III Disponível em: https://bit.ly/3Xujpec. Acesso em: 19 jan. 2023. A diferença básica entre a arquitetura de von Neumann e a desenvolvida na Universidade de Harvard é que, enquanto a de von Neumann utiliza o mesmo barramento para envio/recebimento de dados e instruções (o que pode ocasionar gargalos na execução de tarefas de busca), a arquitetura Harvard usa barramentos diferentes. Como a arquitetura Harvard é capaz tanto de ler instruções ou dados ao mesmo tempo, há um grande benefício para a utilização de processamento paralelo como o pipeline, o que aumenta a velocidade de execução das aplicações. 2.4 Como os registradores de um computador são organizados Os registradores são pequenos dispositivos de memória fabricados dentro do processador, constituídos basicamente de portas lógicas e que fornecem armazenamento temporário para dados/instruções na CPU. Os registradores estão no topo da hierarquia da memória, pois são mais rápidos, ou seja, possuem maior velocidade de transferência de dados/instruções para dentro ou fora do processador. Apesar disso, os registradores possuem uma capacidade de armazenamento menor, se comparada a outras memórias internas, além de possuírem custo mais elevado em relação a outras memórias. Os registradores geralmente são classificados de acordo com sua funcionalidade em: registradores de propósito geral e registradores de controle e estado (STALLINGS, 2010). 64 Unidade I 2.4.1 A linguagem de baixo nível e os registradores de propósito geral ou visíveis ao usuário Os registradores de propósito geral possibilitam que o desenvolvedor de linguagem de baixo nível (linguagem de máquina), como assembly, realize referências diretamente à memória principal (RAM). Esses registradores podem ser subdivididos, ainda, como: de uso geral, dados, endereços e códigos condicionais. Os registradores de uso geral são atribuídos a uma variedade de funções de acordo com a necessidade do programador em nível de máquina. Essa categoria de registradores pode conter um operando para realizar qualquer operação, por exemplo operações de ponto flutuante (tipo de representação de números utilizada em computadores) ou operações que envolvam processo de pilhas. Em algumas situações, os registradores de uso geral também podem ser utilizados para funções de endereçamento ou dados. Como registradores de dados, eles podem ser utilizados somente para guardar dados temporários, e não podem ser empregados para o cálculo do endereço de um operando. Como registradores de endereços, eles podem se dedicar exclusivamente ao modo de endereçamento de ponteiros de segmento, quando o endereço não está somente em um lugar exclusivo, mas sim segmentado. Podem se comportar como registradores de índice para indexar endereços ou como ponteiros de pilha, caso exista a necessidade de empilhamento de endereços. 2.4.2 Registradores de controle e estado Os registradores de controle e estado são usados no funcionamento do processador e, diferentemente dos “visíveis” ao usuário (aptos a serem programados por qualquer usuário que tenha conhecimento de linguagem de baixo nível), eles estão ocultos para programação, ficando apenas disponíveis para o acesso direto do sistema operacional. Esses registradores são organizados da seguinte forma: • MBR (Memory Buffer Register – registrador de buffer de memória): é o registrador que recebe uma ou várias palavras que serão armazenadas na memória ou enviadas para alguma unidade de E/S. Pode-se entender a palavra também como algum dado a ser processado pelo computador que ficará temporariamente armazenado aguardando instruções, ou uma palavra pode ser interpretada como o resultado do processamento e seu próximo passo será o envio para memória principal e unidades de E/S. • IR (Instruction Register – registrador de instrução): é o registrador que contém um código de operação (opcode) que está em execução. • IBR (Instruction Buffer Register – registrador de buffer de instrução): é utilizado para armazenar temporariamente a próxima instrução a ser executada (depois que for executada a instrução contida no IR). • MAR (Memory Address Register – registrador de endereço de memória): é o registrador que especifica o endereço na memória principal a ser lido/escrito. • PC (Program Counter – registrador contador de programa):é o registrador que contém o endereço para busca de um par de instruções contidas na memória principal. 65 ARQUITETURA DE COMPUTADORES MODERNOS Além dos registradores de controle e estado, a máquina de von Neumann possui os registradores acumulador (AC) e multiplicador (MQ), que são empregados para manter temporariamente os operandos (que especificam os dados a serem modificados) e resultados de operações da ULA. A figura a seguir mostra uma estrutura detalhada envolvendo todos os registradores do IAS, assim como o processador constituído pela ULA e UC e as comunicações via barramento de dados/instruções conectando a memória principal e seus endereçamentos e algum equipamento de entrada e saída E/S. Equipamento de entrada-saída (E, S) M (0) MBR PC MAR IR Circuitos de controle Sinais de controle Instruções e dados Instruções e dados AC: registrador acumulador MQ: registrador de quociente-multiplicador MBR: registrador de buffer de memória IBR: registrador de buffer de instrução PC: contador de programa MAR: registrador de endereço de memória IR: registrador de instrução Unidade de controle do programa (CC) Endereços IBR AC Unidade lógica e aritmética (CA) Unidade central de processamento (CPU) MQ Circuitos lógico-aritméticos M (1) M (2) M (3) M (4) Memória principal (M) M (4092) M (4093) M (4095) Figura 47 – Diagrama da estrutura expandida da máquina de Von Neumann (IAS) Fonte: Stallings (2010, p. 10). A máquina de von Neumann realiza repetidamente um ciclo de instrução, em que cada ciclo consiste em dois subciclos. Durante o primeiro ciclo (ciclo de busca de instrução ou fetch cycle), o código de operação (opcode) da próxima operação é carregado no registrador de instrução (IR) e parte do endereço é carregada no registrador de endereço de memória (MAR). A instrução então poderá ser retirada do IBR ou recebida da memória principal carregando-se uma palavra no MBR e, na sequência, para IBR, IR e MAR. 66 Unidade I O computador IAS possuía um total de 21 instruções agrupadas como segue: • Transferência de dados: são instruções de movimentação de dados entre a memória e os registradores da ULA ou mesmo entre dois registradores diretamente para a ULA. • Desvio incondicional: são instruções que podem modificar a sequência de execução das instruções para facilitar a execução de operações repetitivas. • Desvio condicional: são instruções que podem se tornar dependentes de uma condição do programa, permitindo que ele possua pontos de decisão. • Aritméticas: são instruções realizadas pela ULA consistindo em operações binárias de adição, subtração, multiplicação e divisão. • Modificação de endereço: são instruções que permitem que os endereços sejam calculados na ULA e inseridos em instruções armazenadas na memória, permitindo uma flexibilidade para realização do endereçamento. Não são todos os processadores que possuem registradores designados para tarefas específicas como o MAR e o MBR, porém é necessário que haja algum mecanismo de armazenamento temporário (buffer). Geralmente, o processador atualiza o registrador program counter (PC) após ler cada instrução para que o PC sempre possa apontar para as próximas instruções a serem executadas. Uma instrução de desvio condicional ou incondicional também modificará o conteúdo do registrador PC, de forma que a instrução é lida e colocada no registrador IR, em que o opcode será analisado. Os dados são transferidos entre a memória e os registradores MAR e MBR através do barramento interno do processador. Existem diversos fluxos para execução dos dados na máquina de von Neumann, a qual é realizada por registradores contidos na ULA e na UC assim como pelos diversos barramentos que conectam esses dispositivos. Por exemplo, um banco de registradores genéricos recebe os valores A e B para realização da operação aritmética de adição na ULA. A ULA efetuará a operação nessas entradas, produzindo um resultado no registrador de saída que é armazenado em um outro registrador e que pode, na sequência, ser armazenado na memória principal, a fim de ser enviado para algum dispositivo de E/S. A figura a seguir mostra uma operação de adição de dois valores. 67 ARQUITETURA DE COMPUTADORES MODERNOS A + B A B A ULA B Registrador de saída da ULA Barramento de entrada da ULA Registrador de entrada da ULA Banco de registradores A + B Figura 48 – Fluxo de execução de instruções no processador da máquina de von Neumann Fonte: Tanenbaum e Austin (2013, p. 44). 2.4.3 Passo a passo da organização de registradores nos processadores modernos Muitos modelos de processadores podem incluir um conjunto de registradores conhecidos como PSW (Program Status Word – palavra de estado do programa), que contém as informações de códigos condicionais ou informação de estado ou flags (sinalizadores), como: • Sinais: bits resultantes da última operação aritmética realizada. • Zero: quando o resultado da operação for igual a zero. • Carry: quando uma operação resulta em um transporte (adição) para empréstimo (subtração) de um bit de ordem superior. Também é utilizado em operações aritméticas para operações com múltiplas palavras. • Igual: utilizado para realizar uma comparação lógica de igualdade. • Overflow: usado para indicar uma sobrecarga aritmética. • Habilitar/desabilitar interrupções: aplicado para habilitar ou desabilitar interrupções. • Supervisor: utilizado na identificação do uso do processador em modo supervisor ou modo de usuário. 68 Unidade I Além desses registradores, vários outros são utilizados na organização dos registradores de controle e estado de um processador e variam de acordo com o modelo. Por exemplo, um ponteiro para um bloco de memória contendo informações adicionais sobre algum processo. Outros modelos de processadores podem utilizar máquinas baseadas em interrupções vetorizadas, fazendo-se necessário o uso de um registrador que atenda a esse tipo de requisição de endereçamento. Em outros processadores, se faz necessário o uso de registradores do tipo pilha, quando é preciso realizar chamadas de sub-rotinas que estão em um topo da pilha. Há também registradores usados como ponteiros de tabela de páginas da memória virtual, além dos registradores utilizados para operações de E/S. Em um projeto de processadores, existe uma série de fatores que influenciam na inclusão (ou não) de certos registradores de controle e estado. Uma das questões relacionadas a esse projeto remete ao sistema operacional. Geralmente, um projetista de sistema operacional deve ter o conhecimento funcional dos registradores para que eles possam funcionar de modo a otimizar a conexão entre o hardware e o software, tornando essa interação fluida. Outra questão fundamental do projeto dos registradores é referente à alocação de informações e comunicação entre registradores e a memória. Em geral, se dedicam a algumas centenas ou milhares de palavras de memória e controle, e o projetista de hardware deve decidir quanto da informação será armazenada nos registradores e quanto da informação ficará na memória cache ou memória RAM. Alguns processadores de 16 ou 32 bits são baseados nessa arquitetura de organização de registradores e servem de exemplo o Motorola MC68000, o Intel 8086 e o Pentium 4 (STALLINGS, 2010). O MC68000, por exemplo, possui registradores de 32 bits que são divididos em 8 registradores para manipulação de dados e 9 registradores de endereços indexados. Por possuir registradores de 32 bits, nesse tipo de processador há uma facilidade de realizar operações de dados de 8, 16 ou 32 bits determinadas pelo código da operação realizada. Dada a capacidade de 32 bits dos registradores de endereços, não há a necessidade de segmentação de endereçamento; além disso, dois desses 9 registradores podem ser utilizados como ponteiros de pilha. Outros registradores possuem funcionalidades bem conhecidas, como para uso do sistema operacional, contador de programa, controle e estadoe registradores para uso do próprio usuário. A parte (a) da figura a seguir mostra a organização dos registradores do MC68000. 69 ARQUITETURA DE COMPUTADORES MODERNOS DO D1 D2 D4 D3 D6 D5 D7 A0 A1 A2 A4 A3 A6 A5 A7 AX BX CX DX SP BP SI DI Acumulador Base Contador Dados AX BX CX DX Ponteiro de pilha Ponteiro de base Índice de origem Índice de destino SP BP SI DI Código Segmento Dados Pilha Extra CS DS SS ES Flags Estado de programa Ponteiro de instruçãoContador de programa Estado de programa Registrador de estado EAX EBX ECX EDX ESP EBP ESI EDI Ponteiros e índices Registrador FLAGS Ponteiro da instrução Estado do programa Registradores gerais Registradores gerais Registrador de endereços Registrador de dados a) MC68000 b) 8086 c) 80386 Figura 49 – Exemplo de organização de registradores em processadores Fonte: Stallings (2010, p. 361). Na parte (c) da figura anterior, pode-se observar a organização dos registradores do processador 80386, que possui registradores de 32 bits constituídos pelos registradores de uso geral AX, BX, CX e DX, além dos de controle SP, BP, SI e DI e de estado (registrador de flags e ponteiro de instruções). Observação O processador 8086, primeiro processador de 16 bits fabricado pela Intel, utiliza uma abordagem diferente na organização de seus registradores, pois cada registrador possui um uso específico. Alguns registradores podem ser utilizados para operarem como de uso geral, enquanto outros podem ser usados para realizar endereçamento ou armazenamento de dados e instruções, além de registradores de 16 bits para atuarem como índices e ponteiros. Além desses, o 8086 (figura 49b) possui quatro registradores de segmento de instruções, como para realização de desvio, segmento de dados e segmento de pilha. O uso de um processador de 32 bits também permite a compatibilidade de programas escritos para arquiteturas de 8 ou 16 bits, o que possibilitou aos projetistas maior flexibilidade ao projetar a organização dos registradores. 70 Unidade I 2.5 Processador Intel x86 e sua evolução A arquitetura x86 teve sua origem no processador de apenas 4 bits Intel 4004, fabricado em larga escala a partir de 1971 com o intuito de disputar uma fatia da crescente indústria japonesa de eletrônicos. Esse processador apresentava como característica um chip do tipo dual in-line package (DYP), com circuitos eletrônicos (transistor) totalmente integrados. Figura 50 – Processador Intel 4004 Disponível em: https://bit.ly/3Xpgxir. Acesso em: 19 jan. 2023. Após o sucesso do lançamento do 4004, a Intel desenvolveu melhorias na sua linha de processadores, e lançou, em 1972, um processador de 8 bits para dados e 16 bits para palavras, denominado Intel 8008. Esse processador possuía surpreendentes 500 kHz de frequência clock. Figura 51 – Processador Intel 8008 Disponível em: https://bit.ly/3wdtoZ1. Acesso em: 19 jan. 2023. 71 ARQUITETURA DE COMPUTADORES MODERNOS A Intel continuou a evoluir em sua linha de processadores e lançou em 1974 o primeiro processador de uso geral do mundo, o 8080. Esse processador possuía sete registradores de uso geral e capacidade de endereçamento de memória de 64 kB, além de um clock de 2 MHz, que foram utilizados no computador da Xerox, o Altair, um sucesso de vendas na época com cerca de 25 mil unidades. Figura 52 – Processador Intel 8080 Disponível em: https://bit.ly/40kYWdx. Acesso em: 19 jan. 2023. A evolução do 8080 foi o processador Intel 8086, o precursor da arquitetura x86. O 8086 foi tão importante que até os dias atuais ainda serve de base para os processadores modernos. Ele era um circuito muito poderoso para época (1978) e operava a 16 bits, tanto para dados quanto para palavras, além da possibilidade de endereçamento de 1 Mb de posições, direcionados em um caminho para dados (barramento) de 20 bits. Figura 53 – Processador Intel 8086 Disponível em: https://bit.ly/3QQsTh3. Acesso em: 19 jan. 2023. 72 Unidade I O 8086 possuía uma estrutura simples, o que facilitava sua programação em linguagem de montagem (assembly). Internamente, o Intel 8086 é dividido em duas unidades: unidade de execução e unidade de interface com o barramento (PANNAIN; BEHRENS; PIVA JR., 2012): • EU (Execution Unit – unidade de execução): a unidade de execução (EU) está situada na ULA e é responsável pela execução das operações lógicas e aritméticas e das instruções de máquina. • BIU (Bus Interface Unit – unidade de interface com o barramento): é a unidade responsável pela comunicação de dados entre a ULA e os meios externos, como memória e dispositivos de E/S. Também é responsável pela transmissão de sinais de endereçamento, dados, controle e busca de instruções. A figura 54 mostra a arquitetura do processador 8086 e seus registradores operacionais. ES SS CS IP DS Operando Indireto AX DX BX SP CX BP SI DI TMP A TMP B TMP C FLAG Sequenciador Unidade de interface com barramento Barramento A Unidade de execução Barramento C Somador ALU Q6 Q3 Q5 Q2 Q4 Q1 Figura 54 – Organização básica do processador Intel 8086 Fonte: Pannain, Behrens e Piva Jr. (2019, p. 243). Os registradores do Intel 8086 estão divididos em registradores de propósito geral e registradores específicos ou de estado e controle. Os específicos geralmente são utilizados como segmentadores, apontadores e índices de endereçamento, além de sinalizadores de estado e controle (flags). O 8086 73 ARQUITETURA DE COMPUTADORES MODERNOS possuía quatro registradores de propósito geral de 16 bits, que também podiam operar a 8 bits (AX, BX, CX e DX), utilizados para operações lógicas e aritméticas: • Registrador AX (acumulador): utilizado em operações lógicas e aritméticas, para instruções de E/S e em instruções de operações de ajuste BCD (binary coded decimal – codificação binária decimal). • Registrador BX (base): usado como registrador base para referenciação a posições da memória principal, ou seja, é capaz de armazenar o endereço base de uma tabela ou vetor de dados, onde as posições são obtidas adicionando-se um valor de deslocamento (offset). • Registrador CX (contador): aplicado em operações iterativas e repetitivas para contagem de bits, bytes ou palavras, sendo incrementado ou decrementado quando necessário. • Registrador DX (dados): utilizado em operações para armazenamento de parte de um produto de 32 bits ou em operações também de 32 bits para armazenar o resto de uma operação de divisão. Os registradores específicos ou de controle e estado podem ser classificados em: segmento de código, segmento de dados, segmento de pilha e segmento extra (também utilizado para dados). Todos esses registradores são de 16 bits e são utilizados para trabalhar com blocos de memória de 64 kB: • Registrador de segmento de código (code segment – CS): usado para apontar para uma área de memória que contém o código do programa que está sendo executado. • Registrador de segmento de dados (data segment – DS): usado para apontar para um segmento de memória que será utilizada no armazenamento de dados do programa em execução. • Registrador de segmento de pilha (stack segment – SS): aplicado na identificação do segmento que será utilizado como pilha (stack), com o objetivo de armazenar os dados temporários do programa em execução. • Registrador de segmento extra de dados (extra segment – ES): utilizado para determinar um segmento extra de dados, como no armazenamento e acesso da memória de vídeo. Observação O endereçamento no Intel 8086 pode apresentar algumas diferenças no armazenamento de dados na memória principal ou em uma pilha de registradores. Em cada situação, serão separados os segmentos ativos endereçáveis para alocar os 64 Kbytes. Os segmentos ativos estão dispostos como: segmento de código endereçado por CS, segmento de dados endereçado por DS, segmento de pilha endereçado por SS e segmento extra de dados endereçados por ES. Os registradores citados anteriormente (CS, DS, SSe ES) armazenam o endereço base de seu 74 Unidade I segmento; então, há uma necessidade de haver outros registradores para armazenar o deslocamento (offset) dentro de um dado segmentado, como mostra o esquema da figura 55. Registro de segmento 64 KBYTES Deslocamento (OFFSET) Figura 55 – Segmento de endereço base e deslocamento Fonte: Pannain, Behrens e Piva Jr. (2019, p. 246). O processador Intel 8086 possui outros registradores auxiliares, todos de 16 bits, listados a seguir: • Registrador IP (Instruction Pointer): é considerado o program counter (PC) do 8086 e é utilizado em conjunto com o registrador CS para localizar uma posição, em um segmento de código em operação, da próxima instrução que será executada. Esse segmento será automaticamente incrementado em função do número de bytes da instrução após a operação de busca dessa instrução. • Registrador SP (Stack Pointer): usado em conjunto com o registrador SS no acesso à área de pilha contida na memória principal, apontando sempre para o topo da pilha. • Registrador BP (Base Pointer): utilizado no acesso ao conjunto de dados que está dentro do segmento de pilha, como um vetor de dados. • Registrador SI (Source Index): usado como registrador de índice em modos de endereçamento indireto, em conjunto com o registrador DS. • Registrador DI (Destination Index): atua em conjunto com ES, quando utilizado em instruções de manipulação de string ou com DS em acesso a vetores armazenados no segmento de dados. • Registrador de sinalizadores (flags): é um registrador de 16 bits que tem como função indicar um estado do processador após a execução de uma instrução. Após o lançamento do 8086, a Intel continuou a desenvolver processadores mais robustos e versáteis, como o utilizado mundialmente 80286 (figura a seguir), capaz realizar um endereçamento de memória de 16 MB e com 6 MHz de frequência de clock. 75 ARQUITETURA DE COMPUTADORES MODERNOS Figura 56 – Processador Intel 80286 Disponível em: https://bit.ly/3GVNJar. Acesso em: 19 jan. 2023. Em seguida, em 1985, a Intel lançou seu primeiro processador multitarefa (multitask) de 32 bits, denominado 80386 (figura a seguir), capaz de executar milhares de tarefas de forma simultânea. Esse processador teve uma aceitação muito grande entre o público e foi muito usado em minicomputadores e mainframes. Figura 57 – Processador Intel 80386 Disponível em: https://bit.ly/3QSP1Yr. Acesso em: 19 jan. 2023. A Intel continuou a aperfeiçoar seus processadores, sempre desenvolvendo novas tecnologias no que diz respeito à miniaturização dos componentes embutidos e, em 1989, lançou o 80486 (figura a seguir). Esse processador possuía um poder de processamento de 25 MHz de frequência de clock, mais do que o dobro da capacidade do anterior 80386, que tinha apenas 12 MHz de clock. O 80486 oferecia um coprocessador matemático interno, auxiliando a CPU na realização das tarefas matemáticas complexas. PCs baseados no uso desse processador popularizaram o uso dos computadores na indústria, comércios e, principalmente, em seu uso nas residências para a diversão de crianças, jovens e adultos. 76 Unidade I Figura 58 – Processador Intel 80486 Disponível em: https://bit.ly/3HhBJBx. Acesso em: 19 jan. 2023. Apesar de a família de processadores da Intel possuir essa codificação utilizando o 86 em sua numeração, e ainda que sua arquitetura básica continuasse baseada no x86, em 1993 foi lançado o Pentium (figura a seguir), baseado em um poder de processamento de 66 MHz. Figura 59 – Processador Intel Pentium Disponível em: https://bit.ly/3XJMr96. Acesso em: 19 jan. 2023. Observação Esse processador foi um grande avanço nas arquiteturas da Intel, pois se baseava em técnicas superescalares, que permitiam que múltiplas instruções fossem executadas em paralelo. 77 ARQUITETURA DE COMPUTADORES MODERNOS A sequência de lançamentos da Intel ocorreu através do lançamento do Pentium II (1997), baseado na tecnologia MMX, projetada para processamento eficaz de áudio e vídeo e poder de processamento de 233 MHz de clock. Figura 60 – Processador Intel Pentium II Disponível em: https://bit.ly/3QQVh2I. Acesso em: 19 jan. 2023. Fabricado em 1999 e com uma frequência de clock de 450 MHz, o Pentium III incorpora melhorias nas operações em ponto flutuante, melhorando seu desempenho em gráficos 3D. Figura 61 – Processador Intel Pentium III Disponível em: https://bit.ly/3CZsELc. Acesso em: 19 jan. 2023. A sétima geração de processadores da Intel iniciou-se com o lançamento do Pentium 4 em de 2000, e foi um dos maiores sucessos tecnológicos e de vendas da empresa. O Pentium 4 possuía surpreendentes 1,3 GHz de clock, melhorias de desempenho em processos gráficos e de multimídia, além do alto desempenho para operações de ponto flutuante. 78 Unidade I Figura 62 – Processador Intel Pentium 4 Disponível em: https://bit.ly/3iNVTcL. Acesso em: 19 jan. 2023. Observação Ponto flutuante (ou virgula flutuante, dependendo do país em que essa notação for empregada) é uma forma de representar números muito grandes ou muito pequenos, contendo muitos dígitos à esquerda ou à direita da vírgula, de forma mais simplificada, utilizando uma mantissa e um número inteiro positivo ou negativo, chamado expoente. Por exemplo, em vez de escrevermos o número 0,00000000765, podemos representá-lo como 7,65x10-9. Antes ainda do lançamento das famílias i3, i5, i7 e i9 em 2009 e que ainda estão em utilização, a Intel lançou em 2006 o Intel Core e o Intel Core 2. Esses processadores foram os primeiros com arquitetura de 64 bits e núcleo de quatro processadores em um único chip. Saiba mais Para conhecer um pouco mais sobre a evolução dos processadores da Intel e sua arquitetura interna, leia: JORDÃO, F. Tabela de processadores Intel. TecMundo, 2013. Disponível em: https://bit.ly/3GPuTBG. Acesso em: 18 jan. 2023. 79 ARQUITETURA DE COMPUTADORES MODERNOS 3 MEMÓRIAS E SUA HIERARQUIA: MEMÓRIAS PRIMÁRIAS E MEMÓRIAS SECUNDÁRIAS 3.1 Principais características das memórias Uma memória é um componente pertencente a um sistema eletrônico, que possui como principal função o armazenamento de dados/instruções que foram manipuladas por um sistema computacional (MONTEIRO, 2019). A figura a seguir mostra, em um esquema conceitual, uma memória fictícia simbolizada por um depósito para ser utilizada por uma ou mais entidades, como ocorre com um armário que possui várias gavetas contendo pastas em seu interior. Por causa do tipo de organização computacional atual, as memórias devem ser interligadas e integradas. Armazenar (escrita) Cada caixa tem um endereço Leitura (recuperar) 101 102 103 104 108107106105 109 110 111 112 116115114113 Figura 63 – Arquivo organizador para o armazenamento de pastas Fonte: Monteiro (2019, p. 79). Lembrete Devido à otimização na organização dos dados nos sistemas computacionais atuais, não é possível a utilização de somente um tipo (físico) de memória, mas sim de um conjunto de memórias interligadas e integradas, com diversas velocidades e capacidades de armazenamento. As memórias do tipo primárias são memórias que os processadores acessam para realizar a “leitura” ou “escrita” dos dados/instruções de forma rápida (TANENBAUM; AUSTIN, 2013). Esse tipo de memória possui como característica uma capacidade de armazenamento pequeno (se comparada às memórias secundárias), geralmente contendo algumas centenas de dezenas de bits até no máximo poucos megabits. Já as memórias secundárias, também conhecidas como memórias auxiliares, são memórias não voláteis e se posicionam externamente à placa-mãe do computador. Elas são utilizadas para o armazenamento auxiliar de dados e programas em grandes volumes de bytes (STALLINGS, 2010). 80 Unidade I São consideradas memória primárias de um computador os seguintes dispositivos: memória cache, memória ROM (Read Only Memory – memória somente de leitura) e memória RAM (Random Access Memory – memória de acesso aleatório).Um dispositivo de memória deve ser capaz de armazenar no mínimo um dos dois estados fundamentais, os bits 0 ou 1. O modo pelo qual o bit é identificado na memória pode variar, como em discos rígidos (HD – Hard Disks) por meio de um campo magnético, presença ou ausência de uma marca óptica (CDs, DVDs, blu-rays etc.) ou mais comumente por um sinal elétrico (memória RAM, ROM, cache, registradores), esquematizado na figura a seguir: + V ø V - V Bit ø Bit 1 Bit ø Bit 1 Bit ø Figura 64 – Representação de bits em sinais elétricos Fonte: Monteiro (2019, p. 82). Um bit pode indicar dois valores distintos (+5v ou -5V), que podem ser usados para o armazenamento dos dados de forma simbólica, como o alfabeto. O alfabeto em língua portuguesa contém 26 letras minúsculas (incluindo as letras k, w, x, y), 26 letras minúsculas, 4 símbolos matemáticos (+, -, *, /) e 8 sinais de pontuação (. ; : , ( ) – “). Apenas nesse exemplo simples foi possível criar 64 possibilidades de representação de informações que necessitariam ser distinguidas internamente por um computador, utilizando apenas dois bits para tal tarefa. Uma das possíveis soluções para esse problema de codificação é definir um código com 64 elementos, com cada elemento contendo 6 bits. Além da codificação, os sistemas de memória podem ser compreendidos de acordo com algumas classificações, como (STALLINGS, 2010): • Localização: indica se a memória utilizada é interna ou externa ao computador. • Capacidade: a memória deve ser fabricada para suportar a leitura/escrita em bytes (8 bits) de acordo com o tamanho da palavra em sistemas que compreendem 8, 16, 32 e 64 bits. • Unidade de transferência: é constituída pelo número de linhas elétricas (barramento) para dentro ou fora do módulo de memória em operação, que podem ser lidas ou escritas de uma só vez. Em se tratando de memórias externas, os dados transferidos seguem ao seu destino em unidades maiores, como os blocos, que possuem centenas de palavras. • Palavra: é a unidade básica de organização da memória, que possui um tamanho igual ao número de bits utilizados para representar o tamanho de uma instrução. A arquitetura x86, por exemplo, possui grande variedade de tamanhos de instruções, expressos como múltiplos de bytes. • Unidades endereçáveis: a unidade endereçável é constituída pela palavra, que possui uma relação entre o tamanho em bits A de um endereço e o número N de unidades endereçáveis como 2A = N. 81 ARQUITETURA DE COMPUTADORES MODERNOS 3.1.1 Como acontece o acesso à memória Mais alguns parâmetros associados às memórias dizem respeito a como se realiza o acesso para leitura/escrita dos dados e instruções, subdivididos em: • Acesso sequencial: as memórias estão organizadas em unidades chamadas registros. O acesso em algumas memórias é realizado em uma sequência linear específica, assim a informação de endereçamento é utilizada no auxílio de separação de registros e no processo de recuperação de dados armazenados. Unidades de memória de fita magnética são o exemplo mais comum para o acesso sequencial. Figura 65 – Rolo de fita magnética Disponível em: https://bit.ly/3DWUk3R. Acesso em: 19 jan. 2023. • Acesso direto: de forma semelhante ao sequencial, esse acesso geralmente envolve um esquema compartilhado para realizar a leitura/escrita. Nesse tipo de acesso, os registros individuais ou blocos de registros possuem um endereço exclusivo em algum local físico da memória. Para que seja possível o acesso direto, primeiramente é necessário alcançar uma vizinhança geral ao endereço, depois uma busca sequencial, uma contagem ou espera até que o local desejado seja alcançado. O tempo de acesso para esse tipo de sistema pode ser variável, pois depende de alguns fatores, como as rotações por minuto (RPM). Os discos rígidos magnéticos, como o da figura a seguir, são um exemplo de acesso direto à memória. 82 Unidade I Figura 66 – Disco rígido magnético Disponível em: https://bit.ly/3kp0O4q. Acesso em: 19 jan. 2023. • Acesso aleatório: nessa categoria de acesso à memória, cada local endereçável possuirá um sistema de endereçamento exclusivo, fisicamente interligado. O tempo necessário para o acesso à memória de forma aleatória é independente da sequência de acessos anteriores, dessa forma, qualquer local desejado poderá ser selecionado de forma aleatória (randômica) e, também, endereçado e acessado de forma direta. A memória principal do computador (memória RAM), como mostrado na figura seguinte, é o principal exemplo de utilização do acesso aleatório à memória. Figura 67 – Memória de acesso aleatório RAM Disponível em: https://bit.ly/3JuGKbo. Acesso em: 19 jan. 2023. 83 ARQUITETURA DE COMPUTADORES MODERNOS • Acesso associativo: variação do acesso aleatório, porém nesse tipo de endereçamento uma palavra será recuperada da memória baseada em um pedaço de seu conteúdo, em vez do seu endereço. Assim, como no acesso aleatório, cada endereço terá seu modo de endereçamento, com um tempo de recuperação constante, independentemente do padrão de acesso anterior. Memórias cache, como as da próxima figura, representam esse tipo de acesso. Figura 68 – Memórias cache externas à CPU Disponível em: https://bit.ly/3D1C8W5. Acesso em: 19 jan. 2023. Outras características também são importantes no que diz respeito ao desempenho de um sistema de memória, como a capacidade da memória e sua velocidade. Para que o desempenho seja avaliado, três parâmetros devem ser considerados, como segue: • Latência ou tempo de acesso à memória: é o tempo gasto para que seja realizada uma operação de leitura/escrita. Esse tempo será contado desde que o endereço seja apresentado à memória até o momento em que os dados forem armazenados ou se tornarem disponíveis para serem utilizados. • Tempo de ciclo de memória: consiste no tempo para um acesso aleatório mais um tempo adicional antes do início de um segundo acesso. • Taxa de transferência: consiste na taxa onde dados podem ser transferidos externa ou internamente da unidade de memória. No caso de um acesso aleatório à memória, esse valor será igual a 1 sobre o tempo de ciclo, ou seja, 1 τ . Em situações em que o acesso não seja do tipo aleatório, a seguinte relação é utilizada: n RTN = TA+ onde TN = tempo médio para ler/escrever N bits, TA = tempo de acesso médio à memória, n é o número de bits e R a taxa de transferência em bps (bits por segundo). 84 Unidade I 3.1.2 Entendendo os endereços de memória As memórias são organizadas em células unitárias onde é possível armazenar uma informação em forma de bit. Cada célula unitária possui um número que determina seu endereço, onde os programas podem ser referenciados durante a operação de leitura/escrita. Todas as células de memória têm o mesmo número de bits, assim, se uma célula possuir k bits, ela poderá conter qualquer um dos 2K diferentes tipos de combinações de bits. E se a memória possuir n células, seu endereçamento será de 0 a n − 1. A figura a seguir mostra três modos de organização de uma memória de 96 bits, em que as células adjacentes possuem endereços consecutivos. Todos os computadores atuais expressam o endereçamento de memória, como números binários, mesmo aqueles que também trabalham com as bases octal ou hexadecimal. De modo que se um endereço contiver m bits, o número máximo de células que poderão ser endereçáveis é de 2m. 11 10 9 8 7 7 6 6 5 5 5 4 4 4 3 3 3 2 2 2 1 1 1 0 Endereço Endereço Endereço 1 célula 0 0 8 bits (a) 12 bits (b) 16 bits (c) Figura 69 – Célula de endereçamento de 8 bits (A), célula de endereçamento de 12 bits (B), e célula de endereçamento de 16 bits (C) Fonte: Monteiro (2019, p. 107). 3.1.3 Projeto de hierarquia de memória Em um projeto de desenvolvimento de memórias há três questões que devem ser levadas em consideração em sua fabricação: qual o seu custo, qual sua capacidade e qual a sua velocidade. Respondendo a essas questões, no que diz respeito à capacidade de armazenamento, as memóriasdevem possuir a maior (capacidade) possível, deixando livre para o uso de aplicações que necessitem de mais espaço. Em relação à velocidade, certamente que um maior desempenho é desejável para que o processador possa, em tempo síncrono, enviar e receber informações oriundas da memória, ou seja, é desejável que tanto o processador quanto a memória possuam a mesma velocidade de operação. Em relação ao custo, ela não deve ser demasiadamente cara em relação a outros dispositivos do computador. Além disso, a relação de custo de uma memória deve conter outras características, como: 85 ARQUITETURA DE COMPUTADORES MODERNOS • tempo de acesso rápido envolverá um custo maior por bit; • quanto maior a capacidade de armazenamento, menor será o custo por bit; • quanto maior a capacidade, mais lento será o tempo de acesso à memória. Ao se projetar um sistema de memória, é necessário atender aos requisitos de desempenho, se atentando para o custo por bit e a capacidade de armazenamento, além de buscar uma melhora no desempenho com tempos menores de acesso. Em um projeto de computador é necessário levar em conta não apenas um dispositivo de memória que fará parte do projeto, mas emprego de uma hierarquia de memória, em que é possível estabelecer o tempo médio de acesso de vários tipos de memória, como demonstra a figura: Mais caro Tempos de acesso 1ns 2ns 3ns 10ns 25ns 50ns 30ns 90ns 5ms 20ms 100ms 50s 10s 3m Mais barato Fita magnética (bibliotecas robotizadas) Discos óticos (vitrolas automáticas) Disco rígido fixo Memória principal Cache nível 2 Cache nível 1 Registradores Lin ha pr óxi maCo ne cta doSi ste ma De sco ne cta do Figura 70 – Pirâmide estrutural da hierarquia de memória Fonte: Null e Lobur (2010, p. 313). A relação de descendência na hierarquia de memória segue os seguintes critérios: • Diminuição do custo por bit, quanto menor for o nível na hierarquia. • Aumento na capacidade de armazenamento, quanto menor for o nível na hierarquia. • Aumento no tempo para acesso à memória, quanto menor for o nível na hierarquia. • Aumento ou diminuição da frequência de acesso às memórias, de acordo com o nível de hierarquia. 86 Unidade I Como observado, no topo da hierarquia de memória estão os registradores (MBR, IR, MAR, PC, AC etc.) do processador que, embora mais rápidos (por volta de 1 a 2 nanossegundos), são os mais caros e têm menor capacidade de armazenamento. Memórias caches L1, L2 e L3, internas ao processador, possuem tempo de acesso estimado de 3 a 50 nanossegundos, respectivamente. A memória principal do computador (RAM) tem um tempo de acesso médio de 90 nanossegundos e capacidade de armazenamento que pode chegar a 32 gigabytes em um único pente de memória. Descendo mais no nível de hierarquia, os discos rígidos magnéticos, muito utilizados em computadores pessoais, têm capacidade de armazenamento mediano (1 a 10 terabytes) a um custo de tempo de acesso na faixa dos milissegundos. Discos ópticos e fitas magnéticas, geralmente utilizadas para realizar backup em empresas, estão na base da hierarquia de memória e têm tempo de acesso que pode levar segundos ou mesmo minutos, com a grande vantagem de serem as memórias com menor custo financeiro atualmente. Como os registradores já foram abordados especificamente anteriormente, agora é necessário estudar com detalhes a memória cache. 3.2 Memória cache A memória cache tem o objetivo de obter desempenho similar ao de memórias mais rápidas, como os registradores, porém disponibilizando uma maior capacidade (alguns megabytes) se comparada à capacidade de armazenamento dos registradores. Observação O computador, durante sua execução, opera referenciando dados/ instruções localizados na memória principal, de forma que essa memória intermediária tenta acessar esses endereços de forma mais ágil e, ao mesmo tempo, armazenar parte desses dados ou endereços para possíveis acessos futuros. O conjunto de memórias do computador consiste basicamente em uma memória principal (RAM) de maior capacidade, porém mais lenta, em conjunto com a memória cache, de menor capacidade, porém mais rápida, como esquematizado na figura a seguir. Transferência de palavra Transferência de bloco CPU Memória cache Memória principal Rápida Lenta Figura 71 – Relação de comunicação entre a CPU, cache e memória principal Fonte: Stallings (2010, p. 96). 87 ARQUITETURA DE COMPUTADORES MODERNOS Na medida em que o processador necessita realizar a operação de leitura de uma palavra contida na memória, realiza-se a verificação para determinar se ela está contida na memória cache. Se estiver contida, a palavra será entregue à CPU, se não estiver, um bloco da memória principal, contendo algum número fixo de palavras, será lido na cache e o resultado será fornecido à CPU. Essas conexões são conhecidas como localidade de referência e ocorrem quando um bloco de dados é enviado para a memória cache a fim de realizar uma única referência à memória. As memórias do tipo cache ainda podem ser subdivididas em diferentes níveis (multiníveis) ou layers (L1, L2 e L3), em que a L3 possui maior capacidade de armazenamento entre todas as caches, porém, sendo a mais lenta. A L2 é mais lenta que a L1 e, por consequência, a L1 é a mais rápida nessa hierarquia. A figura a seguir mostra uma relação de comunicação entre os diferentes níveis de cache, porém, nesse exemplo, todas elas estão externas à CPU, fato que não ocorre com as memórias cache atuais. CPU Cache de nível 1 (L1) Cache de nível 2 (L2) Cache de nível 3 (L3) Memória principal Rápida Menos rápidaMais rápida Lenta Figura 72 – Organização de memória cache em três níveis Fonte: Stallings (2010, p. 96). Especificamente, a memória cache possui uma matriz de etiqueta e uma matriz de dados, como mostrado na figura a seguir. Essa matriz de etiquetas possui os endereços de todos os dados contidos na memória cache, e a matriz de dados contém, consequentemente, todos os dados. Matriz de dados Dados Etiqueta Acerto? Endereço Lógica de acertos/faltas Matriz de etiqueta Figura 73 – Diagrama de blocos da memória cache Fonte: Carter (2002, p. 159). 88 Unidade I A proposta da divisão da memória cache em matrizes tem como objetivo reduzir seu tempo de acesso, pois a matriz de etiquetas geralmente tem menos bits (se comparada à matriz de dados) e, por consequência, poderá ser acessada de forma mais rápida se comparada à matriz de dados. Quando esta é acessada, a saída obtida precisa ser comparada com o endereço da memória de referência para que seja determinado se houve ou não um acerto de memória cache, também conhecido como cache hit. O acerto de cache significa que os buffers de dados e endereços são desativados e haverá uma comunicação apenas entre a CPU e a memória cache, sem outro tráfego no barramento interno do sistema. O processo inverso ocorre em caso de falha de cache ou cache miss, em que o endereço desejado é colocado no barramento e os dados são deslocados pelo buffer de dados para a memória cache e CPU. 3.2.1 Dados de cache e instruções Em outros tipos de memória, como a RAM, as instruções e os dados geralmente compartilham o mesmo espaço dentro de cada nível da hierarquia de memória, entretanto o mesmo não ocorre na memória cache em que dados e instruções são armazenados em caches diferentes. Essa característica ficou conhecida como cache Harvard (figura a seguir), pois se trata de uma das características da arquitetura de Harvard. Busca de instruções Memória principal Cache de instruções Cache de dados Processador Busca de dados Figura 74 – Esquema de interligação de cache para processadores de arquitetura Harvard Fonte: Carter (2002, p. 159). Essa configuração permite que a CPU busque, de forma simultânea, as instruções a partir da cache de instruções e dados pela cache de dados. Assim, quando a memória cache possui tanto instruções quanto dados, ela é denominada cache unificada. Uma desvantagem nouso de caches separadas é que a automodificação de certos programas se torna difícil, ou seja, quando um programa precisa modificar suas próprias instruções, tais instruções serão tratadas como dados e armazenados na cache de dados. Assim, para executar as instruções modificadas, o sistema operacional precisará realizar operações especiais de descarga. De forma geral, a memória cache de instruções pode ser de duas a quatro vezes 89 ARQUITETURA DE COMPUTADORES MODERNOS menor do que a cache de dados, pois as instruções de um sistema operacional ocupam menor espaço físico na memória se comparadas com os dados. 3.2.2 Endereçamento de cache Um conceito intimamente relacionado com a memória cache diz respeito à memória virtual, nome dado à técnica que utiliza uma memória secundária como o disco rígido, ou mesmo à memória cache para o armazenamento temporário. Uma memória virtual, basicamente, permite que programas façam o endereçamento da memória de forma lógica, sem de fato considerar a quantidade de memória disponível fisicamente na RAM. Quando a memória virtual é utilizada, os locais de endereço nas instruções conterão endereços virtuais, e não físicos, de forma que para realizar a leitura/escrita da memória RAM será necessário o uso de uma unidade gerenciadora de memória (MMU – Memory Management Unit) para traduzir os endereços virtuais em endereços físicos na RAM, como mostra a figura: Cache MMU Endereço físicoEndereço lógico Dados Processador Memória principal Figura 75 – Organização de memória cache lógica Fonte: Stallings (2010, p. 99). Uma cache lógica (ou virtual) pode armazenar os dados utilizando endereços virtuais, assim o processador irá acessar a memória cache de forma direta, sem a necessidade de ter que passar pela MMU, como mostra a organização feita na figura a seguir. Cache MMU Endereço físicoEndereço lógico Dados Processador Memória principal Figura 76 – Organização de memória cache física Fonte: Stallings (2010, p. 99). Uma das vantagens nesse tipo de abordagem da cache lógica é que a velocidade de acesso será maior se comparada à uma cache do tipo física, pois, como os diagramas mostram, a cache pode responder antes que a MMU concretize a tradução do endereçamento. 90 Unidade I 3.2.3 Caches associativas A associatividade em memória cache significa quantas posições nela contém um endereço de memória. As caches associativas permitem que os endereços sejam armazenados em diversas posições na cache, o que reduzirá as penalidades ocasionadas por conflitos no barramento de memória, devido a dados que precisam ser armazenados nas mesmas posições. Memórias cache que possuam uma baixa associatividade podem restringir o número de posições de endereços disponíveis, o que pode ocasionar o aumento nas falhas, e que, por consequência, reduzirá o espaço ocupado. As caches podem ter um mapeamento associativo, como mostrado na figura: Linha de dadosEtiqueta Lógica de acerto/falha Acerto? Linha de dadosEtiqueta Lógica de acerto/falha Acerto? Linha de dadosEtiqueta Lógica de acerto/falha Acerto? Linha de dadosEtiqueta Lógica de acerto/falha Acerto? Endereço Linha que contém dado é enviada à CPU Figura 77 – Esquema de memória cache com mapeamento associativo Fonte: Carter (2002, p. 162). Nesse tipo de endereçamento de cache é permitido que qualquer endereço seja armazenado em qualquer uma das linhas de cache. Assim, quando uma operação de acesso à memória é solicitada à cache, tal acesso precisa ser comparado a cada uma das entradas na matriz de etiquetas, para que seja determinado se os dados referenciados na operação de fato estarão contidos nela. As caches associativas são, no geral, implementadas com matrizes distintas para dados e etiquetas. 3.2.4 Mapeamento direto com caches As caches que possuem mapeamento direto são exatamente o oposto das associativas. No mapeamento direto, cada endereço só poderá ser armazenado em uma posição da memória cache, como exemplificado na figura a seguir. Dessa forma, quando uma operação de acesso a memória é enviada a uma cache que foi mapeada de forma direta, um subconjunto de bits será utilizado para selecionar o byte que está dentro de uma linha da cache para onde aponta o endereço. 91 ARQUITETURA DE COMPUTADORES MODERNOS Endereço Matriz de etiquetas Matriz de dados Etiqueta para verificar acertos/falhas Envio de dados para o processador se houver acerto Acerto? Comparação Figura 78 – Esquema de memória cache com mapeamento direto Fonte: Carter (2002, p. 163). Assim, haverá n bits menos significativos no endereçamento que serão utilizados para determinar a posição do endereço de dentro da linha de cache, onde n é dado por log na base 2 do número de bytes contidos na linha. Assim, os m bits mais significativos dados também por log na base 2 do número de linhas na cache serão utilizados para selecionar a linha que conterá o endereço armazenado. Saiba mais Aprenda mais sobre a importância das memórias do tipo cache nos computadores atuais pesquisando em: O QUE é memória cache? Entenda sua importância para o PC. Techtudo, 2022. Disponível em: http://glo.bo/3QTlwpo. Acesso em: 18 jan. 2023. 3.3 Memória somente de leitura As memórias somente de leitura (ROM – Read Only Memory), como as da figura a seguir, são fabricadas a partir de materiais semicondutores (silício), não voláteis, ou seja, não perdem seus dados/instruções ao serem desligadas, possuem desempenho semelhante aos das memórias de leitura/escrita, além de serem seguras por permitir apenas a leitura de seu conteúdo através de determinados programas. 92 Unidade I Observação Todos os dispositivos computacionais modernos (computadores, celulares, tablets, consoles de jogos, câmeras digitais etc.) utilizam parte do endereçamento da memória RAM baseada em memórias do tipo ROM. Figura 79 – Memória somente de leitura do tipo ROM Disponível em: https://bit.ly/3WrGInk. Acesso em: 19 jan. 2023. As memórias ROM são conhecidas por fazerem parte do sistema de inicialização dos computadores pessoais, e são popularmente conhecidas como BIOS (Basic Input Output System – sistema básico de entrada e saída). Além disso, devido a sua versatilidade e baixo custo, a memória ROM também é responsável por armazenar sistemas de controle de processos em dispositivos embarcados como injeção eletrônica em automóveis, fornos micro-ondas, geladeiras, smart TVs, drones, entre outros. As memórias do tipo ROM vêm evoluindo ao passar das décadas, a fim de torná-las mais rápidas e práticas devido a sua grande aderência em dispositivos embarcados, de modo que vários tipos de diferentes configurações de ROM foram criados. 3.3.1 ROM programada por máscara O tipo mais básico de memória ROM é a programada por máscara, nome dado devido ao processo de fabricação e escrita de bits através de máscaras padrão. Os bits que fazem parte do programa de usuário são gravados no interior dos elementos da memória durante o processo de fabricação, conhecido como hardwired, onde cada um já é gravado no endereço de célula correspondente (MONTEIRO, 2019). Após sua fabricação, a pastilha ROM estará pronta para ser utilizada e nenhum tipo de software será capaz de modificar os bits nela gravados. Ademais, a fabricação da memória ROM é mais barata, pois utiliza-se apenas uma máscara de um programa matriz para que milhares de cópias do hardware sejam produzidas. Contudo, também há desvantagens no processo de fabricação em larga escala dessas memórias como: 93 ARQUITETURA DE COMPUTADORES MODERNOS • Uma vez produzida, não há possibilidade de recuperar qualquer erro do programa, ou seja, se apenas um único bit estiver errado na pastilha, todo o lote deverá ser descartado. • O custo de fabricação de uma máscara para escrita dos bits na memória é o mesmo, de modo que é possível fabricar milhares de módulos de memória. • Devido a essas características, a memória ROM é considerada um dispositivo mais simples, se comparada às memóriascache e RAM, pois necessita de apenas um decodificador e um barramento de saída, além de circuitos lógicos utilizando portas OR para realizar o endereçamento, como mostra a figura a seguir. A1 Habilitar Decodificada 2 po 4 A0 00 01 10 11 00 01 10 11 0101 1011 1110 0000 End. Conteúdo S3 S2 S1 S0 Figura 80 – Esquema de memória ROM com mapeamento direto Fonte: Monteiro (2019, p. 114). Nessa figura é possível observar que a memória é decodificada no modo 2 por 4 e possui quatro células de 4 bits cada, podendo endereçar quatro endereços de 2 bits. Nota-se também que o decodificador de endereços possui uma entrada para um endereço de dois bits (A0 e A1) e linhas de saída do decodificador que se conectam em quatro portas OR (S0, S1, S2 e S3), em que cada porta será responsável pela geração de um dos quatro bits da célula de memória, de acordo com o endereço especificado. 3.3.2 PROM As memórias ROM programáveis (Programable Read Only Memory) são fabricadas sem qualquer informação; posteriormente, seja pelo fabricante, seja pelo usuário, são inseridos os bits contendo as informações que ficarão fixas nela. Isso quer dizer que, embora fabricadas sem nenhum dado (limpas), após serem gravados, os dados não poderão mais ser apagados. Um outro diferencial entre a memória ROM e a PROM está no seu custo individual. Como a ROM pode ser fabricada em larga escala a custos fixos da matriz, divididos pela quantidade de cópias, no caso da PROM, sua fabricação será facilitada devido ao menor custo individual de fabricação, que independe da quantidade, pois não haverá o custo da fabricação da máscara. 94 Unidade I 3.3.3 EPROM Com a evolução dos computadores, também vieram as evoluções nas memórias ROMs. Uma variação da PROM foi a EPROM – Erasable PROM ou PROM apagável (figura a seguir) –, que também se trata de uma memória não volátil. Figura 81 – Memória EPROM Disponível em: https://bit.ly/3QPPxWO. Acesso em: 19 jan. 2023. Uma EPROM é programada através de um dispositivo eletrônico que transforma o programa computacional em uma corrente elétrica, injetada na memória. Uma janela de quartzo situada acima da memória já programada é utilizada para apagar completamente todo seu conteúdo. Para que o processo de apagamento seja realizado, uma luz ultravioleta (~200-400 nanômetros) é incidida sobre a janela em um tempo estimado de 20 a 25 minutos. Uma vez apagada, a memória ainda pode ser regravada através do processo de “queima” de bits, que ocorre com a inserção de uma corrente elétrica mais forte do que a convencional utilizada para ler os dados. 3.3.4 EEPROM e flash A memória EEPROM (Electronically EPROM), ou EPROM eletronicamente gravável e apagável, é uma memória parecida com a RAM, pois permite que múltiplos endereçamentos sejam escritos/apagados em uma única operação. Com um grande diferencial da memória RAM, uma vez escrito algum dado, ele será preservado sem a necessidade de fonte de alimentação constante para mantê-lo. Uma variação da memória EEPROM é a memória flash, muito utilizada como cartões de memória, pen drives, MP3 players, armazenamento interno de câmeras digitais e celulares. Esse tipo de memória pode apagar totalmente ou parcialmente seu conteúdo em uma única operação de escrita. 95 ARQUITETURA DE COMPUTADORES MODERNOS Figura 82 – Diversos formatos de memórias do tipo flash Disponível em: https://bit.ly/3Rylsf2. Acesso em: 19 jan. 2023. Saiba mais Sobre as memórias do tipo ROM, acesse: O QUE é memória ROM? Techtudo, 2012. Disponível em: http://glo.bo/3HczPSG. Acesso em: 18 jan. 2023. 3.4 Memória RAM Uma célula unitária da memória principal é constituída basicamente de um material semicondutor (silício). Por definição, um material semicondutor é aquele que apresenta um nível intermediário (não é totalmente isolante nem totalmente condutor) de portadores de carga ou elétrons livres. As células unitárias de memória têm algumas propriedades em comum, como (STALLINGS, 2010): • Devem apresentar dois estados estáveis, que representam os números binários 0 e 1. • Devem ser capazes de ser escritas, pelo menos uma vez, para que seu estado seja definido. • Devem ser capazes de ser lidas, para que seu estado atual seja conhecido. 96 Unidade I Lembrete Por definição, um material semicondutor é aquele que apresenta um nível intermediário de portadores de carga ou elétrons livres. De forma que um material semicondutor, como o nome mesmo já diz, não é um bom condutor e também não é um isolante, estando em um patamar intermediário entre os dois. Uma célula de memória tem três terminais funcionais, como mostra a figura a seguir, capazes de transportar o sinal elétrico que definirá seu estado (0 ou 1). Um dos terminais é o de seleção, que selecionará individualmente cada célula de memória, para que uma operação de leitura ou escrita seja realizada. (b) Leitura(a) Escrita Seleção Controle Entrada de dados Célula Seleção Controle Entrada de dados Célula Figura 83 – Operação de escrita (A) e operação de leitura (B) Fonte: Stallings (2010, p. 129). Observação Cada célula unitária possui um terminal de controle que define qual das duas operações serão realizadas naquele momento. Na operação de escrita, um terminal fornecerá um sinal elétrico que define qual estado (0 ou 1) deverá ser gravado na célula. Por fim, na operação de leitura, o terminal de saída é utilizado para obter o estado atual da célula. 3.4.1 Memória DRAM e SRAM As memórias do tipo RAM (Random Access Memory) acessam as palavras individuais de forma direta através de uma lógica de endereçamento interno. Em memórias RAM é possível ler os dados contidos na memória e escrever novos dados de forma muito rápida, pois necessitam apenas de sinais elétricos para essas tarefas. Outra característica muito importante nas memórias do tipo RAM é que elas são voláteis, ou seja, para que seu estado seja mantido por um tempo determinado, elas devem receber alguma fonte de energia constante. Assim, se a energia for interrompida, os dados gravados serão perdidos, o que determina que a RAM é utilizada somente para armazenamento de dados/instruções de forma temporária. 97 ARQUITETURA DE COMPUTADORES MODERNOS Existem, de forma básica, dois tipos de tecnologias de memórias RAM: a RAM dinâmica e a RAM estática. Lembrete Os sistemas básicos de memória são constituídos de vários dispositivos para realizar o armazenamento de dados e instruções, em que cada dispositivo tem sua própria característica em relação ao tempo de transferência, capacidade e custo. RAM dinâmica ou DRAM (Dynamic RAM) Nessa tecnologia, a célula unitária da memória é constituída por capacitores que armazenam os dados como cargas elétricas em seu interior. Apesar de armazenarem um estado binário, as memórias RAM são basicamente um dispositivo analógico, pois armazenará uma carga elétrica com um valor dentro de um certo intervalo. Os capacitores são dispositivos eletrônicos que interpretam, nessa situação, a presença (bit 1) ou a ausência (bit 0) de uma carga elétrica para que seu estado seja definido. Entretanto, os capacitores são dispositivos dinâmicos, ou seja, variam em função do tempo e possuem como característica uma tendência natural para que sua energia seja descarregada. Dessa forma, para que os dados sejam mantidos até a próxima operação de leitura ou escrita, é necessário que um mecanismo de recarga elétrica periódica (refresh) ocorra, a fim de que os dados não sejam perdidos. A figura a seguir mostra uma estrutura esquemática de uma memória DRAM típica, com uma célula unitária, capaz de armazenar 1 bit. Terra Capacitor de armazenamento Transistor Linha de endereço Linha de bit B Figura 84 – Célula unitária de uma memória DRAM Fonte: Stallings (2010, p. 130). Nessa figura, é possível observar que há uma linha de endereço ativada toda vez que o valor do bit precisa ser alterado para o estado de lido ou escrito. Há também outro dispositivo eletrônico na célula,denominado transistor. Resumidamente, um transistor é um dispositivo semicondutor (silício ou 98 Unidade I germânio) que atua, de acordo com o tipo, ou como um amplificador de corrente elétrica ou como uma chave para atenuar ou barrar uma corrente elétrica. No caso das células unitárias da RAM, o transistor atuará como uma chave, aceitando ou não uma corrente elétrica. Assim, o funcionamento da célula de RAM se dá quando o transistor aceita a corrente aplicada na linha de endereço e armazena a carga no capacitor. Na escrita, um sinal elétrico é aplicado na linha de endereço com destino ao capacitor; uma alta tensão (3 a 5 volts) representará um bit e uma baixa tensão (0-0,8 volts) representará o bit zero. Na operação de leitura, a linha de endereço é utilizada para acionar o transistor da célula unitária, de modo que o estado atual do capacitor seja lido e sua carga transferida em uma linha de bit, e, assim, um amplificador de voltagem a compare com um valor de referência e determine se a célula contém o bit zero ou um. É importante salientar que a cada operação de leitura da célula de memória o capacitor será descarregado, necessitando ser restaurado pelo estado anterior ou por um novo estado após a operação. RAM estática ou SRAM (Static RAM) Pode-se citar como principal aplicação de uma memória SRAM seu emprego em memórias do tipo cache. Diferentemente da memória DRAM, a RAM estática é um dispositivo mais complexo, como pode ser observado na figura a seguir, e contém os mesmos elementos lógicos encontrados em um processador. O dispositivo básico de armazenamento dos estados nesse tipo de memória é o flip-flop, que se trata de um dispositivo estático, ou seja, os bits ficarão armazenados enquanto houver energia elétrica sendo fornecida ao dispositivo. Linha de bit B Linha de endereço Terra T2 T6 C1 C2 T5 T3 T4 Voltagem cc T1 Linha de bit B Figura 85 – Célula unitária de uma memória SRAM Fonte: Stallings (2010, p. 130). No diagrama da figura anterior, observa-se que existem quatro transistores (T1, T2, T3 e T4), que são cruzados, como nota-se nos circuitos sequenciais, também conhecidos como flip-flops, de forma a produzir um estado lógico estável. Para o estado lógico, C1 está em nível lógico alto e C2 está em nível lógico baixo, de modo que T1 e T4 estarão desligados e T2 e T3 estarão ligados. Já para o estado lógico zero, o ponto C1 está em nível baixo e o ponto C2 está em nível alto. Nessa situação, T1 e T4 estarão ligados e T2 e T3 estarão desligados. Os dois estados serão estáveis desde que uma corrente elétrica seja aplicada continuamente e, diferentemente da memória DRAM, não será necessária nenhuma recarga para que os 99 ARQUITETURA DE COMPUTADORES MODERNOS dados sejam retidos. A linha de endereço na SRAM também é utilizada para abrir ou fechar uma chave, assim como na DRAM, além de controlar dois transistores (T5 e T6). Dessa forma, quando um sinal for aplicado à linha de endereço, esses dois transistores serão ligados, permitindo que uma operação de leitura ou escrita seja realizada. No caso de uma operação de leitura, o estado de bit desejado é aplicado à linha B e seu complemento à linha B, de forma que forçará que os quatro transistores (T1, T2, T3 e T4) permaneçam no estado correto. 3.4.2 Organização de memória: endereço, conteúdo, armazenamento e posição na memória RAM Em uma organização de memória, composta por vários elementos identificados e localizados individualmente, é necessário que algum código seja atribuído ao elemento a fim de que ele possa ser identificado e localizado. Esse conceito é o endereçamento ou posição da memória e é válido para qualquer tipo de memória. Na figura a seguir, é possível observar que existem dois endereços (257A e 257B), que alocam dois conteúdos, 1F e 2C, respectivamente. Os Mbits armazenados estão contidos em células de memória e são geralmente expressos em grupos de 8 bits ou 1 byte. Dessa forma, é comum expressar a capacidade da memória em termos como 64 Mbytes ou 64 MB. ≈ ≈ 1F 2C Conteúdo da posição de memória = 2C Posição da memória principal com endereço igual a 257 tem armazenada a informação cujo valor é 1F End 257 A End 257 B Figura 86 – Valores de endereço e conteúdo da memória principal Fonte: Monteiro (2019, p. 96). Lembrete Capacidade da memória refere-se à quantidade de dados que podem ser armazenados em um certo instante de tempo. Para computadores, onde a representação dos dados é através do bit, os valores para expressar a capacidade da memória podem ser de 512 bits, 16.384 bits ou 8.388.608 bits. 100 Unidade I À medida que esse número de bits aumenta, fica muito difícil de expressá-lo, devido ao tamanho de algarismos necessários para essa tarefa. Entretanto é possível realizar a simplificação dos valores através da seguinte tabela: Tabela 3 – Grandezas numéricas computacionais Unidade Valor em potência de 2 Valor em unidades 1 K (1 quilo) 210 1.024 1 M (1 mega) 1.024 K = 220 1.048.576 1 G (1 giga) 1.024 M = 230 1.073.741.824 1 T (1 tera) 240 1.099.511.627.776 1 P (1 peta) 250 1.125.899.906.843.624 1 E (1 exa) 260 1.152.921.504.607.870.976 1Z (1 zeta) 270 1.180.591.620.718.458.879.424 1Y (1 yota) 280 1.208.925.819.615.701.892.530.176 Adaptada de: Monteiro (2019, p. 47). Dessa forma, os valores 16.384 e 8.388.608 podem ser representados de forma mais simples, como 16 Kbits e 8 Mbits, respectivamente. Embora facilite a interpretação, essa não é a melhor maneira de quantificar a capacidade da memória. Como é sabido, não é possível armazenar dois estados em uma única célula de memória, assim somente um único endereço poderá ser localizado e identificado, pois, se dois valores fossem armazenados em um único endereço ou célula, o sistema operacional não seria capaz de identificar qual dos dois estados seria o desejado naquela operação (leitura ou escrita). Dessa forma, mais importante do que a capacidade de uma memória é a quantidade de endereçamento que ela pode manipular, visto que é possível armazenar um dado em cada endereço. Em se tratando de quantizar a capacidade da memória principal, não há padronização. Entretanto o uso da quantidade de bytes em vez da quantidade de palavras é bem aceito nos computadores modernos e outras denominações, como células, também são aceitas. Alguns exemplos também mostram que utilizar uma simbologia mais simplificada ajuda o leitor a identificar o volume de bytes envolvidos nos cálculos, como pode ser observado: • 2.048 bytes ≡ 2 K bytes ≡ 2 x 210 bytes • 393.216 células ≡ 384 K células ≡ 384 x 210 células • 1.048.576 palavras ≡ 1 M palavras ≡ 1 x 220 palavras A memória RAM é constituída de um conjunto de N células, cada célula armazenando um valor (0 ou 1) designado como Mbits. Assim, a quantidade de endereços que ocupam o espaço endereçável da memória RAM também será igual a N, pois cada conteúdo da célula será associado a um endereço. De forma que o valor de N representará a capacidade da memória, que também está associada à quantidade de células ou endereços dessa memória. Como o bit é representado por dois estados possíveis, então é possível concluir que (MONTEIRO, 2019): 101 ARQUITETURA DE COMPUTADORES MODERNOS • É possível armazenar em cada célula unitária um valor entre 0 e 2M-1, de forma que se tem 2M combinações possíveis. Por exemplo, se M for igual a 8, então tem-se 28 = 256 combinações, resultando em valores binários iniciados em 00000000 e 11111111, que podem ser convertidos em 016 e FF16 na base 16 ou 010 e 25510 na base decimal, respectivamente. • A memória principal tem N endereços, e sendo E igual à quantidade de bits dos números que representarão cada um dos N endereços, tem-se: N = 2E. Assim, se N = 512, então 512 = 2E, logo E será igual a 9 pois 29 = 512. • O número total de bits armazenados na memória RAM é de 512 células. De forma que com 8 bits de tamanho resulta em: N = 512 (total de células), M = 8 bits (tamanho de cada célula), E = 9 bits(tamanho em bits do número que representa cada endereço) e T = 4096 (total de bits da memória). • Utilizando-se a equação T = N x M, tem-se que: 4.096 = 512 x 8. Esses valores podem ser mais facilmente operacionalizados se houver uma representação em potenciação, assim, T = 4096 bits ou 4 Kbits ou 212 bits. É possível utilizar a potenciação para simplificar os demais termos no restante da equação, colocando-os em base 2, onde 512 é representado por 29 e 8 é representado por 23. Exemplo de aplicação Exemplo 1 Uma memória RAM possui um espaço de endereçamento de 2 K, onde cada célula pode armazenar até 16 bits. Qual será o valor total de bits que podem ser armazenados nessa memória e qual o tamanho de cada endereço? Resolução Se o espaço máximo endereçável é de 2 K, então N = 2 K (quantidade máxima de células também é 2 K). Cada célula tem 16 bits, então M = 16 bits (tamanho da célula) ou 24. Sendo N = 2 E, então N = 2 K, e convertendo 2 K em potência na base 2, tem-se: 21 × 210 = 211(mantém-se a base e somam-se os expoentes). Dessa forma, obtém-se que E = 11. Se E representa a quantidade de bits de cada número que irá expressar um endereço e E = 11, logo os endereços de cada célula são números que possuem 11 bits. Aplicando-se a equação: T = N × M → 211 × 24 = 215. Convertendo para múltiplos de K = 210, tem-se: 25 × 210 = 32K. Logo: T = 32 K (total de bits da memória principal) e E = 11 bits (tamanho de cada endereço). Exemplo 2 Uma RAM foi fabricada com a possibilidade de armazenar 256 K bits, onde cada célula unitária pode armazenar 8 bits. Qual é o tamanho de cada endereço e qual é o total de células unitárias que podem ser armazenadas nessa RAM? 102 Unidade I Resolução Como o total de bits é dado por T = 256 K, e utilizando a potenciação em base 2, pode-se expressar 256 K como: T = 28 × 210 → T = 218. Se 1 célula contém 8 bits, então M = 8 → M = 23. Utilizando-se a equação T = M x N, então N (quantidade de células) pode ser reescrito como: N = T/M. Assim, substituindo os valores na equação, tem-se: N = 256 K/8. Colocando tudo em potenciação para facilitar as contas: N = 218/23 = 215 (mantém-se a base e subtraem-se os expoentes). Para facilitar a quantificação de N = 215, pode-se representar como N = 25 × 210 ou N = 32 K (células). Sabendo-se que N = 215 e que N = 2E, então o tamanho de cada endereço é E = 15. 3.4.3 Operação de leitura A leitura ocorre após a execução de instruções menores, também conhecidas como micro-operações (micro-ops), sendo que cada uma dessas instruções consiste em uma etapa do processo de leitura ou escrita da memória. Essas micro-operações geralmente gastam um certo tempo de acesso à memória para serem executadas. Assim, o intervalo de tempo gasto na realização de duas operações consecutivas (leitura-leitura, leitura-escrita ou escrita-leitura) são conhecidas como ciclo de memória. Como exemplo, as operações de leitura de um dado armazenado (5C) em um endereço 1324 da memória principal para a CPU. As etapas que descrevem essa operação de leitura, que também pode ser observada no diagrama da próxima figura, são: • O registrador MAR (Memory Address Register) recebe o dado de outro registrador da CPU. • O endereço é então colocado no barramento de endereços. • Insere-se um sinal de leitura no barramento de controle. • Decodifica-se o endereço e a localização das células. • O registrador MBR recebe os dados pelo barramento de dados. • Enviam-se os dados contidos na MBR (Memory Buffer Register) para outro registrador. Inicialmente, a UC (unidade de controle) começa a operação de leitura realizando a transferência do endereço 1324 de algum registrador específico, como o PC (Program Counter) para o registrador MBR e insere o sinal de leitura (READ) no barramento de controle para indicar o que a memória principal deve fazer em seguida. A memória principal então decodifica o endereço recebido e transfere seu conteúdo para o registrador MBR pelo barramento de dados. A partir do registrador MBR, a informação desejada será transferida para o elemento do processador, o destinatário final, que geralmente é algum outro registrador da CPU. 103 ARQUITETURA DE COMPUTADORES MODERNOS ≈≈ 5C 13245C End 0000 Memória principal End 1324 End FFFF Barramento de controle Barramento de endereços Barramento de dados 5C MBR Outro reg. Outro reg. MAR UC CPU Figura 87 – Operação de leitura na memória principal Fonte: Monteiro (2019, p. 102). O tempo utilizado no acesso para a realização dos seis passos descritos antes não garante que a memória principal possa realizar uma nova operação logo em seguida. O que indica que estar pronta ou não para uma nova operação está inteiramente relacionada com o modelo de memória RAM utilizada (DRAM ou SRAM). As memórias do tipo SRAM, por exemplo, permitem que outra operação de leitura ou escrita seja realizada de forma imediata logo após a conclusão de uma operação, enquanto memórias do tipo DRAM não possibilitam isso. 3.4.4 Operação de escrita A operação de escrita possui um procedimento de funcionamento parecido ao da operação de leitura, com exceção do sentido da transferência, que é inverso ao da leitura, ou seja, o sentido é do processador para a memória principal. A próxima figura mostra um exemplo de operação de escrita de um dado (F7) oriunda do processador para ser armazenado na memória principal no endereço 21C8. Os seguintes passos explicam essa operação: 104 Unidade I • O registrador MAR recebe da CPU o dado oriundo de outro registrador. • O endereço correto recebido é colocado no barramento de endereços. • O registrador MBR recebe os dados da CPU oriundos de outro registrador. • É realizado o sinal de escrita (WRITE) através do barramento de controle. • O dado é transferido para a célula de memória referida através do barramento de dados. ≈≈ F7 21C8F7 End 0000 Memória principal End 21C8 Barramento de controle Barramento de endereços Barramento de dados MBR MAR UC CPU Figura 88 – Operação de escrita na memória principal Fonte: Monteiro (2019, p. 104). A UC (unidade de controle) coloca o endereço desejado no registrador MAR e o dado que deve ser transferido no registrador MBR. O endereço é então fixado no barramento de endereços e, consequentemente, o dado é colocado no barramento de dados, além do sinal de escrita (WRITE), acionado no barramento de controle. O resultado da operação de decodificação do endereço pelos dispositivos de controle da memória será o valor F7, que será alocado na célula unitária com endereço 21C8. 105 ARQUITETURA DE COMPUTADORES MODERNOS 3.4.5 DRAM síncrona A SDRAM (Synchronous DRAM) foi desenvolvida no ano de 1994, com o intuito de realizar a troca de dados com o processador de forma sincronizada através de um sinal de clock externo. Além disso, a DRAM possui maior velocidade de transmissão no barramento da CPU/memória, sem ter a necessidade de impor algum estado de espera na comunicação, como ocorria na DRAM tradicional assíncrona. Na DRAM, a CPU apresenta endereços e níveis de controle à memória, o que indica que um conjunto de dados que estão em um determinado local na memória deverá ser lido/escrito. Após um tempo de acesso, a DRAM irá escrever ou ler os dados, e durante o atraso de tempo de acesso, a DRAM poderá realizar diversas funções internas, tais como verificar e rotear dados através de buffers de saída. Entretanto a CPU deverá esperar por algum atraso, o que diminuirá, obviamente, o seu desempenho. A tabela a seguir mostra algumas das diversas pinagens encontradas nas SDRAM e suas diferentes funcionalidades. Tabela 4 – Pinagem básica de uma DRAM síncrona A0 a A13 Entradas de endereço CLK Entrada de clock CKE Habilitação de clock CS Seleção de chip RAS Strobe de endereço de linha CAS Strobe de endereço de coluna WE Habilitação de escrita DQ0 a DQ7 Entrada/Saída de dados DQM Máscara de dados Fonte: Stallings (2010, p. 141). A SDRAM possui a característica do emprego do modo rajada (burst),que elimina o tempo de configuração de endereçamento e tempo de pré-carga de fileira de linha e coluna após um primeiro acesso à memória. Nesse modo rajada, uma quantidade de dados pode ser enviada rapidamente após o primeiro bit ter sido acessado. Esse modo de operação é muito útil em situações que todos os bits a serem acessados estiverem em sequência e na mesma linha de array do acesso inicial. Além disso, a SDRAM tem uma arquitetura interna (figura a seguir) com um banco múltiplo de memória, que melhora o desempenho devido a operações em paralelo no chip. 106 Unidade I De co di fic ad or de li nh a Array de células banco de memória 2 (2MB X 8) DRAM Decodificador de coluna Amplificadores De co di fic ad or de li nh a Array de células banco de memória 2 (2MB X 8) DRAM Decodificador de coluna Amplificadores De co di fic ad or de li nh a Array de células banco de memória 0 (2MB X 8) DRAM Decodificador de coluna Amplificadores De co di fic ad or de li nh a Array de células banco de memória 1 (2MB X 8) DRAM Decodificador de coluna Amplificadores RC CA C Ci rc ui to d e co nt ro le de d ad os DCM CAC = contador de coluna de endereços (column adress conter) MR = registrador de modo (mode register) RC = contador de refresh (refresh conter) Buffer CLKCLK Buffer CKECKE Bu ffe rs d e en de re ço (1 4) A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 A11 A12 A13 A10 Bu ffe rs d e E/ S de d ad os 000 001 002 003 004 005 006 007 Ge ra do r de si na l d e co nt ro le M R De co di fic ad or de c om an do WE CAS RAS CS Figura 89 – Diagrama funcional de uma DRAM síncrona Fonte: Stallings (2010, p. 142). O MR (Mode Register – registrador de modo) é considerado outro recurso que diferencia as SDRAMs das DRAMs convencionais. Esse mecanismo de lógica especifica o tamanho da rajada, que é baseada no número de unidades de dados alimentadas sincronamente pelo barramento. A SDRAM transfere, de modo eficiente, grandes blocos de dados em série, muito utilizado para aplicações como processamento de textos ou planilhas. 3.4.6 DRAM Rambus Desenvolvida em meados de 1997, esse tipo de memória ser tornou a principal concorrente da memória SDRAM e foi logo compatibilizada com os processadores Pentium e Itanium da Intel. Essa memória tem os chips encapsulados verticalmente, com todos os pinos situados em um dos lados, como mostra a próxima figura. A troca de dados entre memória e CPU ocorre por um barramento com 28 fios de cobre, que tem a capacidade de endereçar até 320 chips de RDRAM a uma taxa de 1,6 GBps (Gyga bits por segundo). 107 ARQUITETURA DE COMPUTADORES MODERNOS Figura 90 – Memória DRAM Rambus ou RDRAM Disponível em: https://bit.ly/3D3ou4L. Acesso em: 19 jan. 2023. O barramento de comunicação da memória RDRAM oferece informações de endereçamento e controle utilizando um protocolo de comunicação assíncrono, orientado a bloco de palavras. Em vez de ser controlada por sinais RAS, CAS, R/W ou CE, como na memória SDRAM, a RDRAM recebe uma solicitação de memória através do barramento de alta velocidade- que contém o endereço solicitado, o tipo de operação e o número de bytes utilizados na operação atual. A configuração de uma RDRAM, como mostrado na figura a seguir, consiste em um controlador e uma série de módulos conectados pelo barramento em comum. Controlador INIT INITo RDRAM 1 RDRAM RDRAM n Barramento de dados (18:0) Vterm RC [7:0] RCIK [2] TCIK [2] Vief [2] Gnd (32/18) Vd (4) Figura 91 – Estrutura básica da memória RDRAM Fonte: Stallings (2010, p. 143). O controlador está situado na extremidade da memória e conectado pelo barramento, que tem 18 inhas para dados, sendo 16 reais e 2 de paridade, “pulsando” a uma taxa dobrada do sinal do clock, ou seja, um bit é enviado em cada transição de clock. Isso resultará em uma taxa de 800 Mbps em cada linha de sinal de dados. Na outra extremidade do barramento está localizada a entrada do sinal de clock, que se propaga até o extremo do controlador e depois retorna ao seu ponto original. As linhas adicionais do barramento incluem também uma tensão elétrica de referência, fio terra e fonte de alimentação. 108 Unidade I 3.4.7 DDR‑SDRAM A DRAM síncrona (SDRAM) desenvolvida em 1994 era capaz apenas de enviar dados ao processador a cada ciclo de clock, o que tornava o processo de escrita e leitura um tanto quanto lento e limitado, pois cada um deles só podia ser realizado a cada ciclo. Uma nova versão de SDRAM, a mundialmente conhecida DDR-SDRAM (Double Data Rate SDRAM), desenvolvida pela JEDEC Solid State Technology Association, tem a capacidade de ler/escrever dados duas vezes por ciclo de clock. As operações de leitura ou escrita ocorrem, uma de cada vez, a cada transição de subida ou descida do pulso do sinal de clock. A figura a seguir mostra a temporização básica para o processo de leitura na DDR. RAS = Seleção de endereço de linha CAS = Seleção de endereço de coluna DQ = Dados (entrada e saída) DQS = Seleção DQ Clock Endereço DQ CAS RAS DQS Linha de endereço Endereço de coluna Dados válidos Dados válidos Dados válidos Dados válidos Figura 92 – Temporização de leitura em uma DDR-SDRAM Fonte: Stallings (2010, p. 144). A transferência de dados nessa memória ocorre de forma síncrona, com a transição de leitura e escrita nas bordas de subida e descida. Um sinal denominado strobe de dados bidirecional (DQS), fornecido pelo controlador da memória, ajuda a sincronizar a memória durante um- leitura ou escrita- Em algumas implementações de DRAM, - DQS pode ser ignorado durante o processo de leitura. Para facilitar a realização do processo de leitura e escrita nas células de memória, elas são organizadas como matrizes, construídas por linhas e colunas. Dessa forma, para que um endereço na memória seja conhecido através de uma posição, o controlador de memória obtém seu valor (RAS – Row Address Strobe) de uma coluna e o seu valor de linha (CAS – Column Address Strobe), como pode ser observado no diagrama a seguir. 109 ARQUITETURA DE COMPUTADORES MODERNOS 0 2 4 6 8 10 12 14 16 18 20 Figura 93 – Diagrama de linhas e colunas de um endereço de memória RAM Fonte: Edwards e Leung (s.d.). Há algumas variações na tecnologia DDR, principalmente no que diz respeito à taxa de transferência de bits. A DDR2, por exemplo, aumenta a taxa de transferência de dados, o que leva a um aumento da frequência de operação desse chip de memória, além de aumentar o buffer (cache localizada na RAM) que realiza a pré-busca, aumentando de 2 bits na versão anterior para 4 bits. Esse buffer permite que o chip RAM pré-posicione os bits que serão colocados na base de dados de forma rápida. Já a DDR3, desenvolvida em 2007, tem a capacidade de realizar a pré-busca utilizando um buffer de 8 bits. Um módulo DDR simples tem a capacidade de transferir dados a uma taxa de 200 MHz a 600 MHz. Já um módulo DDR2 tem a capacidade de transferir a uma taxa de 400 a 1.066 MHz, e um módulo de memória DDR3 consegue transferir a uma taxa de clock de 800 MHz a 1.600 MHz. Saiba mais Para um conhecimento mais aprofundado sobre qual tipo de memória RAM escolher para seu computador, recomenda-se a seguinte leitura: SODERSTROM, T. How to choose the right memory: a 2020 guide to DRAM. Tom’s Hardware, 2020. Disponível em: https://bit.ly/2MacOBV. Acesso em: 18 jan. 2023. 3.5 Memórias secundárias Os primeiros computadores desenvolvidos não possuíam nenhum dispositivo de memória secundária como os HDs (Hard Disks – discos rígidos). Entre 1930 e 1940 os programas eram introduzidos manualmente, todas as vezes que precisassem ser executados, mesmo que essa execução fosse repetida, ainda assim era necessário inserir manualmente o programa em cada nova utilização. Os primeiros dispositivos de armazenamento em massa foram as fitas magnéticas, semelhantes às utilizadas nos 110 Unidade I gravadores de som da época. Como surgimento dos computadores pessoais (PCs) em 1981, surgiram também os primeiros dispositivos denominados discos rígidos magnéticos, desenvolvidos pela IBM. Antes disso, os discos magnéticos eram utilizados somente nas grandes corporações e eram muito grandes (quase o tamanho de duas geladeiras residenciais), se comparados com os discos rígidos atuais, como pode ser observado a seguir: Figura 94 – RAMAC, o primeiro sistema de armazenamento em discos rígidos Disponível em: https://bit.ly/3wrYIDy. Acesso em: 19 jan. 2023. O RAMAC (Random Access Method of Accounting and Control – método de acesso aleatório de contagem e controle) da IBM foi o primeiro disco rígido comercializado em 1956 (MONTEIRO, 2019). Lembrete Vale ressaltar que os dispositivos anteriores ao RAMAC não eram propriamente discos, e sim tambores cobertos com material magnético para o armazenamento dos dados no formato de minúsculos campos magnéticos. Nesse mesmo período, a IBM trabalhava em um novo dispositivo, baseado em discos que giravam a taxas elevadas de1.000 a 1.200 rpm ou rotações por minuto (elevadas para a época), mas que tendia a danificar a cabeça de gravação. No início dos anos 1960, a IBM conseguiu lançar o aperfeiçoamento do RAMAC, facilitando assim o crescimento dessa nova tecnologia. 111 ARQUITETURA DE COMPUTADORES MODERNOS 3.5.1 Organizando o funcionamento dos discos rígidos Os discos rígidos magnéticos são constituídos de várias superfícies circulares e metálicas, denominadas pratos, onde cada superfície é coberta por um material magnetizável. A figura a seguir mostra um disco rígido magnético utilizado em computadores atuais. Observe que ele está aberto somente para demonstração de seu interior, visto que, ao se abrir um disco rígido magnético, ele deixa de ter seu funcionamento correto. Atuador Braço EixoDisco (prato) Cabeça de leitura e gravação Figura 95 – Disco rígido magnético aberto e seus componentes Disponível em: https://bit.ly/3Hq2qTn. Acesso em: 27 jan. 2023. Cada superfície ou face do disco, também conhecido como prato, é organizado em áreas circulares concêntricas chamadas trilhas, que são numeradas de 0 a T-1, endereço da última trilha do disco. Essas separações têm seu início a partir da 0 (mais externa do disco) até a mais interna T-1, como mostram as próximas figuras. Todas as trilhas têm a mesma capacidade de armazenar bytes e isso se deve ao fato de que existe uma diferença de densidade de gravação entre as trilhas mais externa e a mais interna. Dessa forma, para que se evitem erros devido à proximidade do final do prato nas extremidades, além de evitar que haja uma diferença muito grande em relação às densidades entre as trilhas externas, a sua área magnetizável fica posicionada na parte central do prato, de forma que não haverá trilhas próximo à borda do prato ou mesmo ao eixo central de rotação. 112 Unidade I Prato Rotação Trilhas Setor Cabeça de leitura/gravação Superfícies Cilindro Figura 96 – Organização interna de um disco rígido magnético Fonte: Monteiro (2019, p. 318). As trilhas nas superfícies dos discos são magnetizáveis e são divididas em partes menores de tamanho fixo, denominadas setores, que servem de parâmetro de unidade de armazenamento. Cada setor do disco rígido é organizado para gravar os 512 bytes para dados, de forma que o sistema de leitura/gravação não seja confundido com outro setor. S6 S6 SNSNS5 S5 S4 S4 S3 S3 S2 S2 S1 S1 Setores Trilhas Lacuna entre trilhas Lacunas entre setores Figura 97 – Layout de separação interna do disco rígido Fonte: Stallings (2010, p. 151). 113 ARQUITETURA DE COMPUTADORES MODERNOS Os setores têm um campo inicial, que se inicia antes dos bytes destinados para dados, conhecido como preâmbulo. O preâmbulo contém elementos necessários para sincronizar a cabeça antes de cada leitura/gravação. Outro espaço existente entre cada par de setores é conhecido como espaço morto ou gap intersetorial e é utilizado para evitar a superposição de leitura/gravação nos casos em que os setores fiquem contíguos, devido à alta velocidade da rotação do disco no eixo. Os setores também possuem um campo denominado ECC (figura a seguir), que contém bits calculados durante a transmissão dos dados e têm como finalidade proteger o bloco de 512 bytes de possíveis erros decorrentes da transmissão. Gap entre setores 512 bytes de dadosECC – error connecting code (bits para deteção de erros) 512 bytes de dados Setor Preâmbulo ECC Setor Preâmbulo ECC Figura 98 – Organização de trilhas e setores em um disco rígido Fonte: Monteiro (2019, p. 319). Como já mencionado, um disco rígido é constituído não só por um, mas diversos pratos, que giram constantemente e na mesma velocidade em torno do seu eixo central. Um braço mecânico transporta a cabeça de gravação/leitura, efetuando um movimento na transversal, realizando as operações de gravação/leitura em cada uma das trilhas solicitadas na operação. A movimentação do braço é realizada através de um mecanismo, denominado atuador, movimentado pela atração de uma bobina. Existem diferentes métodos de acesso aos discos rígidos, além de diversas unidades de transferência, utilizadas de acordo com o sistema operacional escolhido. Alguns sistemas efetuam a transferência de dados do disco rígido para o processador e a memória principal de setor por setor. Observação É importante ressaltar que em outros sistemas de maior capacidade de armazenamento e também ao volume de transferências, a transferência de dados é realizada a para um grupo de setores ou cluster (vários setores) de cada vez. 114 Unidade I 3.5.2 Principais propriedades e o funcionamento dos discos rígidos O acesso a dados/instruções em um disco rígido ocorre em uma série de etapas, também conhecidas como micro-operações. De forma resumida, pode-se definir as seguintes etapas para que o acesso ao disco seja completado: • Interpretação do comando que realiza a solicitação de E/S. Etapa em que um endereço físico que contém os dados desejados é localizado pelo número do cilindro ou setor e é conhecido como geometria do disco. • Movimentação do braço em direção à trilha desejada ou cilindro, conhecido também como seek. • Localização do setor, onde a cabeça de leitura/gravação passa por cima do setor desejado. • Transferência de bits através de condutores com destino a um buffer e depois para uma área da memória principal especificada na operação de busca. O tempo gasto entre o início da operação de leitura/escrita e o seu término é conhecido como tempo de acesso e é constituído pela soma dos quatro tempos distintos, correspondentes às seguintes etapas (MONTEIRO, 2019): • Tempo necessário para a interpretação do comando: é todo o período gasto para que o sistema operacional seja capaz de interpretar o comando, transmitir a instrução para o controlador de disco e a conversão no endereço físico desejado. • Tempo para realização da busca (seek): é o tempo gasto para realizar a interpretação do endereço desejado pela unidade de controle além da movimentação mecânica do braço até as trilhas desejadas. • Tempo de latência: é o período decorrido a partir da chegada da cabeça de leitura/gravação na trilha e a passagem pelo setor. O tempo médio para a latência será igual à metade do tempo gasto para que o disco efetue uma volta completa, ou seja, para que seja possível que o setor gire completamente ao redor da cabeça, o que é inversamente proporcional à velocidade de rotação do disco, estimada entre valores de 5.400, 7.200 e 10.000 rpm (rotações por minuto). • Tempo para realizar a transferência dos dados: é o tempo para realizar a transmissão dos sinais elétricos em formato de bits, com valores típicos da ordem de 400 a 800 microssegundos. 3.5.3 Calculando o espaçamento e armazenamento em discos rígidos O cálculo do espaço necessário para o armazenamento em discos rígidos consiste na escolha do setor ou grupo de setores, como a unidade de transferênciafixa, deixando de existir, portanto, o fator de bloco de dados variáveis. Dessa forma, será necessário o cálculo de quantidade de trilhas ou cilindros 115 ARQUITETURA DE COMPUTADORES MODERNOS que serão consumidos por arquivo. Um cilindro é constituído por um conjunto de todas as trilhas que estão na mesma posição relativa, como exemplificado na figura seguinte: Figura 99 – Trilhas e cilindros internos Fonte: Stallings (2010, p. 154). Exemplo de aplicação Os arquivos de dados são constituídos de N registros lógicos e, considerando a divisão de trilhas em setores, cada um deles com uma quantidade fixa de bytes no armazenamento. Assim, pode-se implementar o cálculo com o seguinte exemplo: Deseja-se conhecer qual será o espaço necessário para armazenar em disco rígido um arquivo com 80.000 bytes. O disco, para realizar o armazenamento, possui 40 trilhas, além de 9 setores de 512 bytes cada. Como calcular? Resolução A quantidade de setores necessária será 80.000/512 = 156,25. Mas como o número de setores deve ser composto por um número inteiro, então serão necessários 157 setores. O cálculo da quantidade de trilhas consiste em dividir o total de setores obtido (157) pelos setores disponíveis no disco (9), resultando em: 157/9 = 17,4 trilhas, que também precisa ser adequado para 18 trilhas, pois esse número também não é fracionado. 3.5.4 Funcionamento do desempenho em discos rígidos Para o funcionamento ideal, os discos rígidos dependem de vários fatores, entre eles: a quantidade de operações de E/S, taxa de transferência, quantidade de bytes envolvidos na operação, além do sistema operacional utilizado. Quando uma unidade de disco rígido está em operação, o disco gira de forma constante em altas velocidades, de modo que, para realizar a leitura/gravação, a cabeça necessita ser posicionada no início do setor e na trilha desejada. 116 Unidade I O processo de seleção da trilha envolverá a movimentação da cabeça em um sistema de cabeça móvel ou mesmo selecionando eletronicamente uma cabeça no sistema de cabeça fixa. Para sistemas de cabeça móvel, o tempo gasto para o posicionamento da cabeça na trilha é conhecido como tempo de busca ou seek time (STALLINGS, 2010). Após a trilha ser selecionada, o controlador de disco rígido aguarda até que o setor escolhido esteja alinhado com a cabeça. Assim, o tempo gasto até que o início do setor encontre a cabeça é conhecido como atraso rotacional ou latência rotacional. Além desses tempos gastos para o alinhamento da cabeça na trilha, existe a soma do tempo de busca, quando ocorre o atraso rotacional que será igual ao tempo de acesso, determinado pelo tempo gasto para o posicionamento da cabeça na operação de leitura/gravação. Dessa forma, quando a cabeça já está posicionada corretamente, a operação de leitura/gravação será realizada quando o setor se mover sob a cabeça, realizando de fato a transferência dos dados, obtidos pelo tempo de transferência. Em uma rede de computadores, por exemplo, existe uma técnica utilizada para a detecção da posição rotacional dos discos, conhecida como RPS (Rotational Positional Sensing – sensor de posição rotacional). Essa técnica é acionada quando o comando de busca é emitido, daí o canal é liberado para tratar outras solicitações de E/S. Assim, quando a busca termina, o dispositivo determinará quando os dados solicitados na operação estarão posicionados sob a cabeça do disco. À medida que o setor se aproxima da cabeça, o dispositivo procura o caminho solicitado para que ocorra a comunicação com o sistema. Se a unidade de controle estiver ocupada em outra operação de E/S, então uma nova tentativa para realizar a conexão é solicitada, e, se houver falha, ainda assim o disco necessitará girar por mais uma volta inteira antes de uma nova reconexão. Esse processo é conhecido como falha de RPS e é um elemento que deverá ser somado à linha de tempo de transferência para o disco rígido, como mostra a figura a seguir. Dispositivo ocupado Espera pelo dispositivo Busca Atraso rotacional Transferência de dados Espera pelo canal Figura 100 – Temporização de transferência em discos rígidos Fonte: Stallings (2010, p. 156). O cálculo do tempo de transferência depende da velocidade de rotação dos discos rígidos e obedece à expressão: T = b/rN, onde T é o tempo de transferência, b é o número de bytes a serem transferidos, N é o número de bytes em uma trilha e r a velocidade de rotação dada em rpm, ou rotações por minuto. Exemplo de aplicação Calcule o tempo total em uma operação de transferência de dados onde o número de bytes a serem transferidos é de 1.024 Mbytes, o número de bytes da trilha é de 512 bytes e a velocidade de rotação do disco é de 7.200 rpm. 117 ARQUITETURA DE COMPUTADORES MODERNOS Resolução Calculando o tempo total T para a realização da transferência, a resposta seria: T = 1.024/7.200 * 512 → 277,77 µs (microssegundos). 3.6 RAID em discos rígidos Em 1988, David Patterson e outros pesquisadores sugeriram que seis tipos de organizações de paralelismo específicas poderiam ser utilizados para a melhoria de desempenho e a confiabilidade do armazenamento de dados nos discos rígidos magnéticos. As ideias de Patterson foram empregadas pela indústria na fabricação dessa nova tecnologia para os dispositivos de E/S e ficaram conhecidas como RAID (Redundant Array of Inexpensive Disks – arranjo redundante de discos baratos) (TANENBAUM; AUSTIN, 2013). Observação O processamento realizado de forma paralela nos computadores pode acelerar seu desempenho. A ideia do sistema RAID envolve a instalação de uma caixa contendo vários discos rígidos, geralmente próximos a um servidor, e substituição da placa controladora de disco por uma placa controladora RAID. Dessa forma, de acordo com a configuração adotada, os discos rígidos, embora sendo muitos, aparecerão como apenas um único disco para o sistema operacional. Outra propriedade importante no sistema RAID se refere à distribuição dos dados pelos diferentes discos, a fim de permitir que a operação ocorra em paralelo. Com essa finalidade, Patterson desenvolveu diferentes esquemas ou níveis que ficaram conhecidos como RAID 0 até o nível RAID 5. 3.6.1 RAID 0 Embora tenha o nome de RAID e também faça parte do sistema de esquemas de redundância, o RAID 0 não possuía redundância. Essa configuração consiste em dividir os discos em tiras (stripes), distribuídos e intercalados (striped), o que auxilia no processo das solicitações de blocos de dados, que estarão distribuídos pelos vários discos. Isso tornará o processo mais veloz, visto que a resposta para essa solicitação será executada em paralelo por todos os discos envolvidos no processo. Tira 8 Tira 4 Tira 0 Tira 9 Tira 5 Tira 1 Tira 10 Tira 6 Tira 2 Tira 11 Tira 7 Tira 3 RAID nível 0 Figura 101 – RAID 0 118 Unidade I 3.6.2 RAID 1 Essa configuração RAID consiste na implementação de redundância através da duplicação ou mesmo triplicação de um determinado volume de dados em todos os discos, criando uma espécie de espelhamento, conforme observa-se na figura a seguir. Dessa forma, cada transação de leitura/gravação de dados em um disco também ocorrerá nos outros definidos no espelhamento. É possível realizar a combinação dos RAID 0 e RAID 1, garantindo maior rapidez e confiabilidade. O uso de um sistema combinado de RAIDs geralmente é atribuído para servidores de arquivos ou grandes datacenters. Tira 8 Tira 4 Tira 0 Tira 9 Tira 5 Tira 1 Tira 10 Tira 6 Tira 2 Tira 11 Tira 7 Tira 3 Tira 8 Tira 4 Tira 0 Tira 9 Tira 5 Tira 1 Tira 10 Tira 6 Tira 2 Tira 11 Tira 7 Tira 3 RAID nível 1 Figura 102 – RAID 1 3.6.3 RAID 2 Nesse sistema, o RAID incluirá um mecanismo para detecção de falhas como um código de correção de erros. No processo de leitura/gravação dos discos, os dados solicitados e o código de correção de erro associado serão entregues ao controlador do array. Se algum bit contiver erro, o controlador poderáreconhecê-lo e corrigi-lo de forma instantânea, usando algum processo de paridade de bits para a recuperação. Bit 1 Bit 5Bit 2 Bit 6Bit 3 Bit 7Bit 4 RAID nível 2 Figura 103 – RAID 2 3.6.4 RAID 3 Semelhantemente ao RAID 2, no RAID 3 os dados são divididos pelos vários discos rígidos, utilizando-se um disco adicional para a verificação de erros através do processo de paridade. O uso dessa técnica pode garantir maior integridade dos dados quando houver a necessidade de recuperação. Bit 1 Bit 2 Bit 3 Bit 4 Paridade RAID nível 3 Figura 104 – RAID 3 119 ARQUITETURA DE COMPUTADORES MODERNOS 3.6.5 RAID 4 No esquema de RAID 4, os dados são divididos igualmente entre todos os discos, com exceção de um, que é utilizado exclusivamente para inserir os dados necessários para realizar a paridade. A única diferença do RAID 4 com os anteriores consiste no tamanho dos blocos de armazenamento, são maiores do que do RAID 3, tornando o rendimento melhor no processo de leitura. Esse sistema é indicado para utilização com arquivos de tamanho grande, quando é exigida uma maior integridade dos dados, pois a cada operação de leitura é realizada a paridade dos dados, resultando também em maior confiabilidade. Tira 8 Tira 4 Tira 0 Tira 9 Tira 5 Tira 1 Tira 10 Tira 6 Tira 2 Tira 11 Tira 7 Tira 3 P8-11 P4-7 P0-3 RAID nível 4 Figura 105 – RAID 4 3.6.6 RAID 5 No RAID 5 a paridade não se restringe a somente uma unidade de disco, como foi observado no RAID 4, mas toda a matriz de discos tem a paridade distribuída. Nessa situação, o tempo de gravação será menor, pois não será preciso acessar um único disco de paridade em cada operação de leitura/escrita, mas sim acessar o disco que possui a paridade necessária para a recuperação de dados em um processo específico. P16-19 Tira 16 Tira 17 Tira 18 Tira 19 Tira 12 P12-15 Tira 13 Tira 14 Tira 15 Tira 8 Tira 9 P8-11 Tira 10 Tira 11 Tira 4 Tira 0 Tira 5 Tira 1 Tira 6 Tira 2 P4-7 Tira 3 Tira 7 P0-3 RAID nível 5 Figura 106 – RAID 5 Saiba mais Aprenda mais sobre configurações de software e hardware dos sistemas RAID em: VIANA, A. L. S. Um pouco sobre RAID – configuração via software e via hardware. DevMedia, 2012. Disponível em: https://bit.ly/3HglwfM. Acesso em: 18 jan. 2023. 120 Unidade I 3.6.7 Memória virtual Um conceito importante e muito usado em discos rígidos magnéticos é conhecido como memória virtual. Essa técnica é utilizada porque, no geral, os computadores pessoais não possuem uma quantidade elevada de memória RAM, tornando insuficiente a execução de algumas aplicações quem envolvem, por exemplo, processamento gráfico, processamento de vídeo, programação de alto desempenho de dados, entre outros. Observação A memória virtual tem como objetivo principal utilizar o disco como uma extensão da memória principal, aumentando, assim, o espaço para o endereçamento disponível da RAM. Ao utilizar a memória virtual, a memória principal (RAM) possuirá uma área muito maior do que a original para realizar o endereçamento. Essa área no disco rígido é reconhecida como um arquivo de páginas, pois contém algumas porções da memória principal. Uma forma simples de entender como funcionam as memórias virtuais é o conceito de posição imaginária da memória principal, endereçado no disco rígido pelo sistema operacional. A memória virtual também é conhecida como páginas, o que é uma maneira de dividir a memória em blocos com tamanhos fixos, dividindo também os programas com blocos do mesmo tamanho. Alguns conceitos de memória virtual envolvem os seguintes termos: • Endereço virtual: é o endereço lógico no programa que o processo utilizará. Dessa forma, sempre que o processador gerar o endereço, ele estará relacionado ao espaço de endereçamento virtual. • Endereço físico: é o endereço real na memória RAM. • Mapeamento: é o mecanismo onde os endereços virtuais serão traduzidos para endereços físicos. • Quadro de páginas: são pedaços ou blocos de mesmo tamanho em que a memória RAM é dividida. • Páginas: são pedaços ou blocos onde a memória virtual é dividida, de modo que cada um desses blocos possuem o mesmo tamanho que um quadro da página. • Paginação: é o processo de copiar uma página virtual do disco para um quadro de página que está na memória RAM. • Fragmentação: é um pedaço da memória que se torna não utilizável. • Falha de página: envolve um ou mais eventos que ocorrem quando a página que é solicitada não está na memória RAM e deve ser copiada do disco rígido para ela. 121 ARQUITETURA DE COMPUTADORES MODERNOS Como a memória RAM e a memória virtual são divididas em páginas de tamanhos iguais, algumas partes do espaço de endereçamento dos processos podem ser movidos para a memória RAM e não precisam ser armazenados de forma contígua. Outro fator importante em termos de paginação são os registros utilizados para gravar as informações das páginas, conhecidos como tabela de páginas. Dessa forma, cada processo armazenado possui sua própria tabela, que irá armazenar sua posição física de cada página virtual do processo. Assim, uma dessas tabelas possui N linhas, onde N será o número de páginas virtuais do processo. 3.7 Drive de estado sólido (SSD) Da mesma forma que os HDs, os SSD (Solid State Drive) são memórias não voláteis e se apresentam como uma alternativa de memória de alta velocidade. Melhor que as memórias do tipo RAM, o SSD é constituído por várias células unitárias, cujo principal componente é o transistor. Os transistores são dispositivos eletrônicos que possuem como uma das suas principais características a comutação, ou seja, eles modificam o seu estado atual. Porém, ao comutarem, eles se desgastam, chegando a um ponto de não funcionarem mais, o que é conhecido como falha de um transistor. Essa falha também pode ser explicada como uma injeção de portadora, que ocorre quando uma carga elétrica é colocada dentro do transistor, alterando o seu estado anterior e tornando-o permanentemente ligado ou desligado. E foi assim que a empresa Toshiba, na década de 1980, viu que era possível aproveitar essa falha para criar um mecanismo de memória não volátil, a memória flash (TANANBAUM; AUSTIN, 2013). Figura 107 – Drive de estado sólido Disponível em: https://bit.ly/3Hh4Bd5. Acesso em: 19 jan. 2023. Diferentemente dos discos rígidos magnéticos, que possuem tanto parte elétrica quanto mecânicas, as memórias SSD têm um desempenho superior, visto que são basicamente dispositivos inteiramente eletrônicos, sem peças mecânicas. Outra grande vantagem do SSD é a sua utilização em dispositivos móveis, como notebooks, a fim de evitar trepidações ou movimentos bruscos, que dificilmente irão impactar o seu correto funcionamento. 122 Unidade I Conforme pode ser observado na figura a seguir, uma célula de memória flash é composta de um transistor especial. Nele há uma espécie de porta flutuante que é carregada e descarregada (eletricamente) através do uso de voltagens maiores do que os 5 volts convencionais, em se tratando de dispositivos para computadores. Semicondutor Origem Canal DrenoPonta de teste Carga negativa interceptada Isolador Tensão de programação 12V Isolador Porta de controle Porta flutuante Terra Figura 108 – Célula de memória do tipo flash Fonte: Tanenbaum e Austin (2013, p. 77). Antes de a célula unitária flash ser programada, o que corresponde à aplicação da carga elétrica, a porta flutuante não afetará a operação do transistor, de modo que ela continuará atuando como um isolador entre a porta de controle e o canal, tornando-o apenas um transistor simples. A referida alta tensão é baseada em 12 volts e aplicada na porta de controle, que irá acelerar o processo referido de injeção de portadora na porta flutuante. A carga elétrica inserida na porta flutuante tornará o transistor flash negativamente carregado, aumentando, assim, a tensão necessária para que ele seja ligado. Uma atenção mais baixa do que 12 volts será exigida para determinar se aporta flutuante está ou não carregada, o que resultará em um valor que será codificado como bits 0 ou 1. Dessa forma, uma das principais vantagens das memórias SSD constitui que, uma vez que a carga é inserida na célula unitária, ela irá permanecer estável, mesmo que não haja alimentação elétrica, tornando-a não volátil. Em relação à velocidade, os dispositivos SSD podem operar duas ou mesmo três vezes mais rápido do que um disco rígido convencional, que possui acesso a dados em até 100 MB/s. Logicamente, não há somente vantagens nesse tipo de dispositivo, podendo-se destacar a sua alta taxa de falha. Essas falhas ocorrem geralmente porque uma célula flash unitária tipicamente pode ser escrita aproximadamente cem mil vezes até que ela deixe de funcionar corretamente. Isso quer dizer que o processo de injetar elétrons danifica a célula aos poucos, assim como os isolantes que estão ao seu redor. Algumas técnicas para aumentar o tempo de vida dos dispositivos SSD são usadas atualmente. Uma delas é conhecida como nivelamento de desgaste, sendo empregada a fim de espalhar as escritas por todas as células flash, não tornando algum ou alguns pontos viciados. Dessa forma, todas as vezes que um bloco precisa ser escrito, há uma distribuição homogênea por ele, ou mesmo a busca por blocos que não foram escritos no processo anterior. 123 ARQUITETURA DE COMPUTADORES MODERNOS Ao utilizar o nivelamento de desgaste, um drive SSD poderá suportar uma quantidade de escritas que será igual ao número de escritas que uma célula poderia sustentar multiplicado pelo número de blocos no drive. 3.8 Discos ópticos Desenvolvidos em meados dos anos 1980 pelas empresas Philips e Sony, os discos ópticos eram inicialmente utilizados para gravar em programas de televisão e, na sequência, devido a sua grande capacidade de armazenamento para a época, também passaram a ser usados no armazenamento de dados de computadores. Entretanto, sua popularidade ocorreu na gravação de músicas, substituindo os discos de vinil. Entre as variedades desses discos ópticos podem ser citados: CD-ROM, CDs regraváveis, DVDs e blu-rays. 3.8.1 CD‑ROM Os Compact Discs (CDs) possuem, no geral, 120 mm de diâmetro, 1,2 mm de espessura e um orifício de 15 mm em sua área central, como mostra a figura a seguir. No ato de sua fabricação, um CD é preparado com o uso de um laser infravermelho de alta potência que produz orifícios com 0,8 micrômetros de diâmetro em um disco mestre que é revestido de vidro. A partir desse disco mestre será fabricado um molde com saliências onde estavam originalmente os orifícios produzidos pelo laser. Figura 109 – Mídias de CD-ROM Disponível em: https://bit.ly/3GVu1LR. Acesso em: 19 jan. 2023. No ato de sua fabricação, um CD é preparado através da utilização de um laser infravermelho de alta potência, que produz orifícios com 0,8 micrômetros de diâmetro em um disco mestre, que é revestido de vidro. A partir desse disco mestre será fabricado um molde com saliências onde estavam originalmente os orifícios produzidos pelo laser. Nesse processo de preparação é introduzido o policarbonato, uma espécie de plástico fundido no molde, a fim de formar um CD com o mesmo padrão de orifícios do mestre. Logo após, é depositada uma camada fina de alumínio refletivo sobre a camada já depositada anteriormente de policarbonato, produzindo assim um verniz de proteção. Por fim, insere-se uma etiqueta com a nomenclatura da finalidade daquele CD, sendo as possibilidades 124 Unidade I diversas, como gravar músicas ou dados. Essas marcas inseridas no substrato de policarbonato são conhecidas tecnicamente como depressões ou pits, do inglês, e as áreas que estão posicionadas entre as depressões são conhecidas como planos, lands, como exemplificado na figura a seguir. Sulco em espiral Plano Depressão Bloco de 2 k de dados de usuário Figura 110 – Estrutura de gravação em CD-ROM Fonte: Tanenbaum e Austin (2013, p. 79). O processo de leitura do CD-ROM (Compact Disk Read Only Memory) ocorre quando um diodo laser de baixa potência emite uma luz infravermelha com comprimento de onda de 780 nm sobre as depressões e planos que estão no disco, realizando a leitura dos dados contidos naquele local por onde a luz passa. Devido à altura das depressões, correspondente a um quarto do comprimento de onda da luz do laser, a luz refletida na depressão terá uma defasagem de meio comprimento de onda em relação à que é refletida na superfície que a circunda. O resultado disso é que as duas partes irão interferir umas com as outras de forma destrutiva, o que envolverá a devolução de menos luz ao fotodetector do aparelho de reprodução de luz que reflete. É exatamente dessa forma que um aparelho interpreta a diferença entre uma depressão e um plano, que envolverá justamente a leitura dos bits 0 e 1. Embora possa parecer muito mais simples interpretar uma depressão como sendo um bit zero e o plano como sendo o bit 1, é muito mais confiável utilizar uma transição entre a depressão e o plano ou o plano, e a depressão para representar o bit 1 é a sua ausência para indicar o bit zero. É exatamente dessa forma que os bits 0 e 1 são interpretados em um CD-ROM, como mostra o esquema da figura 111. As depressões em planos são escritas no CD-ROM em uma espiral única e contínua que começa próxima ao orifício central e se estende até uma distância de 32 mm em direção a sua borda. Uma espiral conterá 22.188 rotações ao redor do disco, o que daria cerca de 600 mm. Para que uma música seja tocada em um CD-ROM e haja uma taxa uniforme, é necessário que os planos e as depressões passem sob a luz a uma velocidade linear e constante. Como consequência, a taxa de rotação deve ser reduzida de forma contínua à medida que a cabeça de leitura do dispositivo se 125 ARQUITETURA DE COMPUTADORES MODERNOS move, desde a parte interna até a parte externa do CD-ROM. A parte interna do disco geralmente possui uma taxa de rotação de 530 rpm, enquanto a taxa na parte mais externa é de 200 rpm. Essa variação na velocidade deve ser regulada da mesma maneira que ocorre nos discos rígidos magnéticos que possuem um sistema de velocidade angular constante. Em relação a sua organização de dados, os dispositivos de CD-ROM operam com 75 setores/s, o que dá uma taxa de dados de 153.600 bps. Um CD-ROM padrão de áudio possui um espaço de 74 minutos de música; se usado para dados, possui aproximadamente uma capacidade de 682.000 bits, o que geralmente é arredondado para 650 MB, pois um MB será igual a 220 bytes, ou seja, 1.048.576 bytes. 3.8.2 DVD Devido à grande demanda no aumento da capacidade de gravação de dados em CDs, em meados da década de 1990 foi desenvolvida uma variação dessa mídia para que ela tivesse a capacidade de armazenar não somente músicas como também filmes. Com essa demanda, surgiu o DVD (Digital Vídeo Disc), hoje também conhecido como Digital Versatile Disc. Os DVDs possuem o mesmo desenho dos CDs, porém com algumas novidades: • depressões com tamanhos reduzidos de 400 nm; • espirais mais estreitas, com uma separação entre trilhas de 740 nm; • leitura de gravação utilizando um laser de 650 nm. Além dessas melhorias, que ocasionaram um aumento na capacidade em 7 vezes, chegando a um total de 4,7 GB, um dispositivo DVD funciona com diferentes velocidades. A velocidade de transferência do DVD 1x possui 1,4 KB/s e pode alcançar velocidades 4x (5400 KB/s) ou maiores. Assim como os CDs de maiores capacidades, os DVDs podem gravar em ambas as faces de sua mídia, chegando à capacidade de armazenamento: • uma face, uma camada com 4,7 GB; • uma face, duas camadas totalizando 8,5 GB; • duas faces, uma camada totalizando 9,4 GB; • duas faces, duas camadas totalizando 17 GB. 3.8.3 Blu‑ray Em sucessão ao DVD, surgiu o blu-ray, assim chamado devido à frequência de luz na faixa do laser azul utilizado para leitura dos dados gravados. A frequência azul aplicada possui um comprimento de onda menor e uma frequênciamaior, o que obriga no ato da leitura que as depressões e os planos também sejam menores. Dessa forma, com mais depressões e planos na mídia, é possível armazenar 126 Unidade I muito mais dados. A figura a seguir mostra, de forma resumida, um comparativo entre as principais mídias óticas apresentadas, incluindo a variação das depressões e regiões planas, que influenciarão na quantidade de dados gravados. p= 16 µm I=800 nm CD DVD HD DVD Blu-ray I=400 nm I=200 nm I=150 nm ø= 16 µm 0.1 mm 0.1 mm 0.6 mm 0.6 mm 0.6 mm 0.6 mm 11 mm 1.1 mm λ=405 nmλ=405 nm λ=650 nmλ=780 nm ø= 11 µm ø= 480 nm ø= 620 nm w= 600 nm w= 320 nm w= 200 nm w= 130 nm p= 740 nm p= 400 nm p= 320 nm Figura 111 – Variações entre os tamanhos das depressões e planos em função da luz laser inserida Disponível em: https://bit.ly/3QWnW6t. Acesso em: 19 jan. 2023. Saiba mais Conheça mais sobre os últimos avanços em discos ópticos em: CRIADO disco óptico que armazena dados em cinco dimensões. Inovação Tecnológica, 2009. Disponível em: https://bit.ly/3GS7QGh. Acesso em: 18 jan. 2023. 3.9 Disquetes Também conhecidos como floppy disk drivers (FDD), os disquetes possuem características semelhantes ao disco rígido, embora com menor capacidade de armazenamento. A grande diferença entre esses dispositivos está na velocidade de acesso, capacidade de armazenamento, tempo de transferência de dados e, principalmente, a sua portabilidade, ou seja, disquetes são muito mais simples de serem removidos do que os discos rígidos. 127 ARQUITETURA DE COMPUTADORES MODERNOS Figura 112 – Disquete Disponível em: https://bit.ly/3XLHsom. Acesso em: 19 jan. 2023. Observação Os disquetes foram desenvolvidos na década de 1960 como uma alternativa mais simples e barata do que os discos rígidos. Devido a sua facilidade e usabilidade, os disquetes se tornaram muito populares entre usuários tanto domésticos quanto empresariais. Esse processo ocorreu junto com o avanço dos computadores pessoais. As informações são gravadas de forma idêntica aos discos rígidos. Em trilhas, esses setores estão posicionados na superfície do disco magnetizável. Para que seja acionado o disquete em um computador, há um mecanismo que realiza a leitura ou gravação para cada superfície. Comumente, um computador possui um drive para acionar o disquete. Esse drive contém um sistema eletromecânico que irá acessar as trilhas entre setores dos disquetes. No geral, os usuários desse dispositivo dispunham de alguns modelos diferentes oferecidos conforme três fatores principais: • capacidade total de armazenamento; • taxa de transferência de bits; • tempo médio para acesso ao dispositivo. Em relação à taxa de transferência dos disquetes, logicamente não se compara com as dos discos rígidos magnéticos, que podem alcançar taxas de transferência na ordem de MB/s, enquanto em disquetes essa taxa não chega a centenas de KB/s. 128 Unidade I 3.10 Fitas magnéticas Desenvolvidas em meados dos anos 1950, elas foram muito utilizadas como dispositivos para armazenamento de dados e instruções, visto que no início da computação os modos de realizar a leitura e a gravação de dados era um processo um tanto quanto lento, pois se baseavam no uso de cartões perfurados. O princípio de funcionamento das fitas magnéticas é bastante semelhante ao processo de leitura e gravação de fitas aplicadas em dispositivos de som. Eles usam de dois carretéis de fita que se desenrolam de um lado para o outro, de maneira que a fita passará por um par de leitura ou gravação em velocidades constantes. A figura a seguir mostra um dispositivo de fita magnética usada em computadores como mainframes na década de 1980. Figura 113 – Rolo de fita magnética Disponível em: https://bit.ly/3QWIs7e. Acesso em: 19 jan. 2023. Diferentemente do tipo de acesso à memória que ocorre em dispositivos como discos rígidos magnéticos ou memória RAM, o acesso aos dados contidos na fita magnética é realizado apenas sequencialmente, ou seja, cada informação é armazenada uma após a outra e a sua leitura é executada também num processo sequencial. Dessa forma, a localização do registro desejado na operação de leitura começará a partir do início da fita, variando registro a registro, até que se identifique o registro desejado, como corre numa fita cassete. A fita magnética é constituída por uma tira contínua de um material plástico que é coberto com alguns elementos magnetizáveis, onde os bits serão gravados. Dessa forma, os bits gravados em um certo sentido de magnetização irão representar o bit 0, enquanto em outro sentido magnetizável irão indicar o bit 1. As posições nas trilhas são magnetizáveis quando esses campos são preenchidos pela passagem de corrente elétrica em uma bobina que está presente na cabeça de gravação. A figura a seguir mostra como exemplo um trecho de uma fita magnética em que é possível observar os bits indicados em linhas paralelas. 129 ARQUITETURA DE COMPUTADORES MODERNOS 0 1 2 3 4 5 6 7 8 9 A B C D E F M N Y $ / % * Posições dos bits * A posição P do bit se refere ao bit de paridade Coluna 9 8 7 6 5 4 3 2 1 4 6 0 1 2 P* 3 7 5 Trilhas Figura 114 – Organização de linhas e colunas em diferentes trilhas de uma fita magnética Fonte: Monteiro (2019, p. 319). Os dados armazenados em canais paralelos, conhecidos como trilhas, percorrem toda a fita magnética. A quantidade de trilhas pode variar entre 7 ou 9, embora fitas com 7 trilhas já estejam obsoletas há muitas décadas, de modo que somente as com 9 trilhas continuam a ser fabricadas. Cada caractere é armazenado verticalmente, um bit a cada trilha, adicionando-se um bit de verificação de paridade, o que irá completar as 9 trilhas necessárias. Entre as características das fitas magnéticas, uma das mais interessantes é a respeito do seu sistema de transporte de unidades de fita, que consiste no processo de parada e partida das rotações dos carretéis. Entre as colunas da fita magnética é obtida a gravação, que pode variar de acordo com a velocidade de passagem da fita, podendo demonstrar que uma das principais características referentes ao desempenho das unidades da fita está relacionada a sua densidade. Em geral, fitas magnéticas possuem densidades de 800 caracteres por polegadas ou BPI (bytes per inch), chegando até mesmo em densidades de 6.250 caracteres por polegada. Devido à implementação de dispositivos com maior desempenho e velocidade para gravação de dados, como DVD e blu-ray, as fitas magnéticas caíram em desuso, principalmente, para usuários domésticos, ficando restritas em grandes data centers, como dispositivos de backup. Além dessas características, as fitas magnéticas possuem algumas marcas de ações para o controle da gravação de dados, por exemplo, uma marca refletora no seu início e no final do carretel, para impedir que a fita ultrapasse os limites e ocorra algum dano a ela. Saiba mais Aprenda mais sobre as novas tendências de armazenamento de dados ultrarrápidos em: ULTRAMAGNETRON: gravação magnética à velocidade da luz. Inovação Tecnológica, 2014. Disponível em: https://bit.ly/3WmtKat. Acesso em: 19 jan. 2023. 130 Unidade I 4 COMPUTADOR E SEUS BARRAMENTOS E TIPOS DE TRANSMISSÃO DE DADOS 4.1 Barramentos do computador Tecnicamente, barramento é definido como um fio (ou vários fios) de cobre que tem como função realizar um “caminho” para que a corrente elétrica possa fluir entre vários dispositivos internos ou externos ao computador, como pode ser observado na placa de circuitos impressos da figura a seguir. Figura 115 – Configuração de fios de cobre em um barramento da placa-mãe Disponível em: https://bit.ly/3J12mf2. Acesso em: 19 jan. 2023. Observação Os barramentos geralmente possuem diferenças que variam de acordo com sua finalidade, como para o transporte de dados entre a ULA e a UC, ou entre a CPU e a memória principal, ou mesmo entre outros dispositivos de E/S como disco rígido, CD, DVD, pen drive etc. Os primeiros computadores pessoaispossuíam um barramento externo, conhecido também como barramento do sistema, que consistia em 50 a 100 fios de cobre alocados em paralelo dentro da placa-mãe. Esses fios também eram formados por conectores com intervalos de distanciamento regulares ligados à memória principal e outras placas de E/S como conexões de rede, impressora etc. (TANENBAUM; AUSTIN, 2013). 131 ARQUITETURA DE COMPUTADORES MODERNOS Em alguns diagramas, o barramento sempre é representado por setas largas e sombreadas. A distinção entre as setas e uma linha reta apenas cortada por um pequeno segmento de reta inclinada com valores de bits é quase imperceptível. Quando os bits de dados ou endereços, por exemplo, são utilizados na figura, comumente são representados por um segmento de reta diagonal. Entretanto, para bits de controle, usam-se geralmente setas mais largas e sombreadas, como esquematizado na figura a seguir. Chip de CPU Barramento de memória Barramento de E/S Controlador de barramento Disco Rede Impressora Memória Registradores Barramentos Barramento no chip ULA Figura 116 – Organização interna de um computador e seus barramentos Fonte: Tanenbaum e Austin (2013, p. 148). Os barramentos devem possuir um certo padrão. Para tal, os projetistas de computação devem seguir um protocolo de barramentos, que irá determinar especificações mecânicas (tensões mecânicas) e elétricas (temporização, largura de banda) na fabricação das placas. Existem variedades de barramentos para uso em computadores, entre os mais conhecidos estão: Omnibus (PDP-8), Unibus (PDP-11), Multibus (8086), barramento IBM PC (PC/XT), barramento ISA (PC/AT), barramento SCSI. Outra característica de funcionamento dos barramentos está relacionada à transferência ativa ou passiva de dados/instruções: os ativos são conhecidos como mestres; os passivos, escravos. Quando o processador ordena que uma controladora de discos realize o processo de leitura ou escrita de um bloco de palavras, a CPU está agindo como um mestre e o dispositivo que atua obedecendo à operação como um escravo. Os sinais em binário, emitidos pelos dispositivos do computador, geralmente são fracos e não conseguem energizar o barramento, principalmente se ele for relativamente longo e com muitos dispositivos conectados nele. Assim, a maioria dos barramentos mestres estão conectados por um chip denominado controlador de barramento, que opera como um amplificador digital de sinais elétricos. De forma semelhante, os dispositivos que operam como escravos estão conectados em um chip denominado transceptor de barramento. As interfaces de barramento possuem três estados diferentes, que permitem que se desconectem quando for necessário ou então se conectem (coletor aberto) (TANENBAUM; AUSTIN, 2013). 132 Unidade I 4.2 Largura de barramento A largura do barramento também é um parâmetro que deve ser considerado no projeto de um computador ou mesmo de um dispositivo móvel. Quanto mais linhas de endereços houver no barramento, mais capacidade de memória cache ou memória principal e processador poderão ser endereçadas de forma direta. Portanto, se um barramento possuir n linhas de endereços, então a CPU poderá utilizá-la para endereçar 2n localizações diferentes na memória. Em memórias de grande capacidade, os barramentos exigem muitas linhas de endereços. O problema é que barramentos muito largos necessitam, obrigatoriamente, de mais espaço físico, mesmo utilizando fios estreitos, além de precisar de conectores maiores. Esses fatores podem encarecer o barramento, obrigando os fabricantes a produzir tipos que levem em consideração o tamanho máximo de memória a ser usada a um barramento específico. Um sistema usando barramento de endereçamento de 64 linhas e 232 bytes de memória principal irá custar mais do que um com 32 linhas e os mesmos 232 bytes. O computador IBM PC com processador Intel 8088, esquematizado na parte A da figura a seguir possuía um barramento de endereços de 20 bits que possibilitavam o endereçamento de 1 MB de memória. 8088 80286 80386 Endereço de 20 bits Controle Controle Controle Controle Controle Controle Endereço de 20 bits Endereço de 4 bits Endereço de 4 bits Endereço de 8 bits (c)(b)(a) Endereço de 20 bits Figura 117 – Barramento de endereço e controle no processador Intel 8088 (A), no Intel 80286 (B) e no Intel 80386 (C) Fonte: Tanenbaum e Austin (2013, p. 148). A partir da evolução do 8088, a Intel lançou o 80286 e decidiu aumentar o espaço de endereçamento para 16 MB, de modo que foi necessário adicionar mais quatro linhas de barramento sem alterar as vinte linhas originais para facilitar a compatibilidade, conforme a parte B da figura anterior. Já no lançamento do Intel 80386, oito linhas de endereço precisaram ser adicionadas, além de outras linhas de controle, originando o barramento conhecido como EISA, como ilustra a parte C da figura anterior. Observação Nos projetos dos dispositivos digitais atuais, não são apenas o número de linhas de endereços que tendem a crescer, mas também o número de linhas para transmissão de dados. 133 ARQUITETURA DE COMPUTADORES MODERNOS Segundo Tanenbaum e Austin (2013), existem dois modos básicos para aumentar a largura de banda para transmissão de dados no barramento: • redução do tempo para realizar a transmissão de dados, o que implicaria mais transferências por segundo. • aumento da largura de dados, possibilitando mais bits em cada transferência. Dessa forma, aumentar a aceleração do barramento também é possível, porém difícil, pois os sinais geralmente trafegam com diferentes velocidades no barramento, problema conhecido na literatura como atraso diferencial do barramento. Esse atraso pode complicar a evolução dele, pois quanto mais rápido for o barramento, mais provável e sério será o atraso diferencial. Outro problema relacionado ao barramento está associado à compatibilidade da aceleração. Placas e circuitos impressos mais antigos foram projetados para barramentos mais lentos e podem não funcionar com um novo. Para contornar um problema desses, os projetistas de computadores optam por usar um barramento multiplexado, assim, em vez de linhas de endereços e dados separados, podem ser anexadas 32 linhas de endereços e dados juntos. Então, inicialmente, pode-se utilizar o barramento somente para endereços e depois somente para dados. Os barramentos ainda podem ser divididos em duas categorias: síncronos ou assíncronos, de acordo com sua dependência do clock. 4.3 Barramentos síncronos Possuem uma linha controlada por um oscilador de cristal, responsável pelo sinal de clock, que consiste em uma onda quadrada gerada a partir de um sinal analógico, que tem frequências geralmente entre 5 MHz e 133 MHz. Cristal de quartzo Conversão de analógico para digital Figura 118 – Geração de um sinal de clock e sua conversão analógica/digital Fonte: Stallings (2010, p. 39). 134 Unidade I Utilizando um barramento síncrono, considere o diagrama temporal da figura a seguir para melhor compreensão dos sinais de clock. Nesse exemplo, aplica-se um clock de 100 MHz, resultando em um ciclo de barramento de 10 nanossegundos, e tem-se as linhas de clock, ADDREES, DATA, MREQ, RD e WAIT, e representadas na mesma escala de tempo. TML TAD TDH TRH TMH TDS T2T1 Φ T3 TRL TM Tempo DATA ADDRESS Endereço de memória a ser lido Dados Ciclo de leitura com 1 estado de espera MREQ RD WAIT Figura 119 – Temporização de leitura em um barramento síncrono Fonte: Tanenbaum e Austin (2013, p. 152). Usando esse barramento, leva-se 15 nanossegundos (15x10-9 segundos) para que um endereço seja lido na memória. No geral, essa leitura ocorre durante três ciclos de barramento; o primeiro ciclo começa na borda ascendente de T1 e o terceiro ciclo termina na borda ascendente de T4. No exemplo da figura anterior, nenhuma das bordas ascendentes ou descendentes foi colocada na linha vertical, pois nenhum sinal elétrico poderá trocar seu valorno tempo zero, de modo que se pode admitir que se leva 1 nanossegundo para o sinal mudar. O início de T1 é definido através da borda ascendente do clock, e no meio do caminho de T1 o processador insere o endereço da palavra desejada nas linhas de endereço. O endereço não é constituído de um único valor e é mostrado na figura como duas linhas que se cruzam no instante da mudança de endereço. Assim, é possível observar que o conteúdo das linhas de dados não é significativo até grande parte de T3. Após as linhas de endereços acomodarem seus novos valores, eles são ativados. No primeiro, indica-se que está sendo ativada (bit 0) a memória, e não uma comunicação de E/S, e o segundo é ativado (bit 0) para leitura e negado (bit 1) para realização da operação de escrita. Dessa forma, como a memória leva cerca de 15 nanossegundos após o endereço ficar estável, ela não poderá entregar os dados requisitados durante o tempo T2. 135 ARQUITETURA DE COMPUTADORES MODERNOS 4.4 Barramentos assíncronos Os barramentos assíncronos não possuem um clock mestre e, embora sejam fáceis para trabalhar devido a seus intervalos discretos de tempo, eles possuem alguns problemas. Por exemplo, como os ciclos de clock não podem ser fracionados, ainda que o processador e a memória realizem uma transferência de dados em 3,1 ciclos, eles deverão ser prolongados até 4,0. Outro problema também relacionado com os ciclos de leitura/escrita é que barramentos construídos especificamente para esse tipo de comunicação dificilmente são aproveitados em avanços de tecnologia. Nos barramentos assíncronos, como o da figura a seguir, em vez de vincular todas as operações ao clock, quando o mestre quando o mestre ativar o endereço MREQ e RD na sequência, ele ativa um sinal especial denominado MSYN ou master synchronization. Dessa forma, quando o escravo verifica o sinal, ele irá realizar o trabalho de forma mais rápida, concluindo a fase ativando o SSYN ou slave synchronization. Em resumo: • MSYN é ativado. • SSYN é ativado em resposta MSYN. • MSYN é negado em resposta a SSYN. • SSYN é negado em resposta à negação de MSYN. Observe a operação de um barramento assíncroo: SSYN MSYN MREQ DATA ADDRESS Endereço de memória a ser lido Operação de um barramento assíncrono RD Dados Figura 120 – Temporização de leitura em um barramento assíncrono Fonte: Tanenbaum e Austin (2013, p. 154). 136 Unidade I 4.5 Barramento ISA O ISA (Industry Standard Architecture) foi um dos tipos mais utilizados nos anos 1980/1990. Ele foi desenvolvido para funcionar em computadores pessoais IBM PC/AT, equipados com processadores Intel 80286 e era uma estrutura típica de 8 bits, projetada para substituir o padrão já ultrapassado VESA (Video Electronics Standards Association). Orginalmente, o padrão ISA operava em frequência de 4,77 MHz, mas que logo foi substituído por uma frequência mais alta de 8,33 com o lançamento dos modelos de computadores PC/XT de 16 bits. O padrão ISA era dividido em duas partes: a primeira tinha pinos usados por placas que suportavam apenas 8 bits; a segunda tinha a capacidade de extensão para adicionar pinos extras. Outra característica do ISA é a grande quantidade de contatos elétricos, que chegam a 98, como mostra a figura a seguir: há somente 16 trilhas para dados, e o restante delas é usado para realizar o endereçamento. Se comparada com os barramentos atuais, o ISA é considerado muito lento para operações que envolvem processamento de alto desempenho, como os da placa-mãe do computador, porém esse tipo ainda é usado, principalmente, pela facilidade de operação, e muitos desenvolvedores na área de automação industrial ou robótica ainda utilizam esse padrão. PCI-X Slots PCI Slots ISA Slots SHB Slot X8 PCI-E Slot X16 PCI-E Slot USB Connectors Etherbet Connectors ATX Power in AUX Power in PCI-X Bridge ISA Bridge Figura 121 – Diversos padrões de barramentos, entre eles o padrão PCI, ISA, PCI express Disponível em: https://bit.ly/3Xqyc9s. Acesso em: 19 jan. 2023. 137 ARQUITETURA DE COMPUTADORES MODERNOS 4.6 Barramento PCI O PCI (Peripheral Interconnect Bus – barramento de interconexão de componente periférico) foi desenvolvido em 1990 para substituir o já ultrapassado EISA (Extended Industry Standard Architecture). Originalmente, o PCI possuía a capacidade de transferir 32 bits por ciclo, barramento compatível a um clock de 33 MHz e largura de banda de 133 MB/s. Em 1993 foi lançada a segunda versão do padrão PCI (PCI 2.0), em 1995, o PCI 2.1. O tipo PCI tem capacidade de funcionamento em uma frequência até 66 MHz, manipulando transferências em 64 bits a uma largura de banda total, atingindo 528 MB/s. Devido a essa taxa elevada de transferência de dados/instruções, foi possível melhorar o desempenho nas transmissões de áudio, principalmente, de vídeo em alta qualidade. Figura 122 – Barramento PCI Disponível em: https://bit.ly/3J2uOxo. Acesso em: 19 jan. 2023. A melhora do padrão PCI se deve a dois chips da Intel, que trabalham como uma espécie de ponte que conecta o PCI ao processador, à memória principal e ao restante do barramento. O PCI foi desenvolvido para operar em 32 bits ou 64 bits, de modo que o padrão 64 bits pode comportar o funcionamento em 32 bits, mas o contrário não é possível. Além disso, o padrão PCI também suporta operar em 5 volts e 3,3 volts, como os barramentos mais modernos. 4.7 Barramento AGP No final dos anos 1990, o barramento padrão ISA estava praticamente inutilizado, portanto novos projetos, além do aprimoramento do padrão PCI, estavam em desenvolvimento. A Intel desenvolveu um novo tipo para comandar a placa gráfica, denominado AGP (Accelerated Graphics Port Bus – barramento 138 Unidade I de porta gráfica acelerada), como mostra a figura a seguir. A primeira versão do AGP foi a 1.0, que funcionava a uma largura de banda de 264 MB/s, e ficou conhecida como 1x. Embora um pouco mais lento do que o já existente PCI, ele era capaz de controlar de forma eficiente a placa gráfica. Figura 123 – Barramento do tipo AGP Disponível em: https://bit.ly/3CXCixS. Acesso em: 19 jan. 2023. 4.8 Barramento PCI Express O barramento AGP foi superado, em desempenho, por um novo tipo, denominado PCI Express, que possui a incrível capacidade de largura de banda de 16 GB/s de dados por enlaces de barramento serial de alta velocidade. Figura 124 – Barramento do tipo PCI express Disponível em: https://bit.ly/3XK8cWA. Acesso em: 19 jan. 2023. 139 ARQUITETURA DE COMPUTADORES MODERNOS Uma das novas implementações da tecnologia PCI Express, ou simplesmente PCIe, é eliminar o barramento paralelo, constituído de muitos mestres e escravos, e usar um projeto baseado em conexões seriais ponto a ponto de alto desempenho. Essa solução apresenta uma transição radical na tradição do barramento ISA/EISA/PCI e se pauta em algumas ideias do universo de redes Ethernet comutada. A ideia se fundamenta em uma estrutura com um computador constituído de um conjunto de chips, memória e controladores de E/S que necessitam ser interconectados. O PCIe irá fornecer um sistema comutador de uso geral para conectar os chips usando ligações seriais, como ilustra o esquema da figura a seguir. Gráficos Sistema PCI Express típico Disco Rede USB 2 Outro Ligações seriais em pares Cache de nível 2 CPU CHIP ponte Computador Memória Figura 125 – Sistema de barramento PCIe Fonte: Tanenbaum e Austin (2013, p. 177). Como mostrado na figura anterior, o processador, a memória e a cache estão conectadas a um chip através de ligações seriais em pares. Cada conexão é constituída por um par de canais unidirecionais – um liga o comutador e o outro é oriundo dele. Cada canal de transmissão é formado por dois fios de barramento, um para o sinal e outro para o aterramento, para diminuir alguma possibilidade de ruído durante a transmissão de alta velocidade. A arquitetura PCIe também possui três pontos de diferenças em relação ao barramento PCI antigo, um deles é o comutadorcentralizado e o outro é o uso de conexões seriais ponto a ponto estreitas. A terceira diferença é um pouco mais sutil, envolve um modelo conceitual de mestre de barramento encontrado no PCI, que emite um comando a um escravo que envia um pacote de dados a um outro dispositivo. Assim, é comum se referir ao barramento PCIe como uma miniatura de rede de comunicação de comutação de pacotes. 4.9 Barramento serial universal USB Os barramentos PCI e PCIe são muito eficientes e rápidos ao anexar dispositivos de alto desempenho, mas são muito caros para ser empregados em dispositivos de E/S, que operam a baixa velocidade. Além da questão do custo, alguns barramentos como ISA têm a necessidade de que sejam adaptados alguns comutadores e pontes na placa, para assegurar que o barramento terá êxito de execução em versões mais recentes e para que nenhum ajuste adicional seja preciso. 140 Unidade I Observação Para resolver todas as pendências relacionadas ao desempenho, em 1993 sete empresas do ramo da tecnologia (Compaq, DEC, IBM, Intel, Microsoft, NEC e Northern Telecom) se juntaram para buscar uma solução de unificação para a anexação de uma gama variada de dispositivos de E/S. Esse padrão resultante da pesquisa em conjunto das empresas envolvidas foi lançado em 1998 e ficou conhecido como USB (Universal Serial Bus – barramento serial universal), e desde então é amplamente utilizado em computadores, celulares, tablets, smart TVs e sistemas embarcados em geral (TANENBAUM; AUSTIN, 2013). Ao se juntarem, as sete empresas tomaram como primordial na elaboração do projeto as seguintes características: • Os usuários não necessitarão de ajustes de comutadores ou pontes para que o USB funcione para diferentes tipos de dispositivos. • Os usuários não precisarão abrir a torre para instalar novos dispositivos de E/S. • Apenas um tipo de cabo e conector será utilizado como padrão para esse barramento (figura a seguir). • A energia de alimentação deverá ser fornecida pelo próprio barramento. • O limite para 127 dispositivos é poderem ser conectados a um único computador usando o padrão USB. • O sistema deverá ser capaz de suportar dispositivos que operem em tempo real, como telefone, televisão etc. • Novos dispositivos poderão ser instalados mesmo com o computador em funcionamento. • Não será necessária a reinicialização do computador após a instalação do novo dispositivo. • A produção desse novo barramento e todos os dispositivos de E/S baseados nele não deverá ter um custo alto. 141 ARQUITETURA DE COMPUTADORES MODERNOS Figura 126 – Conector do tipo USB (barramento serial universal) Disponível em: https://bit.ly/3HeiDer. Acesso em: 19 jan. 2023. O padrão USB atende a todos esses requisitos e é largamente utilizado em dispositivos como teclado, mouse, câmeras fotográficas, scanners, telefones digitais, entre outros. A primeira versão do padrão USB ficou conhecida como 1.0 e possui uma largura de banda de 1,5 Mbps, suficiente para atender teclados e mouses. Já a versão 1.1 opera em 12 Mbps, capaz de operar impressoras, câmeras digitais e outros dispositivos de multimídia. Já a versão 2.0 tem suporte para dispositivos com a capacidade de transferência de 480 Mbps, capaz de operar drives de disco rígido externo, webcams de alta definição e interfaces de redes ethernet. A versão 3.0 alcança incríveis velocidades de transferência de 5 Gbps e pode ser usada em dispositivos de alta performance e ultrabanda larga, como memórias externas SSD (Solid State Drive). 4.10 Principais tipos de transmissão Existem, basicamente, dois modos para realizar uma transmissão/recepção entre os periféricos/ interfaces, o barramento e o processador/memória principal, denominados serial e paralela (MONTEIRO, 2019). 4.10.1 Transmissão serial Na transmissão em série (também chamada serial), o periférico é conectado ao módulo de controle ou interface de E/S através de uma linha única para execução da transmissão de dados, de maneira que essa transferência seja realizada um bit de cada vez, mesmo que o controlador tenha a capacidade de ser conectado ao processador/memória principal através do barramento constituído de diversas linhas de transmissão e com grande largura de banda, como observado na figura a seguir: 142 Unidade I UCP/MP Periférico Interface Buffer Barramento do sistema (transmissão em V) 10110001 Serial Figura 127 – Diagrama de transmissão serial entre uma interface e o periférico Fonte: Monteiro (2019, p. 345). Inicialmente, a transmissão serial era considerada muito lenta se comparada com a paralela. Teclado, mouse e modens são dispositivos que realizam comunicação serial. Como a transmissão serial é feita bit a bit, sempre será necessário que o receptor (RX) e o transmissor (TX) estejam sincronizados bit a bit, ou seja, o transmissor deverá transmitir os bits sempre na mesma velocidade, de modo que todos eles deverão possuir o mesmo tempo de duração. Por exemplo, se TX estiver funcionando em uma velocidade de 1 Kbps, isso significará que cada bit irá durar 1/1.000 segundos ou 1 milissegundo. Para que o RX seja capaz de receber todos os bits de forma correta, ou seja, um a um, ele precisa iniciar a sequência de bits e denominar qual a sua duração, conhecida como largura de bit. Assim, se a cada 1 milissegundo TX enviar um bit, cujo nível de tensão alta é considerado bit 1 e nível de tensão baixa considerado bit 0, então RX deverá verificar o nível de tensão da linha recebida para identificar o bit como 0 ou 1. As comunicações em série também podem ser subclassificadas como síncronas e assíncronas. Nas assíncronas, o processo de sincronização de RX é realizado e cada novo caractere transmitido, assim, antes de a transmissão ser iniciada, cada caractere será acrescido de dois pulsos, um no início e outro no final do pulso. Já a transmissão síncrona é considerada uma forma moderna de comunicação se comparada com a assíncrona, pois nesse caso os dados são transmitidos de uma só vez por blocos de caracteres sem a necessidade de intervalos entre eles tampouco de um pulso indicando o início ou o fim da transmissão, reduzindo com o uso a quantidade de bits na linha de transmissão. Hoje uma das aplicações de maior uso de cabeamento em série é sua aplicação para conexão de discos rígidos ou drives de SSD, utilizando o cabeamento SATA (Serial Advanced Technology Attachment). 143 ARQUITETURA DE COMPUTADORES MODERNOS Figura 128 – Conexão de cabo SATA (serial ATA) Disponível em: https://bit.ly/3wfaaCr. Acesso em: 19 jan. 2023. 4.10.2 Transmissão paralela Possui a capacidade de enviar um conjunto de bits de cada vez, assim, cada bit é enviado por uma linha separada de transmissão, como mostra a figura a seguir: T R 0 1 Transmissão Transmissor Receptor 1 0 0 1 1 0 1 1 0 0 0 0 0 0 Caractere 2 Caractere 1 Figura 129 – Diagrama de transmissão paralela entre TX e RX Fonte: Monteiro (2019, p. 350). 144 Unidade I Observação Nesse tipo de transmissão (paralelo), quanto maior a distância entre os dispositivos, maior será o custo, devido à quantidade de linhas utilizadas. Outra característica das transmissões em paralelo é que elas podem ser mais rápidas, se comparadas com algumas conexões em série mais antigas, o que permite maiores taxas de transmissões para dados. Um problema aparente com a transmissão em paralelo é que os bits enviados podem não chegar ao destino exatamente no mesmo instante ao qual foram programadas para chegar. Isso ocorre devido a algumas diferenças de comprimento de cabos de que os canais de comunicação são constituídos. A solução para esse problema foi o aprimoramento da transmissão em série, pois ao transmitir bit a bit não ocorrerá o problema de desvio conhecido como skew. Consequentemente, como já abordado, em 1995 surgiu outro padrão, conhecido como USB. Entre os dispositivos que usavam em larga escala as conexões em paralelo estão as impressoras e as conexões entre o disco rígido e a placa-mãe,conhecidos como IDE (Integrated Drive Electronics), como mostra a figura a seguir: Figura 130 – Cabo flat para conexão em paralelo do tipo IDE Disponível em: https://bit.ly/3wiyYta. Acesso em: 19 jan. 2023. 145 ARQUITETURA DE COMPUTADORES MODERNOS Resumo Nesta unidade, foi possível verificar como ocorreu a evolução dos computadores modernos e entender como essa evolução proporcionou o avanço dos modelos que usamos atualmente. Vimos que o principal dispositivo eletrônico utilizado nos dispositivos atualmente é o transistor. Esse dispositivo ainda continua em plena evolução e seu emprego se expande cada vez mais para tudo que usamos diariamente, como smart TVs, smartphones, smartwatches, aparelhos de micro-ondas, geladeiras, drones, satélites etc. Destacamos, de forma detalhada e cronológica, alguns dos principais aspectos operacionais dos processadores assim como dos registradores que dão suporte de memória para armazenamento das instruções. Em seguida, aprendemos um pouco mais sobre os sistemas de memória. Vimos que elas podem ser subdivididas entre memórias internas, ou seja, aquelas que estão posicionadas ou dentro da CPU (registradores, memória cache) ou acopladas na placa-mãe, como RAM e ROM. Acentuamos que as memórias do tipo externa são aquelas acopladas externamente às placas-mãe, como discos rígidos, pendrive, fitas magnéticas, mídias ópticas, disquetes etc. Também ressaltamos que existem regras para o endereçamento e armazenamento dos dados e instruções nas memórias. Nesse contexto, estudamos como os discos rígidos podem operar de forma segura e com melhor desempenho utilizando-se o sistema de discos redundantes, RAID. Finalmente, pudemos detalhar os diferentes tipos de conexões e barramentos existentes em computadores ou em qualquer dispositivo digital. Observamos que o principal tipo de barramento encontrado em um PC é o da placa-mãe. Além disso, aprendemos que a própria placa-mãe necessita de outros tipos de conexões para se comunicar eficazmente com os dispositivos periféricos, o que pode ocorrer principalmente pela conexão USB. Vimos que durante a evolução das placas-mãe vários tipos de conectores foram utilizados, como VESA, ISA, PCI, entre outros, o que possibilitou a variação da velocidade de transmissão dos dados e das instruções. 146 Unidade I Exercícios Questão 1. (Apice 2021, adaptada) No contexto de sistemas operacionais e considerando os estágios dos computadores multiníveis modernos, avalie as afirmativas a seguir. I – Um sistema operacional é um programa que, do ponto de vista do programador, acrescenta diversas novas instruções e características, acima e além do que o nível ISA (Instruction Set Architecture – arquitetura do conjunto de instrução) fornece. II – Em geral, o sistema operacional é executado, em grande parte, em software, mas não há qualquer razão teórica para que ele não possa ser colocado em hardware, exatamente como acontece com os microprogramas (quando estão presentes). III – O sistema operacional pode ser considerado um intérprete para certas características de arquitetura não encontradas no nível ISA. Entre as principais, estão memória virtual, instruções de E/S virtual e facilidades de processamento. É correto o que se afirma em: A) I, apenas. B) III, apenas. C) I e II, apenas. D) II e III, apenas. E) I, II e III. Resposta correta: alternativa E. Análise das afirmativas I – Afirmativa correta. Justificativa: os computadores modernos apresentam diversos estágios de desenvolvimento, nos quais foram introduzidos, ao longo do tempo, diferentes níveis de abstrações e de 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 digital, até o nível cinco, no qual estão as linguagens de programação modernas. O nível 2, que corresponde ao nível ISA, contém as instruções de operação do hardware, ou seja, o conjunto de instruções que o processador pode realizar. Já o nível 3 é o nível do sistema operacional (SO). Nesse nível, são acrescentados recursos além dos fornecidos pelo 147 ARQUITETURA DE COMPUTADORES MODERNOS nível ISA, como a possibilidade oferecida pelo SO de gerenciar o funcionamento do processador e da memória, de forma a permitir o uso simultâneo de diversos aplicativos (que conhecemos como sistemas multitarefas). II – Afirmativa correta. Justificativa: hardware e software são considerados recursos logicamente equivalentes. Isso significa que toda operação realizada pelo software pode ser implementada diretamente pelo hardware, assim como operações executadas pelo hardware podem ser simuladas pelo software. Desse modo, não há razão teórica para que um sistema operacional não possa ser executado em hardware. A escolha pelo software se dá por questões de custo e de facilidade de atualização, entre outros motivos que tornam essa implementação mais viável. III – Afirmativa correta. Justificativa: o sistema operacional funciona como um interpretador de comandos oriundos dos níveis superiores (níveis 4 e 5), arbitrando o acesso ao hardware. Com isso, características de arquitetura não presentes no nível ISA, como memória virtual, são implementadas graças ao gerenciamento do SO. Questão 2. (Enade 2017, adaptada) Leia o texto a seguir a respeito da memória em um sistema computacional. Em um computador, a memória é a unidade funcional que armazena e recupera operações e dados. Tipicamente, a memória de um computador usa uma técnica chamada acesso aleatório, que permite o acesso a qualquer uma de suas posições (células). As memórias de acesso aleatório são divididas em células de tamanho fixo, estando cada célula associada a um identificador numérico único chamado endereço. Todos os acessos à memória referem-se a um endereço específico e deve-se sempre buscar ou armazenar o conteúdo completo de uma célula, ou seja, a célula é a unidade mínima de acesso. SCHNEIDER, G. M.; GERSTING, J. L. An invitation to computer science. 6. ed. Boston: MA: Course Technology, Cengage Learning, 2009 (com adaptações). A figura a seguir ilustra a estrutura de uma unidade de memória de acesso aleatório. 148 Unidade I Endereço 0 1 2 3 2N-1 Memória Largura da memória Registrador de endereços da memória Registrador de dados da memória N bits 1 bits Figura 131 Considerando o funcionamento de uma memória de acesso aleatório, avalie as afirmativas a seguir. I – Se a largura do registrador de endereços da memória for de 8 bits, o tamanho máximo dessa unidade de memória será de 256 células. II – Se o registrador de dados da memória tiver 8 bits, será necessária mais que uma operação para armazenar o valor inteiro, 2024, nessa unidade de memória. III – Se o registrador de dados da memória tiver 12 bits, é possível que a largura da memória seja de 8 bits. É correto o que se afirma em: A) I, apenas. B) III, apenas. C) I e II, apenas. D) II e III, apenas. E) I, II e III. Resposta correta: alternativa C. 149 ARQUITETURA DE COMPUTADORES MODERNOS Análise das afirmativas I – Afirmativa correta. Justificativa: se a largura do registrador de endereços da memória for de n bits, é possível endereçar até 2n células de memória. Com um registrador de endereços de 8 bits, endereçamos 28 = 256 células de memória. II – Afirmativa correta. Justificativa: se o registrador de dados da memória tiver m bits, será possível armazenar 2m valores inteiros distintos nesse registrador, sendo que o valor armazenado pode ter um valor que vai de 0 até 2m – 1. Com um registrador de dados de 8 bits, pode-se armazenar na unidade de memória, em uma operação, um valor que varia de 0 até 28 – 1 = 255. Desse modo, será necessária mais do que uma operação de gravação para armazenar o valor inteiro, 2024, nessa unidade de memória. Para que essa gravação acontecesse em apenas uma operação, precisaríamos de um registrador de dados de, pelo menos, 11 bits, já que 211 – 1 = 2047.III – Afirmativa incorreta. Justificativa: o registrador de dados pode ter a capacidade maior do que uma célula da memória com a qual se comunica. Normalmente, um registrador de dados tem o tamanho da palavra do processador. Desse modo, um dado pode ocupar várias células de memória. No entanto, é esperado que o tamanho do registrador de dados seja múltiplo da largura de memória. Como 12 não é múltiplo de 8, temos uma afirmativa incorreta.