UNIP - UNIVERSIDADE PAULISTA ORGANIZAÇÃO DE COMPUTADORES ORGANIZAÇÃO DE COMPUTADORES • Bibliografia: – MONTEIRO, M. A. – Introdução à organização de computadores. 4 ed. RJ. LTC 2001. – TANEMBAUM, A. S. Organização Estruturada de Computadores. 4 ed. RJ. LTC 2001. • Bibliografia complementar – MURDOCCA, M. J. Introdução à arquitetura de computadores. RJ. Campus, 2001. – STALLINGS, W. Arquitetura e organização de computadores. 5 ed. SP. Pearson, 2002. ORGANIZAÇÃO DE COMPUTADORES • Conceituação de Organização e arquitetura de Computadores e máquinas multiníveis. • Organização de Sistemas computacionais. • CPU, memória, Entradas e multimídia, barramentos. ORGANIZAÇÃO DE COMPUTADORES • Nível lógico digital: UAL, Organização da memória, Clock e registradores. • Nível de microarquitetura: Fluxos de dados, Temporização do fluxo de dados, operação de memória, microinstruções. • Exemplo de macroarquitetura e projeto do nível de macroarquitetura (forma introdutória). MÓDULO I Organização estruturada de computador Máquinas multiníveis contemporâneas Nível de lógica digital; Nível de microarquitetura; Nível de arquitetura de arquitetura de conjunto de instruções; Nível de máquina de sistema operacional; Nível de linguagem assembly; e Nível de linguagem orientada ao problema. MÓDULO I Organização estruturada de computador Evolução das máquinas de vários níveis A invenção da microprogramação; A invenção do Sistema Opreacional; Migração das funcionalidades para o Microcódigo; A eliminação da Microprogramação; INTRODUÇÃO O Computador: É uma máquina de solução de problemas. Executa programas - Conjunto de instruções que descrevem como realizar uma tarefa. INTRODUÇÃO Os circuitos de um computador: Reconhecem e executam um conjunto limitado e simples de instruções (Linguagem de máquina – Binária); Exemplo: soma, subtração, transferência de dados de uma parte da memória para outraparte. 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). INTRODUÇÃO A linguagem de máquina (binária – baixo nível) está muito distante de uma linguagem natural (humana – alto nível) O que as pessoas precisam fazer é complexo X O conjunto de instruções do computador é simples. INTRODUÇÃO EXEMPLO: O usuário quer calcular a correção da trajetória de um foguete até a lua. Como ele pode fazer isso em linguagem de máquina? Trabalho difícil e tedioso para seres humanos. SOLUÇÃO: Criar uma hierarquia de abstrações de níveis mais altos baseados nos níveis mais baixos. Criar uma organização estruturada de computadores para facilitar a comunicação homem-máquina LINGUAGENS, NÍVEIS E MÁQUINAS VIRTUAIS Supondo a existência das Linguagens: L1: Linguagem natural, do usuário (Alto nível e complexa). L0: Linguagem de máquina (Baixo Nível e simples). COMO COMPATIBILIZAR L1 com L0? Temos 2 soluções. LINGUAGENS, NÍVEIS E MÁQUINAS VIRTUAIS USAR UM TRADUTOR; USAR UM INTERPRETADOR. LINGUAGENS, NÍVEIS E MÁQUINAS VIRTUAIS TRADUTOR: Cada instrução de L1 é substituída por um conjunto de instruções equivalentes de L0; Processador executa o programa em L0; Todo o programa em L0 é carregado em memória e executado; O programa pode ser traduzido uma única vez e executado várias vezes. LINGUAGENS, NÍVEIS E MÁQUINAS VIRTUAIS INTERPRETADOR: 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 a próxima instrução; Cada instrução de L1, transformada em L0, é carregada na memória e executada; Não é criado um programa em L0; O programa deve ser novamente interpretado para ser executado. LINGUAGENS, NÍVEIS E MÁQUINAS VIRTUAIS Ao invés de pensar em tradução ou interpretação, pode-se 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 ). LINGUAGENS, NÍVEIS E MÁQUINAS VIRTUAIS Os progrmas poderiam ser escritos em L1, para a máquina M1 e: (1) Serem executados diretamente em M1 se esta máquina fosse de custo de construção baixo, ou (2) Serem traduzidos ou interpretados para L0 e executados em M0. Na prática, implementa-se a solução 2 acima. As pessoas escrevem programas para máquinas virtuais como se elas realmente existissem. LINGUAGENS, NÍVEIS E MÁQUINAS VIRTUAIS Muitos níveis de máquinas virtuais podem ser implementados; Cada linguagem usa a sua linguagem antecessora como base; Um computador que use essa técnica pode ser visto como um conjunto de camadas ou níveis um em cima do outro como mostra a figura a figura do próximo slide. LINGUAGENS, NÍVEIS E MÁQUINAS VIRTUAIS MÁQUINAS MULTINÍVEIS CONTEMPORÂNEAS A grande maioria dos computadores é formada por 2 ou mais níveis. A figura abaixo mostra o esquema de um computador de 6 níveis: 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 uma ou mais entradas digitais (aceitam 0 ou 1 e calculam funções lógicas simples sobre essas entradas. Exemplo: AND, OR e XOR. Portas lógicas são combinadas para formar o processador – principal dispositivo do computador. MÁQUINAS MULTINÍVEIS CONTEMPORÂNEAS Nível 1: Nível da microarquitetura. Enxergamos uma memória local (8 a 32 registradores) e a UAL (Unidade Aritmética e 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 microprograma ou diretamente por hardware. Microprograma é um interpretador para as instruções do nível 2. MÁQUINAS MULTINÍVEIS CONTEMPORÂNEAS 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 XPTO“, ou algo similar. Os manuais descrevem como as instruções são executadas interpretativamente pelo microprograma ou como elas são executadas diretamente pelo hardware. Essas i nformações são necessárias para os desenvolvedores de sistemas operacionais. MÁQUINAS MULTINÍVEIS CONTEMPORÂNEAS 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 da memória. Suporta a 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 chamaddos programadores de aplicação. MÁQUINAS MULTINÍVEIS CONTEMPORÂNEAS Nível 4: Nível da linguagem do montador ou montagem (Assembly language). Linguagem de montagem: Forma simbólica de representação das linguagens de nível mais baixo. Programas nessa linguagem são primeiro traduzidos para as linguagens dos níveis 1, 2 e 3. E depois são interpretados pela máquina virtual apropriada ou pela própria máquina real. O programa que realiza essa tradução é chamado de montador. MÁQUINAS MULTINÍVEIS CONTEMPORÂNEAS Nível 5: Nível das linguagens orientadas para a solução de problemas. Conhecidas como linguagens de alto nível. Ex: C, Pascal, Java, etc. Programas são geralmente traduzidos para os níveis 3 e 4 por compiladores. Alguns são interpretados. Exemplo: Java, Shell Script, etc. MÁQUINAS MULTINÍVEIS CONTEMPORÂNEAS OBSERVAÇÕES FINAIS (IMPORTANTES) Computadores são projetados com 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 permiter ignorar, “abstrair“ temporariamente, detalhes irrelevantes de níveis mais baixos, reduzindo uma questão complexa para algo muito mais fácil de ser compreendido. O conjunto de tipos de dados, operações e características de cada um dos níveis é chamado de 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. MÓDULO I Organização estruturada de computador Evolução das máquinas de vários níveis A invenção da microprogramação; A invenção do Sistema Opreacional; Migração das funcionalidades para o Microcódigo; A eliminação da Microprogramação; Organização estruturada de computador Evolução das máquinas de vários níveis Hardware (Nível 0): Compostos de circuitos integrados, placas de circuitos impressos, cabos, fontes de alimentação, memórias, impressoras, etc; Softwares: Algoritmos e programas; Atualmente é difícil separar o hardware do software Hardware e Software são equivalentes logicamente; Qquer operação realizada por software pode ser diretamente realizada por hardware; Qualquer instrução executada por hardware pode ser simulada em software; Organização estruturada de computador A decisão de se colocar funções em hardware ou software depende: Custo; Velocidade; Confiabilidade; Ferquência esperada de mudanças. MÓDULO I Organização estruturada de computador A invenção da microprogramação Primeiros computadores – década de 1940 – tinham 2 níveis (Nível ISA + Nível da lógica digital); Em 1951, Maurice Wilkes segere a idéia de acoplar um interpretador (microprograma) para executar os programas do nível ISA (por interpretação). Como consequencia: Diminui o número de circuitos (hardware + simples) Aumenta a confiabilidade da máquina (circuitos à válvula). MÓDULO I Organização estruturada de computador A invenção da microprogramação (Cont.) Na década de 1960 surgiram muitas máquinas com essa filosofia; Em 1970, o uso do nível de ISA interpretado por microprograma, ao invés de executado diretamente por circuitos eletrônicos, tornou-se uma prática comum. MÓDULO I Organização estruturada de computador A invenção do Sistema Operacional • No início, os computadores: Eram operados e gerenciados pelo próprio programador; Executavam apenas um programa por vez (disponível apenas para um único usuário). MÓDULO I Organização estruturada de computador A invenção do Sistema Operacional (Cont) Exemplo de execução de um programa FORTRAN: 1.Colocar cartões do compilador FORTRAN na leitora + mandar executar (enter) 2. Colocar cartões do programa na leitora (1a vez) + executar 3. Colocar cartões do programa na leitora (2a vez) + executar (compilador de 2 passos) 4. Se programa não tem erro, o compilador perfurava cartões com código de máquina. Senão, corrige programa e volta ao passo 1 5. Colocar programa em linguagem de máquina + cartões da biblioteca Fortran e executar 6. Programa é executado. Se há erro de lógica, corrige e volta ao passo 1. MÓDULO I Organização estruturada de computador A invenção do Sistema Operacional (Cont) Por volta de 1960, foi criado o Sistema Operacional: • Objetivo: Facilitar a operação do computador • O SO era mantido o tempo todo no computador • Cartões de controle comandavam instruções do SO. Exemplo: MÓDULO I Organização estruturada de computador Cartões de Controle: * JOB identifica o usuário, * FORTRAN carrega o compilador e *DATA executa o programa com os dados que seguem. Programa é executado em sistema BATCH. MÓDULO I Organização estruturada de computador A invenção do Sistema Operacional (Cont) Com o tempo o SO evoluiu incorporando, além de algumas instruções do ISA, tratamento de Entrada/Saida. As instruções do SO eram conhecidas por macros do SO ou chamadas ao supervisor. Em 1960, no MIT, criou-se o SO com compartilhamento de vários usuários (por terminais ligados ao computador por linhas telefônicas) conhecidos como Sistemas de Tempo Compartilhado. MÓDULO I Organização estruturada de computador Migração das funcionalidades para o Microcódigo Em 1970, houve uma explosão, nos conjuntos de instruções das máquinas, expandindo-se o microprograma. Exemplos de novas funcionalidades, instruções para: - multiplicação e divisão de inteiros. - aritmética em ponto flutuante. - chamada e retorno de procedimentos. - acelerar a execução de loops. - manipulação de cadeias de caracteres. MÓDULO I Organização estruturada de computador Migração das funcionalidades para o Microcódigo Devido a facilidade da microprogramação, foram, ainda, incorporadas novas funcionalidades do tipo: - para acelerar o processamento de programas envolvendo cálculo matricial (indexação e endereçamento indireto) - para permitir que os programas pudessem ser deslocados de posição de memória, após o início da execução (realocação) - para tratar interrupções que enviam um sinal para o processador logo que uma operação de E/S termine. - para suspender a execução de um programa e iniciar a execução de outro (troca de contexto entre processos) MÓDULO I Organização estruturada de computador A eliminação da Microprogramação; Assim os microprogramas cresceram muito e, em consequencia, tornaram-se lentos. Voltou a idéia de ter instruções e funcionalidades executadas por hardware. CONCLUSÕES: - Fronteira entre hardware e software pode ser arbitrária. - O sotware de hoje pode ser o hardware de amanha, e vice-versa. - Fronteiras entre demais níveis não estão bem definidas e podem também ser mudadas. - Programador de um nível, em geral, não deve se preocupar com implementações de níveis inferiores. - para suspender a execução de um programa e iniciar a execução de outro (troca de contexto entre processos). MÓDULO I Organização estruturada de computador EXERCÍCIOS: 1. Explique com suas palavras o significado de cada um dos seguintes termos: - Tradutor, Interpretador e Máquina virtual. 2. Qual a diferença entre interpretação e tradução? 3. Até que ponto se pode afirmar que o hardware e o software são equivalentes? E não equivalentes?