Você está na página 1de 61

WEBCONFERÊNCIA III e IV

Organização e Arquitetura
de Computadores
Leopoldo França
Linguagens de programação
•Linguagens de programação: Consiste dos 1s e 0s do
código binário

•Linguagem Assembly: Lembra a linguagem de máquina,


substitui recursos mnemônicos por códigos numéricos

•Liguagens de terceira geração:


FORTRAN, COBOL, BASIC, Pascal, C/C++ e Java
Instruções

• Para comandar o hardware de um computador,


precisamos falar a linguagem dele.

• As palavras da linguagem da máquina são chamadas


de instruções.

• O conjunto de instruções formam um vocabulário.

• Normalmente representados por um código assembly


Linguagem de máquina

• Os projetistas de máquina buscam:


• Um conjunto de instruções que facilite a construção do
hardware e do compilador.
• Maximizar a performance
• Minimizar o custo
• Após aprender a linguagem de uma máquina
torna-se fácil aprender outras mais.
• Mesmos princípios
Operações aritméticas
• MIPS: add a,b,c #a=b+c
• Obs. Os nomes dos operandos não são a, b e c

• Instruções são mais rígidas que em linguagem de alto


nível
• MIPS: 3 operandos
• Exemplo: a = b + c + d + e
add a, b, c # a = b + c
add a, a, d # a = a + d
add a, a, e #a = a + e
Variáveis Assembly : Registradores

• Assembly não utiliza variáveis

• Operandos Assembly são registradores


• Número limitado de localizações especiais construídas diretamente no
hardware
• Operações podem somente ser realizadas nestes

• Como os registradores estão diretamente no hardware


eles são muito rápidos.
Variáveis Assembly : Registradores

• Exemplo:
• MIPS: 32 registradores de 32 bits

• Cada registrador tem um nome


• Os nomes começam com $

• $s0, $s1, $s2... ,$s7-> correspondem às variáveis de programa


• $t0, $t1, $t2...,$t9 -> registradores temporários

• Zero: $zero
Adição e Subtração

• Sintaxe das instruções:


• Nome da operação (add, sub)
• Operando destino
• Primeiro operando fonte
• Segundo operando fonte

add $t0, $s1, $s2


Adição e subtração

• Exemplo:
f = (g + h) – (i + j);
f $s0
g $s1
add $t0, $s1, $s2 h $s2
add $t1, $s3, $s4 i $s3

sub $s0, $t0, $t1 j $s4


Adição e subtração
• Exemplo:
a = b + c + d – e; a $s0
b $s1

add $s0, $s1, $s2 c $s2


d $s3
add $s0, $s0, $s3
e $s4
sub $s0, $s0, $s4
Instruções Lógicas

• Operações AND e OR;


• Sintaxe semelhante às operações aritméticas;
• Exemplos:
• and $t0,$s0,$s1

• or $t0,$s0,$s1
Operandos Imediatos
• Imediatos são constantes numéricas.
• São comuns em códigos, logo existem
instruções especiais para eles.
• Somar imediato:
addi $t0, $t1, 10 # $t0 = $t1 + 10
Imediato
Operandos Imediatos

• Subtração imediato:
subi $t0, $t1, 10 # $t0 = $t1 – 10

• Atribuição imediato (load imediato):


li $s0, 15 # $s0 = 15
Transferência de dados

• Transferem dados entre registradores e


memória
• Memória para registrador

• Registrador para memória


Memória para registrador

• Sintaxe da instrução de carga (load)


• Nome da operação (instrução)
• Registrador que receberá o valor
• Deslocamento numérico em bytes
• No MIPS deslocamento possui 16 bits, podendo ser positivo ou negativo.

• Registrador contendo um ponteiro para a memória.


• Nome da instrução: lw (load word)
• 32 bits são transferidos de uma vez
Registrador para memória
Também queremos armazenar o valor de um

registrador na memória.
 Nome da instrução sw (store word);

 Sintaxe idêntica a instrução load;

sw $t0,12($s0)
 Essa instrução tomará o ponteiro em $s0, somará 12 bytes a ele, e
então armazenará o valor do registrador $t0 no endereço de memória
apontado pela soma calculada
Instruções de desvio
 A instrução de desvio no MIPS é a jump (pule, ou
desvie para)

 sintaxe:
 j L1 # desvie para o label L1

 Essa instrução é equivalente ao goto


Instruções de desvio
 O MIPS possui instruções de desvio condicional
 beq (branch if equal) – desvie se igual
 bne (branch if not equal) – desvie se não igual
 Sintaxe:
beq registrador1, registrador2, L1
 Se conteúdo de registrador1 igual ao conteúdo de registrador2, desvie
para o label L1
bne registrador1, registrador2, L1
 Se conteúdo de registrador1 diferente do conteúdo de registrador2,
desvie para o label L1
Instruções de desvio

Exemplo:

if (a == 0)
a = a+1;
else
a = a-1;
Desvios condicionais
 Vamos executar o nosso trecho de código na linguagem do
MIPS:
 a : $s0

beq $s0,$zero,L1 # se a = 0 vai para L1 if (a == 0)


a = a+1;
subi $s0,$s0,1 # faz a = a -1 else
j L2 # vai para L2 a = a-1;
L1: addi $s0,$s0,1 # faz a = a+1
L2:
Laços
 Como faríamos para executar o seguinte código:

do{
a = a + 1;
}while (a != 10);

 Reescrevendo:
LOOP: a = a + 1;
if(a != 10)
goto LOOP;
Laços

 Em linguagem de máquina teríamos:

a: $s0 , 10 : $s1

do{
LOOP: addi $s0,$s0,1 a = a + 1;
bne $s0,$s1,LOOP }while (a != 10);
Exercício
 Traduza os seguintes trechos de código para o assembly do Mips:
(Usar o MARS (MIPS Assembler and Runtime Simulator) disponível
em http://courses.missouristate.edu/KenVollmar/mars/download.htm )
a) b = 0;
do{
b = b + 5;
} while (b != 50);

b) if (b == 10)
b = b - 1; Exemplo de uso do MARS:
else https://www.youtube.com/watch?v=dqfaWMotoCE
Vários outros vídeos disponíveis (buscar por MIPS)
b = b * 2;
Software: MARS - MIPS Assembler and Runtime Simulator
Memória
• Parte do computador onde os programas e os dados são armazenados.
• Elemento a ser manipulado: bit (armazena a informação na forma de bits)
• Unidade de informação a ser armazenada, recuperada ou transferida
(célula) - Grupo de n bits (n = 8)  1 Byte
• ENDEREÇO: código de identificação da localização das células
(informações).

Operações:
• ESCRITA: transferência de informações de outro componente do sistema
de computação para a memória (CPU  memória)
• LEITURA: transferência de bits da memória para a CPU, disco.
Memória
• Memória de um computador  subsistema - construída de
vários componentes (vários tipos diferentes de memória)
interligados e integrados, com o objetivo de armazenar e
recuperar informações.
• Conceitos Importantes
• Tempo de acesso
• Capacidade
• Volatilidade
• Tecnologia de fabricação
• Temporariedade
• Custo
Memória
• Em um sistema de computação não é possível construir
e utilizar apenas um tipo de memória.

• Para certas atividades, por exemplo, é fundamental que


a transferência de informações seja a mais rápida
possível.

Hierarquia de Memória
Hierarquia de Memória
Custo alto
Velocidade alta Hierarquia de Memória
Baixa capacidade

Registradores

Memória Cache

Memória Principal

Discos
Memória Secundária
Custo baixo CD-ROM
Velocidade baixa
Capacidade elevada
Hierarquia de Memória
Registradores

• Elementos superiores da pirâmide de memória, por


possuírem a maior velocidade de transferência
dentro do sistema (menor tempo de acesso), menor
capacidade de armazenamento e maior custo.

• Memórias rápidas usadas em execução de


instruções dentro do processador (objetivo: minimizar
os acessos às memórias externas ao processador).
Registradores

Podem ser divididos grosseiramente em 2 categorias

• Registradores de propósito específico


• cumprem funções específicas (Ex.: PC ou IP e SP)
• alguns só são usados pelo processador

• Registradores de propósito geral


• usados para armazenar variáveis locais e resultados intermediários
• são, em geral, simétricos e intercambiáveis (usados indistintamente)
Registradores

Os principais
registradores do
Pentium II
Registradores
• Parâmetros: Menor tempo de acesso, baixa capacidade (Ex.:
32 bits, 64 bits), dispositivos voláteis, memória de
semicondutores, armazenamento temporário e apresenta o
custo mais elevado.

EAX

RAX
Memória Principal

• A memória básica de um sistema de computação


desde seus primórdios.

• É o dispositivo no qual o programa (e seus dados)


que vai ser executado é armazenado para que a
CPU "busque" instrução por instrução.
Memória Principal - Parâmetros

• Capacidade – na ordem de GB, por exemplo.


• Dispositivos voláteis. Há normalmente uma pequena
quantidade de memória não volátil fazendo parte da
memória principal (contém o BIOS).
• Tecnologia - em sistemas atuais esta tecnologia produz
memória com elementos dinâmicos (por exemplo: DRAM).
Memória Principal - Parâmetros

• Temporariedade - variável, depende de várias


circunstâncias (p. ex.: tamanho do programa e sua duração,
a quantidade de programas que estão sendo processados
juntos, etc.). A transitoriedade com que as informações
permanecem armazenadas na Memória Principal é, em
geral, mais duradoura que na memória cache ou nos
registradores.
Memória Principal

 Quanto maior a capacidade de armazenamento (em


Bytes), maior a capacidade de processamento.

 Uso de memória virtual  Uso do HD como extensão da


Memória Principal.
Memória Principal – Endereços de Memória

• Memória – formada por um conjunto de células (posições), cada uma


guarda uma informação.
• Célula – menor unidade endereçável (tamanho padrão usual – 8 bits
– 1 byte).
• Bytes são agrupados em palavras (palavra de 32 bits tem 4
bytes/palavra).
• A maioria das instruções de uma máquina opera sobre palavras. Uma
máquina de 32 bits deverá ter registradores e instruções para tratar
palavras de 32 bits.
Memória Principal – Endereços de Memória

• Endereço da célula – número associado à célula, que


permite aos programas referenciá-la.

• Memória de n células – 0 a n – 1 endereços

• Célula de k bits – pode armazenar 2 combinações de bits.


k
Memória Principal - Ordenação dos Bytes

• Existem, basicamente, 2 formas de organização


dos bytes em uma palavra de memória
• Ordenação Big endian
• Ordenação Little endian
Ordenação Big endian

• Bytes são numerados da esquerda


para a direita (0, 1, 2,..., n-1)

• Usada por sistemas Unix


(arquiteturas SPARC, IBM
Mainframe)
Ordenação Little endian

• Bytes são numerados da direita


para esquerda (n-1, ..., 2, 1, 0)

• Usada por IBM PCs (arquiteturas


INTEL)
Memória Principal - Ordenação dos Bytes
• Exemplo:
Problemas (Processador – Memória)
• Acesso à memória, leitura e escrita, é um dos motivos para menor
velocidade de processamento.
• Processador é muito mais rápido do que a transferência de dados.

Soluções
• Processador deve executar outras instruções enquanto aguarda acesso à
memória. Isto nem sempre é possível e é difícil de implementar.
• Colocar memória principal no Chip do processador. Isto tornaria o chip
maior e mais caro.
• Uso de uma memória menor e mais rápida (em relação à memória
principal) chamada Memória Cache.
Problema: Processador - Memória
Memória Cache

• Dispositivo de memória entre a CPU e a MP (Memória Principal)


• Função: acelerar a velocidade de transferência das informações
entre CPU e MP, aumentando o desempenho dos sistemas.
• Usada para armazenamento de instruções e dados mais
frequentemente acessados do programa em execução.

• As palavras de memória mais usadas pelo processador devem


permanecer armazenadas na cache. Somente no caso de ela
não estar armazenada na cache é que a busca se dará na
memória principal.
Memória Cache

Logicamente – cache é colocada entre o processador e a memória principal.

Fisicamente – existem vários lugares possíveis para a cache.


Memória Cache

Memória cache e Memória principal.


Memória Cache – Exemplo de funcionamento do sistema

• CPU vai buscar uma nova instrução (ou dado), após a


busca inicial  acesso à memória cache.
• Instrução (ou dado) na cache  acerto (hit).
• Instrução (ou dado) não está na cache  falta/falha (miss)

Falha no acesso à cache – ocorre sempre que o processador procura uma informação na
cache e essa informação não está armazenada neste local, havendo necessidade de
buscá-la na memória principal.
Memória Cache

• Fabricada com tecnologia semelhante à da CPU (possui tempos


de acesso compatíveis, resultando numa considerável redução
da espera da CPU para receber dados e instruções da cache, ao
contrário do que acontece em sistemas sem cache).
• Há diversos tipos de memória cache utilizados em sistemas de
computação modernos: Cache para a Memória Principal (RAM
cache), Cache para Disco.

• Podem existir caches primárias (dentro do processador) e outra


secundária (fora do chip do processador) e até uma terceira
cache mais externa.
Memória Cache

• Podem ser inseridas em dois (ou três) níveis: Cache L1 (Level


1) - nível 1), Cache L2 e Cache L3.
• Cache L1 (primária) - interna ao processador.
• Cache L2 (externa ou secundária) - instalada, em geral, na
placa-mãe do computador. Atualmente: localizada no interior da
pastilha do processador, separada deste (cache backside).
• Cache L3 – Existente em alguns processadores, localizada
externamente ao processador.
• Quanto mais próxima do processador, melhor será o
desempenho do mesmo.
Memória Cache – Formas utilizadas

• Cache unificada
• Instruções e dados usando a mesma cache;
• Mais simples de projetar;
• Estabelece automaticamente um equilíbrio entre as buscas de
instruções e as buscas de dados.

• Cache dividida (Arquitetura de Harvard)


• Uma cache para instruções e outra para dados;
• Permite acesso em paralelo a instruções e a dados.
Organização das Memórias Cache do Pentium
Memória Cache - Parâmetros
• Capacidade - deve-se conciliar o compromisso de uma
apreciável capacidade com a não-elevação demasiada de
seu preço. Ex.: 16K a 2 MB
• Dispositivos voláteis.
• Tecnologia - circuitos eletrônicos de alta velocidade. Em
geral, são memórias RAM estáticas (SRAM).
• Armazenamento temporário.
• O custo de fabricação das memórias cache é alto.
Memórias cache internas à CPU ainda são mais caras do
que as externas.
Memória Secundária

• Denominada memória secundária, memória auxiliar ou


memória de massa.
• Objetivo: garantir um armazenamento mais permanente à
toda a estrutura de dados e programas do usuário - deve
possuir maior capacidade que a memória principal.
• Pode ser constituída por diferentes tipos de dispositivos,
alguns diretamente ligados ao sistema para acesso
imediato (Ex.: discos rígidos), e outros que podem ser
conectados quando desejado (Ex.: Pendrives, fitas, CD-
ROM etc.).
Memória Secundária - Parâmetros
• Tempo de acesso/ciclo de memória - são, em geral,
dispositivos eletromecânicos e não circuitos puramente
eletrônicos - possuem tempo de acesso maiores. Discos do
tipo CD-ROM: 120 a 300 ms, por exemplo, fitas magnéticas
- ordem de segundos.
• Capacidade - varia bastante dependendo do tipo de
dispositivo utilizado. Exemplos: Discos rígidos – 1, 2 TB,
CD-ROM - 700 MB, Pendrive (a capacidade depende do
dispositivo: 8, 16, 32, 64, 128 GB).
Memória Secundária - Parâmetros

• Volatilidade - não voláteis.


• Tecnologia - este parâmetro possui uma variedade imensa
de tipos, visto que, para cada dispositivo entre os já
mencionados (discos rígidos, disquetes, fitas, CD-ROM, CD
R/W, DVD, Pendrive, etc.), há diferentes tecnologias de
fabricação.
• Temporariedade - armazenamento com caráter permanente
ou, pelo menos, de longo período de armazenamento.
• Custo - bastante variado.
Tipos de Memória em uso nos computadores

Memória principal Processador (Cache L1


e Registradores)

Memória
secundária

Cache L2 (separado)
OBRIGADO

LEOPOLDO FRANÇA Professor

Você também pode gostar