Processador Execução de Tarefas O software consiste num conjunto de códigos ou instruções desenvolvidos para facilitar o controlo da máquina. Um programa para ser executado normalmente precisa de uma requisição ou ordem externa, uma solicitação feita pelo utilizador. Em alguns casos os programas são executados automaticamente – por exemplo, o Windows. Quando um comando é feito pelo utilizador ou pelo próprio sistema em uso, é enviada uma solicitação para o processador, que faz o processamento da informação e, por sua vez, faz também uma requisição de dados e instruções ao disco rígido, que é o local onde está armazenado o programa. Execução de Tarefas Os dados são enviados através de blocos e passam pela memória RAM antes de serem processados. A RAM, ao contrário do disco rígido, é uma memória dinâmica que permite leitura e gravação em velocidades muito superiores ao HD (disco rígido). Ela existe justamente para evitar que o processador esteja constantemente a fazer requisições ao disco rígido, o que tornaria a execução de programas algo muito lento. Dentro do processador também existem outras memórias dinâmicas, que armazenam temporariamente resultados de processamento (cálculos e operações lógicas) e fazem o controlo das informações. São as conhecidas Caches. Memória Cache A memória cache consiste numa pequena quantidade de memória embutida no processador. Quando o processador precisa ler dados da memória RAM, um circuito especial chamado "controlador de cache" transfere blocos de dados muito utilizados da RAM para a memória cache. Assim, no próximo acesso do processador, este consultará a memória cache, que é bem mais rápida, permitindo o processamento de dados de maneira mais eficiente. Desta forma, a memória cache actua como um intermediário, isto é, faz com que o processador nem sempre necessite chegar à memória RAM para aceder os dados dos quais necessita. O trabalho da memória cache é tão importante que, sem ela, o desempenho de um processador pode ser seriamente comprometido. Memória Cache Os processadores trabalham, basicamente, com dois tipos de cache: cache L1 (Level 1 - Nível 1) cache L2 (Level 2 - Nível 2). A cache L2 é ligeiramente maior em termos de capacidade e passou a ser utilizado quando a cache L1 se mostrou insuficiente. Antigamente, um tipo distinguia-se do outro pelo facto da memória cache L1 estar localizada junto ao núcleo do processador, enquanto a cache L2 ficava localizada na motherboard. Atualmente, ambos os tipos ficam localizados dentro do chip do processador, sendo que, em muitos casos, a cache L1 é dividida em duas partes: "L1 para dados" e "L1 para instruções". Barramentos Uma das características principais de um processador ou CPU são os seus barramentos. Os barramentos são “auto-estradas” por onde circula a informação, seja no interior do CPU, ou do interior para o exterior e vice-versa. Vão permitir a comunicação entre o CPU, memória e dispositivos de entrada e saída. Barramentos internos – transportam a informação entre os vários componentes internos do processador, isto é, registos, ALU,etc. Barramentos externos - Barramento de Dados - Barramento de Endereços - Barramento de Controlo Barramento de dados CPU Barramento de endereços Barramento de controlo Memória Barramentos Barramento de endereços Que têm por função transportar a identificação/localização ("endereço") dos sítios onde se pretende ler ou escrever dados (por ex., o endereço de uma célula de memória) Barramento de Dados Neste barramento, tal como o nome indica, circulam os dados que são recebidos ou enviados, de e para periféricos e memória. Quanto maior a sua "largura", maior o número de bits que é possível transportar em simultâneo. Barramentos Barramento de Controle Tem como função a sincronização do processador com os restantes componentes. Como estes são sempre mais lentos do que o processador, provocam estados de espera que necessitam ser controlados, de modo a que a comunicação processador e os componentes externos seja feita eficazmente. por ex., sinais para indicar que a informação que circula no barramento de dados é para ser escrita e não lida da célula de memória cuja localização segue no barramento de endereços. Tarefas Os fatores determinantes para o desempenho de todo este procedimento de execução de tarefas, realizado pela máquina, são: • a frequência de clock do processador, identificado por Hertz (ex.: 2.6GHz); • a frequência do barramento externo na motherboard (ex.: 400MHz); • a quantidade e frequência de memória RAM (ex.: 1GB e 533MHz); • a taxa de transferência e velocidade de rotação do disco rígido (ex.: 300MB/s e 7200RPM). • Outros fatores também podem ser considerados, como a quantidade de núcleos disponíveis no processador (ex.: Core 2 Duo, de 2 núcleos) e etc. Tarefas Um sistema Operacional não executa apenas os programa que estamos a ver no momento no computador. As aplicações que normalmente executa reúnem diversas instruções e comandos, porém, são os processos que efetivamente executam esses comandos. Uma única aplicação pode ter vários processos relacionados. Por exemplo, o Browser pode ter vários separadores. Para cada separador existe uma tarefa/processo associado. Um processo é um programa que está a ser utilizado num determinado momento, é uma tarefa em execução. Estados de um processo Durante a execução de um processo, ele altera o seu estado. Possíveis estados: Novo (new): O processo está a ser criado. A Exeutar (running):as instruções estão a ser executadas. Em Espera (waiting): O processo está à espera que algum evento aconteça. Pronto (ready): O processo está à espera de ser associado a um processador. Terminado (terminated): O processo terminou sua execução. Estados de um processo Durante a execução de um processo, ele altera o seu estado. Possíveis estados: Novo (new): O processo está a ser criado. A Exeutar (running):as instruções estão a ser executadas. Em Espera (waiting): O processo está à espera que algum evento aconteça. Pronto (ready): O processo está à espera de ser associado a um processador. Terminado (terminated): O processo terminou sua execução. O processador é o componente vital do sistema de computação, responsável pela realização das operações de processamento (os cálculos matemáticos etc.) e de controle, durante a execução de um programa. Um programa, para ser efetivamente executado pelo processador, deve ser constituído de uma série de instruções de máquina. Para que a execução tenha início, as instruções devem ser armazenadas em células sucessivas, na memória principal. 2. A influência do tamanho da palavra A capacidade de processamento de uma CPU (a velocidade com que realiza o ciclo de uma instrução) é em grande parte determinada pelas facilidades embutidas no hardware da UAL para realizar as operações matemáticas projetadas. Um dos elementos fundamentais para isso é a definição do tamanho da palavra da CPU. O valor escolhido no projeto de fabricação da CPU determinará o tamanho dos elementos ligados à área de processamento, entre estes, a UAL. Um tamanho maior ou menor de palavra (e, por conseguinte, da UAL, dos registradores de dados, do barramento interno) acarreta, sem dúvida, diferenças fundamentais de desempenho da CPU. No projeto de uma CPU, a definição do tamanho da palavra tem enorme influência no desempenho global de toda a CPU e, por conseguinte, do sistema como um todo: a) influência ou desempenho devido ao maior ou menor tempo na execução de instruções com operações matemáticas na UAL. b) influência no desempenho devido ao tamanho escolhido para o barramento interno e externo da CPU. Se a largura do barramento for, p.ex., igual a 16 bits em um sistema com palavra de 32 bits (UAL e registradores de 32 bits), então o movimento de 4 bytes de um dado tipo caractere requererá dois ciclos de tempo do barramento, ao passo que em barramento de 32 bits requereria apenas um ciclo de tempo; – c) influência também na implementação física do acesso à memória, porque o movimento de dados entre CPU e memória é normalmente medido em palavras (o barramento de dados que une o RDM à memória deve acompanhar em largura o valor da palavra). Para uma CPU de 32 bits de palavra, por exemplo, é desejável que a memória seja organizada de modo que sejam acessadas 4 células contíguas (4 bytes = 32 bits) em um único ciclo de memória. Se isto não ocorrer, a CPU deverá ficar em estado de espera ("wait state"). Processador com 16 bits manipula número de valor até 65.535 Operação com um número de 100.000, terá que fazer a operação em duas partes 32 bits, ele pode manipular números de valor até 4.294.967.295 Intel Core 2 Extreme Quad-Core Fabricação Cilindro formado por silício (ingot). – Cilindro é "fatiado. – Cada fatia é chamada Wafer (bolacha). Fabricação Engenheiro segurando um wafer Fabricação Clock Feita em hertz (Hz), que indica o número de oscilações ou ciclos que ocorre dentro de uma determinada medida de tempo, no caso, segundos processador trabalha à 800 Hz>800 operações de ciclos de clock por segundo megahertz (MHz) é usado para indicar 1000 KHz (ou 1 milhão de hertz) freqüência de 800 MHz>800 milhões de ciclos por segundo. Funções da CPU • A CPU é projetada e fabricada com o propósito único de executar sucessivamente pequenas operações matemáticas (ou outras manipulações simples com dados), na ordem e na sequência definidas pela organização do programa. • • As atividades realizadas pela CPU podem ser divididas em duas • grandes categorias funcionais: Função processamento; Função controle. Função de processamento • • A função processamento se encarrega de realizar as atividades relacionadas com a efetiva execução de uma operação, ou seja, • processar. • Processar o dado é executar com ele uma ação que produza algum tipo de resultado. • Tarefas comuns a esta função são as que realizam: • – Operações aritméticas (somar, subtrair, multiplicar, dividir); – Operações lógicas (and, or, xor, etc); – Movimentação de dados (memória - CPU, CPU - memória, registrador - registrador etc); – Desvios (alteração de sequência de execução de instruções); – Operações de entrada ou saída. – • Fazem parte dessa área funcional os seguintes dispositivos: • – Unidade Aritmética e Lógica (UAL); – Acumulador (ACC); – Registradores. UAL Barramento de dados MP UCP ACC Reg Barramento de endereços Unidade Aritmética e Lógica – UAL (ou ULA) A UAL é o dispositivo da CPU que executa realmente as operações matemáticas com os dados. Tais operações podem ser: – – – – – soma, multiplicação, subtração e divisão; op lógica AND, OR e XOR; deslocamentos à direita e à esquerda; incremento e decremento; op complemento. Qualquer UAL é um aglomerado de circuitos lógicos e componentes eletrônicos simples que, integrados, realizam as operações já mencionadas. Essas operações são sempre realizadas sobre duas palavras da máquina. Em geral, esse circuito que trabalha com palavras de n bits é construído a partir de n circuitos idênticos, cada qual responsável por uma posição individual de bits. A seqüência a seguir, mostra a construção de uma ULA que pode calcular uma de quatro funções a saber: A and B; A or B; B; A + B. Os processadores mais modernos utilizam em sua arquitetura mais de uma UAL, de modo a tornar a execução das instruções mais rápida. CACHE para instruções BTB Barramento Externo ULA 1 ULA 2 FPU BIU Barramento Interno Registradores CACHE para dados BIU = Interface do barramento Cache para instruções e dados = 8 KB ULA 1 e 2 = nº inteiros FPU = nº fracionários Registradores Para que um dado possa ser transferido para a UAL, é necessário que ele permaneça, mesmo que por um breve instante, armazenado em um registrador (a memória da CPU). O resultado de uma operação aritmética ou lógica realizada na UAL é armazenado temporariamente, para que possa ser reutilizado (por outra instrução) ou apenas para ser transferido para a memória. Para atender a estes propósitos, a CPU é fabricada com uma certa quantidade de registradores, destinados ao armazenamento de dados. O número de registradores e suas funções varia de processador para processador e é um dos maiores problemas no projeto de uma CPU. Há sistemas nos quais um desses registradores, denominado acumulador (abrevia-se, em inglês, ACC), além de armazenar dados, serve de elemento de ligação da ULA com os outros dispositivos da CPU. Os registradores da CPU são divididos em 2 tipos: Registradores visíveis para o usuário – Permite ao usuário minimizar referências à memória através do uso deles. Registradores de controle e de estado – Utilizados pela UC para controlar operações da CPU e programas privilegiados do sistema operacional para controlar a execução de programas. Registradores visíveis para o usuário Categorias: a. Registradores de propósito geral b. Registradores de dados c. Registradores de endereço (segmento, apontador de pilha e de índice) d. Registradores de código de condição (flags) Registradores de Controle e de Estado Categorias: a. Contador de Programa – Contém o endereço da instrução a ser buscada. b. Registrador de Instrução – Contém a última instrução a ser buscada. c. Registradores de endereçamento à memória – Contém o endereço de uma posição da memória. d. Registradores de armazenamento temporário de dados. – Contém uma palavra de dados a ser escrita na memória ou a palavra lida mais recentemente. Função de controle: Atividades: • • Busca da instrução a ser executada, armazenando-a em um registrador especialmente projetado para esta finalidade; • • Interpretação das ações a serem desencadeadas com a execução da instrução (se é soma, subtração, etc e como realizá-la); • • Geração de sinais de controle apropriados para ativação das atividades requeridas para a execução propriamente dita da instrução identificada. Estes sinais são enviados tanto para componentes internos (ULA, por ex.) quanto externos (MEM, E/S). • Em resumo, a área de controle é projetada para entender o que fazer, como fazer e comandar quem vai fazer, no momento adequado. • • Os dispositivos básicos que devem fazer parte dessa área funcional são: • Unidade de controle (UC); Decodificador; Registrador de instrução (RI) ou IR - "instruction register"; Contador de instrução (CI) ou PC "program counter"; Relógio ou "clock"; Registradores de endereço de memória (REM) e de dados da memória (RDM). Barramento de dados UCP MP RDM ACC UAL Reg CI REM Barramento de endereços RI Relógio UC Decodificador de instruções Barramento de controle Pulsos do relógio RI DECODIFICADOR t0 Gerador de tempo UC tN Código da operação * Sinais de controle para o barramento de sistema Barramento de Controle Sinais de controle para dispositivos internos da CPU - Sinais de controle vindos do barramento do sistema Registrador de Instrução - RI É o registrador que tem a função específica de armazenar a instrução a ser executada pela CPU. Ao se iniciar um ciclo de instrução, a UC emite o sinal de controle que acarretará a realização de um ciclo de leitura para buscar a instrução na memória, e que, via barramento de dados e RDM, será armazenada no RI. Contador de Instrução – CI É o registrador cuja função específica é armazenar o endereço da próxima instrução a ser executada. Tão logo a instrução que vai ser executada seja buscada (lida) da memória para a UCP (início do ciclo de instrução), o sistema providencia a modificação do conteúdo do CI de modo que ele passe a armazenar o endereço da próxima instrução na seqüência. Por isso, é comum definir a função do CI como sendo a de "armazenar o endereço da próxima instrução", que é o que realmente ele faz durante a maior parte da realização de um ciclo de instrução. Unidade de Controle É o dispositivo mais complexo da CPU. Possui a lógica necessária para realizar a movimentação de dados e instruções de e para a CPU, através dos sinais de controle que emite em instantes de tempo programados. Exemplo: busca de 1 instrução: T0 : REM (CI) T1 : CI CI + N RDM M(op) T2 : RI RDM M = Célula M(op) = Conteúdo da célula As operações menores são conhecidas como microoperações Instruções de máquina Uma instrução de máquina é a especificação de uma operação básica (ou primitiva) que o hardware é capaz de realizar diretamente. O conjunto de instruções fornece os requisitos funcionais para a CPU. Quando se escreve "conjunto de instruções", estamos nos referindo a todas as possíveis instruções que podem ser interpretadas e executadas por um processador. Tipos de instruções: Operações matemáticas (aritméticas, lógicas, de deslocamento); Movimentação de dados (memória - UCP e vice-versa); Entrada e saída (leitura e escrita em dispositivo de E/S); Controle (desvio da sequência de execução, parar etc.). complemento, de Observação: Quando se escreve "conjunto de instruções", estamos nos referindo a todas as possíveis instruções que podem ser interpretadas e executadas por um processador. Formato das instruções: C.Op. Don’t care C.Op. Operando 1 C.Op. Operando 1 Operando 2 De modo geral, podemos separar o grupo de bits que constitui a instrução em dois campos: – Um campo (um subgrupo de bits) chama-se código de operação; – – O restante grupo de bits (se houver) denomina-se campo do(s) operando(s) ou, simplesmente, operando(s). 5. Funcionamento da UCP Ciclo de Instrução: Início Buscar a próxima instrução Início Buscar a próxima instrução Incrementar o CI Início Ciclo de busca Buscar a próxima instrução Incrementar o CI Início Ciclo de busca Buscar a próxima instrução Incrementar o CI Decodificação do C. Op. Início Ciclo de busca Buscar a próxima instrução Incrementar o CI Decodificação do C. Op. Tem operando? Início Ciclo de busca Buscar a próxima instrução Incrementar o CI Cálculo de endereço do operando Decodificação do C. Op. sim Tem operando? Buscar e armazenar operando Início Ciclo de busca Buscar a próxima instrução Incrementar o CI Cálculo de endereço do operando Decodificação do C. Op. sim Tem operando? não Executar a operação Buscar e armazenar operando Início Ciclo de busca Buscar a próxima instrução Incrementar o CI Cálculo de endereço do operando Decodificação do C. Op. Ciclo de execução sim Tem operando? não Executar a operação Buscar e armazenar operando Início Ciclo de busca Buscar a próxima instrução Incrementar o CI Cálculo de endereço da instrução Ciclo de execução Cálculo de endereço do operando Decodificação do C. Op. sim Tem operando? não Executar a operação Buscar e armazenar operando Ciclo de Instrução: Buscar a próxima instrução: – RI Incrementar o CI: – (CI) (CI) (CI) + 1 Decodificação do C.Op.: – o decodificador recebe os bits do C.Op. e gera uma saída para a UC. Buscar Op se houver: – RDM (Op) Executar a instrução