Você está na página 1de 109

 BIBLIOTECA

 MENSAGENS
 CALENDÁRIO
 CADERNO

 VÍDEOS

 PERFIL

 Manual do AVA

 SAIR

Introdução à Organização Básica e


Arquitetura de Computadores
Conhecer os conceitos básicos da arquitetura e organização de computadores.

NESTE TÓPICO

Marcar
tópico

Arquitetura x Organização de
Computadores
Na literatura, ao se descrever um sistema de computação, é feita uma distinção
entre os termos arquitetura e organização do computador.
O termo arquitetura de um computador refere-se aos atributos de um sistema que
são visíveis para o programador ou, em outras palavras, aos atributos que têm
impacto direto sobre a execução lógica de um programa. Convém lembrar que o
termo arquitetura também significa projeto.
Já o termo organização de um computador diz respeito às unidades operacionais e
suas interconexões que efetivam as especificações de sua arquitetura, ou seja,
como as características da arquitetura são implementadas.
Por atributos de arquitetura, podemos entender: o conjunto de instruções, o número
de bits usados para representar os tipos de dados, os mecanismos de E/S. etc.
Enquanto os atributos da organização são transparentes aos usuários e incluem
detalhes de hardware como, por exemplo: sinais de controle, tecnologia de
memória utilizada, etc.
Especificar se um computador deve ou não ter uma instrução de multiplicação
constitui uma decisão de projeto da arquitetura.
Por outro lado, definir se essa instrução será implementada por uma unidade
específica de multiplicação ou por um mecanismo que utiliza repetidamente sua
unidade de soma é uma decisão de projeto de sua organização.
Por exemplo, todo microprocessador Intel da família x86 compartilha a mesma
arquitetura básica. Isto garante que eles sejam compatíveis. No entanto, a
organização difere de uma versão para a outra. Ou seja, uma organização deve ser
projetada para implementar uma especificação particular de arquitetura.
Estrutura e Função dos Computadores
Os computadores são equipamentos eletrônicos digitais que têm como função:

 Processar dados;

 Armazenar dados;

 Comunicar (transferir) dados;

 Exercer controle.

Para cumprir esses objetivos, eles possuem a seguinte estrutura básica:

 Unidade Central de Processamento (CPU);

o Processa os dados através da execução das


instruções que compõem os programas;

 Sistema de Armazenamento (Memórias);

o Armazena dados e instruções (programas).


Normalmente um computador possui mais
de uma memória, cada uma com sua
especificidade;

 Sistema de Entradas e Saídas (E/S):


o Transfere dados entre o computador e o
usuário, periféricos, outros computadores, ou
o ambiente.

 Sistema de Interconexão (Barramentos):

o Meios de comunicação entre a CPU,


memórias e E/S.

A CPU é o principal componente de um computador. Poderia-se dizer que ela é o


"cérebro" do computador. A estrutura da CPU é a seguinte:

 Unidade de controle (UC);

o Controla a operação da CPU e,


consequentemente, de todo o computador.

 Unidade lógica aritmética (ULA);

o Efetua toda as operações lógicas (boolenas)


e aritméticas, ou seja, o processamento dos
dados.

 Registradores;

o Constituem as unidades de armazenamento


mais básicas do computador, internamente à
CPU. Armazenam a instrução em execução,
os dados referentes a essa instrução e o
resultado gerado.
 Interconexão da CPU (Barramento Interno):

o Conecta os diversos componentes da CPU.

Os microprocessadores foram criados inicialmente para serem uma CPU em um


único circuito integrado porém, é importante ressaltar que atualmente os
microprocessadores possuem várias CPUs em um único circuito integrado, além de
partes do sistema de armazenamento e do sistema de E/S.

Quiz
Exercício Final
Introdução à Organização Básica e Arquitetura de Computadores
INICIAR

Referências
STALLINGS, Willian. Arquitetura e organização de computadores. 5. ed. Prentice
Hall. São Paulo, 2006.

TANENBAUM. Andrew S. Organização estruturada de computadores. 5. ed. Rio


de Janeiro: LTC, 2007.

MACHADO, Francis B.; MAIA, Luiz P. Arquitetura de sistemas operacionais. 4.


ed. Rio de Janeiro: LTC, 2007.

WEBER, Raul Fernando. Arquitetura de computadores pessoais. 2. ed. Porto


Alegre: Sagra Luzzatto, 2003.

_______. Fundamentos de arquitetura de computadores. 3. ed. Porto Alegre: Sagra


Luzzatto, 2004.

Avalie este tópico

Índice

Biblioteca
Portal Uninove
Mapa do Site
® Todos os direitos reservados
Ajuda?
 BIBLIOTECA
 MENSAGENS
 CALENDÁRIO
 CADERNO

 VÍDEOS

 PERFIL

 Manual do AVA

 SAIR

Evolução histórica dos


computadores
Conhecer as origens do computador e sua evolução histórica, bem como a
arquitetura proposta por Von Neumann.

NESTE TÓPICO

Marcar
tópico

Introdução
Desde a Antiguidade, pode-se observar a necessidade do homem em computar
(calcular). Inicialmente ele utilizava seus próprios dedos como forma de contagem,
daí a base de nosso sistema de numeração ser decimal. Com o passar dos tempos,
os dez dedos não eram mais suficientes, então ele passou a utilizar pedrinhas: "O
pastor guardava em um saco uma pedrinha para cada ovelha de seu rebanho, depois
associava cada pedrinha a uma ovelha". As evoluções não pararam e o homem
aperfeiçoou suas técnicas criando instrumentos de apoio à contagem e cômputo. A
necessidade de precisão e a dificuldade em solucionar cálculos mais e mais
complexos levou o homem a criar mecanismos com o intuito de simplificar uma
tarefa tão árdua. Daí surgiram ferramentas como ábaco, régua de cálculo, máquina
de calcular e o computador.
Computador
O computador é uma máquina capaz de receber, armazenar, tratar e produzir
informações de forma automática, com grande rapidez e precisão.
As máquinas de calcular têm sua origem no século XVI, porém somente perto da
metade do século XX surge a máquina que conhecemos como computador, cuja
popularização deveu-se principalmente aos avanços na microeletrônica,
especialmente a partir da década de 1970.
Evolução dos computadores
A história dos computadores começou no momento em que o homem sentiu a
necessidade de efetuar cálculos complexos de maneira automática.
O primeiro equipamento com que o homem contou para fazer seus cálculos foi o
conjunto de dedos de suas mãos, daí veio a palavra digital, vindo de dígito, que
significa dedo. Com a evolução da humanidade, fez-se necessárias novas invenções
para auxiliar os cálculos:
A primeira calculadora de que se tem notícias é o ábaco, de origem babilônica,
cerca do século V a.C., capaz de efetuar operações algébricas elementares.
Levou muito tempo até o surgimento de máquinas capazes de fazer operações
aritméticas de forma automática. As calculadoras mecânicas surgem no século
XVII, com Blaise Pascal, muito rudimentares, capazes apenas de somar e subtrair.
No século XIX podemos destacar calculadoras mais sofisticadas como a do inglês
Charles Babbage.
Uma das primeiras máquinas de processar dados data de 1889, quando Hermann
Hollerith, funcionário do United States Census Bureau, inventou uma máquina
para tabular os resultados do recenseamento da população. A máquina "lia" as
informações armazenadas em cartões perfurados e efetuava a contagem dos valores
referentes às respectivas perfurações. As máquinas de Hollerit foram utilizadas no
censo de 1890 nos EUA. O tempo gasto nesse recenseamento foi 1/3 do tempo
normal.
Em 1896, Hollerith fundou a Tabulating Machine Company, que construía as
tabuladoras e outros dispositivos por ele inventados. Com o crescimento da
empresa, ela passou a chamar-se em 1911 Computing Tabulating and Recording
Company, e em 1924 passou a ostentar o nome que tem atualmente: IBM –
International Business Machines Corporation.
As máquinas de primeira geração (1945-
1955)
O desenvolvimento dos primeiros computadores eletrônicos, utilizando válvulas,
ocorre durante a II Guerra.
O ENIAC (Electronic Numerical Integrator and Computer), cuja construção só
terminou em 1946, ficou com a fama de ser o primeiro computador eletrônico.
Ele tinha quase 19.000 válvulas e consumia quase 200 kilowatts, um absurdo para
a época.

A grande maioria dos computadores existentes atualmente segue um modelo


proposto por John Von Neumann em seu computador IAS, concluído em 1952.
Alguns aspectos básicos da Arqitetura proposta por Von Neumann e que usamos
até hoje:
 Uso do sistema de numeração binário;
 Estrutura do computador dividida em Memória,
Sistema de Entradas e Saídas e Unidade Central de
Processamento;
 O conceito de que este computador executaria uma
sequência de instruções (programa) que seria
armazenado na memória.
A figura seguinte mostra a estrutura deste computador, que hoje conhecemo como
Arquitetura IAS ou Arquitetura Von Neumann.

Arquitetura Von Neumann


Fonte:

Computadores de segunda geração (1955-


1965)
Foi em 1947 que surgiu o primeiro transistor, produzido pela Bell Telephone
Laboratories. Essa descoberta revolucionou a eletrônica, e os circuitos passaram a
consumir muitíssimo menos energia, a ocupar menos espaço, isso a um custo bem
satisfatório.
Os transistores substituem as válvulas com a vantagem de serem mais confiáveis e
rápidos.São feitos de cristal de silício, o elemento mais abundante na Terra.
Em 1954, a Texas Instruments iniciou a produção comercial de transistores.
Da mesma forma, os transistores, nos circuitos digitais, foram utilizados para
representar os dois estados binários.
Nos anos 1960 e 70, por causa do emprego do transistor nos circuitos, se deu uma
grande expansão no uso dos computadores. Eles ocupavam menos espaço e tinham
um custo satisfatório.
Em 1968, chegou o primeiro computador da Unicamp, um IBM 1130, com 16 KB
de memória e um disco de 1 MB. Foi um acontecimento, ele trabalhava com
cartões perfurados. Rodava programas em Assembly, Fortran e PL1.
Para iniciar o computador, se utilizava console e cartões perfurados especialmente
codificados, denominados "cold start", funções executadas hoje pela ROM e o
BIOS.
Computadores de terceira geração (1965-
1980)
Nos anos 1960, iniciou-se o encapsulamento de mais de um transistor num mesmo
componente. Surgiu assim o Circuito Integrado – CI. Os primeiros contavam com
apenas algumas dezenas de transistores por cápsula (chip). Logo os circuitos
integrados foram usados nos computadores, com especial destaque para o IBM
System/360, a primeira família planejada de computadores, e o DEC PDP-8, uqe
tornou os computadores mais acessíveis e introduziu o conceito de barramento.

Computadores de quarta geração (1980 em


diante)
Durante a década de 1970, com a tecnologia da alta escala de integração LSI –
Large Scale of Integration), pôde-se combinar até 65 mil componentes em uma só
pastilha de silício (chip). Nos anos 1980, com o grande desenvolvimento da
tecnologia de circuitos integrados, o número de transistores podendo ser integrados
numa pastilha de silício atingiu a faixa dos milhares e, logo em seguida, dos
milhões. Foi assim que surgiram os novos computadores, ainda menores, mais
velozes e mais poderosos que aqueles da geração anterior. Na segunda metade da
década de 1990, houve a passagem da LSI para a VLSI (Very Large Scale of
Integration – muito alta escala de integração). As máquinas de todas as gerações
têm como característica comum a existência de uma única CPU para executar o
processamento. Porém, mais recentemente, já existem computadores funcionando
com mais de uma CPU.
Os computadores pessoais passaram então a ser utilizados de uma maneira
relativamente distinta da dos grandes computadores de então. No início dessa
geração nasceu a Intel, que começou a desenvolver o primeiro microprocessador, o
Intel 4004 de 4 bits, um circuito integrado com 2250 transistores, equivalente ao
ENIAC.
O 4004 foi seguido pelo Intel 8008 de 8 bits e, mais tarde, pelo Intel 8080. O
primeiro microcomputador da história foi o Altair 8800, que usava o chip Intel
8088 e tornou-se padrão mundial da época para os microcomputadores de uso
pessoal, abrindo uma nova era na história da informática.
Stephen Wozniak e Steve Jobs formaram em 1976 uma pequena empresa, a Apple,
onde construíram, numa garagem de fundo de quintal, o Apple I. Um ano depois,
com um novo e melhor projeto, surgiu o Apple II, primeiro microcomputador com
grande sucesso comercial e, mais tarde, o Apple III. Em 1983, entrou no mercado o
Lisa e, em 1984, o Macintosh, com tecnologia de 32 bits.
Em 1981, a IBM entrou no mercado de micros, introduzindo o PC, um
microcomputador com tecnologia de 16 bits (Intel 8088) que em pouco tempo se
tornou um padrão. A família PC recebu o primeiro modelo com processadores de
32 bits da Intel em 1985 e o primeiro processador de 64 bits surge em 1995.
Com o desenvolvimento dos microprocessadores e microcomputadores, foram
incorporadas diversas características antes existentes apenas nos computadores de
grande porte.
Na virada do milênio, questões como consumo de energia e eficiência impulsionam
o desenvolvimento de microprocessadores "multicore", isto é, com mais de uma
CPU em um mesmo chip. Característica presente hoje até mesmo em processadores
para dispositivos móveis.

Quiz
Exercício Final
Evolução histórica dos computadores
INICIAR

Referências
MACHADO, Francis B.; MAIA, Luiz P. Arquitetura de sistemas operacionais. 4.
ed. Rio de Janeiro: LTC, 2007.

STALLINGS, Willian. Arquitetura e organização de computadores. 5. ed. Prentice


Hall. São Paulo, 2006.

TANENBAUM. Andrew S. Organização estruturada de computadores. 5. ed. Rio


de Janeiro: LTC, 2007.

WEBER, Raul Fernando. Arquitetura de computadores pessoais. 2. ed. Porto


Alegre: Sagra Luzzatto, 2003.

_______. Fundamentos de arquitetura de computadores. 3. ed. Porto Alegre: Sagra


Luzzatto, 2004.

Avalie este tópico

Índice

Biblioteca
Portal Uninove
Mapa do Site
® Todos os direitos reservados
Ajuda?

 BIBLIOTECA
 MENSAGENS
 CALENDÁRIO
 CADERNO

 VÍDEOS

 PERFIL

 Manual do AVA

 SAIR

Estrutura básica do computador -


Busca e Execução de Instruções
Compreender o funcionamento básico de um sistema computacional e os princípios
do ciclo de instrução.

NESTE TÓPICO

Marcar
tópico

O computador, conforme proposto por Von Neumann, é composto pela CPU,


Memória(s) e E/S(s). A CPU é o componente principal do sistema, responsável
pela realização das operações de processamento (cálculos matemáticos, entre
outros) e de controle durante a execução de um programa.
Um programa, para ser efetivamente executado por uma CPU, deve ser constituído
por uma série de instruções (em linguagem de máquina). Essas instruções devem
estar armazenadas em posições sucessivas da memória principal. A execução é
sequencial, ou seja, se a instrução executada está na posição x, a próxima instrução
a ser executada deverá estar na posição x + 1.
Cada instrução atuará sobre um ou mais dados que são o(s) operando(s) da
instrução, gerando um respectivo resultado. Por exemplo a instrução "soma" requer
dois números como operandos, gerando um terceiro número como resultado. Os
dados processados no programa também ficam armazenados na memória.
A sequência de funcionamento de uma CPU é conhecida como ciclo de busca e
execução de instruções, ou "busca – decodificação – execução" de instruções,
conforme ilustrado abaixo.

Ciclo Busca - Decodificação - Execução


Fonte:

As atividades realizadas pela CPU podem ser divididas em duas grandes categorias
funcionais:

 Funções de processamento;

 Funções de controle.

A função de processamento se encarrega de realizar as atividades relacionadas com


a efetiva execução de uma operação, ou seja, processar (executar a instrução) de
instruções. O principal componente da CPU que realiza a função de processamento
é a ULA (Unidade Lógica e Aritmética) e a ação dela é complementada pelo uso de
registradores de processamento.
A função de controle é exercida pelos componentes da CPU que se encarregam de
atividades de busca, interpretação e controle da execução das instruções, bem
como do controle da ação dos demais componentes do sistema de computação
(memória, entrada/saída). O principal componente da CPU responsável pela função
de controle é a UC (Unidade de Controle). Ela tem o papel de executar o ciclo de
busca e execução gerando os sinais adequados para os demais componentes da
CPU e do computador.
Vejamos de forma um pouco mais detalhada o que ocorre durante o ciclo de busca
e execução:
 O registrador Contador de Programa (PC – Program
Counter), contém a posição da próxima instrução a ser
executada. Quando uma sequência de execução de
instruções tem início, a instrução cujo endereço está no
Contador de Programa é trazida da memória para o
Registrador de Instruções (RI). Esse processo é
conhecido como busca da instrução;
 A próxima etapa corresponde à "interpretação" da
instrução pelos circuitos da Unidade de Controle, ao
que chamamos de decodificação da instrução;
 Conhecida a instrução, a etapa da execução da
instrução envolve a obtenção dos operandos (dados
manipulados pela instrução), efetivação da operação e
armazenamento dos resultados. Quando a execução de
uma instrução é terminada, o contador de instruções é
atualizado para o endereço da memória da próxima
instrução (x + 1).
Este ciclo também é conhecido como Ciclo de Instrução.
A sequência de instruções pode mudar como resultado de uma instrução que
direciona um desvio. Instruções desse tipo contêm o endereço da próxima instrução
a ser executada. Elas causam mudanças no fluxo do programa dependendo do
resultado do processamento. O desvio condicional representado por uma instrução
de alto nível "IF" traduz-se em algum tipo de instrução de desvio.
Processar o dado é executar com ele uma ação que produza algum tipo de
resultado. Essa é a atividade-fim do sistema computacional, ele existe para
processar dados.
Dentre as tarefas de processamento de dados podem ser citadas:

 Operações aritméticas: soma, subtração, multiplicação


e divisão;
 Operações lógicas:and,or,xor,not;

 Movimentação de dados: memória – CPU


(registrador), CPU (registrador) – memória, registrador
– registrador;

 Desvios: alteração da sequência de execução das


instruções;

 Operações de entrada ou saída.

O principal dispositivo da CPU para a realização das atividades de processamento


é a ULA. Ela utiliza os registradores como auxiliares, armazenando os operandos
(dados) da instrução e os respectivos resultados.
Desempenho dos Computadores
Para sabermos se um computador é mais "poderoso", ou "rápido", do que outro é
necessário avaliarmos o desempenho do sistema computacional. Basicamente um
computador que desempenhe uma determinada tarefa em menos tempo do que
outro tem um desempenho melhor, seja a execução de um programa, seja a
transferência de um determinado volume de dados.
Há muitos fatores que influenciam o desempenho de um sistema de computação e
há diversos parâmetros para medi-lo. O ideal é comparar parâmetros independentes
de arquitetura, mas também mais complexo. Muitas vezes adotam-se métricas mais
simples, mas que porém limitam a comparação dos resultados entre computadores
de uma mesma família ou arquitetura. Dentre os parâmetros ligados à CPU
podemos destacar o MIPS (Milhões de Instruções por Segundo) e o FLOPS
(Instruções de Ponto Flutuante por Segundo).
Quando se trata da recuperação ou escrita de dados em memória, o tempo de
acesso e a taxa de transferência são as medidas apropriadas. O tempo de acesso é o
tempo necessário para se chegar à posição a ser acessada, isto é, lida ou escrita. A
taxa de transferência ou, conforme o caso, taxa de leitura ou taxa de escrita,
informa quanto de dados é lido, ou escrito, por segundo. Em geral é medida em
múltiplos de Bytes por segundo (p.ex.: MB/s).
Outro parâmetro é o tempo de resposta, que é uma medida ligada ao desempenho
global do sistema, e não ao de um ou outro componente. Trata-se do período de
tempo gasto entre o instante em que o usuário iniciou uma solicitação e o instante
em que o sistema apresentou ao usuário a resposta.

Quiz
Exercício Final
Estrutura básica do computador - Busca e Execução de Instruções
INICIAR

Referências
STALLINGS, Willian. Arquitetura e organização de computadores. 5. ed. Prentice
Hall. São Paulo, 2006.

TANENBAUM. Andrew S. Organização estruturada de computadores. 5. ed. Rio


de Janeiro: LTC, 2007.

MACHADO, Francis B.; MAIA, Luiz P. Arquitetura de sistemas operacionais. 4.


ed. Rio de Janeiro: LTC, 2007.

WEBER, Raul Fernando. Arquitetura de computadores pessoais. 2. ed. Porto


Alegre: Sagra Luzzatto, 2003.

_______. Fundamentos de arquitetura de computadores. 3. ed. Porto Alegre: Sagra


Luzzatto, 2004.

Avalie este tópico

Índice

Biblioteca
Portal Uninove
Mapa do Site
® Todos os direitos reservados
Ajuda?

 BIBLIOTECA
 MENSAGENS
 CALENDÁRIO
 CADERNO

 VÍDEOS


 PERFIL

 Manual do AVA

 SAIR

Barramentos e Interrupções
Conhecer o papel dos barramentos nos sistemas computacionais e compreender o
funcionamento do mecanismo de interrupção.

NESTE TÓPICO

Marcar
tópico

Barramento (Bus)
Os barramentos são os meios de comunicação entre os diversos componentes do
sistema computacional. Em geral, são meios de comunicação compartilhados entre
esses componentes que se aproveitam da padronização da interconexão.
Fisicamente falando os barramentos são constituídos pelas trilhas nas placas de
circuito impresso, slots, cabos e conectores, chamados genericamente de linhas, ou
vias, que obedecem padrões mecânicos, elétricos e lógicos.
Em um computador pessoal eles conectam as memórias ao microprocessador, as
placas de vídeo e de rede ao microprocessador, os discos rígidos ao controlador de
disco, etc. Conforme o porte do computador as necessidades de conexão se
alteram.
Assim, basta que um determinado dispositivo, de um determinado fabricante,
obedeça a todos os padrões do barramento para garantir o funcionamento correto e
a interoperabilidade com equipamentos de outros fabricantes.
São exemplos de barramentos:
 USB - Universal Serial Bus, ou Barramento Serial
Universal, utilziado para conectar uma infinidade de
periféricos em computadores pessoais, tablets,
videogames, smartphones e outros gadgets.

 HyperTransport - Utilizado para conexão entre


microprocessadores em servidores e sistemas de alto
desempenho.

Além dos dois exemplos em extremos opostos, há uma série de outros exemplos
que você provavelmente já deve ter observado: SATA, PCIe, SCSI, etc.
Todo barramento carrega três tipos de informação:

 Dados: a informação a ser lida ou escrita;

 Endereço: a posição (endereço de memória ou


dispositivo de E/S) onde a informação será lida ou
escrita;

 Controle: uma série de sinais digitais (bits) de controle


para a efetivação das operações de leitura e escrita. O
próprio sinal de seleção entre leitura e escrita é o mais
óbvio deles.

Além do sinal de seleção entre leitura e escrita, há uma série de outros sinais
importantes presentes no barramento de controle como a Interrupção, que será
abordada na sequência, a reinicialização (reset) e o clock (relógio).
O reset é um sinal utilizado para levar os circuitos digitais ao seu estado inicial de
funcionamento.
O clock, ou sinal de relógio, é um sinal que alterna entre 0 e 1 servindo como base
de tempo, sincronizando o funcionamento de todos os circuitos digitais do
computador.
Características dos Barramentos
Os barramentos possuem uma série de características que fazem parte de suas
especificações:

 Sincronização:

o Síncrono - o barramento utiliza o sinal de


clock para sincronizar as transferências de
informação;

o Assíncrono - não utiliza clock.

 Compartilhamento:
o Multiplexado - as linhas do barramento são
compartilhadas entre diversos dispositivos,
ou funções;

o Dedicado - as linhas são exclusivas para suas


funções e dispositivos.

 Tipo de transmissão:

o Paralelo - os bits de dados são transmitidos


ao mesmo tempo, cada um em sua linha;

o Serial - os bits de dados são transmitidos em


após o outro em uma única linha.

 Largura do barramento:

o Largura do barramento de dados -


quantidade de linhas (vias) dedicadas aos
dados (em geral corresponde ao tamanho da
palavra da arquitetura);

o Largura do barramento de endereços-


quantidade de linhas (vias) dedicadas aos
endereços.

Conhecendo-se as larguras dos barramentos é possível determinar a capacidade


limite da memória:

 Capacidade (limite) da Memória do Computador =


Quantidade de posições X Tamanho da posição

Por exemplo, se um computador possuir largura do barramento de endereços de 16


bits e cada posição da memória armazernar 8 bits, a capacidade limite dessa
memória será:
 Largura do barramentos de endereços de 16 bits →
216 = 65536 = 64k posições (endereços)

 Como cada posição armazena 8 bits (1 Byte)...

 Capacidade = 64k posições X 1 Byte = 64kB


(kilobytes) de memória RAM

Interrupções
A Interrupção é um mecanismo utilizado para fazer com que a CPU interrompa
temporariamente a sequência de instruções (programa) em execução.
A CPU não ficará "pausada" sem executar nada. O que ocorre é que a CPU passa a
executar outra sequência de instruções (programa) para tratar a causa da
interrupção, retornando posteriormente ao programa original.
É como se tocasse o telefone enquanto você está estudando este texto. Você iria
atendê-lo (ou desligá-lo) e então retornaria ao estudo, certo?
Existem quatro tipos (causas) de interrupções:

 Temporização;

 Entrada e Saída (E/S);

 Falha de software (exceção);

 Falha de hardware.

Os dois primeiros tipos contribuem para o melhor desempeho dos sistemas


computacionais, liberando a CPU para executar outras tarefas ao invés de
simplesmente aguardar. As interrupções por temporização são usadas sempre que
uma tarefa precisa de um tempo determinado. Pense nela como um temporizador
comum que alerta quando o tempo programado é atingido. Ela é parte essencial na
implementação da multitarefa pelo sistema operacional. A interrupção de E/S
ocorre sempre que um dispositivo de E/S possui dados para a CPU, ou terminou
uma operação solicitada por ela. Se você estiver lendo este conteúdo em algum
computador agora, o controlador de vídeo está gerando dezenas de interrupções por
segundo para atualizar a tela e a cada movimento do mouse, pressionamento de
tecla, ou toque na tela, também são geradas interrupções.
As interrupções por falha não são desejáveis, mas em geral evitam o pior, que seria
a reinicialização completa do sistema e ainda viabilizam algum tipo de alerta sobre
o problema. A interrupção por falha de software, ou exceção, acontece quando há
uma falha no programa, ou em sua execução, como estouro, divisão por zero, etc.
A interrupção por falha de hardware acontece quando há algum problema dessa
natureza, tal como erro de paridade de memória.
Fisicamente há um ou mais pinos do circuito integrado microprocessador
dedicados à interrupção. A ocorrência de uma interrupção é indicada através de um
sinal digital (bit) nesses pinos. O sinal de interrupção, normalmente indicado por
INT, é um dos sinais de controle nos barramentos do computador.
A ocorrência de um interrupção é verificada ao final da execução de cada instrução
de máquina (no final do ciclo de instrução).
Se não houver nenhum pedido de interrupção, a CPU busca a próxima instrução
normalmente.
Se houver um pedido de interrupção acontece o seguinte:

 CPU suspende execução do programa atual;

 Salva o contexto (dados dos registradores da CPU);

 Define registrador Contador de Programa (PC) para


endereço inicial da Rotina de Tratamento de
Interrupção (RTI);

 Atende (trata) a interrupção (executa RTI);

 Restaura o contexto;

 Continua o programa interrompido.

Para que se possa retornar ao programa interrompido exatamente onde ele foi
interrompido, é necessário salvar as informações presentes nos registradores, ao
que chamamos de contexto. Voltando ao exemplo do telefone que tocou enquanto
você estudava, você provavelmente teria marcado o parágrafo que estava lendo
antes de atender o telefone.
A Rotina de Tratamento de Interrupção (RTI, ou ISR na sigla em inglês) é parte
integrante e fundamental do Sistema Operacional.
É possível que ocorra mais de um pedido de interrupção ao mesmo tempo. Para
prevenir isso, o mais comum é que os sistemas estabeleçam alguns níveis de
prioridade. Assim, as interrupções são atendidas "em fila" conforme a ordem de
prioridade.
Funcionamento da Interrupção

Quiz
Exercício Final
Barramentos e Interrupções
INICIAR

Referências
STALLINGS, William. Arquitetura e Organização de Computadores. 8ª edição.
Pearson Education. 2010.

TANENBAUM, Andrew S. Organização Estruturada de Computadores. 4ª edição.


LTC Editora. 2001.

VALIANTE FILHO, F. Princípio de Funcionamento de um Microprocessador -


Versão 5. São Paulo, set. 2013. Disponível
em: http://prof.valiante.info/disciplinas/hardware/princpio-de-funcionamento-
de-um-microprocessador . Acessado em 30.03.2015.
VALIANTE FILHO, F. Notas de aula sobre
interrupções. http://prof.valiante.info/disciplinas/hardware/interrupcoes. Acessado
em 30.03.2015.
Avalie este tópico

Índice

Biblioteca
Portal Uninove
Mapa do Site
® Todos os direitos reservados
Ajuda?

 BIBLIOTECA
 MENSAGENS
 CALENDÁRIO
 CADERNO

 VÍDEOS

 PERFIL

 Manual do AVA

 SAIR

Sistema de Armazenamento e
Hierarquia de Memória
Compreender os principais conceitos acerca do sistema de armazenamento dos
computadores, as principais características das memórias e sua organização
hierárquica.

NESTE TÓPICO

Marcar
tópico
Hierarquia de Memória
Todo computador, do mais simples, ao mais sofisticado, necessita armazenar maior
ou menor quantidade de dados. Sejam programas, arquivos, resultados gerados,
etc.
Pense no sistema computacional que você utilizou para acessar este material. Quais
os componentes dedicados ao armazenamento de dados nele? Há apenas um!?
Você deve ter notado que todo computador possui mais de um componente
dedicado ao armazenamento de dados, configurando um sistema de
armazenamento, o conjunto organizado das memórias de um computador.
Para melhor compreendermos o sistema de armazenamento é possível organizá-lo
de forma hierárquica, conforme a função e as características de cada uma.
A hierarquia de memória é representada na figura abaixo.

Hierarquia de Memória

Os registradores, que fazem parte da CPU, ocupam o topo da hierarquia, já que


são utilizados o tempo todo.
Em seguida vem a memória principal, utilizada para armazenar os programas em
execução, com os respectivos dados. Como a memória principal é muito lenta em
comparação com a CPU, a maioria dos sistemas computacionais emprega um nível
intermediário, chamado de memória cache, para melhorar o desempenho da
memória principal.
Você provavelmente está acostumado a chamar a memória principal de memória
RAM, que é o tipo de circuito integrado de memória empregado neste nível. Mas
as memórias do tipo RAM também são utilizadas na memória cache.
Finalmente a memória secundária serve para armazenar de forma permanente
todos os programas e dados disponíveis no sistema, mesmo que eles não estejam
sendo sendo executados, ou acessados. Neste nível temos os discos magnéticos,
discos ópticos e dispositivos baseados em memórias flash, tais como pen drives e
cartões de memória.
Para que um programa seja executado, é preciso carregá-lo da memória secundária
para a memória principal. Depois, instrução a instrução será levada da memória
principal para os registradores para ser executada.
Há uma série de características para as memórias, a maioria com uma relação
direta com a representação da hierarquia.

Microprocessador (Registradores e Cache), Módulos de Memória RAM (Principal) e Disco Rígido


(Secundária)

Características das Memórias


Localização
A memória principal e, consequentemente, a memória cache, também é conhecida
como memória interna. Este nome deve-se ao fato de serem acessadas
diretamente pela CPU. A memória secundária é conhecida como memória
externa, já que nesse nível, o que temos são periféricos de armazenamento,
acessados através de módulos de E/S. Por exemplo os discos rígidos (HDs) que
dependem de controladores de disco (controlador SATA, SCSI, etc.).
Unidade de Transferência
Os dados podem ser transferidos nas memórias em palavras (ou bytes), ou blocos
de dados (setores). Uma palavra, nesse contexto, é o tamanho padrão para o
armazenamento da informação. Em um computador de 64 bits, a palavra é de 64
bits e boa parte dos dispositivos de memória transferirá 64 bits por vez. Porém,
outras memórias, tais como os discos, acessam um bloco de dados (conjunto de
palavras) de cada vez. Nos discos esses blocos são chamados de setores.
Capacidade
É a característica mais óbvia das memórias. Quanto de informação a memória é
capaz de armazenar. Independentemente da forma de organização, medimos a
capacidade de uma memória em Bytes e seus múltiplos (kB, MB, GB, TB...).
A capacidade é determinada multiplicando-se a quantidade de posições (sejam
blocos, sejam setores), pela quantidade de dados armazenados em cada posição.
Parâmetros de Desempenho
As memórias possuem dois parâmetros de desempenho fundamentais:
 Tempo de acesso.

o Tempo gasto para acessar a posição de


memória. Geralmente medido em ns
(nanosegundos) para memórias a
semicondutor e ms (milisegundos) para
discos.

 Taxa de transferência.

o Quanto de informação pode ser transferida


ao longo do tempo. Medido em B/s (bytes
por segundo), MB/s, etc.

Métodos de Acesso
Constituem-se na forma de acessar (encontrar) os dados em cada memória.
Os discos na memória secundária utilizam método de acesso direto, funcionando
da mesma forma que um toca-discos de vinil. No caso dos discos magnéticos e
ópticos temos um cabeçote de leitura e escrita, no lugar da "agulha", que é movido
até a trilha (faixa) correspondente do disco, que deve então aguardar o giro do
disco. O tempo de acesso irá variar conforme a disposição física dos dados.
Já a memória principal utiliza o método de acesso aleatório, mais eficiente. Note
que RAM, — Random Access Memory —, significa literalmente memória de
acesso aleatório. RAM é um tipo de circuito integrado de memória e, como não há
partes mecânicas, o tempo de acesso para qualquer posição da memória é o mesmo.
As portas lógicas que "processarão" um endereço com uma sequência binária de
vários "zeros", ou vários "uns", fornecerão o resultado sempre no mesmo tempo.
Tipo de Mídia (Material)
Basicamente a informática trabalha hoje com 3 tipos de memórias:
 Memória a semicondutor (circuitos integrados);

o RAM, ROM e Flash.

 Memória magnética;

o Discos rígidos (HDs).

 Memória óptica;

o Discos ópticos (CD, DVD e Blu-Ray)

Volatilidade
O que acontece com os dados armazenados ao se retirar a energia da memória?
 Memória volátil

o Perde os dados quando desenergizada.

o Exemplo: memória RAM.

 Memória não-volátil (permanente)

o Os dados continuam armazenados mesmo


na ausência de energia.

o Exemplo: memórias magnéticas (HD) e


ópticas (CD, DVD, Blu-Ray).

Outras Características
 A memória é apagável ou não? Uma memória não-
apagável é mais conhecida como memória "somente
leitura" ou, em inglês, Read Only Memory (ROM).
 Consumo de energia.
 Portabilidade. É possível transportar a memória?
 Frequência de acesso. Os registradores são usados o
tempo todo, enquanto uma memória secundária nem
sempre...
Essas característica têm estreita relação com a hierarquia de memória estudada,
como pode ser visto nas figuras abaixo.
Características das memórias e sua relação com a hierarquia.

Hierarquia e características das memórias


Fonte:

Quiz
Exercício Final
Sistema de Armazenamento e Hierarquia de Memória
INICIAR
Referências
STALLINGS, William. Arquitetura e Organização de Computadores - 8a edição.
Pearson Education. 2010.

VALIANTE FILHO, F. Sistema de Armazenamento (Memórias). São Paulo, 2014.


Disponível em: http://prof.valiante.info/disciplinas/hardware/sistema-de-
armazenamento-memorias . Acessado em 30.03.2015.
TANENBAUM, Andrew S. Organização Estruturada de Computadores - 5ª Edição.
Pearson Education. 2007.

MURDOCCA , Miles J.; HEURING, Vincent P. Introdução à Arquitetura de


Computadores. Campus. 2000.

PARHAMI, Behrooz. Arquitetura de Computadores - De Microprocessadores a


Supercomputadores. McGraW-Hill. 2007.

CARTER, Nicholas. Arquitetura de Computadores - Coleção Schaum. Bookman.


2003.

Avalie este tópico

Índice

Biblioteca
Portal Uninove
Mapa do Site
® Todos os direitos reservados
Ajuda?

 BIBLIOTECA
 MENSAGENS
 CALENDÁRIO
 CADERNO

 VÍDEOS


 PERFIL

 Manual do AVA

 SAIR

Memória Principal e Memória


Cache
Conhecer o funcionamento dos tipos de memórias RAM e compreender seu
emprego nas memórias principal e cache.

NESTE TÓPICO

Marcar
tópico

Memórias de Semicondutor
Os níveis hierárquicos da memória principal e da memória cache empregam
memórias de semicondutor, ou seja, circuitos integrados para armazenamento de
dados. Há basicamente três tipos de memória de semicondutor:

 RAM – Random Access Memory (memória de acesso


aleatório)

 ROM – Read Only Memory (memória somente leitura)

 Flash

Essas denominações, no entanto, são um pouco confusas, já que toda memória de


semicondutor possui método de acesso aleatório e, as memórias "somente leitura"
atuais podem ser gravadas.
O que faria mais sentido seria uma divisão entre:
 Memória de leitura e escrita (memória de trabalho)

 Memória principalmente de escrita

Essa divisão mais funcional nos ajuda a compreender melhor os tipos de memória
de semicondutor. As memórias RAM são usadas na memória de trabalho (leitura e
escrita), enquanto as memórias ROM e Flash são memórias principalmente de
escrita. Essas últimas são empregadas nos computadores para guardar parâmetros
de configuração e softwares de inicialização (como o BIOS do PC).
A memória ROM original era produzida já com o conteúdo gravado, num processo
caríssimo. Ela evoluiu para a memória ROM programável, a PROM, gravada
eletricamente em um equipamento externo, que popularizou seu uso. A PROM
evoluiu para a EPROM, uma memória que pudesse também ser regravada, ou seja,
apagável (Erasable) e novamente gravável, embora em um processo lento, que
requeria expor o circuito integrado (chip) da memória à luz ultravioleta (UV) por
alguns minutos, para depois regravá-la eletricamente. Finalmente, na escala de
evolução das memórias ROM, surgem as memórias EEPROM, mais conhecidas
como E2PROM, as memórias "somente leitura" programáveis e apagáveis
eletricamente. Como o processo de escrita era bastante lento, surgiu a necessidade
de mercado de uma memória mais rápida, problema que foi resolvido com um
novo tipo de memória de semicondutor, a memória Flash. Posteriormente, a
memória Flash passou a ser produzida com alta densidade de armazenamento,
possibilitando uma nova geração de dispositivos de armazenamento baseados nesse
tipo de chip, empregado hoje em cartões de memória, pen drives e SSDs.
Voltando às memórias RAM, não há diferença de desempenho na leitura e na
escrita, por isso são empregadas na memória de trabalho. Em compensação, são
memórias voláteis, ou seja, todos os dados são perdidos ao se desligar a energia do
circuito e, portanto, servem apenas para armazenamento temporário.
Há dois tipos de memória RAM:

 Dinâmica – DRAM

 Estática – SRAM

Na memória RAM Dinâmica (Dynamic), os dados são gravados como cargas


elétricas em capacitores. A quantidade de cargas determina se o valor armazenado
corresponde ao bit 0, ou ao bit 1, sendo, portanto, uma memória analógica. Uma
característica do circuito é que os capacitores descarregam, ou seja, a memória
"zera" sozinha. Para evitar isso, é necessário renovar o bit armazenado (as cargas
elétricas correspondentes), através de um circuito de refresh.
Na RAM Estática (Static), o bit é armazenado através de um esquema de chaves
eletrônicas feitas com transistores, que mantém o dado enquanto o circuito estiver
energizado. Mais especificamente, os dados são armazenados em flip-flops. A
SRAM é uma memória totalmente digital,
A tabela abaixo compara algumas características dos dois tipos de memória RAM:

Comparativo entre os tipos de RAM

DRAM SRAM

Tamanho físico por bit menor maior

Consumo de energia menor maior

Custo menor maior

Desempenho inferior superior

Analisando o comparativo, parece ser muito mais interessante o uso da memória


RAM Dinâmica, porém a última característica refere-se ao desempenho. O
desempenho da SRAM é realmente muito maior, no entanto, com todos os demais
custos envolvidos. O que ocorre na prática é que os dois tipos são utilizados nos
computadores, a saber:

 SRAM – Memória Cache

 DRAM – Memória Principal

Memória Principal
A memória principal emprega RAM Dinâmica e é construída a partir de células
básicas que armazenam um único bit. Essas células são organizadas em uma matriz
que possui um conjunto de posições endereçáveis, que podem ser lidas, ou escritas.
Cada matriz é um circuito integrado de memória RAM. Para atingir a quantidade
de endereços necessária e, ou, o tamanho adequado em cada posição, esses
circuitos integrados são devidamente interligados. Uma forma muito comum é
organizá-los em placas de circuito impresso chamados de módulos de memória ou,
popularmente, devido à semelhança, de pente de memória (vide figura a seguir).
Funcionalmente, a memória principal armazena todos os programas em execução e
as informações manipuladas por esses programas. Portanto, ela e muito usada e seu
desempenho é um ponto crucial para qualquer sistema computacional. Para
melhorar o desempenho da memória principal são empregadas uma série de
técnicas.

 SDRAM – RAM Dinâmica Síncrona.

o Emprega sinal de clock para sincronizar as


operações e melhorar o desempenho.

 DDR – Double Data Rate (DDR-SDRAM).

o Permite que os dados sejam transferidos


quando o clock vai de 0 para 1 (transição de
subida) e de 1 para 0 (transição de descida),
resultando em uma taxa de dados duplicada.

 Multi Channel (dual channel, etc.).

o Melhora o desempenho da memória


acessando mais de uma posição de memória
ao mesmo tempo, cada uma através de um
canal de memória. Assim, o desempenho é
aumentado não por se transferir os dados em
menor tempo, mas pela transferência de mais
dados de cada vez, aproveitando o princípio
do paralelismo.

Essas técnicas todas são combinadas e, mesmo assim, a maior parte dos sistemas
computacionais requer o emprego de mais um nível hierárquico para melhorar o
desempenho da memória principal: a memória cache.
Módulo (pente) de memória RAM Dinâmica

NOVAS TECNOLOGIAS DE MEMÓRIA


As memórias RAM Dinâmicas têm desempenho baixo, enquanto as memórias
RAM Estáticas ainda sofrem com custo, tamanho e consumo de energia. Com isso,
têm sido pesquisadas novas tecnologias de memórias que possam substituir as
memórias RAM quanto à tecnologia. Do ponto de vista funcional, deseja-se
também simplificar a hierarquia de memória, eliminando-se a necessidade da
memória cache (com uma nova memória de alto desempenho), ou integrando a
memória principal e a memória secundária (com uma memória não volátil).

Algumas das tecnologias em estudo atualmente incluem:

 Memristor (MRAM);

 Spin-transfer-torque RAM (STT-RAM);

 Phase Change Memory (PCM).

Memória Cache
Para melhorar o desempenho do sistema de armazenamento, foi introduzida a
memória cache. Trata-se de uma pequena quantidade de memória rápida (RAM
Estática) colocada entre a CPU (registradores) e a lenta memória principal, baseada
na memória RAM Dinâmica. Como a SRAM é totalmente digital e utiliza a mesma
tecnologia construtiva dos microprocessadores, a memória cache é construída
dentro do circuito integrado microprocessador. A figura a seguir ilustra o
posicionamento da memória cache:

Posicionamento da Memória Cache

O termo "cache" tem origem no francês e significa "escondido". Isso porque ela é
totalmente controlada por hardware.
A cache funciona da seguinte forma:

 A CPU requisita à memória o conteúdo de uma


determinada posição

 O controle da cache verifica se aqueles dados estão


disponíveis na cache.

 Se estiverem, fornece o dado à CPU (rápido).

 Se não, lê o bloco de dados solicitado na memória


principal e copia para a cache, para só então fornecer
os dados à CPU.

Portanto, para que realmente haja uma melhoria no desempenho do sistema, o ideal
é que tudo o que a CPU necessite da memória principal esteja na memória cache.
Para "saber" a informação a ser guardada na memória cache, são empregados dois
Princípios de Localidade:

 Princípio de Localidade Temporal

o Uma vez acessada uma determinada posição


de memória, ela tende a ser acessada outra
vez no futuro próximo. O que costuma
ocorrer com os dados.

 Princípio de Localidade Espacial

o Uma vez acessada uma determinada posição


de memória, as posições subsequentes
tendem a ser acessadas no futuro próximo. O
que costuma ocorrer com as instruções.

A CPU sempre solicita uma única posição de memória por vez, porém, para
melhorar o desempenho, o circuito de controle da memória cache traz um bloco de
dados de cada vez. No entanto, é um bloco bem menor que um setor de um disco
rígido. Em geral o tamanho de bloco empregado na memória cache é um conjunto
de 4 a 8 posições de memória (dependendo da arquitetura).
O tamanho da memória cache é uma das características mais importantes. Pouca
memória cache não proporcionará uma melhoria significativa de desempenho e,
muita memória cache, além da questão do tamanho físico, consumo e custo,
também não oferecerá ganhos adicionais. Cada fabricante de microprocessador
define o tamanho ótimo para seus modelos e veremos logo adiante como descobrir
isso na prática.
Como a cache é menor que a memória principal, consequentemente terá uma
menor quantidade de endereços e menos bits para representá-los. Assim, é
necessário estabelecer uma correspondência entre o endereço original do bloco de
dados na memória principal e o bloco de dados gravado na memória cache. Esse
processo é chamado de função de mapeamento e, o mais comum é o associativo em
conjuntos.
Quando a memória cache está cheia, é necessário liberar espaço para gravar um
novo bloco de dados (sobrescrever, na verdade). Para isso é necessário haver
algum critério bem definido para descartar um bloco de dados. Os mais comuns
são: o primeiro bloco gravado é o primeiro a ser descartado (FIFO), o bloco de
dados que está a mais tempo sem ser acessado (LRU) e o bloco de dados que foi
usado menos vezes (LFU).
Outra característica importante é a política de escrita. A CPU atualizará os dados
na cache, e não na memória principal. Desta forma, o circuito de controle da
memória cache deve cuidar de atualizar a memória principal, o que pode ser feito
imediata e paralelamente (write-through), ou de forma cascateada (write-bacK)
com um nível da cache atualizando o próximo até chegar à memória principal.
A última característica da memória cache é o número de níveis, que dificilmente
passa de três. Trata-se de outra característica bastante peculiar a cada fabricante
mas, de forma geral, o primeiro nível da cache é dividido entre instruções e dados,
respeitando os diferentes princípios de localidade. Também é usual que o último
nível da cache seja comum (unificado) para todas as CPUs do microprocessador.
Na prática - Conhecendo a Cache do seu Computador
Você pode descobrir qual a estrutura da cache do seu computador executando um
software de identificação de hardware e desenhando o diagrama correspondente ao
seu microprocessador. No exemplo a seguir foi utilizado o CPUZ
(www.cpuid.com ), para Windows, que é freeware inclusive para usos comerciais.
Ao executá-lo é possível verificar informações sobre as CPUs, que são quatro neste
caso, e a memória cache que possui três níveis. A cache nível 1 está dividida entre
dados e instruções e, como há quatro de cada, sabemos que cada CPU tem a sua.
Cada CPU também possui sua cache nível 2, enquanto a cache nível 3 é comum a
todas as CPUs. Note a diferença de tamanho (capacidade) entre cada nível. A
descrição "8-way set associative" faz referência à função de mapeamento
"associativa em conjuntos" e "64-byte line size" ao tamanho do bloco.
Agora que viu um exemplo, desenhe o diagrama da cache do microprocessador do
seu computador!

Conhecendo a estrutura da memória cache do seu PC

Quiz
Exercício Final
Memória Principal e Memória Cache
INICIAR

Referências
STALLINGS, William. Arquitetura e Organização de Computadores - 8a edição.
Pearson Education. 2010.

VALIANTE FILHO, F. Sistema de Armazenamento (Memórias). São Paulo, 2014.


Disponível em: http://prof.valiante.info/disciplinas/hardware/sistema-de-
armazenamento-memorias . Acessado em 30.03.2015.
TANENBAUM, Andrew S. Organização Estruturada de Computadores - 5ª Edição.
Pearson Education. 2007.

MURDOCCA , Miles J.; HEURING, Vincent P. Introdução à Arquitetura de


Computadores. Campus. 2000.

PARHAMI, Behrooz. Arquitetura de Computadores - De Microprocessadores a


Supercomputadores. McGraW-Hill. 2007.

CARTER, Nicholas. Arquitetura de Computadores - Coleção Schaum. Bookman.


2003.

Avalie este tópico

Índice

Biblioteca
Portal Uninove
Mapa do Site
® Todos os direitos reservados
Ajuda?

 BIBLIOTECA
 MENSAGENS
 CALENDÁRIO
 CADERNO

 VÍDEOS


 PERFIL

 Manual do AVA

 SAIR

Memória Secundária
Compreender o funcionamento e a s principais características dos principais
dispositivos da memória secundária (discos magnéticos e ópticos).

NESTE TÓPICO

Marcar
tópico

A memória secundária deve armazenar todos os programas (inclusive o sistema


operacional) e arquivos do sistema. Para que sejam executados, ou acessados, eles
devem ser levados até a memória principal que se comunicará diretamente com a
CPU. Portanto a memória secundária não é a memória de trabalho, mas antes uma
espécie de "depósito" de dados. Isso irá requerer maior capacidade. Esses dados
também ficarão lá por um longo prazo e portanto precisaremos de uma tecnologia
de memória que não seja volátil. Embora não seja a regra geral, eventualmente
esses dados poderão ser transportados, requerendo a portabilidade da memória.
Para cumprir esses requisitos, a memória secundária é baseada em periféricos de
armazenamento controlados por módulos de E/S conhecidos como controladores.
Por isso a memória secundária também é chamada de memória externa.
Os principais dispositivos empregados na memória secundária são:

 Disco magnético - disco rígido (HD)

 Dsco óptico - CD, DVD e Blu-Ray

 Memória Flash - pen drive, cartão de memória e SSD


A respeito da memória Flash aplica-se o que foi estudado nas memórias de
semicondutor. Outro dispositivo que vem sendo substituído é a fita magnética,
utilizada basicamente para cópia de segurança (backup) de dados.
Detalharemos a seguir o funcionamento dos discos magnéticos e ópticos.
Discos Magnéticos
Há algum tempo usavam-se discos magnéticos flexíveis, os disquetes, por isso o
nome disco rígido, ou HD, do inglês "hard disk". Ao olharmos um HD, vemos um
"bloco retangular", normalmente com uma placa de circuito impresso de controle
aparente e um outro lado fechado. É este lado que abriga o motor para girar o
disco, o mecanismo de de leitura e gravação e um ou mais "discos rígidos" para o
armazenamento dos dados. Os discos em si são feitos de vidro, ou alumínio, e
recoberto por material magnetizável. Eles são chamados de pratos e podem ser
gravados dos dois lados (faces). A figura a seguir mostra o interior de uma unidade
de disco rígido.

Disco Magnético

Os dados são gravados nos disco através de partículas magnetizáveis


micrométricas (1 micrômetro é um milésimo de milímetro) perpendicularmente à
superfície do disco. Essas partículas corresponderão aos bits 0, ou 1, conforme a
orientação com o campo magnético. O elemento de gravação é bastante similar a
um eletroímã. A leitura é feita através de um sensor magnetorresistivo cuja
corrente varia conforme a direção do campo magnético. O conjunto é conhecido
como cabeçote de leitura e gravação e é necessário ao menos um por lado dos
pratos que sejam utilizados. Os cabeçotes são fixados em braços que os deslocam
ao longo do disco.
O diagrama abaixo mostra o detalhe do processo de leitura e gravação.

Leitura e gravação em um HD
Fonte: Stallings (2010)

A foto abaixo mostra um detalhe do braço de um disco rígido com vários pratos.
Disco Rígido - Detalhe do cabeçote e dos pratos.

Os dados em um disco magnético, e também em um disco óptico quando usado


para dados, são organizados em trilhas e setores. As trilhas são os círculos
concêntricos (anéis) ao longo da superfície dos pratos. Uma mesma trilha, ao longo
de todas as faces, é chamada de cilindro. Os setores são as subdivisões das trilhas.
As memórias secundárias são sempre gravadas em blocos e o setor é o bloco de
dados mínimo de um disco magnético. Como os dados são gravados fisicamente
(partículas magnetizáveis), é necessário haver uma separação física, um espaço
livre, entre as trilhas e entre os setores, chamados de lacunas.
Além disso, para ler e gravar os dados no disco, é necessário poder identificar qual
superfície de qual prato, qual a trilha e qual o setor a ser lido ou escrito. Portanto
essas informações precisam estar identificadas no disco. Também será preciso
manter uma espécie de "índice" para saber em qual trilha e setor se encontra
determinado arquivo, ou onde há espaço livre para gravar uma nova informação. A
formatação corresponde justamente à ação de organizar essa estrutura no disco e
criar esse "índice", de acordo com um determinado padrão de sistema de arquivos.
A figura a seguir mostra visualmente a organização dos dados nos discos:

Organização dos dados em um disco

O campo ECC é utilizado para verificação de erros. Realiza-se uma operação


matemática com os dados a serem gravados e o resultado é armazenado no campo
ECC. Quando o setor é lido, esse valor é calculado novamente. Caso o valor
calculado na leitura seja igual ao valor armazenado, sabe-se que não houve
nenhum problema. Os dados estão íntegros e podem ser utilizados. Caso o valor
seja diferente, sabe-se que há erros.
Os discos utilizam método de acesso direto. O processo de leitura e escrita
funciona da seguinte forma:

 O braço é movimentado para que o cabeçote se


posicione sobre a trilha a ser acessada;

 Aguarda-se que o setor a ser acessado passe sob o


cabeçote (o disco não para de girar);

 Efetua-se a leitura, ou gravação, dos dados.

O parâmetro de desempenho mais importante para um disco é a taxa de


transferência de dados (throughput), tanto de leitura como de escrita. A taxa de
transferência de um disco é medida normalmente em bytes por segundo (B/s) ou
múltiplos, como o MB/s. O outro parâmetro de desempenho importante é o tempo
de acesso, calculado em tempos médios, correspondendo a soma dos tempos de
busca e latência rotacional. O tempo de busca refere-se ao movimento do cabeçote
de leitura e gravação até a trilha e a latência rotacional ao tempo do giro do disco.
Discos Ópticos
Os discos ópticos foram desenvolvidos originalmente para indústria do
entretenimento, para o armazenamento de áudio (CD), vídeo (DVD) e vídeo em
alta definição e jogos eletrônicos (Blu-Ray). Porém, como em todas essas
aplicações o formato de armazenamento é digital, o uso dos discos ópticos na
informática foi natural.
Os discos ópticos são feitos de policarbonato recoberto com uma camada de
material reflexivo e uma camada protetora. Os dados são gravados através de
sulcos (depressões) ao longo da camada reflexiva na superfície do disco. A
presença ou ausência desses sulcos determina a correspondência ao valor binário,
de acordo com um esquema de codificação de linha. A leitura dos dados é feita
incidindo-se um raio laser na superfície do disco e detectando-se sua reflexão
através de um sensor óptico.
A imagem a seguir ilustra esse processo, representando-se uma vista lateral de uma
unidade de disco óptico em funcionamento.
Funcionamento de um Disco Óptico.

Os discos ópticos podem ser de três tipos:

 ROM – Read Only

o Somente leitura. Corresponde aos discos


"fabricados", cujos dados são gravados
prensados em uma camada de alumínio.

 R – Recordable

o Graváveis. Os dados são gravados em uma


camada de resina reflexiva. Para a gravação
é necessário o uso de um laser de potência
superior ao usado para leitura, para poder
derreter essa resina. A expressão "queimar a
mídia" é realmente literal!

 RW – Rewritable

o Regraváveis. Funciona como o gravável,


porém com uma resina especial que
possibilita a regravação.

Além disso, a despeito de outros padrões que não foram amplamente aceitos pelo
mercado, há três gerações de memória ópticas disponíveis:
 CD (Compact Disc)

o Possui uma única camada de dados de cerca


de 650MB.

 DVD (Digital Versatile Disk ou, originalmente, Digital


Video Disc)

o Até duas camadas de 4,7GB por face.

 Blu-Ray

o Até duas camadas de 25GB por face.

A dupla camada é relativamente comum, mas a dupla face nem tanto, pois é
necessário um leitor duplo extremamente caro, ou o desconforto de se virar o disco
no leitor.
Sem considerar as aplicações de cada mídia, com os respectivos padrões de áudio e
vídeo, a diferença fundamental entre o CD, o DVD e o Blu-Ray é o tamanho dos
bits, trilhas e setores e a largura do feixe de raio laser necessário. A propósito, a
próxima foto mostra o laser de uma unidade de DVD.

Detalhe do funcionamento dos discos ópticos.

As memórias ópticas estão em declínio atualmente, tanto na indústria do


entretenimento como na informática, sendo substituídas por discos rígido,
memórias flash e serviços de streaming.
Quiz
Exercício Final
Memória Secundária
INICIAR

Referências
STALLINGS, William. Arquitetura e Organização de Computadores - 8a edição.
Pearson Education. 2010.

VALIANTE FILHO, F. Sistema de Armazenamento (Memórias). São Paulo, 2014.


Disponível em: http://prof.valiante.info/disciplinas/hardware/sistema-de-
armazenamento-memorias . Acessado em 30.03.2015.
TANENBAUM, Andrew S. Organização Estruturada de Computadores - 5ª Edição.
Pearson Education. 2007.

MURDOCCA , Miles J.; HEURING, Vincent P. Introdução à Arquitetura de


Computadores. Campus. 2000.

PARHAMI, Behrooz. Arquitetura de Computadores - De Microprocessadores a


Supercomputadores. McGraW-Hill. 2007.

CARTER, Nicholas. Arquitetura de Computadores - Coleção Schaum. Bookman.


2003.

Avalie este tópico

Índice

Biblioteca
Portal Uninove
Mapa do Site
® Todos os direitos reservados
Ajuda?

 BIBLIOTECA
 MENSAGENS
 CALENDÁRIO
 CADERNO

 VÍDEOS

 PERFIL

 Manual do AVA

 SAIR

Sistema de Entrada e Saída (E/S)


Conhecer o sistema de entrada e saída de um sistema computacional e compreender
o funcionamento dos módulos de E/S e dos periféricos.

NESTE TÓPICO

Marcar
tópico

O sistema de Entrada e Saída (E/S) ou, em inglês, input output (I/O), é um dos
componentes básicos de qualquer sistema computacional. Ele é composto
basicamente por Módulos de Entrada e Saída e periféricos. Módulo de E/S é, por
assim dizer, o nome genérico dos controladores de disco, controladores de
interface, placas de vídeo, etc.
Módulo de E/S
Os módulos de E/S são conectados à CPU através do barramento do sistema e são
as ligações do sistema computacional com o mundo externo. Sua função principal
é permitir a comunicação entre o periférico que ele controla e a CPU, através do
barramento. Existem algumas razões para não ligarmos os periféricos diretamente
ao barramento do sistema, dentre elas:
 Há uma grande variedade de periféricos. Cada um tem
sua lógica de operação e, portanto, seria difícil para a
CPU controlar cada um deles;

 Outro problema é o fato dos dispositivos externos


apresentarem uma taxa de transferência de dados muito
menor que aquela estabelecida entre CPU e memória.
Logo, seria inadequado usar o barramento do sistema
para fazer uma comunicação direta entre CPU e
periféricos;

 O formato dos dados e o tamanho das palavras usados


pelos periféricos podem ser diferentes dos utilizados
pelo computador.

Assim, os módulos de E/S fazem a conexão entre os periféricos e os demais


componentes do sistema computacional. Os módulos de E/S se comunicam com os
perfiéricos transferindo dados, informações de controle e de estado dos periféricos
ou da operação.
As funções mais importantes de um módulo de E/S são:

 Controle e temporização;

 Comunicação com a CPU;

 Comunicação com os periféricos;

 Armazenamento temporário de dados;

 Detecção de erros.

A detecção de erros é responsável por informar o processador sobre o mau


funcionamento (mecânico ou elétrico) do periférico, por exemplo: uma falha no
disco, ou a falta de papel na impressora.
O diagrama a seguir mostra as conexões dos módulos de E/S.
Conexões de um módulo de E/S
Fonte: Stallings (2010)

A quantidade de dispositivos que um módulo de E/S consegue controlar e a


complexidade deles podem variar significativamente. Conforme podemos ver na
figura seguinte, os dados transferidos entre o módulo e o computador são
armazenados temporariamente em registradores de dados. Além disso, existem
registradores de estado para informar a situação atual do dispositivo. Cada um dos
módulos de E/S possui um endereço distinto para ser referenciado pelo
processador. Dessa forma, o intuito do módulo de E/S é dar ao processador uma
visão simplificada da grande variedade de periféricos.
Ao executar uma operação de E/S em um programa, a CPU envia um comando
para o módulo de E/S apropriado, solicitando uma operação específica. Para que
uma instrução de E/S seja executada, o processador gera um endereço (dizendo
qual é o módulo de E/S solicitado) e transmite via barramento esse endereço com a
operação requerida.
Os tipos de comandos de E/S são:

 Controle

o Ativa um periférico e indica uma ação.

 Teste:
o Verifica as condições de estado do periférico
associado ao módulo de E/S.

 Leitura:

o Solicita a leitura de itens de dados do


periférico. O módulo de E/S os armazena no
registrador de dados interno até que o
processador solicite a transferência deles
para o barramento de dados.

 Gravação:

o CPU ordena ao módulo de E/S que pegue o


dado do barramento de dados e o armazene
no periférico.

Diagrama de blocos de um Módulo de E/S


Fonte: Stallings (2010)

Periférico
Existem diversos tipos de dispositivos externos, mais conhecidos como periféricos.
Eles podem ser divididos em:
 periféricos voltados para a comunicação com o
usuário:

o teclado, vídeo, impressora, etc.

 periféricos voltados para a comunicação com a


máquina:

o discos magnéticos, sensores, etc.

 periféricos voltados para a comunicação com


dispositivos remotos:

o modem, placa de rede, etc.

Confira a seguir o diagrama de blocos de um periférico.

Diagrama de blocos de um periférico


Fonte: Stallings (2010)

Os sinais de controle indicam o tipo da operação (leitura ou escrita) ou alguma


operação de controle, como movimentar a cabeça do disco para uma determinada
posição. Os dados são bits a serem enviados ou recebidos do módulo de E/S. Já os
sinais de estado indicam o estado propriamente dito do dispositivo, como, por
exemplo, pronto ou não (ready/not-ready).
O buffer é uma área de armazenamento temporário de dados. O transdutor é o
responsável por converter dados codificados como sinais elétricos para alguma
outra forma de energia.
Na comunicação do periférico com a CPU, as seguintes etapas estão envolvidas:

 A CPU interroga o módulo de E/S sobre o estado do


periférico;

 O módulo de E/S informa o estado do periférico à


CPU;

 Se o dispositivo estiver pronto, o processador solicita a


transferência dos dados enviando um comando para o
módulo de E/S;

 Uma palavra de dados é obtida do periférico pelo


módulo de E/S;

 O módulo de E/S transfere os dados para a CPU.

Técnicas de Operações de E/S


Existem três técnicas diferentes que podem ser utilizadas durante a realização de
operações de E/S, são elas:

 E/S programada;

 E/S dirigida por interrupção;

 Acesso direto à memória (DMA).

A figura seguinte ilustra o esquema de funcionamento de cada uma dessas técnicas.


Técnicas de operações de E/S
Fonte: Stallings (2010)

E/S programada
Neste modo de comunicação a CPU, além de executar o programa, possui controle
total sobre as operações de E/S. Esse controle inclui a detecção do estado do
periférico, o envio de comandos para o módulo de E/S (leitura ou escrita) e a
transferência de dados. Por isso, toda vez que o programa em execução realiza
alguma operação de E/S, o processador tem que interromper a execução do
programa para tratar da operação solicitada, até que ela seja finalizada. Nesse
intervalo, a CPU fica testando o estado do módulo de E/S. Haverá um desperdício
de processamento, pois o processador é muito mais rápido que o módulo de E/S.
E/S dirigida por interrupção
Neste modo de comunicação a CPU não fica esperando que a operação de E/S seja
finalizada para continuar a execução do programa, como acontece no caso da E/S
programada. Em vez disso, a CPU emite um sinal para o módulo de E/S com a
operação solicitada e continua executando outras instruções do programa. Quando
o módulo de E/S estiver pronto para trocar informações com a CPU, ele envia um
sinal de interrupção avisando seu estado de "pronto". Após esse sinal, o
processador realiza a transferência dos dados. Para a CPU, a execução acontece do
seguinte modo:

 CPU envia um sinal de leitura para o módulo de E/S e


continua com a execução do programa;

 Sempre ao final de cada ciclo de execução o


processador verifica se existe algum sinal de
interrupção de um módulo de E/S pendente. Se existir,
o contexto do programa é salvo e a interrupção é
processada, fazendo a leitura dos dados do módulo de
E/S e armazenando-os na memória;

 O contexto do programa é restaurado e sua execução


prossegue normalmente.

Devemos ressaltar que tanto na E/S programada quanto na dirigida por interrupção,
a CPU sempre é a intermediária na comunicação entre os periféricos e a memória
principal, além de gerenciar toda a comunicação.
DMA – acesso direto à memória
Quando é necessário transferir um grande volume de dados, é preciso um método
mais eficiente de transferência de dados. Especialmente para a memória secundária
(discos).
A técnica mais eficiente para transferência de dados é o DMA, sigla que significa
Direct Memory Access, ou Acesso Direto à Memória.
Nessa técnica, a CPU atua apenas para inicializar e encerrar uma operação de
transferência de dados, usualmente uma grande quantidade de dados, ao invés de
atuar a cada palavra de dados transferida. Para a transferência dos dados o módulo
de E/S pode acessar diretamente a memória principal. Obviamente é necessário que
o módulo de E/S tenha suporte para a técnica DMA.
O diagrama a seguir mostra o caminho de comunicação aberto pela técnica de
DMA.
Acesso Direto à Memória (DMA)

As informações trocadas entre o módulo de E/S com DMA e a CPU quando esta
deseja ler ou escrever um conjunto de dados em um periférico podem ser descritas
como segue:

 por meio do barramento de controle a CPU indica o


tipo de operação ao DMA;

 é fornecido o endereço do módulo de E/S


correspondente;

 é fornecido o endereço de memória para o módulo


DMA armazenar ou ler os dados;

 é fornecida a quantidade de palavras que serão lidas ou


escritas.
Suponha que um programa solicite uma leitura de um arquivo em disco. O módulo
de E/S com DMA será o responsável por controlar a operação e armazenar os
dados lidos do disco direto na memória principal, no endereço transmitido pela
CPU durante a solicitação. Ao finalizar a transferência, o DMA emite um sinal de
interrupção ao processador, indicando o término da operação. A técnica de DMA
melhora o desempenho do sistema computacional ao liberar a CPU da
intermediação da transferência de dados. Desta forma, a CPU só se envolve no
início e no fim da operação.

Quiz
Exercício Final
Sistema de Entrada e Saída (E/S)
INICIAR

Referências
MACHADO, Francis B.; MAIA, Luiz P. Arquitetura de sistemas operacionais. 4.
ed. Rio de Janeiro: LTC, 2007.

STALLINGS, Willian. Arquitetura e organização de computadores. 8ª ed. Prentice


Hall. São Paulo, 2010.

TANENBAUM. Andrew S. Organização estruturada de computadores. 5. ed. Rio


de Janeiro: LTC, 2007.

WEBER, Raul Fernando. Arquitetura de computadores pessoais. 2. ed. Porto


Alegre: Sagra Luzzatto, 2003.

_______. Fundamentos de arquitetura de computadores. 3. ed. Porto Alegre: Sagra


Luzzatto, 2004.

Avalie este tópico

Índice

Biblioteca
Portal Uninove
Mapa do Site
® Todos os direitos reservados
Ajuda?

 BIBLIOTECA
 MENSAGENS
 CALENDÁRIO
 CADERNO

 VÍDEOS

 PERFIL

 Manual do AVA

 SAIR

Arquitetura do Conjunto de
Instruções (ISA)
Compreender a arquitetura do conjunto de instruções e seu impacto na organização
dos computadores.

NESTE TÓPICO

Marcar
tópico

A Arquitetura do Conjunto de Instruções, ou Instruction Set Architecture (ISA) em


inglês, é basicamente a especificação do projeto da CPU e, por extensão, de todo o
computador. O conjunto de instruções se refere a quais instruções a CPU será
capaz de "entender", ou melhor, executar. E a arquitetura, isto é, o projeto do
conjunto de instruções, inclui também o formato que essas instruções devem ser
fornecidas à CPU, quais registradores existem e podem ser manipulados por elas,
quais os operandos manipulados por essas instruções e todas as demais
características necessárias para se escrever programas para a CPU. É também o
escopo do projeto para os projetistas da CPU e do microprocessador. Quando nos
referimos à arquitetura x86 do PC, estamos no referindo a ISA x86 (chamada pela
Intel formalmente de IA-32 e Intel 64).
As instruções, neste contexto, são as instruções de máquina, carregadas na forma
de códigos binários na memória do computador, conforme o modelo estabelecido
por Von Neumann. Toda instrução é dividida em duas partes:
 Código de operação (opcode).

o O que deve ser feito, p.ex.: soma, escrita de


dados, etc.

 Operandos.

o Os dados manipulados pela instrução.

o Os operandos podem ser divididos em


fonte e destino.

 Operando fonte.

 P.ex.: os números a
serem somados, ou
qual o dado a ser
escrito.

 Operando destino.

 P.ex.: onde será


armazenado o
resultado da soma,
ou o endereço onde
os dados devem ser
escritos.

Usualmente representamos uma instrução de máquina através de mnemônicos,


tornando-a "legível para humanos". Os operandos também podem ser
representados de forma mais amigável com o uso de variáveis, de forma similar a
uma linguagem de alto nível, ou com valores escritos em hexadecimal. Essa
representação, ainda de baixo nível de abstração, porém mais legível a humanos é
chamada de linguagem de montagem, ou assembly, em inglês.
Por exemplo, a instrução 1100 0100 0000 0101 não deve fazer muito sentido,
certo!? Mas é isso que estaria carregado na memória de um microprocessador 8085
da Intel, um dos primeiros microprocessadores de propósito geral. A mesma
instrução em assembly fica ADI 05h. ADI é o mnemônico para Add Immediate, ou
seja, somar o valor hexadecimal 5 a algum registrador, no caso, o acumulador. Em
assembly já é possível entender do que se trata a instrução.
Para converter a linguagem de montagem (assembly) em linguagem de máquina,
utiliza-se um programa montador (assembler).
A figura a seguir ilustra o processo.

Linguagem de montagem, montador e linguagem de máquina.

Tipos de Operandos
Os operandos, em um computador, podem ser basicamente:

 endereços;

 números;

 caracteres;

 dados lógicos.
Os endereços podem se referir a registradores, memória principal, ou periférico,
lembrando que a memória secundária é constituída por periféricos de
armazenamento.
Os números podem ser:

 inteiros;

 inteiros sinalizados, no formato complemento de 2, ou


usando bit de sinal;

 decimais codificados em binários (BCD - Binary


Coded Decimal);

 ponto flutuante, utilizando o padrão IEEE 754.

Os caracteres necessitam de um código para serem representados em binário. O


mais utilizado é o ASCII, sigla de American Standard Code for Information
Interchange, ou código padrão americano para intercâmbio de informações.
Os dados lógicos correspondem a variáveis booleanas, onde bits são considerados
individualmente para representar um estado, ou condição. Por exemplo, basta um
bit para controlar o estado ligado, ou desligado de um equipamento, ou se o
resultado da comparação de dois números resultou em igual, ou diferente.
Tipos de Instruções
Qualquer ISA deve possuir as instruções que permitam que o computador cumpra
suas funções básicas:

 Processar dados;

 Armazenar dados;

 Comunicar dados;

 Exercer controle (sobre o fluxo de execução das


instruções).

Para processar dados, os computadores dispõem de instruções


lógicas e instruções aritméticas. Nas instruções lógicas constam as operações
booleanas como XOR (OU Exclusivo), AND (E), OR (OU) e NOT (NÃO). Nas
instruções aritméticas temos basicamente as quatro operações fundamentais. É
comum encontrarmos também instruções para incremento (somar 1) e decremento
(subtrair 1), bastante úteis na execução de laços, e instruções de deslocamento
(shift) e rotação (rotate) que, conforme os nomes sugerem, deslocam, ou
rotacionam os bits dentro de uma palavra para a esquerda, ou para a direita.
Os mnemônicos das instruções nesse grupo podem ser similares a: XOR, AND,
OR, NOT, ADD, SUB, DIV, MUL, etc.
Para armazenar e comunicar dados, são fundamentais instruções de movimentação
de dados para viabilizar a comunicação entre os registradores da CPU, instruções
de carga e armazenamento para viabilizar a comunicação com a memória e
instruções de entrada e saída para comunicação com os periféricos.
Os mnemônicos das instruções nesse grupo podem ser similares a: MOVE, LOAD,
STOR, IN, OUT, etc.
Para controlar o fluxo dos programas, isto é, viabilizar as estruturas condicionais e
de laços, bem como a chamada e retorno de sub-rotinas, existem as instruções
de controle, também chamadas de transferência de controle, ou controle de fluxo.
Basicamente dentro desse grupo temos:
 Desvios incondicionais, ou saltos:

o Desvio (salto) imediato para o endereço de


memória especificado;

o Usada no final de um laço para provocar


sua repetição, dentre outros usos;

o Exemplo de mnemônico: JMP endereço.

 Desvios condicionais:

o Testa a condição especificada e, se


verdadeira, desvia para o endereço de
memória especificado. Se não, prossegue;

o É o resultado da compilação de qualquer


estrutura condicional (if, case, etc.);

o Exemplo de mnemônico: JZ (jump if zero,


salta se o resultado da última operação foi
zero).

 Chamadas de sub-rotina:

o Instrução CALL para chamar a sub-rotina e


RETURN (ou RET) para retornar ao
programa principal.

Dependendo da arquitetura em questão, há mais ou menos instruções em cada um


desses grupos, porém, observe que são instruções bastante elementares.
Além das instruções mencionadas, é comum haver instruções de conversão entre
formatos de números, ou de caracteres, bem como instruções exclusivas para uso
pelo sistema operacional.
A Tabela a seguir mostra alguns exemplos de instruções da arquitetura x86. Nela
os tipos de instruções estão agrupados de uma forma um pouco diferente, mas
correspondem ao encontrado nos manuais da Intel.

Exemplos de Instruções da Arquitetura x86

Mnemônico Significado

Instruções de Transferência de Dados

MOV
Movimenta (copia) dados
Dest,Fonte

XCHG
Exchange (troca) os dados entre os operandos
Op1,Op2

CBW Converte os dados de byte para word (16 bits) no acumulador

IN Dest,Porta Input (entrada)

OUT
Output (saída)
Porta,Fonte

Instruções Aritméticas

ADD
Soma o operando fonte com o destino. Resultado no operando destino.
Dest,Fonte

SUB Dest,Fonte Subtrai o operando fonte do destino. Resultado no operando destino.

DIV Op Divide o valor no acumulador pelo operando

MUL Op Multiplica o valor no acumulador pelo operando

INC Op Incrementa (+1) o operando

DEC Op Decrementa (-1) o operando

Instruções Lógicas

NEG Op Nega (Complemento de 2) o operando


NOT Op NÃO lógico. Inverte bit a bit o operando.

AND
E lógico do operando fonte com o operando destino. Resultado no operando destin
Dest,Fonte

OR Dest,Fonte OU lógico do operando fonte com o operando destino. Resultado no operando des

XOR OU-Exclusivo lógico do operando fonte com o operando destino. Resultado no op


Dest,FOnte destino

Shift Left. Desloca o operando para a esquerda a quantidade de bits indicada. Zero
SHL Op,Qtd
adicionados à direita.

Saltos (Desvios)

CALL Dest Chama a sub-rotina indicada.

RET Retorna da sub-rotina.

JMP Dest Salta para o endereço indicado.

JZ Dest Jump if Zero. Salta para o endereço se for zero (flag de zero = 1).

JNZ Dest Jump if Not Zero. Salta para o endereço se não for zero (flag de zero = 0).

Miscelânea

Agrupa outras instruções diversas.

Modos de Endereçamento
Vimos que os operandos podem estar em um registrador, na memória, ou mesmo
em um dispositivo de E/S. Mas o que a CPU deve fazer para encontrar o operando
da instrução? É essa a pergunta respondida pelos Modos de Endereçamento.
Há sete modos de endereçamento básicos que explicaremos brevemente, tomando
como exemplo uma instrução de soma, que adiciona o valor indicado na instrução
ao acumulador.

 Imediato

o O operando da instrução é o valor a ser


somado.
 ADD 07h ; soma o valor 07h ao
acumulador.

 Direto

o O operando da instrução é o endereço da


memória que contém o valor a ser somado

 ADD #AF00 ; lê o valor contido


no endereço AF00 da memória e
soma ao acumulador.

 Indireto

o É feita uma operação em 2 etapas. O


endereço indicado na instrução contém o
endereço de onde está o operando.

 ADD @AF00 ; lê o endereço


escrito na posição AF00 e volta na
memória para buscar o valor a ser
somado com o conteúdo do
acumulador.

 Registrador

o O operando da instrução está armazenado no


registrador indicado

 ADD RD ; soma o valor contido


no registrador D à memória

 Indireto via Registrador

o É feita uma operação em 2 etapas. O


registrado indicado na instrução contém o
endereço da memória onde está o operando.

 ADD @RD ; lê o endereço


armazenado no registrador D e
então busca-o na memória de
forma a obter o valor a ser
somado com o conteúdo do
acumulador.

 Indexado

o É utilizado no gerenciamento da memória


pelo sistema operacional, controle de laços e
operações iterativas.

o Este modo costuma possuir variações.


 A Pilha (Stack)

o É utilizado para manipular operandos que se


encontrem na pilha (stack) da memória.

Os modos indiretos são necessários devido à quantidade limitada de bits para se


representar qualquer posição de memória e também devido ao gerenciamento da
memória realizado pelo sistema operacional.
Formatos de Instrução e Alocação de Bits
As ISAs comerciais, frequentemente possuem mais de um formato de instrução,
isto é, mais de um padrão de bits (e mnemônicos) para representar as instruções.
Apenas considerando alguns dos exemplos do item anterior, uma instrução como
ADD 07h precisa de alguns bits para representar o código de operação (opcode) e
outros para representar o operando, no caso 8 bits para o valor 07h. Já a instrução
ADD #AF00 necessita de alguns bits para o opcode e mais 16 bits para o endereço
da memória. Assim esse computador teria, no mínimo, 2 formatos de instrução
diferentes. Se assumirmos 8 bits para o opcode esses formatos seriam:

Exemplos de formatos de instrução

Nesses exemplos assumimos 8 bits para opcode, o que nos possibilitaria até 256
(28) diferentes instruções de máquina. Se isso seria suficiente, faltaria espaço, ou
sobraria, é um outro problema que deve ser resolvido pelos projetistas da ISA, mas
é possível perceber que os modos de endereçamento, a quantidade de instruções e
os tipos de operandos, terão relação com o a alocação de bits, isto é, qual será o
tamanho total da palavra de instrução e quantos bits serão alocados para o que.
Observando novamente a tabela com os exemplos e instruções x86, é possível
notar que as instruções representadas requerem diferentes formatos de instrução,
mas também apresentam diferentes quantidades de operandos declarados na
instrução. Algumas instruções possuem um operando declarado (explícito) e o
acumulador como um operando não declarado (implícito). Outras instruções
possuem dois operandos declarados (fonte e destino) e há ainda outras que não
possuem nenhum operando declarado (atuando sobre o acumulador, por exemplo).
A quantidade de operandos que aparecem declarados na instrução é chamada
de quantidade de endereços.
As arquiteturas comerciais possuem, em geral, diversos formatos de instrução,
usando várias quantidades de endereços e com algumas variações nas alocações
dos bits.
O Projeto de uma ISA
Todas as características definidas anteriormente impactam umas nas outras,
obrigando o projetista de uma ISA a tomar decisões importantes. A ISA é, no
fundo, uma especificação técnica. Ela será implementada no produto CPU, ou
microprocessador mesmo, neste caso, e também será usada pelas empresas que
desenvolvem compiladores.
Quem projeta uma ISA deve pensar, dentre outras coisas, em...

 Quantos bits para a arquitetura?

o 8 bits, 16 bits, 32 bits, 64 bits?

 Quais tipos de operandos que serão suportados?

o O suporte a operandos de ponto flutuante irá


requerer instruções aritméticas específicas
para ponto flutuante.

o O suporte a mais de um código de caracteres


provavelmente irá requerer instruções de
conversão de um formato para outro.

 Quais instruções estarão disponíveis?

o A quantidade e a complexidade das


instruções terão impacto profundo na
implementação dos microprocessadores.
Basta notar que basicamente não há nada
além das quatro operações fundamentais nas
instruções aritméticas dos
microprocessadores comerciais (salvo
raríssimas exceções).

 Modos de Endereçamento e Registradores?

o Quais modos de endereçamento estarão


disponíveis? Irá privilegiar os modos
direto/indireto ou registrador/indireto via
registrador?

o Quantos registradores estarão disponíveis?


As operações serão focadas na memória, ou
no uso dos registradores?

Atualmente, as duas arquiteturas mais populares, ou seja, as duas implementações


de ISA mais populares são as versões 32 e 64bits do x86 (PC) e a ARM.

Quiz
Exercício Final
Arquitetura do Conjunto de Instruções (ISA)
INICIAR

Referências
JEGERLEHNER, Roger. Intel Assembler 80186 and higher CodeTable v2.3. 2003.
Disponível em http://www.jegerlehner.ch/intel/. Acessado em 31.mai.2015.

STALLINGS, William. Arquitetura e Organização de Computadores. 8ª ed.


Pearson Education. 2010.

VALIANTE FILHO, Filippo. Princípio de Funcionamento de um


Microprocessador. 5ª ed. 2013. Dsponível em
http://prof.valiante.info/disciplinas/hardware/princpio-de-funcionamento-de-um-
microprocessador. Acessado em 31.mai.2015.

Avalie este tópico

Índice

Biblioteca
Portal Uninove
Mapa do Site
® Todos os direitos reservados
Ajuda?

 BIBLIOTECA
 MENSAGENS
 CALENDÁRIO
 CADERNO

 VÍDEOS

 PERFIL

 Manual do AVA

 SAIR

Estrutura da CPU
Apresentar a estrutura da CPU e a organização dos registradores.

NESTE TÓPICO

Marcar
tópico

A CPU, — Central Processing Unit —, é constituída basicamente pela Unidade de


Controle, pela Unidade Lógica e Aritmética (ULA) e pelos registradores. Todos
devidamente interligados através de barramentos internos.
O papel da Unidade de Controle é o de controlar as demais unidades e, por
extensão, todo o computador, executando o ciclo de instrução. Todas as
transferências de dados dentro da CPU e da CPU para o restante do sistema são
comandadas pela Unidade de Controle através da geração de sinais de controle
adequados.
A unidade de controle pode ser implementada como uma máquina de estados
finitos (FSM - Finite State Machine), ou de uma maneira mais sofisticada, através
de microprogramação, onde as instruções de máquina são subdivididas em partes
ainda mais básicas, conhecidas como microinstruções. Cada instrução de máquina,
nessa abordagem, tem seu microprograma correspondente para a execução.
Embora a literatura sempre trate o modelo básico da CPU como sendo constituído
por uma ULA, atualmente temos um conceito um pouco mais amplo. A ULA é um
circuito dedicado à realização de operações aritméticas e lógicas com números
inteiros. Ao longo do tempo, as CPUs incorporaram unidades especializadas para
cálculos de ponto flutuante (FPU - Float Point Unit), cálculos matriciais e
vetoriais, carga e armazenamento (para acesso à memória), etc. Chamamos
genericamente esses componentes de Unidades Funcionais. Algumas CPUs
chegam a ter unidades funcionais bastante especializadas como para criptografia,
por exemplo.
Os registradores são circuitos formados por flip-flops, dedicados ao
armazenamento de uma palavra de dados. O controle de escrita dos registradores é
feito pelos sinais da unidade de controle.
Numa CPU há registradores dedicados a funções específicas e outros de uso livre,
chamados de propósito geral. O primeiro grupo é basicamente usado pela unidade
de controle para a implementação do ciclo de instrução e pelo Sistema Operacional
para o controle da memória e do escalonamento. Enquanto os registradores de
propósito geral cuidam dos dados da execução dos programas, ou seja, das
variáveis. Eles também são classificados como:

 Registradores visíveis ao usuário.

o Usuário entendido aqui como o programador


(assembly). São registradores que podem ser
manipulados pelo programa, para quem
programa diretamente em assembly, ou
indiretamente através do compilador.

 Registradores de controle e de estado.

o Utilizados pela unidade de controle e pelo


Sistema Operacional.

Veremos a seguir um pouco mais sobre a organização dos registradores.


Organização dos registradores
Toda CPU tem um conjunto mínimo de registradores para seu funcionamento.
O modelo de Von Neumann estipula que o programa, isto é, a sequência de
instruções a ser executada, seja armazenado na memória. A CPU deve então buscar
a instrução a ser executada na memória principal, armazená-la, decodificá-la e
executá-la. E depois buscar a próxima instrução, e a próxima...
Temos então a necessidade de dois pares de registradores para esse processo. Um
par para a comunicação efetiva com a memória e outro para o controle do
programa. Esses registradores são os seguintes:
 Contador de Programa (PC - Program Counter)

o Armazena o endereço da memória


principal onde está a próxima instrução a
ser executada. Por exemplo, se a CPU está
executando a instrução da posição 3, a
próxima instrução a ser executada será a da
posição 4 e o valor 4 estará registrado no
contador de programa. Porém, se a
instrução da posição 3 for uma instrução de
desvio, o contador de programa será
sobrescrito durante a execução da
instrução, fazendo com que a próxima
instrução a ser buscada na memória seja a
do endereço indicado na instrução de
desvio.

o Também chamado de Instruction Pointer.

 Registrador de Instrução (IR - Instruction Register)

o Armazena a instrução do programa que


está sendo executada no ciclo de instrução
atual.

 Registrador de Endereços da Memória (MAR -


Memory Address Register)

o Armazena o endereço a ser acessado na


memória principal.

o Também chamado de Latch de Endereços.

 Registrador de Dados da Memória (MBR - Memory


Buffer Register, ou MDR - Memory Data Register).
o Armazena os dados contidos, ou a serem
escritos, na posição de memória indicada
pelo registrador de endereços da memória.

o Também chamado de Latch de Dados.

Os quatro registradores apresentados se encaixam no grupo dos registradores de


controle e de estado.
Outro par de registradores se faz necessário para que a ULA possa efetuar suas
operações e armazenar os resultados. São eles:
 Acumulador

o Armazena um dos operandos das operações


a serem executadas na ULA e também os
resultados dessas operações. Muitas vezes
é referenciado nas instruções de forma
implícita.

 Registradores Auxiliares

o É preciso haver no mínimo um registrador


auxiliar para armazenar o segundo
operando a ser utilizado pela ULA, porém
o mais comum é que haja uma quantidade
um pouco maior desses registradores.

Toda vez que uma operação é realizada na ULA são gerados indicadores (flags),
também chamados de códigos de condição. Esses códigos são bits "individuais"
que trazem informações adicionais sobre as operações realizadas. Eles são
fundamentais para o processamento das instruções de desvio condicional
(instruções como IF e CASE de linguagens de alto nível). Alguns dos códigos de
condição mais comuns são:
 Zero

o Indica se o resultado da operação foi zero


(ou não)

 Sinal

o Indica o sinal do resultado da operação


(positivo ou negativo)

 Carry / Borrow

o Indica se houve o transporte na operação


aritmética. "Vai um" (carry) na adição, ou
"empresta um" (borrow) na subtração.
 Estouro (Overflow)

o Usado para indicar que o tamanho do


resultado da operação é maior do que o
tamanho da palavra. Por exemplo, na
multiplicação de dois números muito
grandes. Embora muitas arquiteturas
implementem soluções para evitar esse
problema.

 Igualdade (Equal)

o Indica se os operandos na ULA são iguais.

Algumas arquiteturas têm outras flags além dessas, ou menos flags do que essas.
Os bits dos códigos de condição normalmente são agrupados em um registrador
chamado de registrador de status ou, mais comumente, como PSW, — Program
Status Word —, ou palavra de estado do programa.
O acumulador, os auxiliares e os códigos de condição se encaixam no grupo dos
registradores visíveis ao usuário.
Além desses registradores básicos, as CPU costumam contar também
com registradores de endereços. São registradores que guardam exclusivamente
endereços de memória. Normalmente usados pelo sistema operacional para o
gerenciamento da memória controlando a segmentação, ou paginação. Também
podem ser usados por um programa através de instruções de controle de fluxo.
Esse tipo de registrador é utilizado pelos modos de endereçamento indexados. Um
caso particular de registrador de endereço é o Ponteiro de Pilha (Stack Pointer) que
serve para controlar o funcionamento da pilha da memória.
O registrador PSW, além dos códigos de condição mencionados, costumam incluir
indicadores referentes ao funcionamento geral da CPU, acessíveis exclusivamente
pelo Sistema Operacional, tais como:

 Modo supervisor (modo kernel);

o Usado para permitir que a CPU execute


determinadas instruções privilegiadas. O
kernel do sistema operacional liga este modo
ao entrar em ação e o mantém desligado para
os demais programas.

 Habilitação e inibição de interrupções;

o Usado no tratamento de múltiplas


interrupções.
 Controle da frequência de clock.

o Usado para gerenciar o desempenho e o


consumo de energia dos processadores.

Estrutura (mínima) de uma CPU


A estrutura mínima de uma CPU requer o barramento interno da CPU, a ULA e a
Unidade de Controle, além de ao menos sete registradores: MAR, MBR, PC, IR,
Acumulador, Registrador Auxiliar e PSW. Essa estrutura mínima pode ser
conferida no diagrama a seguir. Nela o registrador auxiliar foi chamado de
registrador temporário e as linhas grossas correspondem ao barramento interno da
CPU.

Estrutura mínima de uma CPU

Note que a unidade de controle se conecta a todos os demais componentes da CPU


e possui também algumas conexões externas:

 sinal de controle de leitura, ou escrita na memória


principal;

 entrada de interrupção (INT) externa, para interrupções


de E/S, falha de hardware e, dependendo da CPU,
temporização;

 circuitos de clock (cristal e clock) para sincronizar o


funcionamento da CPU e de todo o sistema
computacional. CPUs muito simples recebem um sinal
de tempo preciso, porém analógico, gerado por um
cristal de quartzo e transformam em um sinal digital
binário que é justamente o sinal de clock.
Microprocessadores comerciais podem ter uma
estrutura um pouco mais complexa, mas o clock da
CPU é o sinal principal para o sincronismo do sistema.

As CPUs comerciais possuem, naturalmente, mais registradores e mais conexões


externas. O caminho de comunicação com o sistema de E/S pode ser dedicado. É
comum haver mais unidades funcionais especializadas e surgiram técnicas para
implementação mais eficientes das CPUs, tais como pipeline e despacho múltiplo.
Isto sem mencionar os paradigmas de projeto CISC e RISC, além do surgimento de
sistemas com múltiplas CPUs.

Quiz
Exercício Final
Estrutura da CPU
INICIAR

Referências
STALLINGS, William. Arquitetura e Organização de Computadores. 8ª edição.
Pearson Education. São Paulo, 2010.

TANENBAUM, Andrew S.; AUSTIN, Todd. Organização Estruturada de


Computadores. 6ª Edição. Pearson Education. São Paulo, 2013.

VALIANTE FILHO, Filippo. Princípio de Funcionamento de um


Microprocessador. 5ª ed. 2013. Disponível
em: http://prof.valiante.info/disciplinas/hardware/princpio-de-funcionamento-de-
um-microprocessador. Acessado em 31.mai.2015.

Avalie este tópico

Índice

Biblioteca
Portal Uninove
Mapa do Site
® Todos os direitos reservados
Ajuda?
 BIBLIOTECA
 MENSAGENS
 CALENDÁRIO
 CADERNO

 VÍDEOS

 PERFIL

 Manual do AVA

 SAIR

Ciclo de Instrução e Funcionamento


da CPU
Compreender o ciclo de instrução e o funcionamento da CPU.

NESTE TÓPICO

Marcar
tópico

Em termos práticos, a única tarefa realizada pela CPU e pelo computador é a


execução de programas. As instruções que compõem os programas ficam
armazenadas na memória principal e devem ser levadas até a CPU para execução.
Até mesmo para carregar as instruções na memória, em um computador, são
necessários programas como o sistema de inicialização (o BIOS do PC, por
exemplo) que fica armazenado em uma memória ROM e tem como função carregar
o sistema operacional, que por sua vez carregará na memória e gerenciará a
execução dos demais programas.
Para se construir uma CPU, a única função que deve ser implementada é a que
busque a instrução correta na memória, decodifique-a e a execute, passando em
seguida para a próxima instrução. Esse "algoritmo do funcionamento da CPU", ou
princípio de funcionamento, é chamado de ciclo de instrução.
Já foi vista uma versão simplificada do ciclo de instrução, que pode ser dividido
em busca e execução; ou busca, decodificação e execução, conforme a figura a
seguir.

Ciclo de Instrução Básico: Busca - Decodificação - Execução

Agora é possível avaliar com mais detalhes o que acontece em cada uma dessas
etapas.
Para buscar a instrução na memória é necessário, primeiramente, saber em que
endereço da memória está a instrução a ser executada e, na sequência, trazer a
instrução (conteúdo do endereço) para a CPU. Esses passos são conhecidos como:
 Cálculo do endereço da instrução.

o O registrador contador de programa é


copiado para o registrador de endereço da
memória.

 Busca da instrução.
o A unidade de controle gera o sinal de
leitura e o conteúdo da posição solicitada é
transmitido para a CPU, chegando no
registrador de dados da memória. A
instrução é então copiada para o registrador
de instrução.

o Em geral, o que se obtém aqui é apenas o


código de operação (opcode).

Uma vez que a instrução a ser executada no ciclo de instrução atual esteja
armazenada no registrador de instrução, é possível executar a etapa da:
 Decodificação da instrução.

o A unidade de controle decodifica a


instrução (código de operação) armazenada
no registrador de instrução e passa a gerar
os sinais de controle na ordem necessária
para concluir a operação.

Neste ponto a CPU tem a instrução e finalmente "sabe" o que deve ser feito.
Podendo proceder a execução da instrução, através dos seguintes passos:
 Cálculo do(s) endereço(s) do(s) operando(s).

o Verifica onde está o operando da instrução,


ou os operandos da instrução. Os
operandos podem estar na memória, em um
registrador, ou em um periférico de
entrada.

 Busca do(s) operando(s).

o Vai até a posição de memória, registrador,


ou periférico, e copia os dados do operando
para o local adequado.

 Execução da operação.

o De posse do código de operação e dos


operandos é possível executar a instrução,
etapa que ocorre geralmente na ULA.

 Cálculo do(s) endereço(s) do(s) resultado(s).

o Verifica onde deve ser armazenado o


resultado (operando destino). Isto pode
ocorrer em um registrador, na memória, ou
em um periférico de saída.

 Armazenamento do(s) resultado(s).


o Escreve o resultado no local adequado.

o Se o contador de programa não tiver sido


modificado nesta etapa (por uma instrução
de desvio), ele é incrementado para
prosseguir para a próxima instrução.

Concluído o ciclo de uma única instrução, ele é repetido para a execução da


próxima instrução, mas, antes disso, a unidade de controle verifica se há a presença
de um sinal de interrupção. Caso tenha ocorrido uma interrupção, ela deve ser
atendida, fazendo com que a próxima instrução a ser executada seja a da rotina de
tratamento de interrupção. Esta etapa também é conhecida como ciclo de
interrupção.
O diagrama a seguir ilustra o ciclo de instrução detalhado:

Ciclo de Instrução Detalhado


Fonte: Stallings (2010)

As etapas na parte de baixo do diagrama ocorrem exclusivamente dentro da CPU.


Já as etapas na parte superior do diagrama podem envolver acesso externo. Ao
menos a instrução estará sempre na memória principal. Os operandos e os
resultados poderão estar dentro da CPU, nos registradores, ou fora, na memória
principal, ou em um periférico ainda mais lento. Criam-se então gargalos de
desempenho para o sistema que precisarão ser tratados na implementação da CPU
e do sistema.
Muitas vezes o ciclo de instrução é representado em cinco etapas, forma
comumente adotada para a implementação da pipeline de instruções:
 Busca da Instrução (Instruction Fetch);
 Decodificação da Instrução;
 Busca do(s) operando(s);
 Execução da instrução;
 Armazenamento do(s) resultado(s).
Essas cinco etapas correspondem às colunas do diagrama anterior.
Na implementação de uma CPU, para que o ciclo de instrução seja executado
adequadamente, os registradores são "zerados", isto é, levados a um estado inicial
conhecido. Isso inclui o contador de programa, para que o ciclo de instrução
comece a ser executado da primeira instrução, que pode corresponder ao sistema
operacional, ou a um sistema que se encarregará de iniciar o sistema operacional,
como no caso do BIOS no PC.
A implementação prática do ciclo de instrução terá suas peculiaridades em função
da ISA adotada na arquitetura.
A animação abaixo exemplifica o funcionamento do ciclo de instrução e, por
consequência, da CPU, utilizando a arquitetura mínima de um computador
apresentada anteriormente.
A instrução exemplificada é parte de um programa e soma o valor do operando
armazenado na memória ao acumulador. Em assembly poderia ser algo como ADD
02h.
Exemplo de Funcionamento do Ciclo de Instrução
Fonte:

Quiz
Exercício Final
Ciclo de Instrução e Funcionamento da CPU
INICIAR

Referências
STALLINGS, William. Arquitetura e Organização de Computadores. 8ª edição.
Pearson Education. São Paulo, 2010.

TANENBAUM, Andrew S.; AUSTIN, Todd. Organização Estruturada de


Computadores. 6ª Edição. Pearson Education. São Paulo, 2013.

VALIANTE FILHO, Filippo. Princípio de Funcionamento de um


Microprocessador. 5ª ed. 2013. Disponível em:
http://prof.valiante.info/disciplinas/hardware/princpio-de-funcionamento-de-um-
microprocessador. Acessado em 31.mai.2015.

Avalie este tópico

Índice

Biblioteca
Portal Uninove
Mapa do Site
® Todos os direitos reservados
Ajuda?

 BIBLIOTECA
 MENSAGENS
 CALENDÁRIO
 CADERNO

 VÍDEOS

 PERFIL

 Manual do AVA

 SAIR

Pipeline
Conhecer a técnica de pipeline (linha de montagem) para a implementação de
processadores.

NESTE TÓPICO

Marcar
tópico
Na implementação de uma CPU comum, as instruções são executadas uma após a
outra, com cada ciclo de instrução sendo executado na íntegra, em todas as suas
etapas. Isso faz com que partes significativas da CPU fiquem ociosas ao longo do
tempo. Na busca por um melhor desempenho das CPUs, os fabricantes decidiram
adaptar o conceito de linha de montagem das fábricas para o projeto das CPUs.
Em uma linha de montagem, a fabricação dos produtos é dividida em várias etapas
sequenciais. Após algum tempo, ao observarmos a linha será possível vê-la repleta
de produtos, cada um em uma etapa diferente de produção. Isso aumentou muito a
produtividade das fábricas.
Na "fábrica CPU" são produzidas instruções. Portanto é o "produto" instrução que
é dividido em etapas de produção na linha de montagem, a pipeline. Ou seja, a
execução de cada instrução é dividida em etapas, ou estágios. Se a técnica for bem-
sucedida, a produtividade, isto é, a quantidade de instruções executadas ao longo
do tempo, deve aumentar.
Para observar os ganhos da implementação do pipeline é necessário observar o
funcionamento de uma CPU sem o uso da pipeline, onde as instruções são
executadas sequencialmente, conforme a figura a seguir.

Implementação de CPU sem pipeline


Fonte: adaptado de http://prof.valiante.info/disciplinas/hardware/pipeline - Acesso em 23/06/15

Em uma CPU implementada com a técnica de pipeline, as instruções são divididas


em estágios e inseridas na pipeline (linha de montagem), de modo que as
instruções são parcialmente sobrepostas na execução. Ao longo do tempo há um
ganho decorrente do aumento do fluxo de execução das instruções. Isto é, as
instruções levam o mesmo tempo para serem completamente executadas, mas
como elas estão parcialmente sobrepostas, basta o tempo de um estágio para que
uma nova instrução termine de ser executada.
É possível observar a execução das instruções em uma CPU com pipeline na figura
a seguir.

Implementação de CPU com pipeline de 5 estágios


Fonte: adaptado de http://prof.valiante.info/disciplinas/hardware/pipeline - Acesso em 23/06/15

No exemplo, no mesmo tempo em que seriam executadas apenas 2 instruções, a


CPU com pipeline teria finalizado 6 instruções, além de já ter inseridas na pipeline
trechos de outras 4 instruções.
Os estágios apresentados no exemplo correspondem a uma das implementações
mais comuns de pipeline, conforme as etapas do ciclo de instrução:

 BI - Busca da Instrução;

 DI - Decodificação da Instrução;

 BO - Busca do(s) operando(s);

 EI - Execução da Instrução;

 AR - Armazenamento do(s) resultado(s).

Os estágios de uma pipeline sempre têm a mesma duração, ajustada pelo estágio
que leve mais tempo. Já a quantidade de estágios depende de uma série de detalhes
da implementação e tem impacto no ganho de desempenho máximo teórico, que
corresponde à quantidade de estágios da pipeline, mas que é apenas um referencial
teórico impossível de ser mantido continuamente.
O emprego da pipeline é praticamente universal nas CPUs comerciais. Mesmo
CPUs extremamente simples costumam empregar pipelines de 2 estágios,
correspondentes aos ciclos de busca e execução. E há CPUs implementadas com
pipelines de mais de 20 estágios.
Ao preencher os estágios da pipeline as instruções são carregadas sequencialmente,
pressupondo que a ordem das instruções na memória será seguida à risca. No
entanto, isso nem sempre ocorre.
Às vezes há algum problema que atrasa a linha de montagem, deixando uma ou
mais etapas vazias, até que a linha possa ser totalmente recarregada. Outras vezes a
linha de montagem tem que ser "limpa" e reiniciada, como se um pedido para
trocar o produto produzido na linha de montagem chegasse com urgência absoluta.
As situações que atrasam, ou interrompem, a pipeline são chamadas
de conflitos (hazards) e o atraso gerado para resolver a causa do conflito é
chamado de pipeline stall, ou bubble (bolha).
Existem três tipos de conflitos que acarretam em bolhas na pipeline:

 Conflito de desvio, ou de controle;

 Conflito de dados;

 Conflito estrutural, ou de recursos.

Quando a instrução carregada na pipeline não corresponde a instrução que deve ser
executada tem-se um conflito de desvio, também chamado de conflito de controle.
Ele ocorre com certa frequência porque todo programa tem alterações no fluxo das
instruções, causados por laços e desvios condicionais, por exemplo. Essas
situações naturalmente farão com que as instruções carregadas na linha de
montagem não sirvam mais e sejam descartadas, reiniciando-se o carregamento de
instruções na pipeline. Este mesmo conflito ocorre quando há um pedido de
interrupção, ou quando é trocado o programa em execução em um sistema
multitarefa. A figura abaixo mostra o impacto de um conflito de desvio na
pipeline.
Impacto de um conflito de desvio na pipeline
Fonte: adaptado de http://prof.valiante.info/disciplinas/hardware/pipeline - Acesso em 23/06/15

Em outras situações, o dado que precisa ser manipulado pela instrução seguinte na
pipeline depende do resultado da instrução anterior. Por exemplo, a instrução em
execução irá sobrescrever o acumulador e a próxima instrução carregada na
pipeline depende desse valor. Portanto será necessário atrasar a execução dessa
instrução já carregada, até que o valor do operando esteja disponível. Essa situação
é chamada de conflito de dados e gera algumas bolhas, pequenos atrasos na
pipeline, conforme pode ser visto na figura a seguir.
Impacto de um conflito de dados na pipeline

Por fim, algumas vezes é o componente requerido para a execução de um


determinado estágio que está ocupado, o que constitui um conflito estrutural,
também chamado de conflito de recursos. Um exemplo típico é que enquanto uma
instrução busca um operando na memória principal, o estágio de busca da instrução
da pipeline não pode ser executado e precisa aguardar, acarretando em uma bolha
na pipeline. O efeito é similar ao mostrado para o conflito de dados.
Para minimizar a ocorrência de conflitos, os projetistas de CPUs desenvolveram
outras técnicas bastante sofisticadas, tais como previsão de desvio e reordenação
do fluxo de instruções (execução fora de ordem).

Quiz
Exercício Final
Pipeline
INICIAR

Referências
PATTERSON, David A.; HENNESSY, John L. Organização e Projeto de
Computadores – A Interface Hardware/Software - 4ª edição. Editora Elsevier. Rio
de Janeiro, 2014.

STALLINGS, William. Arquitetura e Organização de Computadores. 8ª edição.


Pearson Education. São Paulo, 2010.
TANENBAUM, Andrew S.; AUSTIN, Todd. Organização Estruturada de
Computadores. 6ª Edição. Pearson Education. São Paulo, 2013.

VALIANTE FILHO, Filippo. Pipeline. Disponível em


http://prof.valiante.info/disciplinas/hardware/pipeline. Acessado em 01.jun.2015.

Avalie este tópico

Índice

Biblioteca
Portal Uninove
Mapa do Site
® Todos os direitos reservados
Ajuda?

 BIBLIOTECA
 MENSAGENS
 CALENDÁRIO
 CADERNO

 VÍDEOS

 PERFIL

 Manual do AVA

 SAIR

Computador com Conjunto


Reduzido de Instruções (RISC)
Conhecer e comparar os projetos de computadores RISC e CISC.

NESTE TÓPICO
Marcar
tópico

O computador IAS de John von Neumann, concluído em 1952, foi o primeiro a


possuir um conjunto de instruções. Ele era bastante simples, com apenas 21
instruções de máquina e nem sequer contava com instruções lógicas (booleanas)
para o processamento de dados, possuindo apenas instruções aritméticas. Os
computadores evoluíram rapidamente e pouco tempo depois surgiram as
linguagens de alto nível, os sistemas operacionais, o suporte a multitarefa, etc.
Para melhor suportar os novos recursos, os computadores incorporaram mais
instruções de máquina. Muitas delas cada vez mais "poderosas", ou complexas. Ao
longo da década de 1970 haviam arquiteturas comerciais com mais de 300
instruções de máquina em seu conjunto de instruções e dezenas de modos de
endereçamento, sem mencionar a variedade de formatos de instrução impostas por
essas duas características.
A "filosofia de projeto" de computadores existente até então era de que as
máquinas executavam programas e, portanto, o hardware deveria se acomodar às
evoluções do software. Os compiladores deveriam ser privilegiados.
Com maior suporte no hardware era mais fácil escrever o compilador, a tarefa da
compilação era menos custosa e o resultado gerado, isto é, o código de máquina do
software tenderia a ocupar menos espaço na memória principal. Por outro lado, a
maior parte das instruções fazia referência à memória, pois as CPUs possuíam
poucos registradores. Isso acarretava na necessidade de modos de endereçamento
indiretos.
A unidade de controle passou a ser microprogramada, isto é, as instruções de
máquina, ao serem decodificadas pela unidade de controle eram divididas em uma
sequência de microinstruções, chamada de microprograma, para serem executadas.
As microinstruções envolviam a transferência de dados entre registradores, o
acionamento da ULA, o acesso à memória e às portas de E/S. Para uma ideia
inicial da técnica de microprogramação, tomemos como exemplo uma instrução de
máquina que efetue a soma de um valor ao conteúdo armazenado na memória. Para
a execução dessa instrução, um possível microprograma deveria, (1) copiar o valor
a ser somado para o acumulador, (2) copiar o conteúdo do endereço de memória
apontado para um registrador e (3) efetuar a soma.
No começo da década de 1980, as principais arquiteturas existentes como PDP,
VAX, IBM System/370 e a relativamente recente arquitetura x86 seguiam esses
princípios e isso tornava o projeto das CPUs e, por extensão, dos computadores,
cada vez mais difícil.
Então, nessa mesma época diversos grupos de pesquisa em universidades e
empresas começaram a chamar atenção para o fato de que na maior parte do tempo
apenas um subconjunto das instruções era utilizado. Diversos estudos foram feitos
analisando essa característica, bem como o uso e o acesso à memória, o
funcionamento das pipelines e os tipos de operandos mais usados. Esses grupos
passaram a propor uma filosofia de projeto diferente, otimizando o que era usado
na maior parte do tempo, de modo a obter um melhor desempenho global do
sistema computacional. Como resultado, surgiram produtos, isto é,
microprocessadores e computadores que seguiam essa nova abordagem, que ficou
conhecida como RISC, nome dado ao computador criado na universidade de
Berkeley em 1980.
RISC significa Reduced Instruction-Set Computer, ou computador com um
conjunto reduzido de instruções. O termo acabou sendo usado para todos os
computadores surgidos dentro dessa nova filosofia de projeto. Eles passaram a se
referir aos computadores projetados anteriormente como CISC, sigla de Complex
Instruction-Set Computer, ou computador com um conjunto de instruções
complexo.
O computador RISC-I de Berkeley deu origem à arquitetura SPARC e foi a
inspiração para a arquitetura ARM, sigla que hoje corresponde à Advanced RISC
Machine. A universidade de Stanford criou a arquitetura MIPS que foi empregada
em diversos produtos. Outras arquiteturas RISC que já não existem mais foram a
DEC Alpha, HP PA-RISC e IBM PowerPC.
As características comuns às diversas implementações de arquiteturas RISC são as
seguintes:

 As operações são feitas de registrador para registrador.

 O acesso à memória é feito exclusivamente por


instruções simples de carga e armazenamento (LOAD
e STORE).
 Empregam-se apenas modos de endereçamento simples
e eficientes.

 Usam-se formatos de instrução simples. As instruções


normalmente tem todas o mesmo tamanho.

Note que as caraterísticas acima estão diretamente relacionadas à arquitetura do


conjunto de instruções (ISA). Outras características comuns às arquiteturas RISC,
na implementação dessas CPUs são:

 Há um maior número de registradores disponível.

 Enfoque na otimização da pipeline de instruções.

 A diferentes instruções possuem o mesmo tempo de


execução.

De certa forma, o foco principal dos projetistas RISC foi a otimização do


hardware, enquanto os projetistas CISC estavam mais preocupados com o
software.

Comparando RISC e CISC e entendendo


suas implicações
A tabela a seguir compara algumas características de microprocessadores de duas
implementações "puras", do final da década de 1980:

 Sun SPARC, de 1987, um RISC usado em estações de


trabalho (workstations);

 Intel 80486, de 1989, um CISC usado em


computadores pessoais (PCs).

Comparativo entre arquiteturas RISC e CISC (Stallings, 2010)

SPARC (RISC) 80486 (CISC)

Quantidade de instruções de máquina 69 235

Tamanho das instruções 4 bytes 1 a 11 bytes

Modos de endereçamento 1 11
Comparativo entre arquiteturas RISC e CISC (Stallings, 2010)

SPARC (RISC) 80486 (CISC)

Registradores de propósito geral 40 a 520 8

A maior parte das arquiteturas CISC existentes até a década de 1980 não existem
mais. Essa filosofia de projeto é seguida atualmente pela IBM em seus mainframes
e pela Intel (e AMD) na arquitetura x86 de 64 bits. Para se ter uma ideia das
ampliações feitas ao conjunto de instruções dos PCs, entre a extensão MMX,
introduzida no microprocessador Pentium MMX em 1997, e a extensão SSE3
suplementar, introduzida nos microprocessadores Core 2 Duo e Xeon em 2006,
foram adicionadas 315 instruções de máquina adicionais às ISAs IA-32 e Intel 64
dos processadores Intel. E diversas outras extensões já foram adicionadas desde
então.
Muitas das arquiteturas RISC criadas ao longo da década de 1980 também não
existem mais, restando como principais representantes a arquitetura SPARC,
adquirida da Sun pela Oracle, que ainda possui uma participação significativa no
mercado de servidores, clusters e sistemas de alto desempenho. E também a
arquitetura ARM, criada em 1985 para sistemas embarcados de baixo consumo de
energia, que teve seu uso disseminado e é quantitativamente a arquitetura mais
utilizada hoje. Curiosamente a empresa inglesa ARM apenas comercializa seus
projetos para que outras empresas fabriquem microprocessadores ARM.
Ao longo da década de 1990 os processadores CISC implementaram melhorias no
uso da pipeline e passaram a utilizar um esquema de microprogramação na unidade
de controle masi próximo aos processadores RISC. Os processadores RISC foram
incorporando algumas características mais complexas também.
A influência mútua acabou levando a projetos de CPUs relativamente híbridas,
embora ainda seja possível perceber a filosofia original do projeto. Tratam-se de
CPUs que exploram um maior grau de paralelismo e incorporam múltiplas
unidades funcionais especializadas. As CPUs de despacho múltiplo, especialmente
as superescalares.

Quiz
Exercício Final
Computador com Conjunto Reduzido de Instruções (RISC)
INICIAR
Referências
HENNESSY, John L.;PATTERSON, David A. Computer Architecture - A
Quantitative Approach, 5th Edition. Morgan Kaufmann. 2011.

PATTERSON, David A.; HENNESSY, John L. Organização e Projeto de


Computadores – A Interface Hardware/Software - 4ª edição. Editora Elsevier. Rio
de Janeiro, 2014.

RAMANATHAN, R.M. at al. Extending the Worlds Most Popular Processor


Architecture: New innovations that improve the performance and energy efficiency
of Intel® architecture. 2006.

STALLINGS, William. Arquitetura e Organização de Computadores. 8ª edição.


Pearson Education. São Paulo, 2010.

VALIANTE FILHO, Filippo. RISC e CISC. Disponível em


http://prof.valiante.info/disciplinas/hardware/risc-e-cisc. Acessado em 01.jun.2015.

Avalie este tópico

Índice

Biblioteca
Portal Uninove
Mapa do Site
® Todos os direitos reservados
Ajuda?

 BIBLIOTECA
 MENSAGENS
 CALENDÁRIO
 CADERNO

 VÍDEOS


 PERFIL

 Manual do AVA

 SAIR

Processadores Superescalares
Conhecer as técnicas de despacho múltiplo com ênfase para os processadores
superescalares (despacho múltiplo dinâmico).

NESTE TÓPICO

Marcar
tópico

Após a implementação de pipelines, memória cache e a disseminação das


arquiteturas RISC, o próximo passo foi explorar o paralelismo em nível de
instrução, ou Instruction Level Parallelism (ILP), em inglês. A ideia básica é que
algumas instruções de um programa poderiam ser executadas em paralelo, sem
prejuízo para o resultado final da execução. Note que se trata de apenas um fluxo
de instruções (thread, ou processo).
Para pôr esta ideia em prática é necessário executar mais de uma instrução ao
mesmo tempo, cada uma em sua pipeline. Portanto, é necessário emitir, ou
despachar, mais de uma instrução por vez para execução na CPU, numa técnica
conhecida como despacho múltiplo (multiple issue).
O despacho múltiplo pode ser estático, ou dinâmico. No despacho múltiplo
estático, a otimização das instruções para execução em paralelo é feita no momento
da compilação, isto significa dizer que o programa deve ser compilado para a
arquitetura específica. Possivelmente a aplicação mais conhecida desta técnica
tenha sido feita pela Intel (e HP) nos processadores Itanium, no que foi chamado
de EPIC, — Explicitly Parallel Instruction Computer —, ou computador com
instruções explicitamente paralelas.
A outra abordagem para o despacho múltiplo é o despacho múltiplo dinâmico,
onde a otimização das instruções paralelizáveis é feita no momento da execução
pelo próprio hardware. Os processadores capazes de fazer isso são chamados
de superescalares.
Os processadores superescalares surgiram no final da década de 1980, como uma
evolução mais ou menos natural das arquiteturas RISC, muito embora também seja
aplicável a processadores CISC, beneficiados pelo emprego de microprogramação.
Eles constituem o padrão atual para implementação de processadores.
Um programa, ou seja, uma sequência de instruções, em geral é bastante diverso.
Muitas instruções poderiam ser executadas paralelamente sem dependências, ou
prejuízos para os resultados. Por outro lado, do ponto de vista do hardware, a
incorporação de operações de ponto flutuante requer uma "ULA de ponto
flutuante". O conceito pode ser expandido para que determinadas operações sejam
realizadas em unidades especializadas. Essas unidades são chamadas de unidades
funcionais e um processador superescalar possui várias delas que pode ser usadas
em paralelo. Dentre as unidades funcionais mais comuns, destacam-se:

 Unidade de inteiros, ou a ULA tradicional, que muitos


processadores possuem mais de uma;

 Unidade de ponto flutuante (FPU — Floating Point


Unit);

 Unidade de cálculo vetorial;

 Unidade de carga (load);

 Unidade de armazenamento (store).

Eventualmente pode haver uma unidade funcional mais complexa como uma
dedicada à criptografia, por exemplo.
A figura a seguir ilustra funcionamento de um processador superescalar básico.
Observe o paralelismo nas unidades funcionais, que correspondem ao estágio de
execução da operação da pipeline.
Funcionamento de um processador superescalar.
Fonte: Tanenbaum e Austin (2013)

Obviamente para o aproveitamento do paralelismo nessas unidades é necessário


que mais de uma instrução seja buscada e decodificada ao mesmo tempo, além dos
respectivos operandos. Isso requer a introdução de uma unidade de despacho, ou
emissão, de instruções. Neste ponto é interessante recordar que todos os
processadores superescalares possuem memória cache e que, o circuito de controle
da memória cache traz os dados da memória principal em blocos.
Para maximizar o paralelismo em nível de instruções, ou ILP — Instruction Level
Parallelism, são implementados recursos mais sofisticados como a execução fora
de ordem (out of order) e a renomeação de registradores. A ideia é que para
maximizar o uso dos recursos paralelos sejam eliminadas as dependências na
sequência de instruções através da execução em uma ordem diferente da original,
porém sem impactar o resultado final. Isso requer circuitos adicionais para a
gravação dos resultados das operações em ordem, ou ao menos de forma que não
comprometa a confiabilidade dos resultados. Para maximizar essas possibilidades o
mesmo circuito é capaz de renomear registradores, o que na verdade consiste em
utilizar registradores adicionais existentes em hardware, trocando-se a referência
original existente no código de máquina. As implementações superescalares
utilizam então, na prática, as três técnicas juntas: emprego de múltiplas unidades
funcionais, execução fora de ordem e renomeação de registradores.
Em processadores CISC, na verdade não são as instruções de máquina que são
emitidas em paralelo nas pipelines, mas sim as micro-operações (unidade de
controle microprogramada). As micro-operações são equivalente às instruções
RISC o que configura um processador CISC superescalar basicamente como um
processador RISC superescalar com uma "interface" para uma arquitetura de
conjunto de instruções CISC.
Das arquiteturas atuais, os processadores da família PC (arquitetura x86) são
implementados de forma superescalar desde o Pentium Pro (e modelos AMD da
mesma época).
Dos principais RISCs da atualidade, toda a linha UltraSPARC e os processadores
ARM Cortex-A8 em diante são superescalares.

Simultaneous Multithreading (SMT)


Até aqui, tratamos da execução de uma única sequência de instruções, onde as
instruções dentro dessa sequência podem ser executadas em paralelo. Mas há um
nível maior de paralelismo a ser explorado. O paralelismo entre diferentes
sequências de instruções. Pode-se pensar na execução de mais de um programa ao
mesmo tempo, ou de trechos independentes de um mesmo programa. Mais
tecnicamente, na execução de simultânea de múltiplas threads,
ou simultaneous multithreading (SMT).
Se uma determinada sequência de instruções não é capaz de aproveitar todo o
paralelismo disponível nas unidades funcionais, haveria um desperdício de
recursos. A técnica SMT fundamentalmente aproveita os recursos excedentes com
instruções de outra thread, ou seja, são tratadas duas (ou mais) sequências de
instruções simultaneamente ou, do ponto de vista do sistema operacional, duas (ou
mais) threads. Para que seja possível a alocação de instruções de múltiplas threads,
é necessário um conjunto de registradores de controle e de estado para cada thread.
Assim, o processador com SMT é um pouco mais complexo e caro, mas tende a
aproveitar melhor os recursos disponíveis no hardware otimizando o uso das
pipelines superescalares.
Embora simultaneous multithreading seja a nomenclatura corrente na literatura, a
Intel implementa esta técnica com o nome de hyperthreading (HT).
Outra forma mais convencional de explorar o paralelismo ao nível de threads, ou
TLP — Thread Level Parallelism, é com o uso de arquiteturas multicore, com a
implementação completa de mais de uma CPU em um mesmo microprocessador.
Porém cada CPU desse chip multicore pode implementar SMT.

Quiz
Exercício Final
Processadores Superescalares
INICIAR

Referências
HENNESSY, John L.;PATTERSON, David A. Arquitetura de Computadores -
Uma Abordagem Quantitativa - 4ª edição. Editora Elsevier.

PATTERSON, David A.; HENNESSY, John L. Organização e Projeto de


Computadores – A Interface Hardware/Software - 4ª edição. Editora Elsevier. Rio
de Janeiro, 2014.

STALLINGS, William. Arquitetura e Organização de Computadores. 8ª edição.


Pearson Education. São Paulo, 2010.

TANENBAUM, Andrew S.; AUSTIN, Todd. Organização Estruturada de


Computadores. 6ª Edição. Pearson Education. São Paulo, 2013.

VALIANTE FILHO, Filippo. Despacho Múltiplo. Disponível em


http://prof.valiante.info/disciplinas/hardware/despacho-multiplo. Acessado em
01.jun.2015.

Avalie este tópico

Índice

Biblioteca
Portal Uninove
Mapa do Site
® Todos os direitos reservados
Ajuda?

 BIBLIOTECA
 MENSAGENS
 CALENDÁRIO
 CADERNO

 VÍDEOS

 PERFIL

 Manual do AVA

 SAIR

Introdução às arquiteturas paralelas


e taxonomia de Flynn
Conhecer as principais arquiteturas paralelas e suas aplicações.

NESTE TÓPICO

Marcar
tópico

Introdução
O grande interesse por problemas cada vez mais complexos têm levado à
necessidade de computadores cada vez mais potentes para resolvê-los.
Entretanto, limitações físicas e econômicas têm restringido o aumento da
velocidade dos computadores sequenciais, ou seja, computadores que executam
instruções em série, uma após a outra pela CPU. Por outro lado, os problemas
computacionais usualmente podem ter algumas de suas partes divididas em
pedaços que teriam como ser solucionados ao mesmo tempo ou processadas em
paralelo. Processamento paralelo é então uma forma pela qual a demanda
computacional é suprida por meio do uso simultâneo de recursos computacionais
como processadores para solução de um problema.
A computação paralela é caracterizada pelo uso de várias unidades de
processamento ou processadores para executar uma computação de forma mais
rápida. É baseada no fato de que o processo de resolução de um problema pode ser
dividido em tarefas menores, realizadas simultaneamente por meio de algum tipo
de coordenação. O conceito foi originalmente introduzido no CDC 6600 em 1964
pela CDC (control data corporation). A seguir são descritos os modelos de
computação paralela existentes, conforme estabelecidos por Michael J. Flynn em
1972.
Taxonomia de Flynn
A taxonomia de Flynn abrange quatro classes de arquiteturas de computadores:
 SISD (Single Instruction, Single Data): fluxo único de
instruções sobre um único conjunto de dados.
 SIMD (Single Instruction, Multiple Data): fluxo único
de instruções em múltiplos conjuntos de dados.
 MISD (Multiple Instruction, Single Data): fluxo
múltiplo de instruções em um único conjunto de dados.
 MIMD (Multiple Instruction, Multiple Data): fluxo
múltiplo de instruções sobre múltiplos conjuntos de
dados.
SISD (Single Instruction, Single Data)
Nesta classe, um único fluxo de instruções opera sobre um único fluxo de dados.
Isso corresponde ao processamento sequencial característico da máquina de Von
Neumann e que compreende os computadores pessoais e estações de trabalho.
Apesar dos programas estarem organizados por meio de instruções sequenciais,
elas podem ser executadas de forma sobreposta em diferentes estágios (pipelining).
Arquiteturas SISD caracterizam-se por possuírem uma única unidade de controle,
podendo possuir mais de uma unidade funcional.
Por exemplo um computador pessoal que tenha apenas um processador e que esse
processador tenha uma única CPU.
SIMD (Single Instruction, Multiple Data)
Esta classificação corresponde ao processamento de vários dados sob o comando
de apenas uma instrução. Em uma arquitetura SIMD, o programa ainda segue uma
organização sequencial. Para possibilitar o acesso a múltiplos dados é preciso uma
organização de memória em diversos módulos.
A unidade de controle é única, e existem diversas unidades funcionais. Nesta
classe estão os processadores vetoriais e matriciais.
Quanto às facilidades de hardware para armazenamento, essas normalmente são
classificadas como:

 Processor Array

 Vector Pipeline

Exemplo de computadores com a arquitetura processor array são as máquinas


ILLIAC IV (Universidade de Illinois), Thinking Machine CM- 2 e MASPAR MP-
1216.
Exemplo de computadores com a arquitetura vector pipeline são as máquinas IBM
9000, Cray X-MP, Y-MP & C90, Fujitsu VP, NEC SX-2, Hitachi S820, ETA10.
As GPUs, — unidades de processamento gráfico —, também estão sob essa
classificação. Mais recentemente as GPUs tem sido usadas para computação de
propósito geral (GPGPU) em conjunto com CPUs.
MISD (Multiple Instruction, Single Data)
Um conjunto de dados é colocado concorrente em múltiplas unidades de
processamento. Cada UP opera de maneira independente via conjuntos
independentes de instruções.
Algumas utilizações de uma configuração MISD poderiam ser:

 Filtros de múltiplas frequências operando um mesmo


sinal

 Múltiplos algoritmos de criptografia tentando a quebra


de uma mensagem codificada
Não se tem conhecimento de arquitetura de máquinas comercial com múltiplas
instruções trabalhando com um único conjunto de dados concorrente. Em 1971,
uma máquina denominada como C.mmp computer foi desenvolvida na
Universidade de Carnegie-Mellon.
MIMD (Multiple Instruction, Multiple
Data)
Esta classe é bastante genérica, envolvendo o processamento de múltiplos dados
por parte de múltiplas instruções. Neste caso há várias unidades funcionais.
Este grupo envolve desde microprocessadores com mais de uma CPU, até sistemas
de alto desempenho com milhares de CPUs. Qualquer grupo de máquinas operando
como uma unidade (deve haver certo grau de interação entre as máquinas)
enquadra-se como MIMD. Alguns representantes desta categoria são os servidores
multiprocessados, as redes de estações e as arquiteturas massivamente paralelas.
Multiprocessador simétrico (SMP)
Estes ambientes são conhecidos como arquiteturas de compartilhamento total, que
são caracterizadas por até dezenas de processadores compartilhando os mesmos
recursos computacionais e rodando um único sistema operacional. Os
processadores são considerados simétricos porque têm os mesmos custos para
acesso à memória principal.
Um problema desta arquitetura é sua escalabilidade, pois, com o aumento do
número de processadores, a taxa de colisão de acesso à memória também cresce,
sendo necessária a utilização de soluções especiais de memórias de cache e
globais.
Os processadores multicore, isto é, aqueles que tema mais de uma CPU por chip,
se encaixam nessa subcategoria dos sistemas MIMD. É comum também sistemas
SMP com mais de um microprocessador.
Cluster
Um cluster, ou aglomerado de computadores, é formado por um conjunto de
computadores interligados através de uma rede, que se comportam como se fossem
um único computador. Cada computador que compões o cluster é chamado de nó.
A rede que interliga os nós precisa ser de alto desempenho, para não criar
"gargalos" que prejudiquem o desempenho. Um cluster requer a utilização de um
sistema operacional especial para essa finalidade.
Uma das principais vantagens do cluster é a escalabilidade, pois é possível
começar com poucos nós e chegar a milhares deles. É possível montar clusters
pequenos usando PCs convencionais, mas soluções de alto desempenho
normalmente utilizam hardware específico. Um dos exemplos mais conhecidos é o
dos servidores blade.
Outra vantagem dos clusters é a obtenção de um sistema de alto desempenho a um
custo normalmente mais baixo do que o de um supercomputador convencional. De
fato, a maior parte dos supercomputadores atuais são clusters.
PARA APRENDER MAIS SOBRE COMPUTADORES
DE ALTO DESEMPENHO
Há alguns sites bastante interessantes que podem fornecer mais informações sobre
computadores e computação de alto desempenho (HPC: High Performance
Computing).

Primeiramente os dois rankings de computadores de alto desempenho que, além


das listas, possuem muitas informações técnicas. Eles estão apenas em inglês.

 TOP 500: Lista semestralmente os 500 supercomputadores de


maior desempenho do planeta.
 Green 500: Lista semestralmente os 500 supercomputadores de
maior eficiência energética do planeta.
Para conhecer um pouco mais sobre datacenters especificamente há dois sites
interessantes:

 Google Data Centers: site em português que mostra os


"bastidores" dos datacenters da Google.
 Open Compute Project: site criado pelo Facebook como uma
iniciativa aberta para a construção de datacenters mais
econômicos e eficientes. Site em inglês.

Quiz
Exercício Final
Introdução às arquiteturas paralelas e taxonomia de Flynn
INICIAR

Referências
STALLINGS, Willian. Arquitetura e organização de computadores. 10ª ed.
Pearson Education. São Paulo, 2010.

TANENBAUM. Andrew S. Organização estruturada de computadores. 5. ed. Rio


de Janeiro: LTC, 2007.

MACHADO, Francis B.; MAIA, Luiz P. Arquitetura de sistemas operacionais. 4.


ed. Rio de Janeiro: LTC, 2007.
WEBER, Raul Fernando. Arquitetura de computadores pessoais. 2. ed. Porto
Alegre: Sagra Luzzatto, 2003.

_______. Fundamentos de arquitetura de computadores. 3. ed. Porto Alegre: Sagra


Luzzatto, 2004.

Avalie este tópico

Índice

Biblioteca
Portal Uninove
Mapa do Site
® Todos os direitos reservados
Ajuda?

 BIBLIOTECA
 MENSAGENS
 CALENDÁRIO
 CADERNO

 VÍDEOS

 PERFIL

 Manual do AVA

 SAIR

Arquiteturas Comerciais
Apresentar exemplos de arquiteturas de computadores comerciais

NESTE TÓPICO
Marcar
tópico

Há uma variedade de arquiteturas computacionais devidamente implementadas no


mercado. Isto é, produtos microprocessadores que podemos escolher conforme
nossas necessidades. As escolhas passam pela arquitetura do conjunto de
instruções utilizada (ISA) como, por exemplo x86 (PC), ARM, UltraSPARC ou
AVR, o que terá impacto direto nas linguagens e ferramentas de
programação disponíveis. Também deve ser considerado se o sistema
computacional irá requerer alto desempenho, baixo consumo de energia, ou alta
portabilidade. Outro aspecto é se esse sistema será um computador de propósito
geral, um computador especializado como um equipamento médico ou console de
jogos, ou ainda um sistema embarcado (embedded system), conceito onde um
sistema computacional é incorporado ou "embarcado" em um outro sistema como,
por exemplo, em automóveis ou eletrodomésticos. Além disso, muitos outros
aspectos estariam envolvidos.
Tomando como exemplo um smartphone, trata-se de um sistema computacional
que irá requerer um desempenho computacional bastante razoável, ao mesmo
tempo baixo consumo de energia e um tamanho muito pequeno. Para ajudar, ele
terá que ser capaz de lidar com uma variedade bastante grande de periféricos,
como o próprio telefone, rede sem fio, bluetooth, display (tela), tela de toque,
botões físicos, saída de áudio, cartão de memória, câmeras, etc. Atender a tudo isso
nos leva a um tipo de produto específico, o SoC, sigla de System on Chip, algo
como todo o sistema em um único circuito integrado. É fácil entender o conceito
ao perceber quão poucos componentes estão nas placas desses equipamentos
portáteis de alta tecnologia... A arquitetura quase onipresente nos atuais SoCs
destinados a smartphones, tablets e similares é a ARM, uma arquitetura RISC
desenvolvida justamente para oferecer baixo consumo de energia e que, ao longo
dos anos, conciliou esta característica com maior desempenho computacional.
Uma solução adequada para um supercomputador, por outro lado, pode demandar
sistemas muito particulares e peculiares. Ao se percorrer a lista semestral dos 500
maiores supercomputadores em atividade disponível no site TOP500
(http://top500.org ), ao lado de equipamentos com as linhas de processadores Intel
Xeon e AMD Opteron, figurarão outras arquiteturas relativamente menos
conhecidas, onde em algumas das quais é possível encontrar unidades funcionais
muito específicas como uma dedicada a extração de raiz quadrada. Algo
atualmente impensável em microprocessadores para computadores pessoais.
Nos computadores pessoais a arquitetura x86 é a predominante, utilizada em
computadores das famílias PC e Mac. Esta tendência está se consolidando também
em muitos consoles de jogos que, na verdade, possuem configurações bastante
similares a computadores pessoais.
Estas breves considerações, longe de esgotar o assunto, servem apenas como uma
introdução para como diferentes assuntos estudados na teoria se "materializam"
nos produtos e sobre a necessária adequação ao tipo de sistema computacional em
que serão utilizados.
Arquitetura AVR e Arduino
Por falar em introdução, uma plataforma muito popular e aberta (open source) para
a introdução aos sistemas embarcados e à programação é a Arduino. Mas o
"cérebro" por trás do Arduino é um microcontrolador RISC de 8 bits da Atmel,
chamado AVR. Um microcontrolador é um sistema computacional completo em
um único chip, isto é, CPU, memória e E/S. No caso específico do Arduino são
usados os modelos ATMega em diferentes versões, que equipam as placas (boards)
do Arduino, como por exemplo a Arduino Uno da foto a seguir. Essas placas
possuem conexões padronizadas às quais podem ser adicionadas placas chamadas
de shield, com conexões GSM, Ethernet, USB, etc.
Placa Arduino
Fonte: Arduino.cc - Acesso em 16/07/2015

Agora vamos analisar um pouco melhor a arquitetura AVR e o microcontrolador


ATmega, cujo diagrama em blocos pode ser visto a seguir.

Diagrama em blocos da arquitetura AVR


Fonte: Atmel (2014)

Como um microcontrolador, há mais elementos do que apenas a CPU, que ocupa


basicamente a coluna do meio do diagrama, estão presentes a memória de
programa e a memória de dados. Além deles, há uma série de módulos que
compõem o sistema de E/S, incluindo, neste caso, a SPI, — Interface Serial de
Periféricos, padrão muito comum em sistemas embarcados. Outro recursos bastante
comum para esse tipo de aplicação é o conversor analógico-digital que também
está presente, essencial para o trabalho com sensores de movimento, pressão,
temperatura, posição, luminosidade, áudio, etc. O circuito "watchdog timer",
apesar do nome curioso (cão de guarda), faz justamente o sugerido, prevenindo a
CPU de travamentos ao gerar uma interrupção, ou reset, após um tempo limite. Há
também um módulo de interrupção, que gerencia as 2 interrupções externas, o reset
e as diversas interrupções internas associadas aos temporizadores, comparadores,
conversores, etc. Esses circuitos extras é que possibilitam usar o componente para
controlar outros sistemas, como máquinas industriais, eletrodomésticos e domótica.
Na plataforma Arduino, possibilitou a criação de um barramento padrão para a
conexão das placas "shield", com periféricos dos mais diversos.
Analisemos um pouco melhor a CPU em si. O diagrama mostra claramente o
contador de programa e o registrador de instruções, usados para controlar o fluxo
de execução das instruções e indica o banco de 32 registradores de propósito geral
de 8 bits, conectados à ULA. Trata-se de uma arquitetura RISC e por isso há uma
quantidade maior de registradores, além da ênfase nas operações entre
registradores. Quaisquer dos 32 registradores podem ser usados para a operação na
ULA, sem a necessidade de um único acumulador.
No registrador de estado, o PSW da arquitetura AVR, há os seguintes códigos de
condição (flags):

 C (Carry flag) - Indica se houve carry.

 Z (Zero flag) - Indica se o rsultado foi zero.

 N (Negative flag) - Flag de sinal, indica se o resultado


foi negativo.

 V (Two's complement overflow) - Esta flag é usada em


aritmética de complemento de 2, para indicar se houve
o estouro.

 S (Sign Bit) - OU exclusivo entre as flags N e V usada


em algumas instruções.

 H (Half carry flag) - Indica a ocorrência de carry entre


os nibbles, usada em aritmética BCD (decimal
codificado em binário).

Além dos códigos de condição, completam o registrador de status um bit usado em


operações que manipulam um (único) bit, nomeado como T, e a Global Interrupt
Enable, para habilitação geral das interrupções no sistema. Com o sistema de
interrupção habilitado, cada tipo de interrupção tem seu controle específico e há
outros registradores para isso. Aliás, há uma variedade de registradores de
propósito específico (dedicados) que não aparecem no diagrama de blocos,
dedicados a temporizadores, endereçamento, conversão analógico-digital, etc. Os
32 registradores mencionados são apenas os de propósito geral.
AS CPUs AVR utilizam pipeline de 2 estágios, divididos em busca (busca e
decodificação) e execução. Cada estágio é executado em um ciclo de clock, de
forma que a cada ciclo de clock uma instrução é finalizada. Apenas instruções que
utilizam endereçamento indireto, ou indexado, ou quando um desvio é tomado, que
as instruções são processadas em mais de um ciclo de clock. É uma pipeline
bastante eficiente e com baixo custo. E já que foram mencionados os modos de
endereçamento, a ULA pode manipular dados entre registradores, ou entre uma
constante e um registrador, correspondendo na teoria aos modos imediato e via
registrador. Quanto ao acesso à memória de dados, ele pode ser direto, ou indireto,
ou uma combinação de modos indexados, chamados de indireto com deslocamento,
indireto com pré-decremento e indireto com pós-decremento. Além disso a pilha de
memória também está disponível. De certa forma é uma quantidade de modos de
endereçamento bastante grande seja para um microcontrolador, seja para uma CPU
RISC, mas justificado pelo fato de ser uma CPU de 8 bits, que se vê obrigada a
trabalhar com uma barramento de endereços da memória com largura superior.
Sobre o conjunto de instruções em si, ele é composto de 131 instruções. O tamanho
da palavra de instrução é de 16 bits e há instruções de 2, 1 e 0 endereços
(quantidade de operando explícitos). As instruções são divididas pela Atmel nos
seguintes grupos:

 Aritmética e lógica;

 Instruções de desvio (branch);

 Instruções que manipulam ou testam bits (bit and bit-


test);

 Instruções de transferência de dados;

 Instruções de controle da CPU (MCU control).

Não está em nosso escopo aqui detalhar as instruções, mas vale a pena conferir a
lista completa disponível no datasheet dos processadores ATmega. É possível fazer
o download gratuito no site da Atmel: www.atmel.com . Apenas para mencionar
uma curiosidade, os processadores AVR possuem instrução de multiplicação, mas
não de divisão. As divisões precisam ser feitas de forma iterativa, através de
deslocamentos e subtrações, nesse caso.
A esta altura devo pedir que observe novamente o diagrama em blocos e note que,
ao contrário de uma única memória, há duas. As memórias de dados e programa
aparecem separadas, da mesma forma que ocorre com o nível 1 das caches em
microprocessadores de maior desempenho. O conceito é o mesmo e uma
característica comum às CPUs RISC, chamada de Arquitetura Harvard (separação
entre memória de dados e programa). Note ainda que dada a natureza das
aplicações, não há memória cache e a memória principal está dentro do circuito
integrado microcontrolador. A memória de programa é uma Flash, não volátil,
enquanto a memória de dados é uma SRAM (RAM estática), volátil e rápida, do
mesmo tipo usado nas memórias cache. Não há memória principal externa (não ao
menos de uma forma trivial como em microprocessadores). As memórias
secundárias, como um cartão de memória, são acessadas normalmente através dos
controladores de E/S.
Finalmente, a arquitetura AVR, dada a natureza das aplicações onde é embarcada,
possui uma série de recursos para economia de energia, incluindo modos de
operação de baixo consumo.
Esta foi uma pequena análise dos princípios estudados em arquitetura de
computadores, sobre um produto comercial. Mesmo uma arquitetura simples como
a AVR ainda possui muitos outros detalhes não cobertos aqui. Caso vá utilizar um
Arduino, valerá a pena se aprofundar um pouco mais. Também vale a pena conferir
algumas informações sobre microprocessadores mais complexos, como aquele
utilizado em seu PC ou dispositivo portátil. Boa pesquisa!
LINKS ÚTEIS
Uma das melhores fontes de informação sobre os microprocessadores é no site de
seus fabricantes, onde é possível fazer download dos datasheets, os manuais dos
componentes e ter acesso a mais informações técnicas. Vale a pena visitar.
Aproveite para consultar as especificações e manuais do microprocessador
utilizado no seu computador!

 Intel: ark.intel.com

o Informações sobre os processadores da família x86,


desde versões dedicadas a sistemas embarcados
(Atom), passando por versões para computadores
pessoais (família Core), até processadores para
servidores (Xeon).

 ARM: infocenter.arm.com

o A melhor fonte de informações sobre todas as


versões disponíveis da arquitetura ARM é
justamente com quem projeta a arquitetura. A ARM
não fabrica os processadores, apenas licencia a
propriedade intelectual para que outras empresas
produzam microprocessadores (SoC) ARM.

Quiz
Exercício Final
Arquiteturas Comerciais
INICIAR

Referências
Atmel Corporation. ATMEL 8-BIT MICROCONTROLLER WITH
4/8/16/32KBYTES IN-SYSTEM PROGRAMMABLE FLASH DATASHEET.
2014.

TANENBAUM, Andrew S.; AUSTIN, Todd. Organização Estruturada de


Computadores. 6ª Edição. Pearson Education. São Paulo, 2013.

Site oficial da plataforma Arduino, disponível em http://www.arduino.cc/

Avalie este tópico

Índice

Biblioteca
Portal Uninove
Mapa do Site
® Todos os direitos reservados
Ajuda?

Você também pode gostar