Prof. João Marcelo M Fernandes TANENBAUM, Andrew S. Organização Estruturada de computadores 4a Edição. Rio de Janeiro: Printice-Hall do Brasil, 2001
Agenda do Curso Organização estruturada de computadores Semana 01 (03/08/) Introdução - Linguagens, níveis e máquinas virtuais Maquinas Multiníveis Contemporâneas nível de lógica digital, nível de microarquitetura, nível de arquitetura de conjunto de instruções, nível de máquina de sistema operacional, nível de linguagem assembly, nível de linguagem orientada ao problema. Organização estruturada de computadores Semana 02 (20/08/) Histórico e evolução dos computadores - Evolução das Máquinas Multiníveis microprograma, a invenção do sistema operacional, microcódigo, a eliminação da microprogramação. Organização de sistemas computacionais Semana 03 (27/08/) - Processadores organização de CPU, execução de instrução, princípios de projetos para computadores modernos, paralelismo no nível de instrução, paralelismo no nível de processador
Agenda do Curso Organização de sistemas computacionais Semana 04 (03/09/) - Memória Primária: endereços, ordenação dos bytes, códigos de correção de erros, memória cache. Apresentação de Equipes (Memória Secundária) Semana 05 (10/09/) Revisão e Exercícios Semana 06 (17/09/) Prova AP1 Semana 07 (24/09/) Apresentação de Equipes (Dispositivos de E/S) Semana 08 (01/10/) Nível Lógico Digital Parte I Semana 09 (08/10/) Revisão da matéria de Sistemas Digitais Clocks RAMS, ROMs Chips de memória
Agenda do Curso Dia dos Professores Semana 10 (15/10/) Nível Lógico Digital Parte II Semana 11 (22/10/) Organização de memória Chips de CPU Exemplos de microprocessadores Barramentos: largura, temporização, operação Exemplos de barramentos: ISA, PCI, USB Interfaceamento de E/S: chips de E/S, decodificação de endereço Nível de microarquitetura Parte I (microprogramação) Semana 12 (29/10/) Exemplo de microarquitetura: fluxo de dados, temporização do fluxo de dados Exemplo de microarquitetura: operação de memória, microinstruções Exemplo de microarquitetura: controle por microinstrução: o Mic-1 Exercícios relacionados com o material apresentado
Agenda do Curso Nível de microarquitetura Parte II Semana 13 (05/11/) Exemplo de macroarquitetura Exemplo de implementação: microinstruções e notações Exercícios relacionados com o material apresentado Nível de microarquitetura (microprogramação) Semana 14 (12/11/) Implementação da máquina virtual do nível ISA usando Mic-1 Projeto do nível de microarquitetura apresentado de forma introdutória: velocidade versus custo, redução de fluxo de execução, pipeline. Revisão e Exercícios Semana 15 (19/11/) Prova AP2 Semana 16 (26/11/) Entrega de Notas Semana 17 (03/12/) Prova Substitutiva Semana 18 (10/12/) Prova Final Semana 19 (17/12/)
Tópicos Trabalho Semestral TÓPICO 1 - MEMÓRIA SECUNDÁRIA HIERARQUIAS DE MEMÓRIAS DISCOS MAGNÉTICOS DISCOS FLEXÍVEIS TÓPICO 2 - MEMÓRIA SECUNDÁRIA DISCOS IDE DISCOS SCSI RAID TÓPICO 3 - MEMÓRIA SECUNDÁRIA CD-ROMS CDS GRAVÁVEIS CDS REGRAVÁVEIS TÓPICO 4 - MEMÓRIA SECUNDÁRIA DVDS BLU - RAYS
Tópicos Trabalho Semestral TÓPICO 5 - ENTRADA/SAÍDA BARRAMENTOS TERMINAIS TECLADOS MONITORES CRT VÍDEOS DE TELA PLANA TÓPICO 6 - ENTRADA/SAÍDA TERMINAIS MAPEADOS A CARACTER TERMINAL MAPEADO A BIT TERMINAIS RS-232-C TÓPICO 7 - ENTRADA/SAÍDA MOUSES IMPRESSORAS MONOCROMÁTICAS COLORIDAS TÓPICO 8 - ENTRADA/SAÍDA MODEMS EQUIPAMENTOS TELECON CÂMERAS DIGITAIS
Introdução Visão Geral O computador : É uma máquina que serve para solucionar problemas. Executa programas - Conjunto de instruções que descrevem como realizar uma tarefa.
Introdução Arquitetura de Computadores Tem como objetivo lidar com o comportamento funcional de um sistema computacional do ponto de vista do programador. São os atributos do sistema que são visíveis a este: Ex.: Conjunto de instruções, número de bits usados para representação de dados, mecanismos de E/S, técnicas de endereçamento, etc. 1. Tamanho dos tipos de dados (ex.: usar 16 bits para representar um inteiro) e as operações que ocorre sobre esses dados (+,-,*,/,chamadas de rotinas e etc.) 2. Existe uma instrução de multiplicação?
Introdução A organização de Computadores Trata dos aspectos que são transparentes ao programador. Refere-se às unidades operacionais e suas interconexões que implementam sua arquitetura: Sinais de controle, interfaces entre o computador e os periféricos, tecnologia de memória, tamanho da memória física, frequência de clock, etc. ex: Existe uma unidade de multiplicação no hardware ou esta é implementada através do uso sucessivo do mecanismo de soma?
Introdução Os circuitos de um computador (Hardware) Reconhecem e executam um conjunto limitado e simples de instruções (linguagem de máquinabinária) Ex.: soma, comparação, transferência de dados de uma parte da memória para outra parte
Introdução Breve Resumo: Computador é uma máquina que resolve problemas para as pessoas a partir de instruções que lhe são fornecidas. Programa é a seqüência de instruções que descreve como realizar determinada tarefa. Circuitos Eletrônicos reconhecem e executam um conjunto de instruções simples. Para que o programa execute, deve ser convertido em instruções simples.
Introdução Linguagem de Máquina são instruções primitivas. Linguagem que a máquina entende, possibilita a comunicação. Essas instruções ficam a cargo de quem projeta um novo componente ou um novo computador.
Introdução Instruções da linguagem de máquina (decidida pelos projetistas de computadores) devem: ser simples ser compatível com o uso da máquina ser compatível com a performance requerida ter custo e complexidade da eletrônica reduzidos (aplicação) A linguagem de máquina (binária- baixo nível) está muito distante de uma linguagem natural (humana- alto nível)
Introdução Organização Estruturada de Computadores uma maneira de estruturar os computadores como uma série de abstrações. Sistemas de Computação sendo projetados de modo estruturado e sistemático.
1.1 Organização Estruturado de Computadores Grande Lacuna:? É melhor, Conveniência para as pessoas Conveniência para os computadores O que as pessoas precisam fazer é complexo e o conjunto de instruções do computador é simples Pessoas querem X, mas computadores só podem Y (Resultado Problema)
Exemplo: o usuário quer calcular a correção da trajetória de um foguete saindo da terra até a lua. Como o usuário pode fazer isso em linguagem de máquina? Trabalho difícil e tedioso para os humanos Solução: Criar uma hierarquia de abstrações de níveis mais altos baseadas nos níveis mais baixos. Criar uma organização estruturada de computadores para facilitar a comunicação homemmáquina
1.1.1 Linguagens, níveis e máquinas reais O Problema pode ser abordado de duas formas: I. Projetar um novo conj. De instruções que seja mais conveniente para as pessoas, do que as instruções da máquina L1. As instruções de máquina formam a linguagem L0.
L1: linguagem natural, do usuário (alto nível e complexa) L0: linguagem da máquina (baixo nível e simples) Programas escritos em L1 de alguma forma tem que se transformar em L0.(Máquinas só entendem linguagens de máquina) ou seja, Como compatibilizar L1 com L0? Temos 2 soluções: usar um tradutor usar um interpretador
Métodos de Leitura: 1 Introdução I.Tradução: Cada instrução de L1 é substituída por um conjunto de instruções equivalentes de L0 Processador executa programa em L0. Todo programa em L0 é carregado em memória e é executado Programa pode ser traduzido uma única vez e executado várias vezes
II. Interpretação: Cada instrução de L1 é substituída por um conjunto de instruções equivalentes de L0 Processador executa instrução de L1 (transformada para L0) antes de executar próxima instrução. Cada instrução de L1, transformada para L0, é carregada na memória e executada Não é criado um programa em L0 Programa deve ser novamente interpretado para ser executado
Analogia: Tradução (Traduzir um texto do inglês para o português e depois interpreta) Interpretação (Ler um texto e o interpreta direto) Em ambos os métodos o computador faz instruções em L1 que realizam seqüências equivalentes em L0. A diferença é que na tradução, todo programa L1 é antes convertido em L0.(L1 é descartado e L0 é carregado na memória) Na interpretação, após a decodificação de L1, ela é executada. (nenhum programa traduzido é gerado) Observação: Pode ser utilizada uma metodologia híbrida: tradutor + interpretador.
Máquina Multinível Em vez de pensar em tradução e interpretação, muitas vezes é mais simples imaginar a existência de um computador hipotético ou de uma máquina virtual M1, cuja linguagem de máquina seja L1 (e uma máquina real M0 com linguagem L0)
Máquina Multinível Os programas poderiam ser escritos em L1, para a máquina M1 e: serem executados diretamente em M1 se esta máquina fosse de custo de construção baixo, ou serem traduzidos ou interpretados para L0 e executados em M0
Máquina Multinível Na prática geralmente se implementa a solução 2 do slide anterior. As pessoas escrevem programas para máquinas virtuais como se essas máquinas realmente existissem.
Máquina Multinível Cada linguagem Ln usa a antecessora como base, de modo que podemos considerar um computador que use essa técnica como uma série de níveis. (o nível mais baixo é mais simples do que os de cima)
Nível n Máquina real Mn, com linguagem de máquina Ln Programas em Ln são interpretados por um interpretador que roda em uma Máquina de nível inferior, ou são traduzidos para a linguagem de máquina de uma máquina de nível inferior.... Nível 2 Máquina real M2, com linguagem de máquina L2 Programas em L2 são interpretados por interpretadores que rodam em M1 ou M0, ou são traduzidos para L1 ou L0 Nível 1 Nível 0 Máquina real M1, com linguagem de máquina L1 Máquina real M0, com linguagem de máquina L0 Programas em L1 são interpretados por um interpretador que roda em M0, ou são traduzidos para L0 Programas em L0 podem ser executados diretamente pelos circuitos eletrônicos
Interesse Nível mais Alto: A maioria dos Programadores Nível mais Baixo: Projetistas de novos computadores ou máquinas reais
Máquinas Multiníveis contemporâneas A maioria dos computadores modernos tem dois ou mais níveis. Computador de 6 níveis. Abaixo de cada nível está indicado o método de suporte.
Máquinas Multiníveis contemporâneas Nível 0: Nível da Lógica Digital Nível mais baixo da estrutura Objetos de interesse são conhecidos como portas lógicas Cada porta lógica tem 1 ou mais entradas digitais (aceitam 0 ou 1) e calculam funções lógicas simples sobre essas entradas. Exemplo: AND, OR, NOT... Portas lógicas são combinadas para formar o Processador - principal dispositivo do computador Pode combinar para formar memória de 1bit (0 ou 1), essas memórias podem ser combinadas em 16, 32, 64 para formar registradores.
Um registrador pode conter de um único número binário até algum valor máximo. (Portas lógicas e Registros serão vistos com mais detalhes no capitulo 3) Nível 1: Nível da Micro arquitetura Enxergamos uma memória local (8 a 32 registradores) e a UAL (Unidade Aritmética Lógica) que realiza operações aritméticas muito simples Os registradores são conectados a UAL formando o caminho dos dados Operações são controladas por um micro programa ou diretamente por hardware Micro programa é um interpretador para as instruções do nível 2. Ex.: A ALU seleciona dois registros, faz uma operação (+,-...) e guarda o resultado em um deles.
A função do micro programa é interpretar as instruções de nível 2. Poucas são as máquinas que têm mais de 20 instruções no nível do micro programa, e a maior parte destas instruções envolve a movimentação de dados de uma parte da máquina para outra ou alguns testes simples.
A microprogramação é utilizada especialmente nas máquinas classificadas de CISC Complex Instruction Set Computer. Este tipo de máquina implementa instruções complexas correspondentes ao nível 2. Isto tende a facilitar a programação de compiladores de uma linguagem de alto nível específica, mas de uma maneira geral compromete o desempenho da máquina. Isto acontece porque a complexidade dos circuitos lógicos tende a aumentar, criando um caminho mais longo para a propagação do sinal elétrico gerando um maior atraso. Tal atraso implica em uma menor freqüência de operação dos circuitos.
Nível 2: Nível da Arquitetura do Conjunto de Instruções (nível ISA - Instruction Set Architeture) Definida pelo fabricante e dependente da arquitetura da máquina Fabricantes disponibilizam "Manual de Referência da Linguagem de Máquina" ou "Princípios de operação do Computador Modelo XYZ4W), ou algo similar. Manuais descrevem como as instruções são executadas interpretativamente pelo micro programa ou como elas são executadas diretamente pelo hardware. Essas informações são necessárias para os desenvolvedores de sistemas operacionais.
O nível 2 corresponde à linguagem de máquina ou o código binário executado pelo hardware. Na Figura vista, este nível é interpretado para o nível de micro programação, porém nas máquinas RISC - Reduced Instruction Set Computer - o nível 1 (micro programação) não existe. Neste tipo de máquina, o nível 2 é executado (interpretado) diretamente no nível 0. Atualmente este tipo de máquina é considerado mais eficiente e flexível que as CISC. Isto porque, as instruções delas tendem a ser executadas em poucos (ou mesmo um único) ciclos de relógio, permitindo assim ao projetista do compilador, ou ao projetista do Sistema Operacional uma programação mais sob medida (customizado) para cada situação. Entretanto, o código gerado tende a ser mais longo e complexo. Cada máquina ou processador tem sua linguagem própria de nível 2, a qual é documentada em manuais específicos de cada fabricante.
Nível 3: Nível do Sistema Operacional Instruções da linguagem deste nível também podem conter instruções do nível ISA. Suporta uma organização diferente de memória Suporta capacidade de rodar 2 ou mais programas simultaneamente Suporta sistemas de comandos ou de janelas (Windows) Programadores deste nível, e também dos níveis mais baixos, são conhecidos como programadores de sistema. Os programadores dos níveis mais altos que este são chamados programadores de aplicação.
O nível do Sistema Operacional (S.O.) - é responsável por fornecer serviços básicos para os níveis acima. Tais serviços são: interface (gráfica ou linha de comando) com o usuário (Shell), gerenciamento de memória, escalonamento de processos, acionamento de dispositivos de entrada e saída de dados etc. Este nível é geralmente desenvolvido de forma híbrida, ou seja, parte em uma linguagem de alto nível (como C ou C++, por exemplo), e parte diretamente em linguagem de máquina. Após o seu desenvolvimento, o programa executável em código de máquina é gerado para ser carregado nas máquinas a que se destina. S.O. complexos são desenvolvidos em ambientes computacionais apropriados, porém, os mais simples podem ser desenvolvidos diretamente em linguagem de máquina.
Nível 4: Nível da linguagem do montador ou de montagem (Assembly language) Linguagem de montagem: forma simbólica de representação das linguagens do nível mais baixo. Programas nessa linguagem são primeiro traduzidos para as linguagens dos níveis 1, 2 e 3 e depois interpretados pela máquina virtual apropriada ou pela própria máquina real. Programa que realiza essa tradução é chamado de montador
O nível de linguagem de montagem, é realmente uma forma simbólica. Todas as linguagens de alto nível são simbólicas, isto é, usam agrupamentos de caracteres alfanuméricos que representam palavras ou expressões matemáticas que apelidam uma instrução de máquina ou correspondem a uma seqüência (rotina) de instruções de máquina. Tais apelidos são mais expressivos para os humanos que os códigos numéricos computacionais. Os compiladores traduzem estes caracteres em linguagem de máquina.
O nível 4 provê um método para as pessoas escreverem programas para os níveis 1, 2, e 3 de uma maneira mais agradável e amigável. Neste nível cada instrução de máquina é apelidada por um minemônico (por exemplo add, load, sub, mov e etc.) que normalmente correspondem diretamente a uma única instrução de máquina. Assim, o minemônico é um apelido, mais significativo para os humanos, que representa uma instrução de máquina, ou seja, um código binário executável.
Nível 5: Nível das linguagens orientadas para solução dos problemas Conhecidas como linguagens de alto nível. Exemplos Basic, C, Pascal, Java, LISP,... Programas são geralmente traduzidos para os níveis 3 e 4 por compiladores Alguns são interpretados: Exemplo: programas em Java, MatLab,...
Há ainda a existência de outros níveis abaixo do nível 0, que não estão representados na figura. Estes níveis situam-se no campo da engenharia elétrica e da física do estado sólido. Nestes níveis os projetistas enxergam portas lógicas, transistores individuais e o cristal semicondutor, que é o substrato dos circuitos integrados. O nível 0 e os níveis abaixo dele fogem ao escopo desta disciplina.
Organização do software. Etapas da execução de um programa (adaptado de Patterson e Hennessy, 3ª ed., 2005, pág.78).
Observações finais importantes do capítulo: Computadores são projetados como uma série de níveis, cada um deles construídos em cima de seus precursores. Cada nível representa uma abstração distinta, com diferentes objetos e operações A abstração permite ignorar, "abstrair", temporariamente detalhes irrelevantes, de níveis mais baixos, reduzindo uma questão complexa a algo muito mais fácil de ser entendido. O conjunto de tipos de dados, operações e características de cada um dos níveis é chamado arquitetura do nível. São parte da arquitetura, as características que um programador do nível deve enxergar, por exemplo, a disponibilidade de memória