A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Fundamentos de arquitetura de computadores

Apresentações semelhantes


Apresentação em tema: "Fundamentos de arquitetura de computadores"— Transcrição da apresentação:

1 Fundamentos de arquitetura de computadores
Prof. Adilson Oliveira Cruz

2 conceitos Hardware (HW): Exemplos:
Hardware é o nome dado ao conjunto de dispositivos (componentes físicos) que formam o computador, isto é, a máquina propriamente dita. Exemplos:

3 conceitos Software (SW): Exemplos:
Software é o nome dado aos programas de um computador, ou seja, o conjunto de instruções, expresso em linguagens especiais e compreensíveis para a máquina, para que ela possa executar as operações que desejamos. Exemplos:

4 conceitos Em outras palavras:
Hardware é tudo aquilo que se chuta quando se tem um problema com o computador!

5 conceitos Em outras palavras:
E, software é tudo aquilo que se xinga quando se tem um problema com o computador!

6 conceitos Arquitetura de Computadores:
Refere-se aos atributos de um sistema que são visíveis para o programador ou, em outras palavras, que têm impacto direto sobre a execução lógica de um programa (Stalling, 2002) Exemplos: O conjunto de instruções O número de bits usados para representar os vários tipos de dados Os mecanismos de E/S Técnicas de endereçamento de memória

7

8 conceitos Organização de Computadores:
Refere-se às unidades operacionais e suas interconexões que implementam as especificações da sua arquitetura (Stalling, 2002) Exemplos: Detalhes do hardware transparente ao programador Sinais de controle As interfaces entre o computador e os periféricos Tecnologia de memória utilizada

9

10 Questões Definir se um computador deve ou não ter uma instrução de multiplicação é uma decisão de projeto de sua arquitetura ou de sua organização? Decisão de arquitetura, pois uma operação de multiplicação faz parte do conjunto de instruções da máquina. E quanto a definir se essa instrução será implementada por uma unidade especial de multiplicação ou por um mecanismo que utiliza repetidamente uma unidade de soma. Constitui uma decisão de projeto de sua arquitetura ou de sua organização? Decisão de organização, pois visa definir que unidade operacional implementará essa instrução.

11 Princípios básicos Cada computador possui um conjunto de instruções.
Cada instrução é composta de uma operação e de dados que serão usados nesta operação. Cada instrução é única, apesar de existirem instruções similares. Em geral, cada instrução tem a forma OPERAÇÃO OPERANDOS OPERAÇÃO: especifica a função a ser desempenhada. OPERANDOS: determina dos dados com os quais a operação será realizada

12 Princípios básicos Exemplos de instruções:
mov eax, ;numero de chamada do sistema = sys_write mov ebx, ;file descriptor = stdout mov ecx,msg ;mensagem a ser impressa (enter) mov edx,1 int 0x ;chamada ao kernel Linux add eax,ebx ;EAX = EAX + EBX cmp al,'+' ;compara o argumento com as operacoes. je near adicao ;Se for alguma delas, pula para a cmp al,'-' ;respectiva operacao. q je near subtracao ;Se nao for, continua a execucao

13 Princípios básicos Programa:
Seqüência lógica de instruções a ser seguida para que seja atingido algum objetivo computacional Tanto o programa quanto os dados correspondentes ficam armazenados na memória da máquina. Todo programa para ser executado deve estar na memória. O conjunto de instruções deve ser interpretado para a realização do processamento, ou seja, as operações e operandos devem ser entendidos e processados.

14 Princípios básicos O conjunto de instruções básicas entendidas pelo computador é chamado de Linguagem de Máquina. Em geral, estas instruções são: Tão simples quanto é possível Compatíveis com o uso que se pretende dar ao computador Compatíveis com a performance que se deseja atingir O objetivo é: Reduzir o custo e a complexidade da eletrônica necessária a sua implementação.

15 Componentes funcionais básicos
A arquitetura básica dos computadores de hoje foi proposta pelo húngaro naturalizado americano John von Neumann. Sua arquitetura foi chamada de: Modelo de Von Neumann Trabalhou na construção do: ENIAC e seu sucessor, o EDVAC Primeiros computadores eletrônicos binários

16 Componentes funcionais básicos
Durante a construção do EDVAC Publicou o artigo “First Draft of a Report on the EDVAC” Nesse artigo, ele propôs um computador composto por uma estrutura simples mas fixa com um controle programado, que seria capaz de executar qualquer comando sem haver necessidade de se alterar o hardware. Técnica do programa-armazenado O relatório sobre o EDVAC se tornou um dos primeiros documentos a descrever a disposição interna e os princípios de funcionamento dos computadores modernos

17 Componentes funcionais básicos
Sugeriu: Guardar os programas na mesma unidade de memória dos dados Unidade Central de Processamento (CPU), composta de unidade de controle e uma ou mais unidades de execução (ALU’s) Extrair qualquer dado ou instrução da memória, realizar a operação e devolver para memória.

18 Componentes funcionais básicos
Arquitetura de von Neumann:

19 Componentes funcionais básicos
Apesar da evolução de cada componente físico e das interações entre os componentes essa arquitetura se manteve e é utilizada em quase todos os computadores de uso doméstico e de trabalho

20 Componentes funcionais básicos
O modelo de von Neumann e consiste em: Memória principal Que armazena dados e instruções. Unidade lógica e aritmética (ULA) Capaz de realizar operações com dados binários. Unidade de controle Interpretar e executar instruções armazenadas na memória. Dispositivos de entrada e saída (E/S) Operados pela unidade de controle. Fornecem dados para o processamento e recebem dados do processamento.

21 Componente - memória A memória de um computador tem a função de armazenar dados e instruções. É organizada em células ou posições, que podem ser visualizadas como uma matriz unidimensional. Cada uma das células pode conter um valor numérico e é capaz de ser endereçada Pode ser identificada unicamente em relação às outras células pelo uso de um endereço. Cada célula é denominada palavra (word) e tem um determinado tamanho, chamado tamanho da palavra. Normalmente o tamanho é de 1 byte (ou 8 bits). A palavra é a menor unidade endereçável da memória

22 Componente - memória Memória RAM: Memória ROM:
Sigla de Random Access Memory (Memória de Acesso Aleatório). Desvantagem: é volátil Perde-se a informação que armazenada quando a energia elétrica for interrompida. Memória ROM: Sigla de Read Only Memory (Memória de Somente Leitura) A informação não é perdida quando o sistema é desligado. O BIOS fica armazenada em uma memória ROM

23 Componente - memória

24 Componente - memória Funcionamento da memória

25 Componente - memória Associado a memória possuímos dois registradores:
REM (registrador de endereço da memória): contém o endereço do dado a ser lido ou escrito na memória. RDM (registrador de dados da memória): contém o dado a ser escrito na memória ou o dado lido da memória. A memória trabalha com dois sinais de controle: Read: o conteúdo da posição indicada por REM é copiada para RDM Write: a posição apontada por REM recebe o conteúdo de RDM

26 Componente - memória Parâmetros que caracterizam a memória:
A nível de Arquitetura: Tamanho da palavra em bits Tamanho máximo da memória em palavras. A nível de organização: Tamanho Velocidade (333 MHz, 1000 MHz) Tecnologia (DDR, SDR)

27 Componente - memória O tamanho do endereço de memória depende do número de endereços disponíveis. Exemplo: Para endereçar 1024 células de 1 byte cada, precisamos de 10 bits, porque 210 = 1024. Questões: Com uma palavra de 1 byte e um endereçamento de 32 bits, conseguimos gerenciar uma memória de que tamanho? Resp: bytes ≈ 4 GB

28 Componente - cpu A Unidade Central de Processamento de dados (CPU) é o componente responsável: Pela leitura e escrita do conteúdo das células de memória Regular o tráfego de dados entre as células de memória e registradores especiais Decodificar e executar as instruções de um programa A CPU é composta pela Unidade Lógica e Aritmética e a Unidade de Controle.

29 Componente – Unidade Lógica e Aritmética
A Unidade Lógica e Aritmética (ULA) realiza operações aritméticas e operações lógicas sobre um ou mais operandos. Exemplo: soma de dois operandos, negação de um operando, “e lógico” entre dois operandos. As operações da ULA são, geralmente, muito simples. Funções mais complexas podem ser realizadas pela ativação seqüencial de várias operações básicas. Exemplo: execução de multiplicação como uma seqüência de somas e deslocamentos.

30 Componente – Unidade Lógica e Aritmética
Modelo estrutural da ULA:

31 Componente – Unidade Lógica e Aritmética
Funcionamento da ULA: A ULA recebe os dados (operandos) e o sinal de controle que indica a operação a ser realizada Após realizar a operação, ela fornece o resultado da operação e os códigos de condição.

32 Componente – Unidade Lógica e Aritmética
Alguns códigos de condição retornados pela ULA: Overflow: Indica que o resultado é maior que a capacidade de representação disponível; Sinal: Indica se o resultado é positivo ou negativo; Carry: representa o bit de vai um ou vem um. Zero: indica se o resultado da operação é nulo Uma ULA se caracteriza por: Tamanho dos operandos em bits; Número e tipo de operações; Códigos de condição gerados.

33 Componente – Unidade de controle
É o dispositivo mais complexo da CPU. Responsável por gerenciar a movimentação de dados e de instruções de/para a CPU, através de sinais de controle que são emitidos em instantes de tempo programados. Cada sinal de controle comanda uma micro-operação. Exemplo: Seleção de uma operação da ULA (aquele sinal de entrada da ULA), realização de carga de um registrador...

34 Componente – registradores especiais
Apontador de Instruções (PC): registrador que tem por função manter o endereço de memória da próxima instrução a ser executada. Também chamado de Contador do Programa (PC). Fica na Unidade de Controle. Registrador de Instruções (IR): armazena a instrução que está sendo executada. Em função do conteúdo deste registrador, a Unidade de Controle determina quais sinais de controle devem ser gerados. Registrador de Estado (RST): armazena códigos de condição gerados pela ULA. Em função do conteúdo deste, a Unidade de Controle decide por gerar ou não certos sinais de controle. Logo, é interface entre ULA e a Unidade de Controle.

35 Componente – dispositivos de e/s
Interfaces de comunicação entre a CPU e o exterior da máquina Permitem a entrada (para processamento) e a saída (para visualização) de informação entre o dispositivo e a memória. Algumas das mais comuns unidades de entrada são o teclado e o mouse. As mais comuns unidades de saída são a tela do monitor e a impressora.

36 Componente – barramento
Os diversos componentes do computador encontram-se interligados através do barramento, que atua como caminho para o tráfego de dados dentro do computador.

37 Componente – barramento

38 instrução O que diferencia os computadores das outras máquinas?
A principal característica dos computadores modernos, e que o distingue de outras máquinas, é que pode ser programado. Isto significa que uma lista de instruções pode ser armazenada na memória e executa posteriormente

39 instrução As instruções executadas na ULA são limitadas e bem definidas . Exemplos: “Copie o conteúdo da posição de memória 123 para a posição de memória 456“ “Adicione o conteúdo da posição de memória 510 ao conteúdo da posição 511 e coloque o resultado na posição 507” “Se o conteúdo da posição 012 é igual a 0, a próxima instrução está na posição 678"

40 instrução Todas as instruções são representadas como números . Por exemplo, a instrução “add” (adicione) é representada pelo número O conjunto particular de instruções que um computador possui é conhecido como a linguagem de máquina do computador. Exemplo: add eax, ebx = sub eax, 10 = call func =

41 Linguagem do computador
A única linguagem que o computador “entende” é a linguagem de máquina, que é representada por 0’s e 1’s. Pelo fato das linguagens de máquina serem muito distantes da linguagem natural, torna-se difícil para o ser humano comunicar sua vontade ao computador. Na prática, as pessoas não escrevem instruções diretamente na linguagem de máquina mas em uma linguagem de programação, com um nível de abstração mais alto Algumas linguagens de programação se aproximam bastante da linguagem de máquina, como o assembly (linguagem de baixo nível)

42 programas Que programas são esses?
Compiladores (compilers) Interpretadores (interpreters) Montadores (assemblers) Além desses existem outros que auxiliam o computador a executar os programas Ligadores (linkers) Carregadores (loaders)

43 Montador, ligador e carregador
O que é um montador? Os montadores, ou “assemblers”, montam um programa em linguagem de máquina a partir de sua versão em linguagem de montagem, ou linguagem “assembly”. Montador Transformam cada parte dos comandos em linguagem assembly (opcode, número do registrador, números, etc.) em 0’s e 1’s Escrevem o programa em linguagem de máquina em um arquivo com as instruções ordenadas e com os endereços indicados por elas, especificados como labels, já convertidos para números

44 Montador, ligador e carregador
O que eles fazem? Acham um endereço inicial para o programa Determinam o comprimento de cada instrução Precisam conhecer quantos operandos são requeridos para cada instrução Substituem todas as instruções e operandos pelos equivalentes binários Determinam as posições de memória, relativas ao programa, para os endereços simbólicos, e substituir tais endereços simbólicos pelos endereços binários Marcar todas as referências simbólicas não resolvidas Marcar os endereços simbólicos externamente referenciáveis

45 Montador, ligador e carregador
Um programa pode ser dividido em vários segmentos. Quando há referências simbólicas cruzadas entre os segmentos, não é papel do montador resolver estas referências, mas ele precisa detectá-las e marcá-las. O arquivo gerado pelo montador é chamado de arquivo objeto, e em geral pode ser executado diretamente pelo computador.

46 Montador, ligador e carregador
Ligadores. O que é um ligador? Ligadores ou “linkers” são programas especiais que recebem como entrada os arquivos objeto e geram como saída o programa final em linguagem de máquina Um ligador realiza quatro tarefas básicas: Determina as posições de memória para os trechos de código de cada módulo que compõe o programa sendo “linkado”. Resolve as referências entre os arquivos.

47 Montador, ligador e carregador
Um ligador realiza quatro tarefas básicas: (cont.) Procura nas bibliotecas (libraries), indicadas pelo programador, as rotinas usadas nos fontes de cada segmento. Indica ao programador quais são os endereços simbólicos que não foram resolvidos (não tenham correspondente em nenhum segmento ou bibliotecas indicadas). Programas que tenham sidos linkados sem erros estão prontos para serem executados!

48 Montador, ligador e carregador
O que é um Carregador (ou Loader)? É um programa que faz parte do Sistema Operacional usado para carregar os arquivos objeto para a memória. Para iniciar o execução de um programa, o carregador realiza as seguintes operações: Determina o tamanho de todas as partes de um programa e aloca memória para todas elas Copia as instruções e os dados para o trecho de memória separado Inicializa os registradores do processador para valores apropriados Salta para a primeira instrução do programa usando a instrução da máquina utilizada para chamada de procedimento (start)

49 Montador, ligador e carregador

50 programação A programação em linguagem assembly é uma tarefa difícil e pouco produtiva Exemplo: X = 5 – 2 * 4 / 6; mov eax, 5 mov ebx, 2 sub eax, ebx mov ebx, 4 mul eax, ebx, ... Assim, foram criadas linguagens de um nível de abstração mais alto.

51 programação

52 programação Junto com essas linguagens foram desenvolvidos processos para transformar os códigos destas linguagens de alto nível em códigos de máquina. Esses processos são chamados de: Compilação Interpretação

53 compilador O que é um Compilador?
Compiladores são programas que recebem como entrada arquivos texto contendo módulos escritos em linguagem de alto nível e geram como saída arquivos objeto correspondentes a cada módulo, ou, se todas as bibliotecas e módulos são apresentados como entrada, geram um programa executável diretamente.

54 compilação Criamos um programa feito com a linguagem de alto nível L1.
Executamos um programa que transforma todas as instruções escritas em L1, nas instruções equivalentes em uma linguagem de baixo nível L0 (linguagem de máquina). O processador então executa o programa feito totalmente em linguagem L0. Essa técnica é conhecida como compilação. A esse programa que transforma um programa escrito na linguagem L1 para a linguagem L0, chamamos de compilador.

55 compilação Assim, na compilação, o programa é todo traduzido de uma linguagem de mais alto nível para linguagem de máquina de uma só vez e é armazenado em linguagem de máquina para futuras execuções. São exemplos de linguagens de programação compiladas a linguagem C, C++, Delphi, Pascal...

56 interpretador O que é um Interpretador?
Programas interpretadores recebem como entrada arquivos texto contendo programas em linguagem assembly ou linguagem de alto nível. Percorrem os programas, a partir de seu ponto de entrada, executando cada comando

57 interpretação Criamos um programa feito com a linguagem de alto nível L1. Executamos um programa que transforma todas as instruções escritas em L1, nas instruções equivalentes em uma linguagem de baixo nível L0 (linguagem de máquina) e envia essas instruções para a execução. Essa técnica é conhecida como interpretação. A esse programa que transforma um programa escrito na linguagem L1 para a linguagem L0, chamamos de interpretador.

58 interpretação Em linguagens interpretadas, o programa vai sendo traduzido e à medida em que vai sendo executado. Traduzido linha a linha. Não existe um arquivo executável Dentre as linguagens interpretadas podemos destacar Python, Pearl, JavaScript, Prolog, ... Linguagens interpretadas também são chamadas de linguagens de script.

59 questões Qual é a principal diferença entre o trabalho realizado por um montador e por um compilador? Tipicamente, o que seria mais rápido: a execução de um programa compilado ou a de um programa interpretado? Por que? E se pensarmos em termos de portabilidade? O que seria melhor, a interpretação ou a compilação? A linguagem Java é compilada ou interpretada?

60 Máquinas virtuais Uma máquina virtual é um programa que emula uma máquina e tem seu conjunto de instrução. A máquina virtual é executada sobre uma máquina real. Assim, o código escrito em uma linguagem L2 é compilado para a linguagem L1 entendido pela máquina virtual. A máquina virtual, por sua vez, interpreta linha a linha o código em L1 o transformando na linguagem da máquina real.

61 Máquinas virtuais Princípios básicos:
Para aumentar a performance, as máquinas virtuais ao invés de interpretar linha a linha o código de L1 para L0 podem “compilar” blocos de uma só vez, de acordo com as necessidades. Essa técnica é chamada JIT(Just in time). A linguagem Java é o maior exemplo de linguagem que utiliza-se de máquinas virtuais (JVM). Atualmente as JVM utilizam-se da técnica JIT.

62 Bibliografia WEBER, R. F. Fundamentos da Arquitetura de Computadores. 3ª. ed. Porto Alegre: Editora Sagra Luzzatto, 2004. STALLINGS, W. Arquitetura e Organização de Computadores. 5a. ed. São Paulo: Prentice Hall, 2002.


Carregar ppt "Fundamentos de arquitetura de computadores"

Apresentações semelhantes


Anúncios Google