Tema 4-Organização Dos Sistemas de Computadores
Tema 4-Organização Dos Sistemas de Computadores
Tema 4-Organização Dos Sistemas de Computadores
Objectivos :
Actividades : Docente:
a) Codifcasse instruções que pudessem ser armazenadas na memória e sugeriu que se usassem
cadeias de uns e zeros (binário) para codifcá-lo;
Software e Hardware
O computador é composto por dois elementos, o software e o hardware. Tanto o hardware quando
o software foram escritos por um programador, ou engenheiro, para se resolver um determinado
problema. O início é sempre o mesmo. O profissional se depara com um problema e projecta uma
solução algorítmica para ele. A diferença está na concepção. O hardware é concebido em chip,
utilizando transistores interconectados. Uma vez elaborado, o hardware não pode mais ser
modificado. Ele é uma solução rígida (do inglês, Hard) para o problema. Já o software é elaborado
para ser armazenado numa memória e ser executado com um processador de propósito geral. Ele
é uma solução flexível (do inglês, Soft) para o problema, já que o programador pode, a cada
momento, modificar seu programa afim de torná-lo cada vez melhor.
Soluções em software são sempre mais lentas do que soluções equivalentes em hardware. Isso
porque para executar um programa, cada instrução deve antes ser armazenada em memória,
transferidas para a CPU (lembre-se que memórias são muito mais lentas do que CPUs) e, só então,
ser executada pela CPU. Já as soluções em hardware não utilizam instruções, elas executam as
operações diretamente.
Por outro lado, as soluções em software ganham em flexibilidade, já que os programas podem ser
facilmente modificados. Já as soluções em hardware, não. Uma vez concebido, um hardware não
pode mais ser modificado, ele deve ser descartado para dar lugar a uma versão mais nova. Isso
torna projectos em hardware muito mais caros.
Para entender melhor, pode-se citar alguns exemplos de implementações em hardware comumente
utilizadas. Todas são escolhidas devido ao seu carácter de pouca necessidade de modificação, mas
demandam alto desempenho. Por exemplo, chips de criptografia para celulares (geralmente
smartphones), processadores aritméticos para acelerar o cálculos, aceleradores gráficos para gerar
Apesar de não ser tão rápida quanto deveria, a CPU é uma solução muito boa por permitir a
execução de, praticamente, qualquer tipo de programa, se tornando uma máquina de propósito
geral.
Todo o computador é formado por cinco elementos essenciais ou unidades: a unidade aritmética-
lógica (UAL / ULA), a unidade de memória, a unidade de controle, a unidade de entrada e a
unidade de saída. A interconexão entre tais unidades está mostrada na figura abaixo. As setas no
diagrama indicam a direção do fluxo de dados, instruções e sinais de controle.
Observemos que as linhas grossas indicam o tráfego de dados e instruções, informação que em
geral necessitam de um número grande de linhas para serem transmitidas. Já as linhas tracejadas
representam os sinais de controle, normalmente em número reduzido, de maneira que são
necessárias poucas linhas para representá-los.
É a parte do computador onde são realizadas as operações aritméticas e lógicas com os dados. O
tipo de operação a ser realizada num particular instante de tempo é determinado por sinais vindos
da unidade de controle (seta 1). Os dados a serem operados pela unidade aritmética-lógica poderão
vir não só da memória (seta 2) como da unidade de entrada (seta 3). Os resultados das operações
efetuadas na unidade aritmética-lógica podem ser transferidos para a memória (seta 4) ou para a
unidade de saída (seta 5).
Unidade de Memória
A memória armazena grupos de dígitos binários (palavras) que podem representar instruções a
serem executadas pelo processador ou dados para serem operados pelas instruções durante a
execução de um programa.
Ela também serve como local de armazenamento para resultados intermediários ou finais obtidos
pelas operações aritméticas efectuadas pela unidade lógica-aritmética (seta 4). A memória é uma
unidade que executa somente duas operações: leitura e escrita. O funcionamento da memória
também é controlado pela unidade de controle, a qual indica, através de sinais de controle (seta 6),
qual das duas operações a memória deve realizar naquele instante. Um determinado endereço pode
ser acessado pela unidade de controle, que gera o endereço desejado e o entrega à memória (seta
7). As informações podem ser escritas na memória vindas da ULA ou da unidade de entrada (seta
8), mais uma vez sob o comando da unidade de controle. As informações podem ser lidas da
memória para a ULA (seta 2) ou directamente para a unidade de saída (seta 9).
Cada registrador tem um endereço, chamado de localização na memória, estas são organizadas
linearmente em ordem consecutiva. O número único que identifica cada palavra é chamado de
endereço.
O espaço de endereçamento pode ser dividido em regiões distintas usadas pelo sistema
operacional, dispositivos de E/S, programas de usuário e pilha do sistema operacional.
É importante manter clara a distinção entre o que é endereço e o que é dado. Uma palavra na
memória, pode ter distintas representações dependendo do seu uso. Ela pode armazenar uma
instrução contendo a operação e os operandos (dados de entrada) para a realização de uma
específica operação, mas também pode armazenar o endereço de uma outra região de memória.
Logo, o endereço é um apontador para uma posição de memória que contém dados, e estes são
informações significativas para a realização de alguma actividade no computador, ou a
representação de alguma informação.
Unidade de Entrada
A unidade de entrada é constituída por tipos de dispositivos que obtêm informações externas ao
computador e as coloca na unidade de memória (seta 8) ou na ULA (seta 3). A unidade de controle
determina onde a informação de entrada deve ser colocada (seta 10). A unidade de entrada é usada
no armazenamento de instruções e dados na memória para que o programa constituído por essas
instruções e dados possa ser executado. Essa unidade também é usada para entrar com dados na
ULA, a partir de um dispositivo externo, durante a execução de um programa. Alguns dos
dispositivos de entrada mais comuns são: teclados, discos magnéticos, fitas e conversores
analógico-digitais (ADC´s).
Unidade de Saída
A unidade de saída é formada por todos os tipos de dispositivos usados para transferir informações
do computador para o “mundo exterior”. Os dispositivos de saída também são dirigidos pela
unidade de controle (seta 12), podendo receber dados da ULA (seta 5) ou da memória (seta 9),
colocando-os no formato apropriado para o consumo externo ao computador. Exemplos de
dispositivos de saída são: displays, impressoras, discos magnéticos, fitas magnéticas, monitores de
vídeo e conversores digital-analógicos (DAC´s).
Interface
O aspecto mais importante das unidades de ENTRADA e SAÍDA diz respeito ao interfaceamento,
que pode ser definido como o acto de combinar dispositivos muito diferentes, para que eles possam
funcionar de maneira compatível e coordenada. Podemos também definir o interfaceamento de
maneira mais específica, como sendo a sincronização da transmissão da informação digital entre
o computador e os dispositivos externos de entrada e saída.
Muitos dispositivos da entrada/saída não são directamente compatíveis com o computador por
diferenças de velocidade de operação, formato dos dados (hexa, ASCII, binário), modos de
transmissão (serial, paralelo) e níveis dos sinais lógicos. Tais dispositivos precisam de circuitos
especiais de interface que permitam que eles se comuniquem com as outras unidades do
computador ao qual elas vão se ligar.
Um bom exemplo sobre interfaceamento é o caso do terminal de vídeo, que pode operar como
dispositivo de entrada e de saída. Este terminal transmite e recebe dados serialmente, um bit de
cada vez, enquanto a maioria dos computadores manipula dados em paralelo. Assim, o terminal
de vídeo precisa de um circuito de interface que faça as modificações necessárias dos dados
transmitidos/recebidos, de maneira a permitir que a comunicação terminal-computador e
computador-terminal seja feita sem problemas.
Unidade de Controle
A função da unidade de controle, como o nome indica, controla (dirige) a operação de todas as
demais unidades componentes do computador, fornecendo-lhes sinais de temporização e de
controle. Vista por outro ângulo, a função da unidade de controle assemelha-se à de um maestro,
que tem a responsabilidade de manter todos os membros de uma orquestra em perfeito
A unidade de controle busca uma instrução da memória, enviando seu endereço (seta 7) e um
comando de leitura (seta 6) à unidade de memória. A instrução armazenada no endereço enviado
é depois transferida para a unidade de controle (seta 11). Essa instrução, que está codificada em
binário, é então decodificada pelos circuitos da unidade de controle para determinar qual a
instrução. Logo após, essa mesma unidade usa a informação contida na instrução para gerar os
sinais de controle necessários à execução da instrução em questão.
Dessa forma, a Unidade Funcional de Controle é responsável pela realização das seguintes
actividades (MONTEIRO, 2007):
b) Interpretação das instruções a fm de saber quais operações deverão ser executadas pela ULA
(ex.: soma, subtração, comparação) e como realizá-las;
A UCP é composta por várias partes distintas, entre elas: registradores, Unidade de Controle (UC)
e Unidade Lógica Aritmética (ULA).
A Unidade Central de Processamento é composta por duas partes principais: a unidade lógica e
aritmética(ULA), formada por circuitos que manipulam os dados através de operações binárias
(dois operandos) e unárias (um operando). Exemplos incluem a soma e operadores
lógicos: and, or e not. E a unidade de controle, cujos circuitos são responsáveis por coordenar as
operações da UCP.
Para o armazenamento e a comunicação entre estas duas unidades a UCP contém circuitos de
armazenamento chamados de registradores, que se assemelham às células de armazenamento da
memória principal. Alguns registradores funcionam como posições intermediárias de
armazenamento para os dados manipulados pela UCP. Nestes registradores são armazenados os
dados de entrada para a ULA e ainda proporcionam um local de armazenamento para o resultado
das operações.
Os dados a serem manipulados pela ULA tem origem na memória principal, sendo de
responsabilidade da unidade de controle transferir estes dados aos registradores, informar à ULA
Executar uma simples operação de soma é mais complexo que apenas somar estes números.
Coordenado pela unidade de controle, os registradores intermediam a comunicação da memória
principal e a ULA. Este processo pode ser resumido assim:
Passos
5. Finalizar operação.
Os registradores
Os registradores são memórias elaboradas com o mínimo de transistores possível, utilizando o que
há de mais moderno em tecnologia de armazenamento. Elas são as memórias mais rápidas que
podem ser construídas e por isso são também as mais caras. Por essa razão, elas aparecem numa
quantidade muito pequena em um computador, na casa de alguns Kilo Bytes. Eles podem ser
O PC contém o endereço de memória que será utilizado para buscar a próxima instrução a ser
executada pela CPU. Antes de executar qualquer instrução, a CPU envia o conteúdo de PC para a
memória através do Barramento de Endereço, a memória envia o conteúdo da memória nesse
endereço através do Barramento de Dados. Esse conteúdo é então armazenado no IR. Já o IR, que
recebeu a instrução que veio da memória, tem o objectivo de guardar a instrução e passá-la para a
Unidade de Controle, que é quem vai lê-la e tomar as decisões necessárias para para que ela seja
executada pela Unidade de Ciclo de Dados. Por se tratarem do processo de busca de instruções, o
PC e o IR ficam instalados na Unidade de Controle. O PC possui conexão directa com o
Barramento de Endereços, e o IR com o Barramento de Instruções.
Com relação ao MAR e ao MBR, eles possuem funções análogas ao PC e IR, respectivamente,
mas referentes a dados e não a instruções. Quando uma operação precisa ser realizada com algum
dado que está na memória (e não em um registrador), o endereço desse dado é passado para o
MAR. A CPU então passa o conteúdo de MAR para a memória através do Barramento de
Endereço, que retornará o conteúdo da memória nesse endereço através do Barramento de Dados.
O conteúdo trazido pela memória será armazenado em MBR. Só então o dado poderá ser utilizado
para o processamento inicialmente planejado. O MBR e MAR possuem, respectivamente,
conexões directas com os Barramentos de Dados e de Endereços. Ambos são situados na Unidade
de Ciclo de Dados, por serem utilizados nas fases de processamento das instruções.
Maio de 2022 Página 11 de 30
O tamanho e quantidade dos registradores de uma CPU é uma das principais decisões de projecto.
Se forem grandes demais, ou em quantidade maior do que a necessária, podem resultar em
desperdício e aumento desnecessário no preço do processador. Já se forem pequenos, ou em pouca
quantidade, com certeza vão tornar o computador muito mais lento do que o desejado. Encontrar
o tamanho e quantidade ideais é trabalhoso e geralmente é feito através de simuladores e de muito
testes e anos de experiência.
Os registradores de propósito geral são utilizados para guardar as variáveis dos programas. Como
eles estão presentes em quantidades muito pequenas, são poucas as variáveis que ficam
armazenadas em registradores. As demais ficam na Memória Principal. Quando uma operação
precisa ser realizada e seus dados estão nos Registradores de Propósito Geral, a CPU não precisa
buscá-los na memória e o processamento torna-se muito mais rápido.
Os sistemas mais antigos possuíam um registrador especial chamado acumulador ou ACC (de
accumulator), o qual, além de armazenar dados, servia de elemento de ligação entre a ULA e os
demais dispositivos da UCP.
Barramento
Durante a execução de um programa, cada instrução é levada até à ULA (Unidade Lógica e
Aritmética) a partir da memória, uma instrução de cada vez, junto com qualquer dado que seja
necessário para executá-la. A saída do programa é colocada em um dispositivo, tal como display
de vídeo ou disco. A comunicação entre os três componentes (CPU, memória e E/S) é feita sempre
pelos barramentos.
a) Barramento de dados
Este barramento interliga o RDM (localizado na CPU) à memória principal, para transferência de
instruções ou dados a serem executados. É bidirecional, isto é, ora os sinais percorrem o
barramento vindo da CPU para a memória principal (operação de escrita), ora percorrem o
caminho inverso (operação de leitura). Possui influência directa no desempenho do sistema, pois,
b) Barramento de endereços
Interliga o REM (localizado na CPU) à memória principal, para transferência dos bits que
representam um determinado endereço de memória onde se localiza uma instrução ou dado a ser
executado. É unidirecional, visto que somente a UCP aciona a memória principal para a realização
de operações de leitura ou escrita. Possui tantas vias de transmissão quantos são os bits que
representam o valor de um endereço.
c) Barramento de controle
Interliga a CPU, mais especifcamente a Unidade de Controle (UC), aos demais componentes do
sistema computacional (memória principal, componentes de entrada e de saída) para passagem de
sinais de controle gerados pelo sistema. São exemplos de sinais de controle: leitura e escrita de
dados na memória principal, leitura e escrita de componentes de entrada e saída, certifcação de
transferência de dados – o dispositivo acusa o término da transferência para a CPU, pedido de
interrupção, relógio (clock) – por onde passam os pulsos de sincronização dos eventos durante o
funcionamento do sistema.
É bidirecional, porque a UCP, por exemplo, pode enviar sinais de controle para a memória
principal, como um sinal indicador de que deseja uma operação de leitura ou de escrita, e a
memória principal pode enviar sinais do tipo wait (espere), para a CPU aguardar o término de uma
operação.
Cada CPU de computador pode ter vários ciclos diferentes, baseados em diferentes conjuntos de
instruções.
A CPU realiza repetidamente o seguinte ciclo de execução de uma instrução também chamado
“fetch-decode-execute”:
Toda CPU trabalha em dois ciclos principais, o Ciclo de Busca e o Ciclo de Execução. Assim que
o computador é iniciado, a CPU entra no Ciclo de Busca, em seguida passa para o Ciclo de
Execução e depois volta para o Ciclo de Busca. Ela continua nesse processo até que precise ser
desligada, saindo do Ciclo de Execução para o estado final.
Durante o Ciclo de Busca, é a Unidade de Controle que actua. Uma nova instrução é buscada da
Memória para que possa ser decodificada. Nessa fase os registradores [PC] e [IR] são utilizados.
No passo seguinte a CPU entra em Ciclo de Execução. Nessa etapa actua a Unidade de Ciclo de
Dados. Agora a Unidade de Controle já sabe exactamente que operação será executada, com quais
dados e o que fazer com o resultado. Essa informação é passada para a ULA e os registradores
envolvidos. Durante o Ciclo de Execução há cinco possíveis tipos de operação que podem ser
executadas:
Busca de Dados
Em operações entre Processador e Memória, é necessário que dados sejam trazidos da memória
para servirem de entrada para a ULA, e/ou o resultado seja levado para armazenamento na
memória no final da execução. Para isso acontecer, é executada uma Busca de Dados. Isso é
determinado durante a decodificação da instrução, no ciclo de Busca de Instrução. Para isso, parte
Se a instrução tiver dois ou mais parâmetros de memória, serão necessárias outras Buscas de
Dados. Como a memória é sempre mais lenta do que a CPU, instruções que necessitam Buscas de
Dados são muito mais lentas do que instruções de Processamento de Dados.
Perceba que cada instrução pode exigir mais tempo de execução do que outras. Isso depende de
quantos acessos à memória ela exigirá. Quanto mais acessos à memória, mais lenta a instrução. O
ideal é sempre usar registradores. Mas nem sempre é possível utilizar registradores. Eles estão
sempre em poucas quantidades e em menores tamanhos. O que os computadores sempre tentam
fazer é passar os dados da memória para os registradores assim que puderem, para que as próximas
instruções sejam aceleradas.
Interrupções
Além do ciclo básico de instrução apresentado anteriormente, a CPU pode ainda executar outro
tipo de tarefa. Ela diz respeito ao processamento de pedidos oriundos dos dispositivos de Entrada
e Saída. Como o Ciclo de Instrução da CPU é fechado, ou seja, a CPU sempre fica em estado de
repetição até que seja desligada, ela não pode atender a nenhum evento externo que não seja a
execução de um programa. Por exemplo, quando um usuário pressiona uma tecla do teclado, ou
faz um movimento com o mouse, ou mesmo, quando uma mensagem chega pela Internet através
da placa de rede. Se ela estiver em um Ciclo de Instrução fechado como mostrado anteriormente,
a CPU não fará nada. Ela precisa parar o que está fazendo para atender ao evento ocorrido e, só
então, voltar ao Ciclo de Instruções. Esse processo de parar o Ciclo de Instrução para atender a um
evento externo é chamado de Interrupção.
Na maioria dos computadores eles vêm soldados na Placa-Mãe, mas podem também vir dentro do
chip da CPU. Toda interrupção possui um código de identificação. Sempre que uma nova
interrupção chega nesse gerenciador, ele armazena esse código em sua memória e manda um sinal
para CPU através do Barramento de Controle. Durante seu Ciclo de Instrução, sempre que uma
instrução é executada, antes de voltar para o Ciclo de Busca, a CPU checa se algum sinal de
interrupção foi enviado pelo Gerenciador de Interrupção.
Quando não há uma interrupção, a execução volta ao Ciclo de Busca e o programa em execução
continua a ser executado. Mas se houver uma interrupção, a CPU agora vai parar a execução do
programa actual para atender a interrupção. Por exemplo, supondo que o usuário tenha pressionado
uma tecla do teclado. O código armazenado pelo Gerenciador de Interrupção indica que a
interrupção veio do teclado. A CPU pára sua execução do programa anterior e vai iniciar a
execução de um programa especial, o Tratador de Interrupção. O código do dispositivo (aqui seria
o teclado) serve para a CPU saber o endereço do Tratador de Interrupção que ela vai buscar da
memória. Então, ao sair da Checagem de Interrupção, a CPU muda o endereço do PC para o
endereço do Tratador de Instrução. Assim, no Ciclo de Busca a próxima instrução a ser trazida da
memória e posteriormente executada será a do tratador do teclado.
Cada tipo de interrupção precisa de um tratamento específico a ser feito. No caso do teclado, o
tratador vai checar que tecla foi pressionada. Isso é feito através de uma leitura à memória do
teclado (sim, todos os dispositivos possuem uma pequena memória) para saber que tecla foi
pressionada. Dependendo da tecla, uma operação diferente será executada. Geralmente, a CPU
Quando esse processo encerra, o tratamento é encerrado, e a CPU deve voltar à execução do
programa que havia sido interrompido. Isso só é possível porque, antes de passar à execução do
Tratador de Interrupção, a CPU salva os conteúdos de todos os registradores da CPU (inclusive o
PC e o IR). Então, antes de devolver a execução para o programa, a CPU restaura todos os valores
dos registradores antes salvos. Dessa forma, o programa retoma exactamente do ponto em que
parou.
Desempenho da CPU
É possível agora perceber que o desempenho das CPUs depende de muito outros factores além da
velocidade do seu clock. O computador precisa ter memórias rápidas para reduzir o tempo dos
Ciclos de Busca, precisam de mais registradores para usar menos a memória e também que poucas
interrupções ocorram. Cada vez que uma interrupção ocorre, o programa deve ser interrompido e
a chamada deve ser atendida. Isso vai atrasar demais o tempo de execução dos programas, dando
a impressão de baixo desempenho.
Já nos programas orientados à Entrada e Saída, que são aqueles chamados também de interactivos,
há muitos momentos de interacção e uso de dispositivos de Entrada e Saída, e poucos momentos
de uso de CPU. Esse é o caso de programas que utilizam muito o mouse e o teclado, como os jogos
e a própria navegação na internet.
O que deve se ter em mente é que o desempenho de um computador está muito ligado ao perfil de
cada usuário. Os Sistemas Operacionais são os responsáveis por escolher que tarefa colocar para
executar a cada momento e por quanto tempo ela deve executar até que uma nova tarefa entre em
execução. Assim, o papel do Sistema Operacional também é fundamental e determinante no
desempenho do sistema. O que ele tenta fazer no máximo que pode, é tentar ocupar os tempos de
espera de um programa com a execução de outro.
Supondo que queira-se executar uma instrução de máquina que soma dois números que estão na
memória e salve o resultado em outro endereço de memória. Para tal, deve-se indicar que a
Nesse caso, lê-se que no endereço 200 da memória há uma instrução que precisa somar o conteúdo
do endereço 101, com o conteúdo do endereço 102 e salvar o resultado no endereço 100 da
memória. Supondo que M[101] contenha o valor 10, e M[102] contenha o valor 20, ao final da
execução, o endereço 100 de memória (M[100]) deverá conter o valor 30.
Como uma instrução como essa será executada depende de cada arquitectura. Utilizando uma
abordagem que quebra as instruções em pequenos passos simples, que facilitam o trabalho de
decodificação da CPU.
Sendo assim, esse programa seria transformado na seguinte sequência de instruções e executado:
A primeira acção seria realizar o Ciclo de Busca, visando trazer a instrução a ser executada da
memória para o processador. O endereço da instrução (200) seria passado para o PC e um comando
de leitura de instrução seria passado para a memória. Baseada no endereço trazido por PC, a
memória localizaria a instrução e a enviaria para o processador, que a armazenaria no
registrador IR. Antes de passar a instrução para a Unidade de Controle para dar início à execução,
o registrador PC é actualizado para o próximo endereço de memória, no caso, 201.
MBR <- 10
Como os dados a serem operados estão também na memória, é antes necessário executar uma
operação de Busca de Operando, ou Busca de Dado. O primeiro operando está no endereço 101.
Sendo assim, o endereço 101 é passado para o registrador de endereço (MAR). Esse endereço é
passado para a memória e é enviado um comando de leitura de dado. O conteúdo, o valor 10, é
então localizado pela memória e enviado para o processador, que o armazena no registrador de
dados (MBR). Como o MBR será utilizado nas próximas etapas de execução, seu conteúdo é salvo
em um registrador de propósito específico, o R1.
MBR <- 20
Essa etapa ainda faz parte do Ciclo de Execução, e também diz respeito à uma Busca de Dado.
A busca é mesma do passo anterior, mas agora o endereço buscado é o 102, e o conteúdo é o 20,
que é repassado para o registrador R2.
O próximo passo do Ciclo de Execução é executar a operação aritmética propriamente dita. Isso
geralmente é feito entre registradores de propósito geral, por serem mais rápidos do que se fosse
tratar dados da memória. Os conteúdos de R1 e R2 são somados e armazenados em R3:
R3 = R1 + R2
Para isso ser realizado, é preciso executar uma operação de escrita na memória. O endereço 100 é
então passado para MAR e o resultado da operação, salvo em R3 é passado para MBR. Quando o
comando de escrita é enviado pela Unidade de Controle para a memória, ela lê o endereço 100 pelo
Barramento de Endereço e o valor 30 pelo Barramento de Dados e salva, então, o valor 30 no
endereço 100.
Com isso a operação é finalizada. Essa operação foi executada em aproximadamente 14 passos.
Esse valor é aproximado porque alguns deles são apenas o envio de sinal para a memória, e isso
geralmente é feito em paralelo com o passo seguinte. Se cada passo for executado dentro de uma
batida do relógio (ou ciclo de clock), teria-se 14 ciclos de clock para uma única instrução. Mas o
acesso à memória é sempre mais lento do que a execução do processador. Se cada acesso à
memória levar 3 ciclos de clock, teria-se um total de 20 ciclos de clock.
Parece bastante, mas algumas instruções podem levar muito mais ciclos do que isso, como
operações com Ponto Flutuante (números reais), ou de acesso a um periférico, como o disco rígido.
Isso depende muito de como o projecto do computador é elaborado.
Apesar do computador parecer pouco efectivo na execução de uma simples soma, como ele
executa numa frequência de clock muito alta, ele acaba executando muitas operações por segundo.
Então, utilizar apenas a frequência de clock como medida de desempenho não é uma boa ideia. O
mais utilizado é medir a quantidade de operações aritméticas que o processador é capaz de executar
por segundo. Hoje em dia um computador pessoal está na escala dos alguns Milhões de Instruções
por Segundo (ou MIPS).
Imagina que possa-se dividir o Ciclo de Instrução de um determinado processador nas cinco
etapas seguintes:
Carregar instrução (FI) - Traz a instrução da memória para o processador, armazena em IR (essa
etapa também é chamada de Fetch de Instrução) e a decodifica para execução no passo seguinte.
Carregar operandos (FO) - Traz os operandos da operação dos registradores para a ULA, para
que a operação seja realizada sobre eles, também chamada de Fetch de Operandos.
Esse é um dos Ciclos de Instrução mais simples que pode-se imaginar, organizado em apenas 5
etapas.
Analisando o que acontece com cada etapa a medida em que o programa é executado. A primeira
instrução vai passar pela etapa FI, que a leva para o IR e a decodifica. Em seguida ela é passada
para a etapa FO, e os dados necessários para a operação são levados dos respectivos registradores
para a ULA. Neste exacto momento, a segunda instrução do programa está parada na memória,
aguardando sua vez para ser executada. Ao mesmo tempo, a etapa FI está ociosa.
A primeira mudança necessária é a separação da memória em duas partes independentes (ou duas
memórias mesmo). Uma parte será utilizada apenas para instruções, e outra apenas para os dados.
Isso é necessário para que a etapa FI acesse a memória para buscar a próxima instrução, ao mesmo
tempo em que a WM acessa a memória para salvar o resultado de outra instrução anterior. Se
houvesse apenas uma memória para dados e instruções, isso não seria possível. Essa mudança vai
contra o que foi projectado na Arquitetura de von Neumann, e foi considerado um grande avanço.
Ela foi batizada de Arquitetura Harvard.
Outra mudança importante foi a adição de memórias intermediárias entre cada etapa. Essas
memórias são utilizadas para armazenar o resultado da etapa anterior e passá-lo para a etapa
posterior no ciclo seguinte. Elas são necessárias porque as etapas não executam necessariamente
sempre na mesma velocidade. Se uma etapa for concluída antes da etapa seguinte, seu resultado
deve ser guardado nessas memórias para aguardar que a etapa seguinte conclua o que estava
fazendo. Só então ela poderá receber o resultado da etapa anterior.
O mesmo ocorre na produção de um carro. A etapa de instalação do motor pode ser mais rápida
do que a de pintura, por exemplo. Então, se um carro acabou de receber um motor, ele deve ser
A medida em que a quantidade de instruções aumenta, o ganho de desempenho com Pipeline vai
se aproximando da quantidade de estágios, que foi 5 nesse exemplo. Então, quanto mais instruções
forem executadas e mais estágios de Pipeline tiver o processador, maior será o benefício de usar o
Pipeline.
O desempenho dos processadores e dos computadores é muito valorizado pelas empresas por
agregarem muito valor a elas. Então quanto menos tempo se espera para um computador realizar
uma tarefa, mais tempo resta para a empresa se dedicar a outras actividades. O desempenho é tão
importante, que há uma corrida silenciosa entre empresas, universidades e governos para saber
quem é capaz de produzir o computador mais rápido do mundo. A organização chamada Top 500
organiza uma competição para conhecer quem são esses campeões de desempenho e anualmente
geral uma lista com os 500 computadores mais velozes. Actualmente a China e os Estados Unidos
disputam o topo da lista do Top 500. Nas décadas após a Segunda Guerra Mundial os países
disputavam uma guerra silenciosa (a Guerra Fria) para saber quem era o país mais poderoso em
poder bélico e em tecnologias, como a corrida espacial.
Hoje a Guerra Fria já terminou, mas a corrida pela liderança tecnológica e econômica mundial
continua e possui um novo concorrente forte disputando de igual para igual com os Estados
Unidos, a China. Nessa corrida o poder computacional é importantíssimo. Ter um computador
poderoso não significa apenas ser capaz de realizar tarefa mais rapidamente, mas ser também capaz
de realizar certas tarefas que seriam impossíveis em computadores menos poderosos. Um exemplo
disso é a construção de um computador que haja de forma semelhante ao cérebro humano. Chegar
Para medir o desempenho dos computadores, três métricas principais são mais usadas:
Determina quantos ciclos de clock são necessários para executar uma determinada instrução. O
Ciclo de Instrução é organizado em várias etapas e que isso depende de instrução para instrução.
Se uma instrução acessar mais memória do que outra, ela será mais lenta. Instruções que operam
com Pontos Flutuantes são mais lentas do que as operações com números inteiros. É fácil perceber
a razão disso. Operações com números reais são mais complexas de serem resolvidas, porque
devem ser realizadas para a parte fracionária e para a inteira, e depois o resultado deve ser
consolidado. Assim, simulações são realizadas com um processador e são calculados quantos
ciclos de clock cada tipo de instrução necessita em média para ser completada através do CPI.
Uma alternativa para o MIPS é o MFLOPS. O MIPS é muito eficiente, mas não para comparar
programas diferentes.
Para calcular o MFLOPS, são executadas apenas instruções que operam com Ponto Flutuante e
são calculados quantos segundos se passaram para cada milhão delas. Assim, ela pode ser definida
da seguinte forma:
A única diferença para o cálculo do MIPS é que apenas as instruções que operam com Ponto
Flutuante são consideradas. Assim, diz respeito a quantos ciclos de clock em média são necessários
para executar uma instrução de ponto flutuante.