Explique o funcionamento da memória cache

Propaganda
Matéria teórica de Arquitectura de Computadores
Componentes de processador.
Um processador é constituído por registos, acumulador, ALU( unidade lógica
aritmética): apontador de instruções; registador de instruções; descodificador de
instruções.
Explique resumidamente o objectivo da arquitectura RISC e as suas
características.
A arquitectura RISC é uma arquitectura que utiliza um número de instruções
reduzidas mas não mínimo, sendo os modos de endereçamento também reduzidos; os
formatos das instruções são fixos e facilmente descodificados; utiliza unidades de
controlo de tipo hardware em vez de microprogramáveis; acesso à memória é feito
através de “load’s” e “store’s”, que são o suporte para as linguagens de programação de
alto nível ( utilização de compiladores para optimizar a performance); execução de uma
instrução num único ciclo de relógio (ler 2 registos  adicionar  armazena o
resultado no registo); programação mais fácil.
Porque é que num processador RISC a “latency” e o “repeat rate” duma
ALU não podem corresponder a 1?
Como um processador de arquitectura RISC utiliza “pipelining” o tempo até
encontrar o resultado e a velocidade de executar novas operações é sempre maior que
um devido ao próprio funcionamento do “pipelining”.
Latency  tempo de espera até encontrar resultado.
Repeat rate  velocidade de execução de novas operações.
Pipelining
Repeat rate
Fig.1
Latency
Explique as características da arquitectura CISC vs RISC.
A arquitectura CISC utiliza um número de instruções mais elevado, tem uma
maior frequência de processamento, executa instruções mais complexas a um ritmo de
velocidade maior. É essencialmente usada para aplicações científicas de grande porte e
são necessárias mais instruções para ter acesso à memória e aos registos.
A arquitectura RISC tem melhor performance do que a CISC na compilação de
aplicações à base de números inteiros. O CISC é mais eficiente em aplicações
cientificas com elevados números de operações com vírgula flutuante.
1
CPU
CPU
Reg
+
*
Reg
+
I
D
*
L1
I
L1
D
L2
L2
L3
L3
Main Memory
Main Memory
RISC – memória
Alfa Digital 21164
MPP SMP
CISC – memória
Pentium II
MPP SMP
Fig.2
Faça um desenho de um CPU simples com todos os registos necessários, a ALU e
ao sistema de barramento (BUS), etc. O sistema tem de funcionar.
CPU
Data Processing Unit
AC
MQ
CIRCUITOS
LÓGICOS
ARITMÉTICOS
I/O
DR
IBR
PC
IR
AR
MAIN
MEMORY
ADDRESS
CICUITOS DE
CONTROLO
SINAIS DE
CONTROLO
Program Control Unity
Fig.3
2
Qual o perfil que uma empresa deve tomar ao desenvolver um projecto?
Uma empresa, antes de desenvolver um projecto tem de definir qual o perfil, as
características do sistema a criar. Tem de ponderar:
- Software;
- Hardware;
- Sistema MPP,SMP ou PVP;
- Arquitectura CISC ou RISC;
- Memória;
- Dispositivos de I/O (input/output);
Dê pelo menos 4 aspectos importantes a ter em conta na compra de uma
máquina.
- Confiabilidade da empresa;
- Preço;
- Cumprimento/performance;
- Atendimento ao utilizador (aplicações, programação);
Componentes a ter em conta na compra de um computador:
CPU cabinet  sheet metal, plastic, cables, nuts, batts, shipping box, manuais,
power suply e fans
CPU board  IV, FPU, MMU, cache, DRAM, video logic, dispositivos de I/O,
printer circuit board.
Dispositivos de I/O  teclado, rato, monitor, disco rígido, drives (disquetes,
cd’s)
Preço =custo dos componentes + direct cost + gross margin + desconto
Quais os elementos do preço PVP de um computador?
RAM; CPU; Cache; Disco Rígido; Placa de vídeo; dispositivos de I/O; Garantia;
Refrigeração; Dimensões da caixa.
Nota: É mais fácil baixar o preço do que aumentar a performance. Encontrar um
bom computador com uma boa performance é muito difícil.
Se não tiver resultados “benchmark” disponíveis, que pode fazer para
comparar a performance?
Podemos utilizar algoritmos de corridas assíncronas para comparar a
performance.
Assuma que deve comprar um grande computador para um laboratório
com aplicações cientificas e pode seleccionar entre n sistemas diferentes. Dê pelo
menos 4 aspectos importantes a ter em conta.
- Velocidade do CPU
- Tamanho da RAM
- Tamanho da Cache
- Placa de vídeo
3
- Tamanho e tempo de acesso do disco rígido
- Monitor
A arquitectura deve ser apropriada à utilização do sistema a adquirir. No
caso de serem necessárias muitas operações em vírgula flutuante a arquitectura
RISC será a mais apropriada. Caso sejam necessárias muitas operações em inteiros,
a arquitectura CISC é a mais indicada.
Sistemas multiprocessadores (tipos):
Vectorial – processadores fabricados para casos específicos.
Escalar – processadores normais (só podem arrancar com uma instrução).
Super escalar – o processador pode arrancar com mais de uma instrução.
PVP (Parallel Vector Processor)
Contém um reduzido número de processadores VP’s, cada um capaz de pelo
menos, 1 Gf/s de performance. O crossbar switch conecta os VP’s à shared memory
(SM). Normalmente não usam cache mas possuem um grande número de registos de
vector e um buffer de instrução.
VP
VP-vector processador
SM- shared memory
VP
…
VP
Crossbar Switch
SM
Fig.4
SM
SM
SMP (Symetric Multiprocessor)
Usa “commodity microprocessors” com caches “on” e “off” “chip”. Os
processadores estão conectados à memória partilhada através de um bit de alta
velocidade, em alguns SMP é adicionado ao bus um “crossbar switch”.
Estes sistemas são muito usados em aplicações comerciais, tais como, bases de
dados, sistemas de transacção on-line, armazéns de dados, etc.
O facto dos sistemas serem simétricos é muito importante, pois cada processador
tem igual acesso à SM, aos dispositivos de I/O e ao sistema operativo. Deste modo
alcança-se um alto nível de paralelismo, o que não é alcançado por um sistema
assimétrico ou “masterslave”.
PC
PC- microprocessador e cache
SM- shared memory
I/OB- input/output bus
PC
...
PC
Crossbar Switch
SM
SM
I/OB
Fig.5
4
MPP (Massively Parallel Processor)
Usa “commodity microprocessors” ao processar “nodes”. Usa memória física
distribuída após processar “nodes”. Usa um interconector com alta comunicação
“bandwith” e baixa latência. Pode ser escalonável até centenas ou milhares de
processadores.
MB
MB
PC
MB- memória do bus
PC- microprocessador e cache
LM- memória local
NIC- network interface circuit
LM
PC
.......
NIC
Fig.6
LM
NIC
Custom Designed Network
DSM (Distributed Shares Memory Machine)
A directoria é usada para suportar a distribuição coerente das caches. A memória
é distribuída fisicamente pelos diferentes “nodes”. O sistema hardware e software criam
a ilusão de um único espaço de endereços para os utilizadores das aplicações.
MB
MB- memória do bus
PC- microprocessador e cache
LM- memória local
DIR- cache e directório
NIC- network interface circuit
MB
PC
LM
PC
......
LM
DIR
DIR
NIC
NIC
Fig.7
Custom Designed Network
COW (Cluster of Workstation)
São variantes dos MPP a um preço mais baixo. Cada “node” de uma COW é
uma “workstation” completa, excepto os periféricos. Os “nodes” estão ligados através
de uma “low-cost commodity network” tal como a Ethernet, etc. O interface da network
está “loosely coupled” ao I/O bus. Existe sempre um disco local ( o que não acontece no
MPP). Em cada “node” reside um completo sistema operativo. Têm muitas vantagens
em termos de custo à performance, em relação aos MPP’s.
5
MB
MB- Memory bus
PC- microprocessor and cache
Bridge- interface entre memory bus
LD- Local disk
NIC- Network interface circuit
I/OB- IO Bus
MB
PC
PC
M
M
Bridge
LD
……
I/OB
NIC
Fig.8
Bridge
LD
I/OB
NIC
Commodity Network (Ethernet, etc)
COW vs MPP
Prevê-se que no futuro MPP e COW convergem, assim que existirem Gbit/s
networks, para conectar os “nodes” da COW.
MPP:
- Usados para computação de alto nível.
- Têm segurança implícita.
- Valorizam um alto número de tarefas executadas pela máquina e uma elevada
performance dos I/O e da memória.
- São mais caros e não têm suporte OS de som para processamento de sinal em
tempo real.
COW:
- Satisfazem as necessidades iterativas e de multitarefas nas aplicações.
- Necessitam de segurança especial
- Oferecem um fácil acesso aos sistemas de B.D. de larga escala.
- Não suportam DSM ou não têm “single system image”.
Explique resumidamente os 3 benchmarks Linpack.
O Linpack é um programa para resolver um denso sistema de equações lineares
através da factorização de matrizes em LU.
Os três Benchmarks Linpack são:
- Linpack 100x100  não está permitida a optimização do programa linpack.
- Linpack 1000x1000  pode ser optimizado utilizando as bibliotecas do
vendedor.
- Linpack NxN  de forma a que a dimensão tire o maior partido do
processador.
6
Explique resumidamente os dois benchmarks da SPEC.
O SPEC 95 fornece a medida da performance em computação intensiva do
processador, hierarquia de memória e componentes do compilador de um computador
para fins comparativos.
SPEC CINT95  um conjunto de 8 benchmarks de inteiros intensivos e sem
vírgula flutuante.
SPEC CFP95  um conjunto de 10 benchmarks de vírgula flutuante.
Podemos definir a performance de uma máquina como P =f*n onde f é a
frequência do relógio e n o número de instruções em cada ciclo de relógio. Então,
porque é que necessitamos de benchmarks?
Os benchmarks servem para verificar a performance de uma máquina quando
corre um determinado software e não a performance da máquina enquanto hardware.
Qual a principal diferença entre Linpack e SPEC?
A principal diferença é que enquanto o Linpack mede a performance mais ao nível do
processador, a SPEC mede a performance em todo o sistema, desde o processador,
passando pelos vários tipos de memória, até ao disco rígido. Deste modo, não basta ter
somente um bom processador é também necessário, memórias e discos com tempo de
acessos mínimos.
Benchmarks:
O objectivo dos benchmarks é medir a performance do processador na
computação intensiva, assim como a performance da hierarquia de memória e dos
componentes do compilador, num dado sistema de computação, de modo a fazer
posteriores comparações. Ou seja, benchmarks são testes que têm por objectivo avaliar
as máquinas a nível de performances. São testes feitos com aplicações reais. Estas
aplicações reais podem ser:
- 100% matemáticas: ex. Linpack (álgebra linear), BLAS (biblioteca)
- Aplicações mistas: uma parte em vírgula flutuante, mas a maioria é inteira (ex.
SPEC – conjunto de subrotinas).
Linpack vs SPEC
Linpack
O Linpack é um pacote de software (bibliotecas) para utilizar vectores e
matrizes. Os programa Linpack podem ser caracterizados como programas que têm uma
elevada percentagem de operações aritméticas em vírgula flutuante. As operações são
em vírgula flutuante. Têm por objectivo a resolução de sistemas de equações lineares
através da decomposição LU com pivotação parcial.
Tipos:
- 100x100 incógnitas - serve para ordenação de todos os sistemas testados. A
ordenação é sem optimização do software.
- 1000x1000 incógnitas – informação adicional com optimização.
7
- NxN – medir qual o pico de performance de uma máquina.
Rpeak (performance teórica) = N (nº de processadores) * f (ciclos de relógio)
* I (issuing dual quad)
Os programas podem ser caracterizados como programas que têm uma elevada
percentagem de operações aritméticas em vírgula flutuante.
Tem fins lucrativos. Testam a memória e o poder matemático.
SPEC:
A SPEC utiliza uma máquina de referência. A rapidez da máquina é comparada
com a máquina de referência.
Não tem fins lucrativos. Testam o poder matemático e as máquinas. São
aplicações reais. Testam jogos, programas e compilação.
SPECint95 – 8 programas benchmarks com operações inteiras:
- 099.go  jogo, inteligência artificial;
- 124.m88ksim  simulação;
- 126.gcc  programação e compilação;
- 129.compress  compressão;
- 130.li  interpretador, tradutor, linguagem;
- 132.ijpeg  imagem, tratamento e compressão;
- 134.perl  manipulação de texto e números;
- 147.vortex  construção e manipulação de Bases de Dados;
SPECfp95 – 10 programas com operações com vírgula flutuante
- 101.tamcatu  tradução geométrica, dinâmica de fluídos;
- 102.sulin  pressão do tempo, resolve equações usando aproximações;
- 103.suzcor  física quântica (utilização da teoria Q.G. para computação de
massa);
- 104.hydrozd  astrofísica (cálculo de jacto galácticos);
- 107.mgrid  electromagnetismo (cálculo de um campo em 3D);
- 110.applu  matemática (resolve sistemas de matrizes com pivotação);
- 125.twb3D  simulação;
- 141.apsi  precisão do tempo (estatística da temperatura);
- 145.fpppp  química (derivativas de multi-electrões);
- 146.wave  electromagnética (resolução de equações de Maxwell).
Métrica (categorias):
Inteiros vs Floating-point
Conservativa vs Agressiva
Velocidade vs Número de operação
8
Temos então as seguintes métricas compostas:
Speed
SPECint
Agre
ssiva
95
Throughput
SPECint_rate
95
SPECfl9
SPECfl_rate9
5
5
cons
SPECint
SPECint_rate
ervativa
_base95
_base95
SPECfl_
SPECfl_rate_
base95
base95
Explique a hierarquia da memória, utilizando, como exemplo, um dos
microprocessadores mais potentes do mercado.
Tamanho/Capacidade
Registo
s
Cache
Memória principal
Memória secundária
Velocidade
Reg
+
*
MB
MB
Registos
Cache
(HP PA 8000)
Memória principal
512 MB
Memória secundária
512 MB
Fig.9
Quais os microprocessadores mais potentes no mercado?
- Mips R10K
- Dec Alpha
- HP PA 8000
- 1860
Explique o pipelining dentro do chip 8086.
busca
espera
Executa
busca
busca
executa
Leitura de
dados
executa
Como há um salto as
instruções que já estavam na fila
são apagadas.
busca
espera
busca
executa
Busca
Espera
Fig.10
9
Porque é que um chip DEC Alpha tem uma Branch History Table?
Para guardar a informação dos saltos calculados através do processo de “Branch
Prediction” numa execução “Out-of-order”. Como se trata de um processador pipelining
e superescalar esta “Branch History Table” permite aumentar a sua performance pois
trata o salto de forma a não bloquear o pipelining.
Explique a execução “Out-of-order”.
É a execução de instruções fora de ordem, utilizando o processo de “Branch
Prediction” e de dependência de instruções. Numa máquina superescalar “Out-of-order”
cada instrução é legível para começar a execução logo que os seus operandos se tornem
disponíveis indiferentemente da sequência original das instruções. O hardware rearranja
as instruções de forma a manter as várias unidades de execução ocupadas.
Explicar o princípio de pipelining na adição em vírgula flutuante.
adder
Compara expoentes
shifter
Alinha mantissas e
compara expoentes
adder
Soma
mantissas
adder - shifter
Normaliza resultado
Fig.11
1º  Compara os expoentes  é feita a subtracção dos expoentes.
2 º  Alinha mantissas e iguala expoentes  um fixed-point adder identifica o
expoente mais pequeno cuja mantissa pode ser modificada para formar uma nova
mantissa Xn, ficando (Xn,Ye) = (Xn,Xe).
3º  Somar as mantissas  as mantissas Xn e Yn, agora alinhadas, são
somadas. Esta soma dos n fixed-point pode produzir um resultado não normalizado.
4º  Normalizar o resultado  contando o número K dos primeiros zeros da
mantissa trocando as posições dos dígitos da mantissa para normalizá-la, fazendo o
correspondente ajuste no expoente.
Sem utilizar o pipelining teríamos, para um registo de 64 bits, 64*4=256 ciclos,
com o pipelining vamos ter 64+3=67 ciclos.
Um chip Dec Alpha, com um consumo de 30W, uma voltagem de 3.3 volts, e
uma velocidade de 200 Mhz, tem 431 pinos. Destes pinos, 140 são para a fonte de
alimentação. Porquê 140 em vez de apenas 2?
Quando se dá um aumento ou diminuição de utilização do processador, a energia
necessária aumenta ou diminui, levando à necessidade de um aumento ou diminuição
dos pinos a serem utilizados. Poderiam ser dois pinos mas para poderem alimentar todo
o chip sem se dar um sobre-aquecimento teriam de ser pinos maiores.
10
In Order
Múltiplas instruções são “fetched” em cada ciclo. O servidor consecutivo de
instruções permite que estas possam ser executadas ao mesmo tempo se os operadores
estiverem válidos. Senão, o processador “stalls” em qualquer instrução com operandos
não válidos.
A execução Out-of-Order
Num processador com execução “in-order”, cada instrução depende da instrução
anterior a qual produziu o seu operando. A execução não pode ter início até que esses
operandos se tornem válidos. Se os operandos não forem válidos, devido à exigência da
execução “in-order”, o “stall” normalmente atrasa todas as instruções subsequentes.
Numa máquina superescalar assim que os operandos estejam disponíveis, o
hardware encarrega-se de re-arranjar as instruções ocupadas. Este processo é designado
chamamento (endereçamento) dinâmica.
Registos Flag  Registam excepções: precisão, overflow,underflow, zero
divide, operando desnormalizado, operações inválidas.
Program Counter  Contém a nova posição onde vamos encontrar a nova
instrução.
Instrução Queue  Fila com instruções para serem descodificadas.
Registos de segmentação  Servem para facilitar a programação.
Paralelismo  Permite aos CPU’s trabalhar com blocos de memória diferentes
ao mesmo tempo.
Problema do Prefetcher:
Quando chega a um salto (jump) e o CPU ainda não chegou lá.
Problemas:
1) Funciona através do sistema operativo.
2) Funciona em pacotes.
 Provoca atrasos.
Soluções:
1) Salta aleatoriamente para cima ou continua.
2) Espera pelo CPU até que ele execute o salto (jump).
Prefetching:
O prefetching de instruções é uma técnica onde o processador pode requisitar
um bloco de cache antes do momento em que seria realmente necessário. Esta técnica
permite ao compilador antecipar-se à necessidade de um bloco de instruções,
colocando-os o mais perto possível do CPU.
Como funciona?
1º- O compilador assume que serão necessárias mais instruções do que aquelas que
constam na cache interna.
11
2º- Envia uma mensagem ao prefetcher que vai buscar um novo conjunto de instruções
colocando-as na cache secundária.
3º- Se o processador pedir a nova sequência, este, como está na cache secundária, é
mais rapidamente encontrado pelo processador. Caso o processador não necessite desse
bloco, a área da cache L2 ocupada com essas instruções é rescrita com novas instruções.
Microprocessador R10000
Fig.12 - Esquema R10000
Sec. Cache
control
MS interface
Instruções da
cache
32 KB
TLB
Adder
query
Instruction decode register mapping
Branch
unity
Data cache
32 KB
Cache
secundária
512-16 M
64 int
regs
Adder calc
ALU1
Int query
ALU2
Fp query
64 fp
regs
+
*
O microprocessador R10K tem uma arquitectura superescalar que procura e descodifica
4 instruções por ciclo. Cada instrução descodificada é anexada a uma das 3 filas
(inteiros, vírgula flutuante e endereços) de espera de instruções. Cada fila é capaz de
realizar uma gestão dinâmica de instruções. As filas determinam a ordem de execução
baseadas na disponibilidade das unidades de execução requeridas. As instruções são
inicialmente “buscadas” e descodificadas por ordem mas podem ser executadas e
completadas “out of order”, permitindo ao processador ter mais de 32 instruções em
vários estados de execução. A impressionante performance de cálculo de inteiros e
floating-points faz do R10000 o processador ideal para aplicações tais como engenharia
de workstations, computação científica, gráficos 3D em workstations, servidores de
bases de dadose sistemas multi-usos. Um elevado throughput é alcançado através do
vasto uso e dedicados data paths e um elevado número de in e off chip caches.
Em resumo:
- arquitectura superescalar;
12
- procura e descodifica 4 instruções por ciclo;
- gestão dinâmica de instruções;
- execução “out-of-order”;
- elevada performance no cálculo de inteiros e floating-points;
- elevado throughput (vasto uso de data paths );
- elevado número de on e off chip caches;
Branch Prediction
Os branches interrompem o fluxo de pipeline. Assim sendo, os esquemas de
branch prediction são necessários para minimizar o número de interrupções. Os
branches ocorrem frequentemente (em média um em cada 6 instruções).
A maioria dos branches predictions utilizam algoritmos que guardam o modo
como se comportou o último salto executado (numa Branch History), sendo em seguida
assumido que o novo salto comportar-se-à do mesmo modo. Se assim for, actualiza as
instruções no processador. Caso contrário, as instruções contidas na pipeline devem ser
abortadas. Muitas arquitecturas implementam uma branch stack a qual guarda os
endereços alternativos de um salto.
Explique o funcionamento da memória cache
A cache serve para medir a diferença entre os registos da memória principal.
A cache é dividida em sets que são controlados por pequenas memórias
associativas.
Os dados são acedidos através da comparação simultânea do endereço lógico ou
key do item que queremos procurar com o endereço de todos os items armazenados.
Os dados e os respectivos endereços lógicos são armazenados juntos.
O acesso a estas memórias é muito rápido devido ao uso de células de
armazenamento muito complexas.
Leitura:
1º- É gerado um endereço físico através do TLB que é apresentado à cache.
2º- O “Set Address” é descodificado e usado para seleccionar o conjunto
correcto na cache.
3º- Na cache o “Address tag” é comparado em simultâneo com o “set address”
das duas unidades seleccionadas no ponto anterior.
4º- Se há um “hit”, então a linha seleccionada e um dos sus bytes é marcado pelo
byte address.
5º- O conteúdo do byte é enviado ao CPU.
6º- Se há um “miss” a cache inicia um “swap” com a memória principal para um
“random” de duas candidatas disponíveis.
7º- Uma vez que a página está presente na cache, o pedido de leitura da memória
está completo.
Escrita:
1º- O endereço de memória é mapeado directamente para um conjunto, cujos
“address tag” são comparados com os “address field” do endereço.
2º- Se há um “hit” os novos dados são escritos na cache e ao mesmo tempo é
implementada uma política de actualização da memória principal.
13
3º- Quando ocorre um “miss” os dados são escritos directamente na memória
principal.
4º- O “write miss” não inicializa a memória principal.
From TLB
Address tag
Data Page Line
0
1
Set
. Address
.
.
9
18
3
Address decoding logic
0
511
Byte address
Address
comparisson
Data
selection
Fig.13
Como funciona um disco rígido, da camada magnética até ao bus.
Um disco rígido é semelhante a um disco de música, pode ser feito de alumínio
ou plástico e é coberto por uma fina camada magnética na sua superfície. Em cada face
do disco existem centenas de “tracks” dispostas de forma concêntrica. A informação é
guardada nos “tracks” da superfície magnética.
Para escrever informação a célula endereçada é colocada por baixo da indução
magnética, um pulso de corrente é então transmitido pela bobine que altera o campo
magnético da condução magnética, esta por sua vez altera o estado de magnetização da
célula que se encontra por baixo.
Para ler uma célula, esta desloca-se pela read/write head.
O campo magnético varia e induz um “electric pulse” na bobine de leitura.
Este pulso é depois enviado ao “sense amplifier” e identifica o estado da célula.
A ligação ao bus é feita através do controlador que adapta o interface natural dos
componentes ao standard imposto pelo bus.
14
Arm
Read/Write
Vista de cima
Fig.14
Vista de baixo
Paralelismo – permite aos CPU’s trabalhar com blocos de memória diferentes
ao mesmo tempo.
Registos de segmentação – servem para facilitar a programação.
Contador do programa – contém a nova posição onde vamos encontar a nova
instrução.
Registos flag – registam excepções: overflow, underflow, zeros, sinal negativo,
etc.
Branch-prediction – necessário para minimizar o número de interrupções no
pipeline.
Instrução Queue – fila com instruções para serem descodificadas.
RAM (Random-Access-Memory)
Uma unidade de memória é chamada RAM se qualquer local pode ser acedido
por uma operação de leitura ou escrita num determinado intervalo de tempo fixo, que é
independente do endereço da sua localização. As unidades M.P (memória principal) são
deste tipo. Isto distingue-as dos dispositivos de acesso e armazenamento tais como os
discos rígidos e as disquetes.
Memórias estáticas (SRAM)
Memórias que consistem em circuitos capazes de reter o seu estado tento tempo
quanto o tempo em que a energia é aplicada. São mais rápidas e mais caras.
Memórias dinâmicas (DRAM)
Não conseguem reter o seu estado indefinidamente. São mais baratas e são a
escolha predominante para a implementação da M.P. As altas densidades alcançáveis
com estes “chips” fazem com que as memórias maiores sejam mais económicas.
ROM (Read-Only-Memory)
Componente de controlo de armazenamento num CPU microprogramado.
Podem também ser usadas para implementar partes da M.P. de um computador que
15
contém programas ou dados fixos. Os dados são escritos na ROM aquando do seu
fabrico. No entanto, algumas ROM permitem ao utilizador carregar a informação,
passando assim a chamar-se PROM (programmable ROM) e fornecendo alguma
flexibilidade.
Por outro lado, temos ainda as EPROM´s (erasable reprogrammable ROM´s)
que permitem armazenar informação que pode ser apagada para que novos dados sejam
lá carregados. Dado que as EPROM’s são capazes de reter informação armazenada
durante muito tempo, podem substituir as ROM’s enquanto o software está a ser
concebido o que torna as actualizações e as alterações mais fáceis. Uma grande
desvantagem é que eles têm de ser fisicamente removidos para a reprogramação e o seu
conteúdo é totalmente apagado pela luz ultravioleta.
Existem ainda os EPROM’s ou E2PROM’s que não necessitam de ser removidos
para serem apagados. Podem ser apagados e reprogramados electricamente tendo
apenas a desvantagem de que são necessárias voltagens diferentes para apagar, escrever
e ler dados.
Memória Virtual e TLB
Na maioria dos modernos sistemas de computadores a memória física principal não é
tão grande como o endereço do espaço necessário por um endereço enviado pelo
processador. Quando um programa não cabe completamente na memória principal, as
partes que não estão a ser executadas são armazenadas em dispositivos de
armazenamento secundário, tais como discos magnéticos. É claro que todas as partes de
um programa que serão eventualmente executadas são antes disso trazidas para a
memória principal. Quando um novo segmento de um programa necessita de ser
colocado na M.P., deve substituir um outro segmento já constante em memória. Nos
computadores modernos, o sistema operativo encarrega-se disso.
As técnicas que automaticamente movem o programa e os blocos de dados para a
memória física (principal), quando assim é requerido, chamam-se técnicas de memória
virtual. Os programas e o processador referenciam uma instrução e o espaço de dados
que são independentes do espaço disponível na M.P. física. Os endereços binários que o
processador envia para instruções ou dados são chamados endereços lógicos ou virtuais.
Estes endereços são traduzidos para endereços físicos através de uma combinação de
componentes de hardware e software. Se um endereço virtual referencia uma parte do
programa ou dados que estão na M.P., então o conteúdo da área apropriada na M.P. é
acedida de imediato. Por outro lado, se o endereço referencia algo que não se encontra
na M.P., o seu conteúdo deve ser transferido para um local da memória para depois ser
utilizado.
Processador
endereço virtual
Data
MMU
endereço físico
Cache
Data
endereço físico
M.P.
DMA transfer
Disk Storage
MMU - Memory Management Unit
16
Fig.15
A unidade de hardware MMU traduz o endereço virtual para endereço físico. Quando os
dados pretendidos se encontram na M.P., esses dados são buscados tal como o
mecanismo da cache o descreve. Se os dados não estão na M.P., a MMU ordena ao
sistema operativo que traga os dados do disco para a M.P. utilizando para isso (o
sistema operativo) o esquema de DMA.
Translation lookaside
Bloco
bufferde
(TLB)
- contém parte do
mapa de memória
Bloco de
endereço
físico
Endereço
lógico
(virtual)
Memory map
.
.
.
Displacement
Endereço
físico
Secundary Memory (M2)
Fig.16
Main Memory (M1)
Tradução de endereços
Um método simples para traduzir endereços virtuais para endereços físicos é assumir
que cada programa e dados são compostos por unidades de comprimento fixo chamadas
páginas, constituindo cada uma um bloco de palavras que ocupam locais contínuos na
memória principal. As páginas variam entre 2K e os 16K de tamanho. Constituem a
unidade básica de informação que é movida entre a M.P. e o disco quando o mecanismo
de tradução assim o requer e é necessário. As páginas não devem ser nem demasiado
pequenas nem demasiado grandes.
A cache é a ponte entre o processador e a M.P e tem como função diminuir a quebra ou
aumento vertiginoso da velocidade e é implementada em hardware. Por seu lado, a
memória virtual permite minimizar as quebras de tamanho e velocidade entre a M.P. e a
M.S. e é usualmente implementada em parte por técnicas de software. Conceptualmente
a M.P. e a cache são similares diferindo basicamente em detalhes de implementação.
O processo de tradução actua do seguinte modo:
Cada endereço virtual gerado pelo processador, quer seja uma instrução de busca ou um
operando da operação de busca/armazenamento, é interpretado como um endereço
virtual de uma página seguido de um “offset” que especifica a localização de um byte
de palavra específicos na página. A informação acerca da localização de cada página na
M.P. é guardada numa tabela de páginas. Esta informação inclui o endereço na M.P.
onde a página está armazenada e o corrente “status” dessa página. Uma área na M.P.
que pode conter uma página é chamada de page “frame”. O endereço inicial da tabela de
17
páginas é guardado numa “page table” base “register”. Através da adição do número da
página virtual com o conteúdo deste registo, o endereço da correspondente entrada na
tabela de páginas é obtido. O conteúdo deste local dá-nos o endereço inicial da página
se ela estiver correntemente na M.P.
Cada entrada na tabela de páginas também inclui alguns bits de controle que descrevem
o “status” da página enquanto está na M.P.
Um bit indica a validade da página ( se se encontra ou não na M.P.). Outro bit indica se
a página foi ou não modificada enquanto esteve na M.P. Tal como na cache, esta
informação serve para determinar se a página deve ser rescrita na M.S. antes de ser
removida da M.P. para dar lugar a outra. Outros bits de controle indicam várias
restrições que podem ser impostas no acesso à página.
A tabela de páginas é usada pela MMU em cada acesso de leitura e escrita, por isso, o
ideal seria que estivesse incorporada dentro do MMU. No entanto isso não é possível
devido ao seu tamanho e visto que o MMU é incorporado no “chip”. Assim sendo, a
tabela de páginas é mantida na M.P. No entanto, uma cópia de uma pequena parte dela
pode ser acomodada no MMU. Esta parte consiste numa tabela de páginas cujas
entradas correspondem às páginas mais recentemente anexadas. Uma pequena cache,
usualmente chamada de “translation lookaside buffer” (TLB), é incorporada no MMU
com este propósito. O modo de operar da TLB é semelhante ao da cache. Em adição à
informação que constitui a entrada na tabela de páginas, a TLB deve também incluir o
endereço virtual dessa entrada.
Um requisito fundamental é que o conteúdo da TLB seja coerente com o conteúdo das
tabelas de páginas em memória. Quando o sistema operativo muda o conteúdo das
tabelas de páginas, deve simultaneamente invalidar a correspondente entrada na TLB.
Um dos bits de controlo da TLB tem esta função. Quando uma entrada é invalidada, a
TLB irá adquirir a nova informação.
A tradução de endereços funciona do seguinte modo:
Dado um endereço virtual, o MMU procura no TLB a página referenciada. Se a entrada
desta página for encontrada na TLB, o endereço físico é obtido da tabela de páginas na
M.P. e a TLB é alterada.
Quando um programa gera o pedido de acesso a uma página que não está na M.P. dá-se
um “page fault”. Toda a página deve ser trazida do disco para a M.P. antes de se
proceder ao seu acesso. Quando é detectado com “page fault”, o MMU pede ao sistema
operativo para intervir criando uma excepção (interrupção). O processamento da tarefa
actual é interrompido e o controlo é transferido para o sistema operativo. O sistema
operativo copia então a página pedida do disco para a M.P. e retoma o controlo à tarefa
interrompida. Devido à demora da transferência da página, o sistema operativo pode
suspender a execução da tarefa em curso e iniciar a execução de outra tarefa cujas
páginas estão na M.P.
É essencial assegurar que a tarefa interrompida possa continuar correctamente quando
retoma a execução.
Se a nova página é trazida do disco quando a memória principal está cheia, deve-se
substituir uma das páginas residentes. Coloca-se aqui o problema da escolha de qual a
página que deverá ser substituída. Existem diversas formas de resolver o problema,
baseando-se algumas delas no conceito do algoritmo LRU de substituição em conjunto
com os bits de controlo.
Uma página modificada tem de ser escrita no disco antes de ser removida da M.P. É
importante notar que o protocolo “write-through” não se adapta à memória virtual. O
tempo de acesso é tão grande que não faz sentido aceder frequentemente ao disco para
escrever pequenas partes de dados.
18
O processo de tradução do MMU requer algum tempo para ser efectuado, sendo a sua
maioria utilizada para acessos à TLB. Podemos reduzir a média de tempo de traduções
através da inclusão de um ou mais registos especiais que retêm o número da página
virtual e o “page frame” físico das mais recentes traduções feitas. A informação nestes
registos pode ser mais rapidamente acedida.
Região do Programa
TLB
Região da stack de
controlo
Endereço pág. virtual
Memória
de
processamento
(utilizador)
endereço
virtual
Tabela de pág.
offset
endereço
físico
Memória do
sistema
Page table
Base register
(SBR)
Memória principal
Fig.17 - Método de tradução de endereços no VAX-11
Descreva brevemente a tradução do endereço lógico para o endereço físico da
memória virtual ( utilizando o exemplo do VAX-11).
Processo:
1) A CPU verifica se a entrada para determinado endereço lógico se encontra no
TLB.
2) Se sim:
- Constitui o endereço físico somando o valor do deslocamento (offset)
com o campo do endereço físico.
3) Se não:
- O endereço lógico é somado ao conteúdo do SBR, obtendo assim o endereço
físico absoluto da entrada que contém a tradução do endereço virtual.
- Todo o bloco é copiado para o TLB no caso de haver necessidade de o
utilizar novamente (bloco=32 entradas).
Explique o funcionamento da memória virtual e o TLB.
A figura mostra os principais componentes do sistema de memória virtual e as suas
interconecções lógicas. O endereço físico atribuído a cada bloco de informação está
guardado num conjunto de tabelas chamado mapa de memória (memory map). Este
mapa é usado para traduzir blocos de endereços lógicos em endereços físicos.
19
O endereço lógico inclui o deslocamento (displacement) que é, tipicamente, o
endereçamento efectivo computado de acordo com o modo de endereçamento definido
pelo programa, para que o item da memória seja acedido.
Para aumentar a velocidade do processo de tradução de endereços, uma parte do mapa
de memória é colocado numa memória de alta velocidade localizada no CPU, o TLB. O
TLB é um tipo especial de cache, cujo input é um endereço virtual e o output é o
endereço físico correspondente. Se o endereço lógico corrente não está atribuído ao
TLB, a parte do mapa de memória que contém o endereço lógico corrente é transferido
da memória principal para o TLB. O conteúdo do TLB varia dinamicamente durante a
execução do programa.
Quais são as razões para introduzir a hierarquia de memória (cache e virtual)?
Razões para utilizar a memória virtual:
- Libertar os programadores da necessidade de realizar opções de alocação de
espaço de armazenamento e permitir uma partilha eficiente do espaço de
memória por entre diferentes utilizadores.
- Tornar os programas independentes da configuração e capacidade dos
sistemas de memória usados durante a sua execução.
- Alcançar altas taxas de acesso a baixo custo por bit e que isto seja possível
com uma hierarquia de memória.
- O grande objectivo numa hierarquia de memória é alcançar uma
performance próxima da unidade de U1 mais rápida e o custo por bit
próximo ao da unidade Un mais barata.
- O objectivo que se pretende ao adicionar memória cache a um computador é
fazer com que o tempo médio de acesso à memória pelo processador seja o
mais próximo possível do da cache. Para isso a cache deve satisfazer uma
alta percentagem de todas as referências à memória.
Política de troca de páginas.
O principal objectivo na escolha de uma política de substituição é minimizar o número
de vezes que um bloco referenciado não está na M.P., uma condição chamada “memory
fault”.
FiFo (First in First out) – selecciona por substituição o bloco menos recente carregado
na memória, ou seja, o que está na fila à mais tempo (o primeiro a ter entrado).
Vantagem: fácil de implementar.
Desvantagem: substitui blocos que são frequentemente utilizados.
LRU (Last Recently Used) – selecciona por substituição o bloco que foi menos
recentemente utilizado pelo processador.
Vantagem: não substitui blocos frequentemente utilizados.
Desvantagem: é mais difícil de implementar.
Alguns computadores como o VAX-11 utilizam uma política de troca de páginas
“Random”. A página a ser substituída é seleccionada por um processo rápido que se
aproxima verdadeiramente à selecção aleatória, não utilizando para isto, nenhum dado
referenciado na linha da cache.
Existem outras políticas de optimização que variam consoante o propósito requerido e
as características do programa e sistema.
20
Cache:
Uma forma de reduzir o tempo de acesso à memória é usando a memória cache. Ela é
uma memória pequena e rápida que é inserida entre a memória principal e o
processador.
A cache é a ponte entre o processador e a M.P. e tem como função diminuir a quebra ou
o aumento vertiginoso de velocidade. A cache é implementada em “hardware”. A cache
comporta os segmentos activos actualmente do programa. A eficiência da cache baseiase na propriedade de referência de localização:
- Temporal: as instruções mais recentemente executadas são provavelmente
executadas novamente em breve.
- Espacial: as instruções nas proximidades das instruções mais recentemente
executadas serão provavelmente executads em breve.
Quando um item é primeiramente requisitado, ele será trazido até à cache onde
permanecerá na esperança de ser utilizado em breve. Nesta transacção será trazido, não
só o item, mas também todo o bloco no qual se insere, assim como os seus endereços.
Quando a cache está cheia e uma instrução é requisitada, esta não aparece na cache, o
controlo da cache deve decidir qual o bloco a ser removido para criar espaço para o
novo bloco.
Como opera a cache?
1- O CPU requisita determinados itens utilizando endereços.
2- O circuito de controlo da cache determina se o pedido do CPU se
encontra ou não na cache. Utilizam-se as funções de mapeamento.
3- Se sim:
3.1- A operação de leitura ou escrita é efectuada no local aproximado da
cache. Neste caso diz-se que ocorreu um acerto (hit) de leitura ou escrita. Na
operação de leitura a M.P. não é envolvida. Na operação de escrita o sistema
pode proceder de 2 formas:
- Técnica “write-trhough”  a localização na cache e na memória principal
são actualizadas simultaneamente. O VAX-11 utiliza esta técnica.
- Técnica “write-back”  actualiza-se apenas a localização na cache e para
indicar que houve uma actualização utiliza-se uma mensagem chamada
“dirty” ou “modified bit”. A memória principal é actualizada quando o bloco
associado à palavra marcada for removido da cache para dar lugar a um novo
bloco.
Ambas as técnicas podem originar operações desnecessárias.
4- Se não:
4.1- Se a operação é de leitura e não se encontra na cache, ocorre um “read
miss”. O bloco que contém a palavra requerida é copiado da memória
principal para a cache. Pode ser necessário usar uma das políticas de troca de
páginas (“O VAX-11 é Random”). Após este carregamento a palavra em
questão é levada até ao CPU. Alternativamente, esta palavra pode ser
enviada para o CPU assim que for lida a M.P. Este método chama-se “loadthrough”.
21
4.2- Se a operação é de escrita, ocorre um “write miss”. Se estiver a ser
usado o “write through”, a informação é escrita directamente na memória
principal (o que acontece com o VAX-11). Se estiver a ser usado o “write
back”, o bloco contendo a palavra é trazido à cache, sendo depois a palavra
desejada rescrita com a nova informação.
Funções de mapeamento da cache:
 Direct-Mapped Cache: Um bloco de memória só pode ser colocado num
bloco de cache específico. Para achar o bloco: bloco cache = bloco M.P. mod
m+1 (total de blocos de cache).
Endereço:
5
7
4
tag
block
word
tag – Bits associados à localização na cache.
block – Posição na cache na qual deve ser colocado.
word – selecciona uma das palavras do bloco.
1- Comparam-se os 5 bits mais significativos da palavra com a “tag”.
2- Se coincidir, então a palavra encontra-se nesse bloco.
3- Senão, o bloco deve ser lido da M.P. e carregado na cache.
 Associative-Mapped Cache: Um bloco da M.P. pode ser colocado em
qualquer bloco da cache.
Endereço:
12
tag
4
word
1- Comparam-se os 12 bits mais significativos da palavra com a “tag”.
2- Se coincidir, então a palavra encontra-se nesse bloco.
3- Senão, o bloco deve ser lido da M.P. e carregado na cache.
 Set Associative-Mapped Cache: Combinação das duas técnicas anteriores. Os
blocos da cache são agrupados em conjuntos (“sets”) e o mapeamento permite a
um bloco da memória principal residir em qualquer bloco de um conjunto
especificado.
Endereço:
5
7
7
tag
set
word
1- Compara-se o campo “set” de modo a determinar o “set” que contém o bloco
desejado.
2- Comparam-se os 6 bits mais significativos da palavra com a “tag”. A “tag”
deve ser comparada associativamente com o “tag field” do endereço, isto é,
com o “set” determinado.
22
3- Se coincidir, então a palavra encontra-se nesse bloco.
4- Senão, um novo bloco deve ser trazido da memória principal.
Cache Set-Associative no VAX-11:
Leitura:
1- É gerado um endereço físico através do TLB que é apresentado à cache.
2- O “set address” é descodificado e usado directamente para seleccionar o
conjunto correcto na cache.
3- A “tag” é comparada em simultâneo com as linhas seleccionadas
anteriormente.
4- Se há um “hit” então a linha é seleccionada e um dos seus “bytes” é marcado
pelo ”byte address”. O conteúdo do byte seleccionado é enviado à CPU.
5- Se há um “miss”, a cache inicia um “swap” com a memória principal para
trazer os dados desejados para a cache. A linha a ser substituída é
seleccionada aleatoriamente fazendo o “Random” de 2 linhas candidatas
disponíveis.
6- Uma vez que a página esteja presente na cache, o pedido de leitura da
memória está completo.
Escrita:
1- O endereço de memória é mapeado directamente para um conjunto cujos
“tags” são comparados associativamente com o “tag” do endereço.
2- Se há um “hit” os novos dados são escritos directamente na cache, ao mesmo
tempo que na memória principal.
3- Quando ocorre um “miss” os dados são escritos directamente na memória
principal.
From TLB
data page line
set address
0
Address decoding logic
Address tag
9
a
18
3
c
511
0
1
7
b
Address
comparisso
n
Data
selection
23
a) set address b) cache address tag c) byte address
Fig.18 - Organização da cache VAX-11
Como vê um utilizador a cache?
Uma hierarquia de memória é transparente quer para o programador de aplicação
quer para o programador de sistemas.
Alguns computadores, como o VAX-11, têm uma cache que utiliza política de
troca de páginas, “Random”. A página a ser substituída é seleccionada por um processo
rápido que se aproxima verdadeiramente à selecção “Random”, não utilizando, para
isto, nenhum dado referenciado na linha da cache.
Quais são as vantagens e as desvantagens das técnicas “write-through” e
“write-back”?
Write-back actualiza-se apenas a localização na cache e, para indicar que
houve uma actualização, utiliza-se uma “flag” chamada “dirty” ou “modified bit”.
Vantagens – A memória principal é actualizada quando o bloco associado à
palavra marcada for removido da cache para dar lugar a um novo bloco.
Desvantagens – a cache e memória principal podem estar inconsistentes, isto é,
podem ler dados, associados diferentes com o mesmo endereço físico. Isto leva a um
problema aquando da existência de vários processadores com caches independentes e
com uma memória principal comum. Esta técnica complica igualmente a recuperação de
falhas do sistema ou outras condições excepcionais.
Write-trough  Transfere os dados para a cache e para a memória principal
durante todos os ciclos de escrita para a memória.
Vantagens: É facilmente implementada e garante que a memória principal nunca
contém informações obsoletas. É especialmente útil quando a memória principal é
partilhada por múltiplos processadores.
Desvantagens: Aumenta o número de escritas para a memória principal. Como o
tempo requerido para cada operação de escrita na memória principal é maior que o
requerido para a cache, a performance do processador pode ser afectada.
Qual o problema da utilização da cache num sistema multiprocessador
“shared memory”? Quais as soluções?
O problema surge quando vários processadores com caches independentes
partilham a mesma memória principal. A utilização de uma estratégia “write-back”
levaria a uma possível inconsistência de dados da dados da cache e da memória
principal.
Uma solução seria a utilização de uma estratégia “write-trough” que elimina a
inconsistência dos dados.
Porque tem a cache uma memória associativa?
Um endereço A que é apresentado à cache pelo processador pode ser comparado
com todos os endereços armazenados na cache para determinar se A se encontra ou não
nela. O processo de comparar A com todos os endereços é bastante lento. Criou-se
assim um compromisso entre a velocidade e o custo, que foi implementar o
24
armazenamento dos endereços como uma única memória associativa, a qual permite que
o endereço A seja comparado simultaneamente com todos os endereços do conjunto
associativo da cache. Para permitir a comparação em simultâneo dos endereços “tag”
associados a determinados “set address”.
Dispositivos de I/O:
Address lines
Data lines
Control lines
bus
Address
decoder
Circuitos de
controlo
Data and status
register
I/O interface
Input device
Fig.19 - Interface I/O para um dispositivo de entrada
Deve haver uma sincronização entre o processador e o dispositivo de entrada ou
saída. Para isso, o processador testa repetidamente a “flag de status” do dispositivo, no
caso de usar o método do “Program-Controlled” I/º Outros 2 mecanismos são usados
correntemente para implementar as operações de I/O: Interrupções e DMA (direc
memory access).
Com as interrupções, a sincronização é implementada através do envio pelo
dispositivo de I/O, de um sinal especial de interrupção para o bus assim que o
dispositivo está pronto para a operação de transferência de dados.
Nos DMA (técnica usada p/dispositivos de I/O de alta velocidade), o interface
transfere a informação directamente da e para a memória, sem um envovimento
continuo do processador.
Interrupções:
Em muitas situações, outras tarefas podem ser executadas enquanto o
processador espera que o dispositivo de I/O fique pronto para operar. Para fazer isto,
podemos arranjar um modo de um dispositivo alertar o processador quando está pronto.
Ele faz isso através do envio de um sinal de hardware chamado: interrupção do
processador. Pelo menos uma das linhas de controlo do bus (interrupt-request-line) é
dedicada a esta função. O processador pode pedir a um dispositivo de interface de I/O
para activar esta linha, assim que o dispositivo estiver pronto para a transferência de
dados. Assim sendo, visto que o processador não tem de estar constantemente a testar se
o dispositivo está pronto, fica livre para executar outras funções. Note-se que o
processador também deve informar o seu dispositivo que foi reconhecido, para que ele
possa remover o sinal de “interrupt-request”. O chamado sinal de “interruptacknowledge” serve este propósito.
25
Uma interrupção é mais do que um simples mecanismo para coordenação das
transferências de I/O. Em geral, as interrupções permitem transferir o controlo de um
programa para outro que será iniciado por um evento exterior ao computador.
Os interruptores são também usados em mútuas aplicações de controlo, nas
quais o processamento de certas rotinas deve ser coincidente, em termos de tempo, com
os acontecimentos exteriores. Este tipo de aplicações chamam-se: Aplicações com
processamento em tempo real.
Sequência de eventos no manuseamento de um pedido de interrupção de um
dispositivo:
1- O dispositivo cria um pedido de interrupção.
2- O processador interrompe o programa que estava a ser executado.
3- As interrupções são “incapacitadas” (desactivadas).
4- O dispositivo é informado de que o seu pedido foi reconhecido e, em
resposta, desactiva o sinal de pedido de interrupção.
5- A acção pedida é realizada pela rotina de serviço de interrupções.
6- A execução do programa interrompido é retomada, com as interrupções aptas
e activadas.
7- Muitos eventos podem causar interrupções. Não são apenas os pedidos dos
dispositivos que causam as interrupções. Todos esses eventos são chamados
de excepções. Assim sendo as interrupções dos I/O são uma das possíveis
excepções.
Outros tipos de excepções:
 Recuperação de erros – se um erro ocorre, o controlo detecta-o e informa o
processador através de um interrupção. O próprio processador pode proceder a
uma interrupção se detectar algum erro.
 “Debugging” – os “debbugers” incluídos no “software” de programação
utilizam excepções para fornecerem 2 importantes capacidades: o “tracemode” e
os “breakpoints”.
DMA:
Para transferir grandes blocos de informação a uma alta velocidade podemos
utilizar o DMA. O DMA é uma unidade de controlo especial que permite a transferência
de um bloco de informação directamente desde um dado dispositivo externo para a
memória principal sem a intervenção contínua do processador.
As transferências do DMA são efectuadas por um circuito de controlo associado
aos dispositivos de I/O, o controlador de DMA.
O DMA efectua as funções que, normalmente, seriam efectuadas pelo
processador no momento de aceder à memória. Para cada byte ou palavra transferida ele
deve providenciar o endereço na memória e todos os sinais de controlo da transferência.
Visto que ele tem de transferir blocos de dados, o controlador DMA deve incrementar
os endereços de memória apropriadamente para que os sucessivos bytes ou palavras
sejam colocados nos locais devidos.
Apesar do DMA transferir dados sem a intervenção do processador, a sua
operação deve estar sob o controlo de um programa executado pelo processador. Para
iniciar a transferência de blocos o processador envia as seguintes informações para o
controlador: o endereço inicial, o número de palavras no bloco, e a direcção da
transferência. Ao receber esta informação, o controlador DMA procede à transferência
26
requerida. Após o bloco ser totalmente transferido, o controlador informa o processador
através de um sinal de interrupção.
As operações de I/O são sempre realizadas pelo sistema operativo do
computador em resposta a um requisito de uma aplicação.
Ciclo de instruções
Ciclo do
CPU
Fetch
instruct
Decode
instruct
Fetch
operand
Execute
instruction
Store
result
interrup
breakpoint
DMA
Fig.20 – DMA e interrupções: os seus breakpoints durante um ciclo de instrução
Explique o funcionamento do DMA.
1234-
O CPU inicia o controlador DMA e o controlador disco
O controlador de discos envia um sinal de DMA request.
O DMA envia à CPU um sinal de “hold request”.
A CPU envia ao DMA um sinal de “hold acknowledge” e bloqueia os seus
“transceivers”.
5- O DMA envia ao controlador de discos um sinal de DMA “acknowledge”.
Envia ainda os sinais de “memoryRead” à memória (MRD) e o sinal de
IOWR (I/O write) ao controlador de discos.
Endereços
1)
Bus de dados
d
e
X
d
e
d
e
d
e
X
Controlador
DMA
CPU
3)
M.P.
Controlador
de discos
2)
4)
5)
MRD
d-dados
e-endereço
IOWR
27
Fig.21
Descreva brevemente o funcionamento de um controlador de interrupções,
se possível da Intel.
1- O “Data Ready” é usado pelo dispositivo de I/O para colocar uma palavra
dentro do “buffer” na porta ª
2- O 8255 gera automaticamente um sinal, numa outra linha de C, que pode ser
enviada ao dispositivo de I/O como o sinal “data acknowledge”.
3- Uma terceira linha de C gera um sinal de interrupção “interrupt request” que é
enviado ao CPU para indicar a presença de dados na porta .
4- Num sistema como o da Intel é utilizada a técnica “vectoring” que permite ao
dispositivo de I/O enviar conjuntamente com o pedido de interrupção o envio da rotina
que irá prestar serviço a essa interrupção:
- A CPU deve ter conhecimento da origem da interrupção e do endereço da
rotina.
- O contador do programa e outras informações sobre o estado do CPU são
dados como uma subrotina de chamamento.
- O contador do programa é carregado com o endereço do programa de serviço
de interrupção. A execução da rotina de interrupção continua até ser encontrada
uma instrução de retorno, que transfere o controlo de volta ao programa
interrompido.
Data bus
8
A
8
data
data ready
C
data acknowledge
I/O device
A0
A1
read
write
B
interrupt request
Fig.22- Funcionamento de um controlador de interrupções (Intel)
Explique o funcionamento de um terminal.
Video Display
unity
Microcomputador
local
I/O interface
circuit
Modem
Teclado
Vários dispositivos de I/O, como teclados, ecrãs e impressoras, formam o
interface humano do terminal. Estes estão conectados através de um interface
28
apropriado com um micro-computador que controla o “software” (este controlo
determina a inteligência do terminal). Interfaces especializados para a comunicação
intersistema fornecem a ligação entre o terminal e o computador remoto.
Particularmente útil para este fim, é o controlador de comunicação de dados UART, um
dispositivo do ULSI que pode ser programado para acomodar uma variedade de
diferentes protocolos de transmissão de dados e velocidade de operação.
Componentes necessários para realizar uma placa de gestão do teclado e monitor:
Teclado  é composto por uma matriz com os códigos ascii, PPI (para gestão
do teclado).
Monitor 
deflecções
canhão
deflecções
aceleração
electrão
+
V
-
+
Fig.23
Interleaving  Uma das formas de reduzir o tempo de acesso à memória. Ela divide o
sistema em vários módulos de memória e ordena o endereçamento em diferentes
módulos. Se os pedidos de acesso à memória tendem a envolver endereços consecutivos
então os acessos irão estar em diferentes módulos. Visto que o acesso paralelo a estes
módulos é possível, a taxa média de busca de palavras da memória principal pode ser
aumentada.
29
Download