Escolar Documentos
Profissional Documentos
Cultura Documentos
Computacionais
Disciplina: 113468
Relembrando o Computador
◼ Componentes:
- Processador(es)
- Dispositivos de memória
- Dispositivos de entrada
- Dispositivos de saída
- Dispositivos de comunicação
Saída
Comunicação Processador
Entrada
Memória
3
UnB/CIC 113468– Introdução aos Sistemas Computacionais
Reestruturando o Computador
Barramento de portas IO
Portas Interrupções
Dispositivo 1
Dispositivo 2
Processador ...
Barramento
Dispositivo N
Cache L1 Cache L1
de de Memória
Instruções Dados secundária
Cache L2 e L3
Controlador
Memória RAM Primária
de IO
4
UnB/CIC 113468– Introdução aos Sistemas Computacionais
Barramentos no Pentium IV
Pentium 4
Processor
Controladores de IO:
-dispositivos rápidos
-dispositivos lentos
5
UnB/CIC 113468– Introdução aos Sistemas Computacionais
6
UnB/CIC 113468– Introdução aos Sistemas Computacionais
Revendo o Computador
Barramento de portas IO
B
Portas Interrupções
Dispositivo
Controlador 1
Barramento de dispositivos
CPU de IO
Dispositivo
2
Barramentos Rápidos ...
Dispositivo
MMU GPU N
Memória
Memórias Cache secundária
Memória Vídeo
L1, L2, L3, ...
7
UnB/CIC 113468– Introdução aos Sistemas Computacionais
8
UnB/CIC 113468– Introdução aos Sistemas Computacionais
1) Instruções de E/S
o processador possui instruções específicas para comunicação
com dispositivos de entrada e saída
a arquitetura x86 utiliza essa abordagem, com instruções que
fazem leitura e escrita em portas de E/S
◼ IN - leitura de uma porta de entrada
IN AL, imm8 - leitura de um byte da porta imm8 para registrador AL
IN AX, DX - leitura de uma palavra da porta em DX para registrador AX
◼ OUT - escrita em uma porta de saída
OUT imm8, AL - escreve byte de AL na porta imm8
OUT DX, AX - escreve palavra de AX na porta DX
requer um barramento de E/S separado do barramento de
memória
9
UnB/CIC 113468– Introdução aos Sistemas Computacionais
Reservado
0x7FFF FFFC
sp Pilha
Área de dados
Segmento: .data
Dados
0x1001 0000
Locais
gp Dados
Globais
0x1000 0000
Texto Área de Programa
pc Segmento: .text
0x0040 0000
Reservado
0x0000 0000
11
UnB/CIC 113468– Introdução aos Sistemas Computacionais
Segmento de dados
Segmento de texto
12
UnB/CIC 113468– Introdução aos Sistemas Computacionais
Instrução ecall
13
UnB/CIC 113468– Introdução aos Sistemas Computacionais
14
UnB/CIC 113468– Introdução aos Sistemas Computacionais
15
UnB/CIC 113468– Introdução aos Sistemas Computacionais
17
UnB/CIC 113468– Introdução aos Sistemas Computacionais
18
UnB/CIC 113468– Introdução aos Sistemas Computacionais
◼ Bitmap Display
Saída gráfica em display VGA
Resolução selecionável (mas usem sempre 320240)
Acesso direto à Memória de Vídeo (sem GPU)
◼ Sintetizador de Áudio
Saída de áudio por sintetizador MIDI (Musical Instrument Digital Interface)
Definição do instrumento, nota, duração e volume
19
UnB/CIC 113468– Introdução aos Sistemas Computacionais
Eco do teclado
21
UnB/CIC 113468– Introdução aos Sistemas Computacionais
BB GGG RRR
8E 4A 7A C3 AA C7
BF 9E B5 DA BA C3
22
UnB/CIC 113468– Introdução aos Sistemas Computacionais
Bitmap Display
◼ Mapeamento da memória de vídeo VGA no
Rars14_Custom4 (com duas frames de vídeo, 0 e 1)
0xFF00 0000 0xFF00 013F
320
240
Bitmap Display
◼ Endereço (linha,coluna) = Endereço Base + linha 320 + coluna
◼ Com coluna de 0 a 319 e linha de 0 a 239.
(0,0) (0,319)
Endereço Base
Frame 0= 0xFF00 0000
Frame 1= 0xFF10 0000
(239,0) (239,319)
Seleção = 0xFF200604
Paleta de cores
◼ Codificação da Cor: 8 bits/pixel
76 543 210
BB GGG RRR
a0=nota
Sintetiza a nota a0, de duração a1, com o instrumento a2 e volume
a1=duração
MidiOut 31 a3.
a2=instrumento
Na DE1 o instrumento é fixo.
a3=volume
a0=nota
Sintetiza a nota a0, de duração a1, com o instrumento a2 e volume
a1=duração
MidiOutSync 33 a3, e pausa o programa até o final da execução da nota
a2=instrumento
Na DE1 o instrumento é fixo.
a3=volume
Ex.: midi.s
26
UnB/CIC 113468– Introdução aos Sistemas Computacionais
Exemplo : SORT
◼ Compile para Assembly RISC-V e excute no Rars o seguinte programa C
void show(int v[], int n) int vetor[10]={9,2,5,1,8,2,4,3,6,7};
{
int i; void main()
for(i=0;i<n;i++) {
printf("%d\t",v[i]); show(vetor,10);
printf("\n"); sort(vetor,10);
} show(vetor,10);
}
void swap(int v[], int k)
{ .data
int temp; vetor: .word 9,2,5,1,8,2,4,3,6,7
temp=v[k]; newl: .string "\n"
v[k]=v[k+1]; tab: .string "\t"
v[k+1]=temp;
} .text
main: ....
li a7,10
void sort(int v[], int n) ecall
{ show: ....
int i,j; ret
for(i=0;i<n;i++) swap: ....
for(j=i-1;j>=0 && v[j]>v[j+1];j--) ret
swap(v,j); sort: ....
} ret 27