Baixe o app para aproveitar ainda mais
Prévia do material em texto
ARQUITETURA DE COMPUTADORES Arquitetura de Computadores 2 INTRODUÇÃO 1.1- CONCEITOS 1.1.1 - Processamento Dados Processar dados consiste em manipular informações iniciais com o objetivo de produzir outras informações, outros dados ou os mesmos dados sob uma nova forma, tarefa esta desenvolvida desde os primórdios da civilização em todas as atividades. 1.1.2 - Computador É um equipamento constituído de componentes eletrônicos e mecânicos criados com a finalidade de executar operações repetitivas com grande velocidade. Com o avanço do computador que passou a executar as tarefas repetitivas, o processamento de dados passou a ser chamado de processamento eletrônico de dados e quase como um acrônimo, voltou-se a chamar de Processamento de Dados. A necessidade de se criar uma máquina com as características do computador nasceu do crescente volume de dados a serem manipulados e demandada de tempo para a obtenção dos resultados, bem como a precisão destes. O termo dado é considerado como o elemento básico para a geração de uma informação, entretanto, uma informação que acabamos de produzir pode ser considerada apenas como um dado inicial para geração de outra informação. Os avanços tecnológicos, principalmente da microeletrônica e da mecânica, permitem o desenvolvimento de dispositivos capazes de coletar, armazenar e processar dados cada vez mais rapidamente. Figura 1.2 - Fluxo básico de um Processamento de Dados 1.1.3 - Programa Conjunto de ordens, escrito em uma linguagem inteligível pelo computador. Elaboradas e executadas sistematicamente com objetivo de realizar uma determinada tarefa. Cada ordem é considerada como uma instrução para cada computador, que as executa da forma e seqüência tal qual estão descritas no programa. ENTRADA PROCESSAMENTO SAIDA Arquitetura de Computadores 3 1.1.4 - Sistema de Computação É um conjunto de componentes integrados que realizam algum tipo de operação sobre os dados com o objetivo de se obter um determinado resultado. 1.1.5- A Linguagem do computador O computador possui uma linguagem própria, formada por conjuntos específicos de zeros e uns (Linguagem Binária ou de Máquina) para a qual todos os caracteres da linguagem humana são convertidos de modo que o computador possa entender os comandos que desejamos que ele execute. A Linguagem de Máquina é a forma de se representar os dois estados (ligado/desligado) da corrente elétrica utilizados nos circuitos eletrônicos dos computadores. É a única linguagem inteligível pelo computador. 1.1.6- Linguagem de Programação Como a Linguagem de Máquina é de difícil compreensão e manipulação, foram desenvolvidas linguagens intermediárias entre a da máquina e a do homem; estas linguagens denominam-se Linguagens de Programação. Dizemos que quanto mais próxima da linguagem humana for à linguagem de programação ela é de alto nível, caso contrário é considerado baixo nível. Os programas são geralmente, escritos em linguagem de programação e convertidos para linguagem de máquina através de programas específicos. 1.1.7 – Hardware e Software Chamamos de Hardware ao conjunto formado pelos circuitos eletrônicos e partes eletromecânicas de um computador. De Software ao conjunto de qualquer tipo de programa, em qualquer linguagem de programação, que seja utilizado pelo computador. Arquitetura de Computadores 4 1.2 -HISTÓRICO Todo profissional deve conhecer, mesmo que basicamente, o histórico da evolução e o desenvolvimento da sua ferramenta de trabalho. A idéia de se criar um dispositivo que auxiliasse nos cálculos cada vez mais esternos e complicados com os quais o homem se deparava a cada vez que tentava progredir, data de muito tempo. 1.3 - GERAÇÕES DE COMPUTADORES ELETRÔNICOS 1.3.1 - Primeira Geração: Computadores à válvula O ENIAC (Eletrônic Numeral Integrator And Computer) foi o primeiro computador eletrônico digital construído para emprego geral, isto é, podia-se alterar o tipo de cálculo a ser realizado com os dados, mudando-se o programa. Esta máquina foi projetada por John Macuchlyn e John P. Eckert, de 1943 a 1946 e funcionou até 1955. O projeto foi proposto ao exército americano com a finalidade de auxiliar nos cálculos de elaboração das tabelas balísticas (alcance e trajetória dos tiros de armas), que na época empregava mais de 200 pessoas e gastavam muito tempo para sua confecção. O ENIAC era uma máquina de proporções gigantescas, contendo mais de 17.000 válvulas e 80.000 metros de cabos; pesava cerca de 30 toneladas e consumia uma grande quantidade de energia elétrica, além do consumo com válvulas, que queimavam com grande freqüência devido ao calor. Como só ficou pronto após a guerra não foi utilizado para o seu propósito inicial. Esta máquina era decimal e não binária, sendo cada dígito representado por 10 válvulas, e sua programação era feita através da combinação de cabos em tomadas diferentes e de arranjo de chaves (cerca de 6.000), tarefas que consumiam vários dias, porém, a sua velocidade de processamento era alta, realizava 10.000 operações por segundo. Nesta mesma época, John Von Neumann, colaborador no projeto ENIAC iniciou o projeto do inicialmente chamado IAS (Institute for Advanced Studies da Universidade de Princeton) que era um aperfeiçoamento do ENIAC. Enquanto Macuchlyn e Eckert iniciaram a construção do EDVAC (Eletronic Discret Variable Automatic Computer), este projeto não foi concluído, pois os dois cientistas deixaram a Universidade para criarem sua própria empresa, que mais tarde tornou- se a Univac que, uniu-se a Burroughs e atualmente denomina-se UNISYS. Jhon Von Neumann assume o desenvolvimento do EDVAC e define uma arquitetura de computadores com programa armazenado que é utilizada até os dias atuais. Em 1949, a univac de Macuchlyn e Eckert, construiu o primeiro computador para fins comerciais, O UNIVAC II e a série 1110, voltada para computação científica. Arquitetura de Computadores 5 Em 1953, a IBM lança seu primeiro computador eletrônico de programa armazenado, o IBM-701, com memória de 2K palavras de 36 bits, destinado ao processamento científico, e em seguida os IBM-702 e 709, com 4K palavras de memória, para fins comerciais. 1.3.2 - Segunda Geração: Computadores transistorizados Os cientistas do Bell Laboratóries produzem em 1947 o transistor. Dispositivos que permite controlar a condução de corrente elétrica de circuito eletrônico (ligar/desligar) com uma velocidade muito maior, menor custo, menor tamanho e menor consumo de energia do que as válvulas. Esse dispositivo tornou- se a base de todos os computadores e da indústria eletrônica digital. A NCR foi à primeira empresa a lançar o computador transistorizado, seguido da RCA. Esta Geração teve grande participação da IBM com seus computadores para fins comerciais e científicos, por exemplo, a série 7000 e grande sucesso comercial que foi o IBM-1401. Marcou, também esta geração, o surgimento da DEC (Digital Equipment Corporation), que também lançou máquinas eficazes tecnologicamente, com nível superior à família VAX e, o aparecimento de linguagens de programação com nível superior ao Assembly. 1.3.3- Terceira Geração: Computadores com circuitos integrados Em 1958 a Texas Instruments Co, através de Jack Kilby, criou o que seria o primeiro circuito integrado, interligando dois circuitos em peça de germânio. Pouco depois, Robert Noyce integrou vários circuitos em pastilha de silício, que provou ter muita vantagem sobre o germânio. Surgia uma nova geração de computadores mais poderosos e menores,devido à integração em larga escala (LSI - Large Scale Integration) Proporcionada pelos circuitos integrados. A IBM, nesta geração, consolida sua posição como a maior fabricante no mercado de computadores, pois se utilizou o novo avanço tecnológico da microeletrônica e lançou a série 1360. Este sistema incorporou diversas inovações que se tornaram um marco histórico em termos de computação, dentre elas, podemos citar: a) O conceito da família de computadores, em vez de máquina individual. Este conceito permite que o fabricante ofereça o mesmo tipo de máquina, ou seja, mesma arquitetura, linguagem de máquina semelhante etc, porém com diferentes capacidades e preços, o que garantia uma maior quantidade de clientes. Como por exemplo, a família 360 foi lançada com cinco modelos diferentes. A figura 1.3 mostra um quadro comparativo da família 360. Arquitetura de Computadores 6 b) Emprego da técnica de multiprogramação, que permite que vários programas compartilhem da mesma memória principal e o mesmo processador, dando a impressão ao usuário de que vários programas estão sendo executados simultaneamente. c) Elevada capacidade de processamento, com palavras de 32 bits e ciclo de instruções de até 250 nanosegundos e grande capacidade de armazenamento na memória principal, 16 Mbytes, valores considerados surpreendentes para a época (1964). d) Memória Principal orientada a Byte, ou seja, em grupo de oito Bytes. Esta característica tornou-se padrão no mercado, mantendo-se até hoje; exceto nos computadores científicos. Surgiram também, nesta geração, os microcomputadores da Dec, com circuitos integrados, memória principal orientada a byte e palavra de 16 bits, o PDP- 11 e o seu sucessor, o VAX-11 que teve grande sucesso no ambiente universitário. CARACTERÍSTICA DA FAMÍLIA IBM 360 Característica Modelo 30 Modelo 40 Modelo 50 Modelo 65 Modelo 75 Capacidade máxima de MP (Bytes) 64 Kb 256 Kb 256 Kb 512 Kb 512 Kb Ciclo do Processo em micros segundos 1 0,625 0,5 0,25 0,2 Quantidade máxima de canais (E/S) 3 3 4 6 6 Bytes movidos da MP para CPU por ciclo 1 2 4 16 16 Figura 1.3 - Características da Família IBM/360 1.3.4 - Quarta Geração: Computadores que utilizam VLSI VLSI (Very Large Scale Integration) consiste na técnica de armazenar, em um mesmo recipiente, milhões de microcomponentes eletrônicos. Este dispositivo denominado chip (pastilha) constitui a base da estrutura da todos os sistemas de computação modernos. Esta técnica de miniaturização de componentes eletrônicos deu início ao desenvolvimento dos microcomputadores ou computadores pessoais, isto por volta de 1972. Arquitetura de Computadores 7 CAPITULO 2 COMPONETES BÁSICOS DE UM SISTEMA DE COMPUTAÇÃO 2.1 - DESCRIÇÃO DOS COMPONENTES Um sistema de computação é constituído de um conjunto de componentes integrados, que tem por finalidade manipular dados de forma a se obter informação. No capitulo anterior, vimos os conceitos de hardware e software, que formam basicamente um sistema de computação. Para que um computador possa realizar uma determinada tarefa é necessária à integração destes elementos. Uma tarefa deve primeira ser escrita em uma linguagem (de programação) que possa ser convertida para linguagem de máquina, pois só esta é entendida pelo hardware do computador e, logicamente, nesta linguagem, serão executadas todas as operações a ele submetidas. A conversão transforma o programa em várias instruções que serão executadas uma a uma e, as armazenem na memória. Também devem ser introduzidos na memória, os dados a serem manipulados pelo programa. A introdução dos programas e dados em um computador pode ser feita através do teclado ou disco, por exemplo, a estes equipamentos chamamos de dispositivos ou periféricos de entrada. O processador central - CPU (Central Unit Processing), localiza, interpreta e executa as instruções sobre os dados encontrados na memória e armazena o resultado, também nas memórias. Os resultados de um processamento podem ser exibidos ao usuário, numa forma inteligível para ele, em um monitor de vídeo impresso em papel, ou armazenado em outro formato para posterior utilização; como por exemplo, em discos magnéticos. Aos dispositivos utilizados para estas finalidades, denominamos dispositivos ou periféricos de saída. A figura 2.1 mostra esquematicamente os procedimentos e os componentes básicos envolvidos n processo de dados. Figura 2.1 - Componentes Básicos de um Computador. PERIFÉRICOS DE ENTRADA PROCESSADOR CPU PERIFÉRICOS DE SAIDA MEMÓRIA Dados Controle Entrada Saída Arquitetura de Computadores 8 Unidade Central de Processamento - CPU ou CPU � É o principal componente do sistema. Responsável pela execução e controle de todas as operações executadas por todos os componentes do computador. Memória ���� Local onde os dados e os programas são armazenados para imediata execução (memória Principal - MP) ou para uso posterior (memória secundária - MS), conforme veremos no próximo capítulo. Periféricos ou dispositivos de Entrada ou Saída ���� Basicamente permitem a comunicação entre o sistema e o mundo externo, ou seja, introduzir dados e/ou programas e guardar e/ou exibir resultados. Também chamamos os periféricos que armazenam dados de memória secundária. Nos capítulos seguintes, esses componentes serão vistos detalhadamente. 2.2 - REPRESENTAÇÃO DAS INFORMAÇÕERS NO COMPUTADOR 2.2.1 - Bit, Caracter, Byte e Palavra Os computadores são equipamentos eletrônicos digitais. Portanto, toda informação a ser armazenada, movimenta e processada internamente, deve ser transformada para o formato binário. Os circuitos eletrônicos digitais permitem que represente os valores de voltagem elétrica de seus componentes com os dois dígitos do sistema binário (0 e 1). O principio de funcionamento dos circuitos digitais é totalmente básico na lógica digital ou booleana, que admite apenas dois estados para um único elemento (SIM/NÃO, LIGADO/DESLIGADOABERTO/FECHADO etc.). Em vista disso, teremos como menor unidade de informação que pode ser armazenado em um computador, o conhecido bit (Binary Digit), que admite apenas dois valores: 0 e 1. Um bit nos permite representar apenas duas informações, ou símbolos, um de cada vez, e a linguagem humana possuem vários símbolos (Caracteres); por essa razão, as informações manipuladas pelo computador são codificadas em grupo ordenados de 8 bits, chamados byte(Binary Term). O nome Byte foi instituído pela IBM e, utilizado por praticamente todos os fabricantes como unidade de armazenamento e transferência de dados. Os caracteres podem ser codificados com outras quantidades de bits diferentes de 8, através de outros códigos de representação de caracteres, porém, neste trabalho, usaremos sempre o conceito de byte. Nas memórias dos computadores as operações de armazenamento e recuperação de informação são realizadas byte ou palavra a palavra (grupo de bytes), unidades de transferências. Portanto, é costume mencionar a quantidade de mercadoria do computador em bytes. Porém, um byte armazena apenas um caracter e precisamos de muitos mais para escrever um simples nome, como por exemplos, logicamente, precisamos de quantidades maiores de memória para efetuar qualquer trabalho. Arquitetura de Computadores 9 Para representar valores maiores, - que aumentam a cada dia - utilizaremos os símbolos de grandezas métricas, com alguma modificação, visto que nos computadores as indicações numéricas são tratadas em potênciade 2. (Sistema binário lembra-se?). Vejamos alguns exemplos: 1 byte � 8 bits Kilobytes ou KB �1024 bytes (potência de 2 é 1.024 = 210) Megabytes ou MB � 1024 KB ou 1.024 x 1.024 = 1.048.576 bytes Gigabytes � 1.024 MB = 1.048.576 x 1024 = 1.073.741.824 bytes Terabytes ou TB � 1024 x GB = 1.073.741.824 x 1024 = 1.099.511.627.776 bytes Um outro conceito importante para o armazenamento e transferência de dados entre a MP e a CPU é a palavra. A definição de palavra não atende rigorosamente a todos os fabricantes de computadores, pois cada um adota o conceito baseado em seus componentes internos e outro, de uma forma mais abrangente. De modo geral, usam-se dois valores diferentes: um relacionado à unidade de armazenamento - o Byte (oito Bits) e outro para indicar unidade de transferência e processamento - a palavra (na qual se emprega quantidade múltipla do byte - 16 (2 bytes) ou 32 (4 bytes são os valores mais usados)). Arquitetura de Computadores 10 2.3 - CLASSIFICAÇÃO DE SISTEMAS DE COMPUTAÇÃO Não existe um consenso no mercado em relação à classificação dos computadores. No entanto, uma descrição básica de cada tipo de máquina comumente utilizado atualmente nos ajudará a identificar as principais nomenclaturas. Microcomputador - O nome é relativo ao seu tamanho e à sua capacidade de processamento; surgiu com advento dos microprocessadores nos meados da década de 70. O micro, por ser utilizado por uma única pessoa de cada vez, ganhou título de PC (Personal Computer). Existem hoje em dia várias categorias de microcomputadores, baseadas em seus tamanhos e seu grau de portabilidade. Eles podem ser do tipo de mesa ou torre (Desktop), em geral, constituído por 3 partes separadas: unidade de processamento (CPU, acionadores de discos e memória), monitor de vídeo e teclado. Outros microcomputadores, ainda menores são conhecidos por Notebooks (tamanho e formato parecidos com um livro) e Palmtops que têm tamanho pouco maior que a da palma da mão. Estação de Trabalho - É um micro projetado para efetuar tarefas mais pesadas nas áreas industriais, Cientificas e gerais. Estas máquinas possuem maior velocidade de processamento e capacidade de memória, requeridas por tarefas com CAD (Computer Aided Design), CAM (Computer Aided Manufacturing) e composição, manipulação e apresentação de imagens de altíssima resolução. Minicomputadores - São máquinas empregadas para atender simultaneamente a demanda de execução de programas de vários usuários. Para suportar múltiplos usuários e programas, requerem maior velocidade /capacidade de memória e uma grande potencialidade para manipular diversos periféricos. Computadores de Grande Porte - São computadores projetados para manusear grandes volumes de dados e executar simultaneamente programas de uma grande quantidade de usuários e gerenciar unidades de armazenamento em grande escala. Processos controlados por estes tipos de máquinas operam com tempo de resposta muito rígidos, na casa de décimos de segundos. Supercomputadores - São computadores construídos para atender um propósito específico; realizar grandes quantidades de cálculos matemáticos com grande velocidade, o que exige muito do processador e pouco dos demais componentes. São empregados em tarefas como: Previsão do tempo, simulação de situações que gerariam riscos a pessoas, modelagem tridimensional. Estas máquinas são capazes de realizar dois bilhões de operações matemáticas por segundo. Arquitetura de Computadores 11 CAPITULO 3 SUBSISTEMA DE MEMÓRIA 3.1 - INTRODUÇÃO A memória é um componente do Sistema do Computador, cuja função é guardar (armazenar) informações (na forma de bits) e recuperá-las usando desejado. Seu funcionamento baseia-se nas ações de escrita (transferência de bits de outro componente do Sistema; por exemplo: da CPU de um disco) e de leitura (transferência de bits da memória para a CPU, disco, etc.). A ação de armazenar consiste em guardar uma informação (ou um conjunto de informações) na memória e a operação é denominada escrita ou gravação (“write”). Esta operação será sempre uma sobreposição de conteúdos da memória. Recuperar uma informação (ou um conjunto de informações) da memória é copiá-la para uma outra posição na memória ou para outro componente do sistema. Esta operação é denominada leitura (‘read’). A ação de armazenar ou recuperar uma informação em uma memória denomina-se acesso. No sistema de computador existe uma variedade grande de tipos de memória, cada uma com sua finalidade e característica especificas, mas que interligam e se integram para o funcionamento do sistema. A figura 4.1 mostra uma pirâmide hierárquica dos tipos de memória, mais mencionados, representando suas capacidades de armazenamento, velocidade, tempo de uso e custo. Figura 4.1 - Pirâmide Hierárquica de tipos de memória Discos Fitas Registradores Cache Principal Secundária Custo alto Velocidade alta Baixa capacidade Custo baixo Velocidade baixa Alta capacidade Arquitetura de Computadores 12 3.2.1 - Tempo de acesso: indica quanto tempo à memória gasta para colocar uma informação no barramento de dados após uma determinada posição ter sido endereçada, isto é, o período de tempo decorrido desde o instante em que foi iniciada a operação de acesso até que a informação requerida tenha sido efetivamente transferida. 3.2.2 - Ciclo de memória: é o período de tempo decorrido entre duas operações sucessivas de acesso à memória, sejam de escrita ou de leitura. 3.2.3 - Capacidade de uma memória: é a quantidade de informação que pode ser armazenada em uma memória; a unidade de medida mais comum é o BYTE, embora também possam ser usadas outras unidade como células, setores e bits. 3.2.4 - Volatilidade: memórias podem ser do tipo volátil ou não volátil. Não volátil é a que retém a informação armazenada quando a energia elétrica e desligada. Memória volátil é aquela que perde a informação armazenada quando a energia elétrica desaparece. 3.2.5 - Tecnologia de fabricação: Memórias de semicondutores são dispositivos fabricados com circuitos eletrônicos e baseados em semicondutores. Memória de meio magnéticos possuem o armazenamento em uma superfície com material magnético e um campo de magnético (HD, disquetes). Memória Óptica que utiliza a luz para leitura e gravação de informações. 3.2.6 - Temporariedade: Trata-se de uma característica que indica o conceito de tempo de permanência da informação em um dado tipo de memória. 3.2.7 - Custo: O custo de fabricação de uma memória é bastante variado em função de diversos fatores como tecnologia de fabricação, maior ou menor tempo de acesso, ciclo de memória, espaço físico e marketing. Arquitetura de Computadores 13 3.3 - Registradores Já sabemos que a CPU é responsável pela execução das instruções (parte de um programa), manipulação dos dados e pela produção dos resultados. Porém, para isto ocorrer, tanto o programa quantos dados, que estão armazenados na memória principal, devem ser transferidos para CPU (uma cópia deles). A execução é, na realidade, tarefa da Ual (Unidade Aritmética e Lógica), Componente da CPU. Os registradores são unidades de memória que armazenam, temporariamente, na CPU, os dados a serem manipulados por uma instrução ou seus resultados parciais ou finais de um processamento. Sendo um resultado parcial, armazenado em um registrado, este será transferido para a memória principal (externa à CPU). O registrador é o tipo de memória com maior velocidade de transferência no computador, menor capacidade de armazenamento (armazenaum único dado) e maior custo devido a sua tecnologia de construção. Ele é uma memória se semicondutores, portanto, é volátil, ou seja, para o seu funcionamento é necessário que haja corrente elétrica. 3.4 - Memória Cache Durante a execução de uma instrução, a CPU realiza um ou mais acessos à memória principal, para buscar a instrução e transferi-la para um dos registradores, para transferir os dados para a UAL ou para armazenar o resultado de operação que se encontra em um registrador. O tempo de acesso à memória principal é muito maior que o tempo de execução de uma instrução, devido à diferença de velocidade entre a CPU e a MP (Memória Principal). Isto causa ociosidade da CPU, pois esta precisa esperar que a instrução e os dados sejam transferidos para a CPU. A CACHE é uma memória construída com tecnologia similar à da CPU, consequentemente, com velocidade de transferencia compatível, reduzindo consideravelmente o tempo de espera da CPU por instruções e dados. A cache está inserida entre a CPU e a MP; no mesmo CHIP da CPU (cache interna). A sua capacidade de armazenamento é baixa, se compara com a MP. A CPU acessa, primeiramente, a CACHE, para buscar a informação requerida. Caso encontre, a transferência; é realizada com grande velocidade; caso contrário, a informação terá que ser transferida da MP para a cache e daí para a CPU, aumentando o tempo de acesso. As memórias cache externas (localizadas na placa mãe) são constituídas de circuitos eletrônicos, portanto também voláteis. A tecnologia empregada; é a SRAM (Static RAM) - a corrente elétrica que mantém as informações armazenadas na cache é contínua - não sendo necessário à recarga periódica de seus circuitos (refreshing), como ocorre na memória principal. Esta tecnologia possui custo elevado, causa da sua utilização baixa capacidade de armazenamento. Arquitetura de Computadores 14 3.5 Memória Principal A memória principal o memória primária é formada por dois tipos a de memória: Memória Ram (Randomic Acess Memory) - memória de acesso aleatório - o acesso a qualquer uma de suas posições consome o mesmo tempo e memória ROM (Read Only Memory) - memória somente de leitura - os dados nela contidos são gravados de fábrica, não sendo possível alterá-los, portanto, é uma memória não volátil. Ás informações gravado na ROM constitui basicamente um programa denominado IPL (Initial Program Load), que contém rotinas, específicas de cada processador, necessárias ao funcionamento do computador, tais como: contagem e check eletrônico da memória RAM, as conexões da CPU com as interfaces que a interligam aos periféricos e a leitura do Sistema Operacional do disco para a memória RAM. Este programa é executado, automaticamente, assim que ligamos o computador. Ao final da execução do I.P. L e carga do Sistema Operacional estão prontos para ser utilizado, o que, em ambientes de microcomputadores chamamos de “boot”. Isto é devido ao Sistema Operacional D.O.S (Disk Operation System) 0 utilizar o conceito de setor de boot nos discos que possuem os seus formato. A memória RAM é a memória básica do computador. Nela são armazenados, os programas a ser executado e seus dados, que a CPU busca, instrução por instrução, portanto, nesta memória podem ser executadas tanto as operações de leitura quanto asa de gravação. Doravante, quando nos referimos à memória principal ou primária , estaremos tratando apenas da RAM, onde podemos, também, gravar dados. A MP é construída, também, de semicondutores, portanto, volátil e com grande velocidade de acesso; abaixo, porém, dos registradores e da cache. Devido a sua finalidade, possui grande capacidade de armazenamento. A tecnologia utilizada nas memórias RAM é, Geralmente, a Dram (Dinamic Ram) - a corrente elétrica neste tipo de memória depende da carga de capacitores, que com o tempo vão perdendo a carga, necessitando de periódicas recargas (refreshing) para manter o valor do dado armazenado inalterado. O refreshing ocorre geralmente a cada 2ms (milisegundos –10 -3 seg), deixando a RAM indisponível por um longo tempo, visto que esta operação demora muito mais que um acesso. Portanto, podemos constatar que em memórias Dram o tempo de acesso é acrescido do tempo de refreshing, o que causa a sua baixa velocidade de transferência de dados quando comparadas aos registradores e a memória cache. Arquitetura de Computadores 15 3.6 - Memória Secundária A memória secundária, também chamada de auxiliar ou memória de massa, tem a finalidade de armazenar de forma permanente às informações (dados e programas) necessárias ao processamento. Consequentemente, a memória secundária é não-volátil e possui maior capacidade de armazenamento que a memória principal. A memória secundária do computador pode ser constituída por diferentes dispositivos periféricos, tais como: discos magnéticos rígidos (Hard Disk – HD), são eletromecânicos e põem esta razão, seus tempos de acesso são relativamente altos, se comparados com os dos outros tipos de memória. Por exemplo, os discos rígidos possuem tempo de acesso na faixa de 10 milisegundos, o CD-ROM trabalha com tempos entre 200 e 800 milisegundos. 3.7 - MEMÓRIA CACHE Como já foi descrito (ver item 3.1.2) a velocidade de processamento da CPU é muito superior a de acesso à memória principal, devido à diferença de tecnologia empregada na construção de cada um destes componentes. Isto gera períodos de espera (“write state”) na CPU, até que os dados sejam transferidos da MP. Os Projetos de memória cache baseiam-se em estatísticas de execução de programas, avaliando-se que os acessos, geralmente, São repetidos, as mesmas palavras de memória ou à palavra localizada continuamente na memória. São os conceitos de localidade temporal e localidade especial. Localidade Temporal - Quando um programa acessa uma palavra de memória, há uma grande probabilidade de que em breve a mesma palavra seja acessada novamente pelo Programa. Localidade espacial - Quando um programa acessa uma palavra de memória, há uma grande probabilidade de que o próximo acesso solicitado pelo programa seja a uma palavra de endereço subseqüente ou adjacente àquela que ele acabou de acessar. Arquitetura de Computadores 16 CAPITULO 4 BARRAMENTO Barramento é um conjunto de linhas elétricas por onde trafegam sinais digitais entre o microprocessador e os dispositivos. Cada tipo de barramento pode ou não possuir seu grupo de slots. Iremos considerar duas formas básicas de interligar as unidades de um sistema de computador: Ligação Dedicada e Barramento. 4.1 Ligação Dedicada. A ligação Dedicada estabelece uma ligação única entre duas unidades. A principal desvantagem deste tipo de ligação é a dificuldade de se adicionar uma nova unidade ao sistema. Para cada nova unidade é necessário estabelecer um novo circuito de interface e novos fios para a ligação. A principal vantagem é que a velocidade de transferência de informação entre as duas unidades pode ser maior, comparado com uma ligação por barramento. Isto é possível porque na ligação dedicada as características específicas de cada uma das unidades são consideradas no projeto de interface. Figura 5.7 - Exemplo de um sistema com Ligações Dedicadas A Ligação Dedicada é utilizada principalmente para a conexão de computadores com periféricos de Entrada ou Saída. A ligação Dedicada pode ser feita de forma Serial ou Paralela. A ligação serial é baseada na existência de um único fio que transporta a informação binária bitabit em seqüência (em série). Na ligação paralela a informação binária é transportada por diversos fios, um para cada bit (em paralelo).Arquitetura de Computadores 17 4.2 - Ligação por Barramento. A ligação por barramento utiliza um único conjunto de fios para interligar diversas unidades de um sistema de computadores. Desta forma o número de ligações (fios) é independente do número de unidades a ser interligada. A adição de uma nova unidade ao sistema é feita de forma bastante simples, basta plugar a nova unidade ao barramento já existente. A ligação por barramento requer, entretanto, que as unidades a serem adicionadas obedeçam rigorosamente às características de interface amento com o barramento. Ou seja, o projetista de uma unidade a ser adicionada considera cada sinal do barramento de acordo com as mesmas características utilizadas pelas equipes que projetam as demais unidades (por exemplo: definição de função, níveis de voltagem e capacidade de carga). Muitas vezes as unidades a serem interligadas são desenvolvidas por equipes distintas em empresas diferentes, o que impõe um rigor muito grande na caracterização de um barramento. Esta caracterização dos sinais de um novo barramento é feita normalmente através de comissões de representantes de indústrias em entidades como, por exemplo, o ANSI, o EIA(Electronic Industries Association), o IEC (International Electrotechnical Commission) e o IEEE . Estas comissões definem então um padrão de interligação (um barramento) que passa a ser obedecido pelos fabricantes. Como exemplo de barramentos que surgiram através de comissões de fabricantes tem o padrão de barramento VME (IEC Com. 47b >std. 821) e o padrão FUTURE BUS (projeto IEEE 896) Figura 2 - Exemplo de um sistema com ligações por barramento A maior parte dos barramentos do mercado surgiu como barramento próprio de equipamentos específicos, mas pela alta escala de aplicação eles se transformaram em padrões de facto. Como exemplo disto tem o barramento S100, que depois de ser muito utilizado na indústria de microprocessadores de 8 bits passou por comissões do IEEE e se transformou no barramento padrão IEEE696. Outro exemplo é o barramento MULTIBUS lançado pela INTEL Co. Que se transformou na norma IEEE 796. O exemplo mais conhecido é o barramento do IBM PC, o IOCHANNEL, que foi adotado por diversos fabricantes de placas e de sistemas. Recentemente ele foi padronizado por um conjunto de fabricantes como o padrão ISA (Industry Standard Architecture). A ligação por barramento é a mais utilizada em computadores, às seções seguintes são dedicadas ao estudo das características mais gerais de estruturas de Arquitetura de Computadores 18 barramento. O nosso estudo de barramentos é concluído, então, pela descrição introdutória dos barramentos ISA e VME. 4.3 Conceitos de Mestre e Escravo de Barramento. MESTRE é a unidade que controla a transferência num barramento ESCRAVO é a unidade que participa de uma transferência sob o controle de uma unidade mestre. Como exemplos podem citar um microprocessador ligado a uma memória. Durante uma operação de leitura, as informações são retiradas da memória a partir de sinais de controle do microprocessador. A memória é uma unidade ESCRAVO e o microprocessador uma unidade MESTRE. Os barramentos podem ser caracterizados por diversos fatores tais como: o Tipos de Barramentos; o Técnicas de Comunicação em Barramento; o Métodos para a Mudança do Controlador do Barramento; o Convenções para Transferência de Informação; o Características Elétricas. Arquitetura de Computadores 19 4.4 Tipos de Barramentos Existem diversas formas de se classificar o tipo de barramento, as mais comuns são: Em função do número de fios que transportam a informação. São classificados em barramentos Seriais e Paralelos. Em função do tipo de informação transferida existem, por exemplo, os barramentos de Dados, de Endereço, de Controle e Multiplexados. Em função da localização física, podem ser citados os barramentos internos às placas, os barramentos globais e os barramentos de Entrada e Saída. 4.4.1 Barramentos Seriais e Paralelos. Os barramentos podem ser classificados de acordo com a quantidade de fios necessários ao transporte das informações em barramentos Seriais e barramentos Paralelos. No barramento serial a informação é transportada por um fio (ou par de fios). A este fio estão ligadas diversas unidades. A informação transferida deve estar formatada de acordo com um protocolo que identifique as unidades transmissoras e receptoras. Este tipo de ligação por barramento serial é usado na ligação entre computadores, entre estações de trabalho e entre computadores e terminais remotos e ainda entre alguns periféricos internos como o HD SATA. Diversos são os conceitos ligados à comunicação por barramento serial. Estes conceitos e mais os diversos protocolos de comunicação são vistos em maiores detalhes nas disciplinas de comunicação e de rede de computadores. 4.4.2 Barramentos de Dados, Endereçamento e Controle. Um barramento pode ser classificado de acordo com o tipo de informação que pode ser transportado por ele. De acordo com esta classificação os barramentos podem ser: Barramento de dados. Possui, em geral, uma linha (fio) para cada bit de dados. Num microcomputador a largura do barramento de dados (bus width) é o fator de especificação de barramento mais lembrado. Diz-se, por exemplo: "O microprocessador 8086 tem um barramento de 16 bits e o microprocessador 80486 tem um barramento de 32 bits". Arquitetura de Computadores 20 Barramento de Endereçamento. Possui uma linha (fio) para cada bit de endereçamento. A largura do barramento de endereçamento é importante para determinar a capacidade máxima de posições de memória acessíveis. A quantidade de posições de memória endereçava q é igual a 2n, onde n é o número de bits do barramento de endereçamento. Por exemplo, barramento de endereçamento com: bits q = 2 n 6 bits 65 536 64 kilo posições 0 bits 1 048 576 1 mega posições 4 bits 16 777 216 16 mega posições 2 bits 4 294 967 296 4 giga posições Barramento de Controle. Agrupa todos os sinais necessários ao controle da transferência de informação entre as unidades do sistema. Barramento Multiplexados. Os sinais deste tipo de barramento possuem significados diferentes em função do tempo. Num determinado instante estes sinais podem transportar informações de endereço, noutro informações de dados. A presença de um tipo de informação ou de outro é indicado por sinal de controle. Arquitetura de Computadores 21 4.5 Barramentos Interno, Global e de E/S O tipo de barramento pode ser definido em função da sua localização física. De acordo com esta classificação têm se: Barramento interno. É o conjunto de sinais que interligam unidades de computador dentro de uma mesma placa. É normalmente próprio de cada fabricante de computador e considera os aspectos mais específicos do processador utilizado. Barramento Global. Este tipo de barramento é utilizado principalmente para ligação entre unidades do computador localizadas em placas diferentes. Normalmente é uma extensão do barramento interno. Barramento de Comunicação ou de E/S. Os barramentos de Comunicação ou de E/S são usados, principalmente, na ligação de computadores os seus periféricos. Podem ser aplicados ainda à interligação entre computadores. 4.6 Técnicas de Comunicação em barramento Segundo a técnica de comunicação adotada, é possível classificar os barramentos em: o Barramento Síncrono o Barramento Assíncrono O barramento síncrono tem todas as suas operações sincronizadas por um relógio central, enquanto que no barramento assíncrono cadaoperação possui o seu próprio sinal de indicação de operação. O barramento com comunicação síncrona requer menos fios, é mais simples de entender, programar e testar. Entretanto eles são menos flexíveis que os barramentos assíncronos. Isto se deve ao fato que eles estão condicionados a uma taxa máxima de relógio, ou seja, estão amarrados a uma determinada tecnologia. Assim sendo, os barramentos síncronos não podem tirar vantagem dos ganhos em desempenho das novas tecnologias surgidas após a sua definição. A cada mudança de tecnologia, para se aumentar o desempenho do sistema, é necessário trocar todos os dispositivos da tecnologia anterior. Isto não acontece com os barramentos assíncronos, pois cada operação pode definir a sua própria temporização. De forma que, pode conviver num mesmo barramento assíncrono dispositivo de tecnologias diferentes. Esta flexibilidade tem como custo, uma maior complexidade do barramento. À medida que os avanços tecnológicos aproximam dos limites físicos de velocidade dos dispositivos, a vantagem da flexibilidade dos barramentos assíncronos perde um pouco a sua importância. Pois numa mesma tecnologia, o Arquitetura de Computadores 22 desempenho dos barramentos síncronos é um pouco maior que o desempenho dos barramentos assíncronos. 4.6.2 Barramento síncrono Um barramento síncrono é caracterizado pela existência de um sistema central de relógio (clock) que define intervalos de tempo (time slots) de mesmo tamanho para cada operação no barramento. Em geral estas operações são do tipo: comunicação de dados entre um elemento mestre e outro escravo. Existem duas técnicas básicas para a alocação do intervalo de tempo para as operações, a saber: Intervalo Dedicado e Intervalo não dedicado. � comun1. 2 Intervalo dedicado a comunicação entre os dispositivos 1 e 2 � comun3. 4 Intervalo dedicado a comunicação entre os dispositivos 3 e 4 Na técnica de Comunicação Síncrona por Intervalo Dedicada o tempo é alocado permanentemente a uma operação, mesmo que esta não seja realizada. De acordo com esta técnica os intervalos de tempo são definidos de forma a encobrir a operação mais lenta. Isto compromete o desempenho do sistema, pois as operações mais rápidas não poderão trabalhar a plena velocidade. Outra restrição ao desempenho global do sistema ocorre se as operações que têm intervalos dedicados não forem realizadas. Na técnica Comunicação Síncrona com Intervalo Não Dedicado os intervalos de tempo são alocados a uma operação somente se ela for realizada. Isto implica na necessidade de se estabelecer um mecanismo de alocação de intervalos em hardware para identificar se as operações vão ocorrer. 4.6.3 Barramento Assíncrono Na técnica de comunicação assíncrona, o instante da transferência não é conhecido a priori. Ele é indicado por sinais de controle próprios. O significado de cada um destes sinais e o relacionamento entre eles definem o PROTOCOLO de comunicação. O número dos sinais num barramento para este controle define o tipo de comunicação assíncrona. Podendo ser Comunicação Assíncrona Controlada por Um Fio (OWC One Way Controlled) ou Comunicação Assíncrona Controlada por Dois Fios (Req/Ack). Arquitetura de Computadores 23 4.7 Slots Slots são conexões para placa de expansão. Toda conexão, ou grupo dela pertence a um tipo de barramento. A chegada dos primeiros slots marcou não só uma melhor modularização do PC, mais principalmente a introdução do conceito de expansão no hardware. 4.7.2 Principais tipos de Slots Slot ISA: o barramento ISA (Industry Standard Architeture) foi criado pela IBM em 1980. Existem placas mãe que não trazem mais Slots ISA, mas o barramento ISA ainda está presente e dele depende o controle de drives de disquete, porta serial e PS/2, porta paralela CMOS, o auto falante e a Bios. Slots PCI : (Peripheral Component Interconnect) criado pela Intel no início dos anos 90 para suportar os requisitos do micro processador Pentium. É totalmente compatível com a tecnologia plug and play e possui compartilhamento de IRQs entre os dispositivos presentes no barramento. Possui uma taxa de transferência de 133 mbps em sua versão mais popular. Slots AGP : (Acelerated Graphics Port) também criado pela Intel em 1997 para suportar os requisitos do micro processador Pentium II. Ele possui 4 versões de barramento e 5 de slots, sendo que, a ultima versão é 8x com uma taxa de transferência de 2133 mbps. Slots AMR : (Áudio Modem Riser) criado pela Intel para suportar modens e placas de rede onboard. Slots PCI Express: uma das principais características desse slot é possuir uma comunicação baseada em barramentos seriais e não paralelo, aumentando assim sua velocidade sob a taxa de transferência. Podem atingir uma taxa de transferência de 12,8 gbps se possuírem 32 canais de transferência. 4.8 Barramentos USB A especificação USB (Universal Serial Bus) surgiu de uma parceria entre as empresas lideres do segmento de informática e telecomunicações como: Compac, Microsoft e Nec, que procuravam desenvolver uma interface que proporcionava altas taxas de velocidade de transmissão serial, flexível e com extrema facilidade de uso. Além desses requisitos principais deveria ser compatível com plug and play, permitir a inserção e remoção de periféricos com o computador ligado, sem a necessidade de reiniciar o sistema operacional, ou configurar drives e programas específicos. Possui uma velocidade de comunicação negociável entre controladora e periférico, variando desde 100 kbps para mouse e teclado até 400 mpbs para armazenamento de dados. Transferência de dados bidirecional e interligando até 127 periféricos em rede através da utilização de hub. Seu cabo pode ter um comprimento máximo de 5 metros. 4.9 Convenção para a Transferência de dados. A quantidade de dados transferidos por ciclos de acesso ao barramento pode ser definida em termos de palavras. Neste contexto palavra tem o significado Arquitetura de Computadores 24 de unidade básica de comunicação entre os dispositivos, sem caracterizar a quantidade de bits. Os dispositivos a serem ligados a um barramento podem necessitar de transferências de palavras isoladas ou de blocos de palavras. Por exemplo, uma unidade de memória de acesso aleatório (RAM) pode participar de transferências de palavras isoladas, ou seja, a cada ciclo de acesso, uma única palavra é lida ou escrita nesta memória. Já uma unidade de disco é acessada em blocos de palavras (setores). Um barramento adota a filosofia de transferência que mais se adapta a necessidade dos dispositivos ligados a ele. De uma forma geral, os barramentos podem adotar as seguintes filosofias básicas de transferência de dados: • O barramento só faz transferências de palavra isoladas; • O barramento só faz transferências de blocos de palavras de comprimento fixo; • O barramento só faz transferências de blocos de palavras de comprimento variável; • O barramento faz transferências de blocos de palavras de comprimento fixo ou palavra isolada; • O barramento faz transferências de blocos de palavras de comprimento variável ou palavra isolada; Além das características de acesso dos dispositivos ao barramento (acessos a palavras ou a blocos), a filosofia de transferência de dados está ainda vinculada com o mecanismo de controle de alocação e as técnicas de comunicação no barramento, estudadas anteriormente. A filosofia adotada pelo barramento pode afetar drasticamente o desempenho da programação do sistema. Se o barramento só faz transferências de palavra isoladas, a ligação de dispositivos com acessos por blocos (e.g. unidades de discos) fica prejudicada. Além disso, o mecanismo de árbitro de alocação (arbitragem)introduz um grande custo em tempo para um grande volume de transferências, pois para cada palavra será necessário: requerer o barramento, conseguir o barramento,... etc. De uma forma geral, quando a transferência é feita por bloco, o custo em tempo da alocação do barramento é diluído, pois somente uma arbitragem é feita por bloco. Entretanto numa transferência por bloco, outras informações precisam ser transferidas anexadas aos dados. São, por exemplo, informações de tamanho do bloco, de identificação do bloco, de validação da informação, etc. O primeiro tipo de barramento para transferências em bloco é aquele que permite somente transferências de blocos de palavras de comprimento fixo. O principal problema desta filosofia de transferência é que ela perde toda a sua vantagem se for necessário transferir blocos de comprimento menor que o fixado. Neste caso dados nulos são incluídos para completar o tamanho do bloco. Um segundo tipo de barramento para transferência por bloco permite transferências de blocos de palavras de comprimento variável; Este tipo de barramento permite que o tamanho do bloco se adapte as necessidades dos Arquitetura de Computadores 25 dispositivos de comunicação de blocos. Entretanto, deve ser observado o compromisso entre o tamanho do bloco e as informações anexadas ao bloco. Um tipo de barramento que faz transferências de blocos de palavras de comprimento fixo ou palavra isolada é indicado para sistemas que possuem dispositivos orientados a palavras e outros para blocos. Durante as transferências de palavras, nenhum dado adicional é incluído, e as transferências de bloco são feitas com a adição de dados. Para sistemas que misturam dispositivos orientados a palavras e orientados a blocos a solução mais flexível é um tipo de barramento que faça transferências de blocos de comprimento variável e palavra isolada. Arquitetura de Computadores 26 CAPITULO 5 INSTRUÇÕES DE MÁQUINA 5.1 – Definições de Instrução de Máquina Uma instrução de máquina é um grupo de bits que indica ao processador uma operação ou ação que ele deve realizar. Essas instruções de máquina sendo diretamente interpretadas e executadas pelo Hardware são dependentes das características de uma específica CPU, pois manipulam informações cuja quantidade e movimentação de bits é específica da UAL, ACC, RI CI e demais componentes. Dentre as operações normalmente implementadas pelos processadores, podemos citar algumas, como: - Transferir um dado de uma célula para outra. - Realizar uma operação lógica entre dois valores. - Efetuar a soma entre dois operandos, guardando o resultado em um deles ou num terceiro operando. - Executar um desvio incondicional para outro endereço. - Parar a execução de um programa - Adicionar 1 ao valor de um operando. - Substituir o operando pelo seu valor absoluto. - Testar uma condição. - Transferir um byte de dados de uma porta de E/S para a MP - Transferir um byte de dados da MP para uma porta de E/S. Um processador é fabricado com a capacidade de realizar uma certa quantidade de operações básicas (Primitivas), cada operação corresponde a uma instrução de máquina que compõem o conjunto de instruções (“set introduction”). Atualmente, são empregadas duas tecnologias de projeto de microprocessadores: Computadores com conjunto de instruções complexo (complex Instruction Set Computer - Cisc); e Computadores com conjunto de instruções reduzidas (Reduces Instruction set Computer- RISC). Os Programas fonte, isto é, escritos em linguagem de Programação (Pascal, C, Clipper, etc.), utilizam comandos para representar as tarefas que desejamos que o computador executasse. Esses comandos não são diretamente interpretados e executados pela CPU, tendo que ser convertidos para instruções de máquina (processo chamado de compilação ou interpretação). Arquitetura de Computadores 27 Por exemplo, o comando, em linguagem pascal, do tipo: X:= a * b + c - d será convertido, para execução, em três instruções de máquina (UAL só é capaz de executar uma de cada vez), a saber: (1) X:= a * b, que significa multiplicar o valor armazenado no endereço de memória simbolizado por A pelo valor armazenado no endereço de memória simbolizado por b; armazenando o resultado em x; (2) X:= x + c, somar o valor de X com o valor armazenado em c; armazenar o resultado em X (o valor de X será destruído); (3) X:= x - d, subtrair o valor armazenado em d do valor de x; armazenando o resultado novamente em x. 5.2 - Formatos de Instruções de Máquina Uma instrução de máquina, que a partir de agora chamamos apenas de instruções, é construída de duas partes, grupos de bits (campos): códigos de operação e operando. A figura 4.4 mostra os formatos mais comuns de instrução de máquina. Figura 4.4 - Formatos de Instruções de máquina 5.2.1 - Código de Operação É a parte da instrução que especifica a operação a ser realizada pela UAL, por exemplo, somar dois valores, mover de uma célula para um registrador etc. O código de operação é um conjunto d bits que indica a operação a ser executada (o C.oP é interpretado pelo decodificador). A quantidade de bits do código de operação determina quantas instruções o processador é capaz de executar. Nos processos Intel (do 8086/88 até o Pentium), o código de operação tem tamanho igual a 8 bits, portanto, seu conjunto de instruções poderá ter até 256 instruções. A decodificação é a etapa inicial da efetiva execução da operação especificada pelo C.oP, tarefa da função de controle. Código de Operações Instrução sem operando C.Op Operando Instrução com 1 operando C.Op Operando1 Operando 2 Instrução com 2 operandos Instrução com 3 operandos C.Op Operando1 Operando 2 Operando 3 Arquitetura de Computadores 28 5.2.2 - Operando(s) É a parte da instrução que , quando existe , o seu valor binário determina a localização do(s) dado(s) que ser (ão) manipulado(s) pela operação especificada pelo C. op A localização de um dado pode ser um endereço de memória ou um registrador da CPU onde esse está armazenado. Veja no exemplo abaixo, ilustrado pela figura 4.5 Supondo que o valor binário 1010001 ou hexadecimal A3 identifica a operação de soma de dois valores armazenados na memória principal, nos endereços especificados por Operando 1 e Operando 2. Como mencionado anteriormente, por questões práticas, usaremos os valores binários convertidos para hexadecimal. Portanto, a instrução de máquina abaixo corresponde à anterior e significa, somar o valor armazenado no endereço 9577 com o valor armazenado n endereço E2D6 e gravar o resultado no endereço 9577. 4.5 - Exemplos de instruções de máquina com dois operandos As instruções podem ter mais de um operando, isto é, a operação a ser realizada utilizará mais de um dado, sendo assim, cada operando da instrução poderá conter o endereço de memória de cada dado manipulado e também o endereço de onde será armazenado o resultado da mesma. O tamanho, em bits, do C.Op determina a quantidade de instruções que a CPU é capaz de implementar e o tamanho do operando determina a quantidade de células de memória que o computador pode endereçar, já que este representa um 8 bits 16 bits 16 bits 10100011 1001010101110111 1110001011010110 Instrução de máquina A3 9577 E2D6 XXXX ZZZZ end 9577 end E2D6 Arquitetura de Computadores 29 endereço de memória. No exemplo, o Set Instruction terá 256 instruções e a MP 65.536células. Atualmente a quantidade de células das MP tem aumentado bastante, podendo - se endereçar até 4Gbytes . Consequentemente, o tamanho dos operandos deveria crescer de forma igual (32 bits)-, o que acarretaria em instruções de máquina com tamanho muito grande. Na realidade, existem técnicas de endereçamento que permitem gerenciar grande quantidade de células de memória, utilizando as instruções de tamanho reduzido, com, isto, economizando memória. Uma destas técnicas de endereçamento chamada de Endereçamento por base mais deslocamento, emprega-se registradores específicos da CPU como parte do endereço do dado (Base) e a MP é subdividida em partes iguais, identificadas por cada um dos registradores utilizados. Existem outras técnicas de reduzir o consumo de memória para a representação de instruções, seja por modos de endereçamentos, supressão de operando e utilização de outro registrador específico da CPU, o acumulador (ACC). Instrução com quantidades menores de operandos será abordado no próximo capítulo. 5.3- Ciclo de Instrução É o conjunto de tarefas realizadas pela CPU para a execução de uma instrução. A execução repetitiva do ciclo de instrução é a função básica durante todo o tempo em que o computador permanece ligado. As tarefas de um ciclo de instrução são as seguintes: 1- A Unidade de Controle, busca na MP a instrução, cujo endereço está armazenado no CI(Contador de Instrução); 2- A CPU incrementa o conteúdo do CI, indicando o endereço da próxima instrução. 3- O decodificador interpreta o código de operação da instrução (interpretação da instrução) e gera uma saída para a Unidade de Controle (UC), indicando a operação a ser executada; 4- A CPU busca na MP 0(s) operando(s), se algum for requerido pela instrução; 5- A Unidade Aritmética (UAL) executa a operação sobre o(s) dado(s) que já está (ão) armazenados nos registradores da área de processamento. O ciclo de instrução é na realidade constituído por 2 ciclos - ciclos de Busca (Fetch), composto pelas duas primeiras tarefas e o ciclo de execução, que engloba as demais tarefas. As tarefas do ciclo de instrução são definidas como micro operações e são executadas em instantes de tempo definidos (ciclos de relógio) sob o comando da unidade de Controle (UC), podendo haver a execução de mais de uma microoperação num mesmo instante. A figura 5.6 representa o fluxograma de um ciclo de instrução Arquitetura de Computadores 30 Buscar a próxima instrução Incrementar o C.I Decodificação do C. Op. Cálculo do endereço do operando (*) Buscar e Armazenar operando Executar a operação Tem operando sim Início Cálculo do Endereçamento da Instrução Ciclo de Busca Ciclo de Execução Não Figura 5.6 – Fluxograma de um ciclo de instrução. Arquitetura de Computadores 31 CAPITULO 6 UNIDADE CENTRAL DE PROCESSAMENTO 6.1 - INTRODUÇÃO Já sabemos que a Unidade Central de Processamento (CPU) ou simplesmente processador é o principal componente do Sistema. Responsável pela execução e controle de todas as operações executadas por todos os componentes do computador. Neste capítulo analisaremos o processador de uma forma mais detalhada, descrevendo suas funções básicas: processamento (efetuada pela Unidade Aritmética e lógica - UAL) e Controle (efetuada pela Unidade de Controle - UC). Um Programa é constituído de instrução de máquina e que deve estar armazenamento em células da memória principal para que seja executado pela CPU. A atuação da CPU neste processo consiste das seguintes atividades: a) buscar uma instrução na MP (Operação de leitura); b) Interpretar (decodificar) qual operação a instrução está indicando; c) buscar, na MP, os dados que serão manipulados pela instrução; d) Executar efetivamente a operação com os dados e guardar o resultado na MP; e) reiniciar o processo buscando nova instrução na MP. Estas etapas compõem um ciclo de instrução. O ciclo de Instrução se repete até que encontre uma instrução de parada ou ocorra algum erro no programa. Ver figura 4.1 Figura 4.1 - Fluxo básico de um ciclo de instrução 6.2 - FUNÇÃO DE PROCESSAMENTO BUSCAR A PRÓXIMA INSTRUÇÃO INTERPRETAR A INSTRUÇÃO EXECUTAR INSTRUÇÃO FIM INÍCIO Arquitetura de Computadores 32 Realiza as atividades diretamente relacionadas com efetiva execução de instrução. 6.2.1 - Tarefas da Funções de Processamento • Operações aritméticas (soma, subtração , multiplicação , divisão); • Operações lógicas (AND,OR,XOR,etc); • Movimentação de dados (MP/CPU,CPU/MP e entre registradores); • Desvios (Alteração da seqüência de execução de instruções); • Operações de entrada ou saída A UAL (Unidade Lógica e Aritmética) é o principal dispositivo desta função , sendo responsável pela execução de todas as operações lógicas e aritméticas. Os demais componentes relacionados com a função de processamento são registradores, que armazenam dados ou guardam resultados parciais a serem usados pela UAL. A interligação entre os componentes é realizada pelo barramento interno da CPU. Os registradores servem como memória auxiliar da UAL e são números típicos de cada arquitetura de CPU. Em Alguns sistemas, um desses registradores, denominado acumulador (ACC), além de armazenar dados , serve de elemento de ligação da UAL com os Outros elementos da CPU. A figura 4.2 ilustra os componente empregados na função de processamento (um dos registradores é acumulador). Figura 4.2 - Componentes da função de processamento A capacidade de processamento de uma CPU, ou seja , a velocidade de execução de um ciclo de instrução , é determinada pelas operações aritméticas que a UAL é capaz de executar e pelo tamanho da Palavra que a CPU pode manipular. UNIDADE CENTRAL DE PROCESSAMENTO ÁREA DE PROCESSAMENTO UAL ACC R1 R2 R4 R3 BARRA DE DADOS Arquitetura de Computadores 33 Em processamento simples , a UAL só pode realizar apenas uma pequena quantidade de operações básicas , como soma e subtração. Operações mais complexas, como multiplicação e divisão , são nesses processadores , implementados por software (programa), enquanto em processadores mais poderosos , o Hardware da UAL é capaz de executar diretamente as operações de soma, subtração, multiplicação e divisão e com muito mais rapidez. O tamanho de palavra escolhido para CPU determinará o tamanho dos componentes (registradores e barramentos internos) ligados à área de processamento e, de certo modo, a velocidade e a capacidade de processamento do sistema. Se uma CPU for projetada para ter uma palavra de 16 bits, como intel 8088, 8086 e Motorola 68000, por exemplo, significará que: • O ACC, demais registradores e vias de dados terão capacidade para armazenar valores de 16 bits; • A Ual somente poderá efetuar operações aritméticas e lógicas com valores representados com 16 bits Dessa forma, para somar dois valores com 32 bits, essa operação será realizada em duas etapas: primeiro, será acionada a 1ª metade de cada valor (16 bits) e depois a parte restante Em outros sistemas nos quais a palavra tem 32 bits, exemplo intel 80486 e Pentium teremos: • O ACC, demais registradores e vias de dados permitem o armazenamento e transferência de valores com 32 bits (O Pentium possui barramentos de 64 bits) • aUAL é capaz de efetuar operações aritméticas e lógicas entre valores com 32 bits. Nesses sistemas , a soma de dois valores de 32 bits será realizada em uma única etapa e, evidentemente , gastará um tempo muito menor. Arquitetura de Computadores 34 6.3 FUNÇÕES DE CONTROLE É a função da CPU responsável pelo funcionamento sincronizado de todos os componentes envolvidos na execução de uma instrução. 6.3.1 - Tarefas da função de Controle Busca e transferência da instrução a ser executada , armazenando-a no RI (ciclo de busca ou ciclo de fetch); Interpretação (decodificação) da instrução de modo a identificar qual a operação a ser realizada pela UAL (ciclo de instrução); e Geração dos sinais de controle para ativação das atividades requeridas para a execução da instrução identificada. Esses sinais são enviados, pela UC, aos diversos componentes internos à CPU (como a UAL) externos (como a MP e os periféricos). A Unidade de Controle (UC) é o principal dispositivo envolvido nesta função. Além de efetuar a movimentação de dados entre a CPU e MP ela controla o funcionamento da UAL e de vários componentes do sistema, através dos sinais de controle . Ver figura 4.3 Figura 4.3 - Esquema básico da CPU A emissão dos Sinais de controle ocorre em vários instantes durante o ciclo de instrução , já que este é constituído por vários passos , como já foi visto anteriormente . os sinais possuem , de modo geral , a mesma duração , denominada ciclo de máquina , isto é , cada operação do ciclo de instrução é realizado em um ou mais ciclos de máquina. Podemos ter também , a execução de mais de uma operação num mesmo ciclo de máquina - CPUs que empregam o UNIDADE CENRAL DE PROCESSAMENTO ÁREA DE CONTROLE ÁREA DE PROCESSAMENTO UC DECODIFICADOR DE INSTRUÇÕES UAL ACC RI REMCI RI R2 RDM R4 R3 RELÓGIO MEMÓ RIA PRIN CIPAL CONTROLE DADOS OU ENDEREÇO Barra de controle Barra de endereços Barra de dados Arquitetura de Computadores 35 sistema de execução “pipeline” (arquiteturas RISC). Estes ciclos são gerados por um dispositivo conhecido como relógio (“ clock”) . O relógio é um gerador de pulsos eletrônicos cuja função é chamada de ciclo possui uma freqüência - quantidade de vezes que um ciclo ocorre em um segundo - que é medida em Hetz (Hz) - portanto, a velocidade de execução de ciclos de instruções depende, não somente , da quantidade de ciclos de máquina gastas, mas também, na duração do ciclo e de quantas operações (passo) são realizados em um mesmo ciclo de máquina. Ao iniciar o ciclo de instrução , a UC emite o sinal de controle para a busca de uma instrução na MP e , via barramento de dados e RDM (Registrador de Dados de Memória), está é armazenada no RI (Registrado de Instruções). Neste instante, a UC incrementa o conteúdo do CI ( Contador de Instruções), para que este passe a armazenar o endereço da próxima instrução . Esta fase do ciclo de instrução, denomina-se ciclo de busca (fetch). O outro dispositivo envolvido na função de controle é o decodificador, que tem a finalidade de identificar , por um código individual . Arquitetura de Computadores 36 CAPITULO 7 INTERRUPÇÃO Hoje em dia praticamente todos os computadores são dotados de um mecanismo de interrupção. Neste caso, a UC, logo após terminar a execução de uma instrução (antes de iniciar o ciclo de fetch da próxima instrução) verifica as linhas de interrupção para ver se alguma interrupção foi sinalizada. Se foi, o hardware salva automaticamente os registradores da UCP na pilha do programa que estava em execução e carrega no PC o endereço da rotina que trata da interrupção que foi sinalizada (essa rotina de interrupção faz parte do kernel do Sistema Operacional). 7.1 O conceito de interrupção O conceito de interrupção é fundamental para se entender a organização e o funcionamento dos sistemas operacionais. Por isso esse conceito será apresentado de forma detalhada a seguir. Pode-se dizer que as interrupções são as forças que movimentam e dirigem os sistemas operacionais. Na verdade, um sistema operacional só recebe o controle da UCP (só é executado e só trabalha) quando ocorre alguma interrupção. Essas “forças motrizes” podem ser geradas por hardware ou por software. 7.2 Interrupção de hardware Uma interrupção de hardware é um sinal originado em algum dispositivo físico, que faz com que a UCP suspenda a execução do programa que vinha executando (guardando informações para continuar a execução desse programa, mais tarde) e passe a executar uma rotina específica que trata da interrupção ocorrida. Interrupções de hardware podem ser originadas pelos vários dispositivos periféricos (discos, impressora, teclado, etc.) ou pelo relógio. O relógio (timer) é um dispositivo que decrementa automaticamente o conteúdo de um registrador, com uma freqüência constante, e interrompe a UCP quando o valor do registrador atinge zero. O SO garante que ocorra pelo menos uma interrupção (e ele volte a trabalhar) dentro de uma fatia de tempo Ft, colocando no relógio um valor que demore Ft unidades de tempo para ser decrementado até zero (o SO faz isso antes de entregar a UCP para um programa de usuário). Os computadores possuem instruções especiais para desabilitar (mascarar, inibir) o sistema de interrupção. Enquanto as interrupções estão desabilitadas elas podem ocorrer, mas não são sentidas pelo processador. Nesse caso, elas ficam pendentes (enfileiradas) e só voltam a ser sentidas quando a UCP executa uma instrução especial que habilita (desmascara, desinibe) as mesmas. Arquitetura de Computadores 37 7.3Interrupção de software (trap ou system call) Uma interrupção de software é um sinal de interrupção gerado por uma instrução especial (portanto, por software) denominada chamada do sistema (system call) ou chamada do supervisor (supervisor call). Alguns autores também chamam as interrupções geradas por software de traps (armadilhas). A execução desse tipo de instrução desencadeia as mesmas ações desencadeadas por uma interrupção de hardware, isto é, o programa em execução é suspenso, informações são salvas e uma rotina específica do SO é executada. A diferença fundamental das interrupções de software para as interrupções de hardware é que as primeiras são eventos previsíveis. Isto é, dado um programa e seus dados, é possível determinar os pontos em que as interrupções de software irão ocorrer. Por outro lado, as interrupções de hardware são geradas por dispositivos periféricos (para sinalizar erros ou finais de operações) em pontos imprevisíveis. É comum que a denominação interrupção seja subentendida como interrupção de hardware. Esta convenção será usada daqui para a frente. As interrupções de software serão referidas explicitamente por traps ou chamadas do sistema. Pode-se dizer que o conjunto das interrupções e dos traps define o conjunto das portas de entrada do SO. A execução só entra no SO através de uma dessas portas. A seguir é explicado o mecanismo que faz a UCP transferir a execução para a porta de entrada correta, quando ocorre uma interrupção ou um trap. Em tempo de projeto do computador, é escolhida uma área de memória para conter uma tabela, denominada tabela de interrupções, que irá conter uma linha (entrada) para cada interrupção ou trap que possa ocorrer no sistema. Cada entrada da tabela contém dois valores: um para ser carregado no PC (program counter) e outro para ser carregado na PSW (processor status word). A palavra de estado do processador(PSW) é um registrador da UCP que contém informações do tipo: quais interrupções estão desabilitadas e qual é o modo de execução da UCP (O modo de execução pode ser normal (programa de usuário em execução) ou privilegiado (SO em execução)). O hardware é projetado e construído de tal maneira que, quando ocorre uma interrupção ou um trap, a UCP salva automaticamente os conteúdos do PC e da PSW na pilha do programa em execução e carrega novos valores nesses dois registradores, a partir da entrada correspondente da tabela de interrupções. Em tempo de carga do SO, a tabela de interrupções é inicializada corretamente, cada entrada indicando uma porta de entrada do SO. Arquitetura de Computadores 38 7.4 Os modos de execução da UCP Os traps surgiram (passaram a serem necessários) quando os computadores deixaram de disponibilizar todas as suas instruções para os usuários e passaram a adotar instruções protegidas (ou privilegiadas). Nessa época, os projetistas decidiram que determinadas instruções, por serem perigosas para o sistema como um todo, deveriam ser executadas apenas dentro do SO (isto é, apenas por rotinas do SO). Exemplos de instruções perigosas são instruções para desabilitar e habilitar interrupções e instruções para realizar operações de E/S. Esse controle do uso de instruções é conhecido como proteção de controle (Outro tipo de proteção implementado por hardware é a proteção de memória. A proteção de arquivos (informações) é normalmente implementada por software) ou proteção de instruções. Para implementar este tipo de proteção, o hardware teve que passar a distinguir dois modos de processamento: modo privilegiado (também chamado modo supervisor, modo sistema, modo mestre) e modo normal (modo usuário, modo programa, modo escravo). Se a UCP, no modo usuário, tenta executar uma instrução protegida, isto gera uma interrupção de software do tipo instrução ilegal (illegal instruction trap). Sendo assim, sempre que um programa de usuário precisa executar uma operação envolvendo instrução perigosa, ele tem que passar o controle para o SO, mudando o modo de execução. Aqui é um ponto chave para o bom entendimento deste assunto (aqui os projetistas deram o “pulo do gato”). Observe que a instrução para transferir a execução para o SO não podia ser protegida, pois esta instrução teria que ser executada por um programa de usuário. Também não podia ser uma instrução de transferência simples, pois isto permitiria transferir a execução para qualquer ponto do SO, sem controle. Tampouco podia ser uma instrução tipo “transferência para sub-rotina com passagem do modo de execução para privilegiado”, pois uma instrução assim poderia ser usada por um usuário mal intencionado para obter o controle total da máquina. Era necessário, portanto, que essa instrução de transferência para o SO tivesse alguma “armadilha” associada, para pegar intrusos. Daí vem o nome trap (em português, armadilha) para o esquema adotado. Para encurtar o relato, a solução adotada é aquela já conhecida, a qual permite transferir com troca do modo de execução apenas para pontos fixos e bem determinados do SO, que são as suas portas de entrada. Nas portas de entrada dos traps, o SO pode fazer as verificações que julgar necessárias e implementar as armadilhas que desejar. Hoje em dia, qualquer computador possui dois modos de processamento. Sempre que ocorre uma interrupção ou um trap, a UCP passa para o estado privilegiado (e nesse estado qualquer instrução pode ser executada). Posteriormente, ao entregar a UCP para um programa de usuário, o SO recoloca a UCP no modo não privilegiado. Sempre que um programa de usuário precisa executar alguma operação que envolva instrução protegida, o mesmo tem que executar um trap, passando como argumentos para o SO a identificação da operação e os parâmetros para sua execução. UC
Compartilhar