Академический Документы
Профессиональный Документы
Культура Документы
Maro 2012
Programao C/assembly
Maro 2012
2 / 16
Compilao separada
rotinas numa linguagem podem invocar rotinas na outra programa principal em C/C++ (o mais habitual) programa principal em assembly
Programao C/assembly
Maro 2012
3 / 16
declarar sub-rotinas de assembly em C/C++ rotinas de assembly devem usar conveno de invocao cdecl
semelhante a stdcall diferena principal: o cdigo que invoca a rotina responsvel por remover os parmetros da pilha invoke (masm) trata automaticamente dos detalhes
Exemplos seguintes Windows 32 bits Ferramentas de Windows SDK 7.1 (as mesmas que Visual Studio 2010) Compilador de C/C++: cl Assembler: ml
Joo Canas Ferreira (FEUP) Programao C/assembly Maro 2012 4 / 16
Execuo Otimizao: cl /c /Ox pesquisa.cpp Para obter cdigo gerado: cl /c /Ox /Fa pesquisa.cpp pesquisa.asm
Programao C/assembly
Maro 2012
9 / 16
Diagrama de uxo
i=0
$LN3 i ++
Sim
ECX = vector[i]
Sim
$LN2 AL = 0
AL = 1
$LN5 ret
Programao C/assembly
Maro 2012
11 / 16
Programao C/assembly
Maro 2012
12 / 16
Exemplo 2: sub-rotina em C
# i n c l u d e " gcd . h " i n t Gcd ( i n t a , i n t b ) { i f ( a == 0 && b == 0 ) b = 1; e l s e i f ( b == 0 ) b = a; else i f ( a != 0) while ( a != b ) i f ( a <b ) b = a ; else a = b ; return b ; }
Fonte: http://www.azillionmonkeys.com/qed/asmexample.html
Joo Canas Ferreira (FEUP) Programao C/assembly Maro 2012 14 / 16
Exemplo 2: execuo
Resultado da execuo:
Programao C/assembly
Maro 2012
15 / 16
1o ano 2011/12
1.
A utilizao de __asm numa funo escrita em C/C++ permite: A. juntar funo o cdigo mquina de outra funo B. chamar uma sub-rotina em assembly C. incluir um bloco de instrues assembly D. assinalar que essa funo no deve ser compilada
2.
Compare o tempo de execuo de sub-rotinas em C/C++ e assembly para determinar o nmero de sub-sequncias estritamente ascendentes existentes num vetor de N elementos. Por exemplo, a sequncia seguinte tem 6 dessas sub-sequncias. 2, 5, 1, 11, 14, 5, 21, 77, 8, 6, 6, 11, 21 A declarao das sub-rotinas a seguinte:
extern " C " { unsigned int NumSubSeq ( unsigned int vector [] , unsigned int N ); unsigned int AsmNumSubSeq ( unsigned int vector [] , unsigned int N ); };
Fim
AJA, JCF
Pg. 1 de 1
Abril 2012
Co-processador matemtico
Circuito dedicado para o processamento de dados em vrgula utuante Inicialmente: circuito integrado adicional para operaes de vrgula utuante Organizao interna diferente da do CPU principal Primeira verso: 8087 em 1980 (45000 transstores, 5 MHz) Integrado no CPU principal a partir do 80486DX
Unidade de Vrgula Flutuante (FPU - Floating point unit)
Representao interna de 80 bits (sinal, expoente 15 bits, signicando 64 bits ) Permite representar inteiros de 64 bits sem perda de preciso Tipos de operaes:
Leitura/escrita de memria Funes aritmticas Comparaes e testes Gesto e controlo
Joo Canas Ferreira (FEUP) Tratamento de dados em vrgula utuante Abril 2012 2 / 26
Abril 2012
3 / 26
Microfotograa do 80387
Registos
Registos da Unidade de Vrgula Flutuante (UVF) independentes do CPU A UVF tem 8 registos de 80 bits O formato interno corresponde a IEEE 754 (preciso extended): 64 bits de parte fracionrio, 15 bits de expoente, 1 bit de sinal Carregar/retirar valores da UVF apenas por ordem last-in rst-out (pilha)
Topo da pilha: ST(0) Segundo registo: ST(1) ltimo registo: ST(7)
Apenas registos no-vazios podem ser usados em clculos Quase no existe comunicao com CPU: no possvel usar os registos EAX, EBX,. . . em clculos da UVF
Joo Canas Ferreira (FEUP) Tratamento de dados em vrgula utuante Abril 2012 5 / 26
Tratamento de excees:
invocao de uma rotina de tratamento de excees tratamento automtico (ativo por omisso) Exemplos: diviso por zero produz innito underow produz nmeros no-normalizados
Joo Canas Ferreira (FEUP) Tratamento de dados em vrgula utuante Abril 2012 6 / 26
Tipos de dados
UVF suporta operaes sobre nmeros de vrgula utuante e inteiros Todos os nmeros so convertidos para o formato interno ao serem lidos de memria Converso do formato interno para outros formatos efetuada na escrita em memria Tipos de dados (externos) suportados:
REAL10: IEEE 754, preciso extra, 10 bytes, formato interno REAL8: IEEE 754, preciso dupla, 8 bytes REAL4: IEEE 754, preciso simples, 4 bytes QWORD: inteiros, complemento para 2, 64 bits (8 bytes) DWORD, WORD, mas no BYTE TWORD: inteiros, formato BCD empacotado, 10 bytes (18 dgitos decimais)
Abril 2012
7 / 26
Conveno stdcall registos UVF vazios entrada numa sub-rotina registos UVF vazios sada de uma sub-rotina, exceto
ST(0) contm o resultado da sub-rotina (se for de vrgula utuante)
Joo Canas Ferreira (FEUP) Tratamento de dados em vrgula utuante Abril 2012 9 / 26
Instrues aritmticas
Operaes binrias [ST ST(0)]:
Nome FADD dest, src FSUB dest, src FSUBR dest, src FMUL dest, src FDIV dest, src FDIVR dest, src Operao dest = dest + src dest = dest - src dest = src - dest dest = dest src dest = dest / src dest = src / dest Nome FADD m32/64fp FSUB m32/64fp FSUBR m32/64fp FMUL m32/64fp FDIV m32/64fp FDIVR m32/64fp Operao ST = ST + m32/64fp ST = ST - m32/64fp ST = m32/64fp - ST ST = ST m32/64fp ST = ST / m32/64fp ST = m32/64fp / ST
Um dos operandos (src ou dest) deve ser sempre ST(0). Todas as instrues tm verses com P (FADDP, FSUBP, etc.). Neste caso, src deve ser sempre ST(0). Este valor removido do pilha. Operaes binrias tambm podem ser escritas sem argumentos. Por exemplo: FADD FADDP ST(1), ST(0)
Joo Canas Ferreira (FEUP) Tratamento de dados em vrgula utuante Abril 2012 12 / 26
DWORD 100 REAL8 1.567 REAL8 ? valb valA res ; ST(0)=1.567 ; ST(0) = 156.7 ; pilha vazia
Abril 2012 13 / 26
Outras funes
FXCH ST(i) troca valores de ST(0) e ST(i) FXCH troca valores de ST(0) e ST(1) FCHS troca sinal de ST(0): ST(0) = - ST(0) FABS calcula valor absoluto de ST(0): ST(0) = |ST(0)| FRNDINT arredonda ST(0) para inteiro FLD1 carrega a constante 1 para a pilha FLDPI carrega a constante para a pilha FLDZ carrega a constante 0 para a pilha FLD2E carrega a constante log2 e para a pilha FLD2T carrega a constante log2 10 para a pilha FLDLG2 carrega a constante log10 2 para a pilha FLDLN2 carrega a constante loge 2 para a pilha
Joo Canas Ferreira (FEUP) Tratamento de dados em vrgula utuante Abril 2012 14 / 26
; Resultado deve ser +6.0 ; ; ; ; ; ; pilha: {valA} trocar sinal de ST(0): {-valA} carregar valB para ST(0): {valB -valA} ST(0) *= valC: {(valB*valC) -valA} ST(0) += ST(1): {(valB*valC)-valA} guardar ST(0) em valD: {}
Abril 2012 15 / 26
Abril 2012
16 / 26
Saltos condicionais
Os saltos condicionais so executados pelo CPU principal. Para realizar um salto condicional baseado numa comparao de vrgula utuante necessrio:
1
Usar a instruo FSTSW AX para copiar registo de controlo da UVF para AX Usar a instruo SAHF para copiar AH para o registo EFLAGS (registo de indicadores) Usar instrues de salto condicional como JA ou JB
.data REAL8 0.0 .code ... fld1 fld rval fcom st(1) fstsw ax sahf ja next print "RVAL menor ou igual a 1.0",13,10 jmp @F next: @@:
Joo Canas Ferreira (FEUP)
rval
Abril 2012
18 / 26
@@:
Abril 2012
19 / 26
Abril 2012
20 / 26
Funes matemticas
A UVF suporta vrias funes matemticas Todas usam o valor do topo da pilha ST(0) como argumento O(s) argumento(s) /so removido(s) da pilha e subsitudo(s) pelo(s) resultado(s) ngulos so expressos em radianos FSQRT Raiz quadrada FCOS Co-seno FSIN Seno FSINCOS Seno (ca em ST(1)) e co-seno (ca em ST(0)) FPTAN Tangente F2XM1 2x 1 FYL2X Y log2 X, com X=ST(0), Y=ST(1) ...
Joo Canas Ferreira (FEUP) Tratamento de dados em vrgula utuante Abril 2012 22 / 26
Abril 2012
23 / 26
main PROC uses edi ; preenche tabela invoke TABSEN mov edi, 0 mov ecx, 10 ciclo: push ecx invoke FloatToStr, TABELA[edi*8], offset buffer print offset buffer,13,10 inc edi pop ecx loop ciclo ret main ENDP
Abril 2012 24 / 26
; ciclo de clculo ciclo: fld x fsin fstp real8 ptr [edi] ; preparar iterao seguinte add edi, type REAL8 fld x fadd step fstp x loop ciclo ret TABSEN ENDP
Abril 2012
25 / 26
1o ano 2011/12
Escreva fragmentos de cdigo assembly IA-32 que implementem o seguinte cdigo C++:
a)
B M N P
= = = =
7 .8 ; 3 .6 ; 7 .1 ; -M * (N +B) ;
b)
2.
3. 4.
Considere o polinmio p(x) = 1,5x3 12,5x + 7. Escreva a rotina CALC_POLY_TBL que calcula uma tabela dos valores do polinmio para valores de x pertencentes a {0; 0,1; 0,2; ...; 9,9; 10} (ao todo so 101 valores). A rotina tem o prottipo:
CALC_POLY_TBL PROTO vet: REAL8
O vetor vet deve ser preenchido com os valores calculados, ou seja, com p(0), p(0,1), ..., p(9,9) e p(10). Pretende-se escrever um programa que produza uma tabela da funo y = 100 + 50 sin(x) com x [0 ; 90 ]. Para isso:
5. a)
Escreva uma funo que calcula o seno de um valor real expresso em graus. O valor deve ser retornado em ST(0). Usando a funo da alnea anterior, escreva uma funo que calcula y = 100 + 50 sin(x) com x [0 ; 90 ] (x em graus), retornando o valor em ST(0). Usando a funo da alnea anterior, escreva um programa para produzir uma tabela de y(x) para os valores inteiros de x entre 0 e 90 .
b)
c)
Escreva a rotina DIST que usa o co-processador aritmtico para calcular a distncia D de um ponto P (X, Y ) origem.
6.
D=
X2 + Y 2
7.
Escreva a rotina TABSEN, sem argumentos, que usa o co-processador aritmtico para calcular uma tabela com 10 elementos da funo sin X . Considere que os elementos da tabela esto igualmente espaados e que Xmin X Xmax . Use as variveis globais denidas a seguir:
Xmin REAL8 Xmax REAL8 TABELA REAL8 10 dup (?)
Na gura est representado um tringulo do qual se conhecem o ngulo e o comprimento dos lados X e Y.
8.
Z Y
O comprimento do lado Z do tringulo dado por Z = X 2 + Y 2 2 X Y cos(). Escreva a sub-rotina CALC_Z em linguagem assembly para calcular o valor de Z. Os parmetros de entrada da rotina so X, Y e o ngulo alfa expresso em radianos. O valor calculado pela subrotina retornado no registo ST0 do co-processador. A declarao da rotina a seguinte:
CALC_Z PROTO X:REAL8, Y:REAL8, alfa:REAL8
9.
Apresente o cdigo da rotina que calcula o produto interno de dois vetores de N nmeros reais (N > 0) usando a unidade de vrgula utuante. Sejam X = [x1 , x2 , ..., xN ] e Y = [y1 , y2 , ..., yN ]. Ento, o produto interno dado por
[Teste de 06-07-2011]
X Y = x1 y1 + x2 y2 + ... + xN yN
O prottipo da rotina :
prodint PROTO vectX:ptr real8, vectY:ptr real8, N: dword
10.
[Teste de 06-07-2011]
Implemente a sub-rotina rotF que calcula a funo f (x) para qualquer valor de x usando a unidade de vrgula utuante. O respetivo prottipo :
rotF PROTO argX: REAL8
Durante a realizao de uma experincia registou-se a velocidade de um corpo em funo do tempo. A informao encontra-se armazenada em dois vetores, vectT e vectV, de igual tamanho. A velocidade medida no instante vectT[i] est guardada em vectV[i]. Os valores de vectT so estritamente crescentes.
11.
AJA, JCF
Pg. 2 de 3
Escreva uma sub-rotina que determina a velocidade do corpo no instante instT. Se existir um valor de i tal que vectT[i]=instT, ento o valor a retornar vectV[i]. Em caso contrrio, a funo deve estimar a velocidade no instante desejado por interpolao linear dos valores registados nos dois instantes mais prximos. A interpolao linear entre dois pontos de uma funo yi = f (xi ) e yi+1 = f (xi+1 ) aproxima y = f (x), com xi < x < xi+1 , por
y = yi + yi+1 yi (x xi ) xi+1 xi
com
a1 = 0,278 393
a)
a2 = 0,230 389
a3 = 0,000 972
a4 = 0,078 108
Apresente uma rotina que calcula o valor de erf(x) usando a aproximao indicada. Assuma que x 0. O prottipo da rotina :
erfpos PROTO argX: REAL8
b)
A funo erf(x) mpar: erf(x) = erf(x). Apresente uma rotina que calcula erf(x) para qualquer valor de x com recurso rotina da alnea anterior. O prottipo da nova rotina :
erf PROTO argX: REAL8
Fim
AJA, JCF
Pg. 3 de 3
Abril 2012
prexo de tamanho (ajuda a especicar o tamanho dos operandos) opcode (cdigo de operao) Mod R/M (especicao de operandos e modos de endereamento) SIB (scale index byte) deslocamento para endereo um valor imediato (constante) Cada instruo tem apenas os campos necessrios para a sua especicao Apenas o opcode obrigatrio
Existem instrues de 1 byte: Exemplo: INC EDX F2 Exemplo: CLD FC
Joo Canas Ferreira (FEUP) Codicao de instrues IA-32 Abril 2012 2 / 14
Prefixo bytes 1
7
SIB 1
0
1-4
0
Mod bits 2
Reg/Op 3
R/M 3 bits
Escala 2
ndice 3
Base 3
Operandos imediatos
Copiar valor imediato para registo Formato: 1011 w rrr constante
Exemplos mov cl,21h 1011 0 001 constante B1 21 mov esi,76543210h 1011 1 110 const BE 10 32 54 76
Joo Canas Ferreira (FEUP) Codicao de instrues IA-32 Abril 2012 4 / 14
sub ecx, [edi] 0010 1011 | 00 001 111 2B 0F sub ecx, [edi+31h] 0010 1011 | 01 001 111 | 0011 0001 2B 4F 31 sub ecx, [edi+76543210h] 0010 1011 | 10 001 111 | ... 2B 8F 10 32 54 76
Joo Canas Ferreira (FEUP) Codicao de instrues IA-32 Abril 2012 6 / 14
Abril 2012
7 / 14
Formatos curtos
Algumas instrues muito usadas tm formatos alternativos, mais curtos Exemplo: Somar valor imediato a um registo. Formato geral: 1000 00dw | xx 000 yyy | deslocamento | constante add byte ptr [ecx+77h], 8Fh 1000 0000 | 01 000 001 | 0111 0111 | 1000 1111 80 41 77 8F add cl, 8Fh 1000 0000 | 11 000 001 | | 1000 1111 80 C1 8F Formato curto para soma de valor imediato: AL/EAX o destino Formato: 0000 010w | constante add al,2Fh 0000 0100 | 0010 1111 04 2F add eax,76543210h 0000 0101 | ... 05 10 32 54 76
Joo Canas Ferreira (FEUP) Codicao de instrues IA-32 Abril 2012 8 / 14
Prexo de tamanho
Prexo de tamanho altera o signicado do bit w=1 Signicado de w determinado por atributo do segmento de cdigo Em modo de 32 bits (modo por omisso), w=1 indica que a instruo trabalha com operandos de 32 bits Em modo de 16 bits, w=1 indica que instruo usa operandos de 16 bits w=0 indica sempre operandos de 8 bits Prexo 66h altera a interpretao de w para a instruo prexada mov mov mov eax, edx ax, dx al, dl ; 8B C2 ; 66 8B C2 ; 8A C2
Formato geral: 1000 10dw | xx rrr yyy | deslocamento | dados d=1, w=1 1000 1011 = 8B;
Joo Canas Ferreira (FEUP)
Abril 2012
10 / 14
Valor especial de ModR/M usado para indicar que se trata de um operando com este modo de acesso. Se ModR/M tiver yyy = 100 e xx != 11 segue-se byte SIB Formato de SIB: ee | iii | bbb
ee: escala (multiplicador) iii: registo de ndice (associada escala) bbb: registo base
Joo Canas Ferreira (FEUP) Codicao de instrues IA-32 Abril 2012 11 / 14
Abril 2012
13 / 14
1o ano 2011/12
1.
redes de tipo diferente: Caracterstica Largura de banda entre n e rede Latncia de interconexo Latncia de HW de/para rede Ethernet 1,125 MB/s 15 6 ATM 10 MB/s 50 6
s s s s
s s s s
Overhead Overhead
a)
200 241
207 360
Determine, para cada tipo de rede, a latncia computador-a-computador para uma mensagem de 250 bytes.
b)
Comente a seguinte armao: Por vezes a comunicao entre dois computadores mais rpida utilizando uma rede do tipo Ethernet em vez de uma rede ATM.
2.
Considere dois sistemas diferentes destinados ao processamento de entrada/sada (E/S) de o sistema A pode suportar 1500 operaes de E/S por segundo e o sistema B pode
dados:
suportar 1000 operaes de E/S por segundo. Os sistemas usam o mesmo processador, capaz de executar 500 MIPS (milhes de instrues por segundo). Assuma que cada transferncia envolve 5 operaes de E/S e que cada E/S requer 10000 instrues. Desprezando o tempo de resposta e assumindo que as transferncias podem ser sobrepostas, determine qual a taxa mxima de transferncias por segundo que ambos os sistemas suportam.
3.
modelo:
a) b)
capacidade de cada setor: 512 bytes; velocidade de rotao: 10000 RPM; tempo de busca mdio: 6 ms; taxa de transferncia: 50 MB/s; atraso introduzido pelo controlador: 0,2 ms.
Calcule o tempo mdio de acesso ao disco. Aps se utilizar um disco com estas caractersticas vericou-se que o tempo de busca mdio anal 25% do valor anunciado. Calcule quanto melhora o tempo mdio de acesso ao disco.
AJA, JCF
Pg. 1 de 5
4.
10000 RPM, 416 setores (de 512 bytes) por cilindro; tempo de busca mnimo 2 ms e mdio 8 ms; taxa de transferncia 80 MB/s.
a)
Calcule o tempo necessrio para transferir cheiros de 200 KB e de 400 KB, assumindo que os respetivos setores esto dispostos em disco da maneira mais favorvel possvel. Nota: Tenha em considerao a capacidade total de um cilindro.
b)
Suponha agora que o cheiro de 200 KB ocupa setores escolhidos aleatoriamente. Determine o respetivo tempo de transferncia.
5.
Pretende-se enviar de um computador porttil para outro computador 100 cheiros com cerca
de 40 MB cada atravs de uma ligao sem os a 5 Mbits/s. Antes de iniciar a transferncia a energia na bateria de 100 kJ. A placa de rede sem os consome 5 W, enquanto transmite, e os restantes recursos do porttil consomem 35 W. Antes da transferncia de cada cheiro so necessrios 10 s para escolher o cheiro a enviar. Calcule quantos cheiros completos se
6.
polling
polling
polling
em cada
um dos trs casos seguintes, assumindo que a operao feita com uma periodicidade tal que no ocorre perda de dados e que os perifricos esto sempre potencialmente ocupados.
a)
Um rato deve ser examinado 50 vezes por segundo para garantir que nenhum movimento do utilizador perdido.
b)
Um leitor de disquetes transfere dados para o processador em unidades de 16 bits e tem uma taxa de transferncia de dados de 50 KBytes/s.
c)
Um disco duro transfere dados em grupos de 4 palavras (4 bytes cada) a uma taxa de 8 MBytes/s.
7.
Suponha que so usados o mesmo CPU e disco duro do exerccio anterior, mas desta vez com
overhead
interrupo, de 1000 ciclos de relgio. Determine a frao mdia de tempo de CPU consumida se o disco duro transferir dados durante 5% do tempo. Compare com o resultado do exerccio anterior e comente.
AJA, JCF
Pg. 2 de 5
8.
Suponha que usamos o mesmo sistema dos problemas anteriores, mas desta vez usando
Memory Access
Direct
ciclos e o tratamento da interrupo de m de DMA consome 500 ciclos. Se a transferncia mdia for de 8 KBytes, determine a frao do tempo de CPU consumida se o disco estiver ativo 100% do tempo. Ignore o impacto da eventual conteno no barramento entre CPU e controlador de DMA.
9.
os restantes 10 s ao tempo de E/S. Se durante cinco anos o tempo de CPU for melhorado 50% em cada ano, permanecendo o tempo de E/S constante, determine qual ser a melhoria do tempo de execuo do programa aps esses cinco anos.
10.
l do disco um bloco de dados de 4 KB, processa estes dados, escreve o resultado, formado por outro bloco de dados de 4 KB, num stio aleatrio do disco.
Os blocos so contguos e localizam-se aleatoriamente numa pista do disco. O disco possui uma velocidade de rotao de 10000 RPM, o tempo de busca mdio 8 ms, a taxa de transferncia de 50 MB/s e o atraso introduzido pelo controlador do disco 2 ms. O processamento dos dados demora 20 milhes de ciclos de relgio, sendo a frequncia do sinal de relgio de 5 GHz. Assuma que nenhum outro programa est a usar o disco ou o processador e que no h sobreposio entre a operao do disco e o processamento dos dados. Calcule o desempenho do sistema em blocos processados por segundo.
11.
zenar 10 TB (sem contar com qualquer redundncia). O sistema A usa tecnologia RAID 1 e o sistema B usa tecnologia RAID 5 com 4 discos num grupo de proteo.
a)
Determine a capacidade de armazenamento que o sistema A deve ter a mais que o sistema B.
b)
Suponha que uma aplicao escreve um bloco de dados no disco. Se o acesso a um bloco demora 30 ms, determine quanto tempo demora a escrita nos sistemas A e B no pior caso possvel.
c) 12.
o CPU executa 3000 MIPS, dispendendo o sistema operativo 100000 instrues em cada E/S;
AJA, JCF
Pg. 3 de 5
o barramento de acesso a memria possui uma taxa de transferncia de 1000 MB/s; os controladores de barramento SCSI (
o acesso a discos feito com uma largura de banda de 75 MB/s e o tempo mdio de busca mais a latncia de rotao 6 ms.
Considere que a leitura do disco se faz em blocos de 64 KB, situados em setores sequenciais na mesma pista, e que um programa do utilizador precisa de 200000 instrues por operao de E/S. Assuma que no ocorrem conitos de acesso a discos.
a)
Calcule a taxa mxima de operaes de E/S, indicando qual o componente que limita o desempenho do computador (
bottleneck ).
b)
Determine quantos discos e quantos controladores SCSI so necessrios para atingir tal taxa de E/S.
13.
o programa de um utilizador faz continuamente leituras de blocos de 64 KB, requerendo 2 milhes de ciclos de relgio para processar cada bloco;
o sistema operativo dispende 1 milho de ciclos por cada operao de E/S; o barramento de acesso a memria possui uma taxa de transferncia de 640 MB/s; o CPU opera a 3 GHz; o acesso a discos feito com uma largura de banda de 64 MB/s e o tempo mdio de busca mais a latncia de rotao 9 ms;
existem 20 discos ligados ao barramento, cada um com o respetivo controlador (assuma que cada disco pode ser controlado de forma independente e ignore possveis conitos no acesso aos discos).
Identique o recurso (CPU, barramento de memria ou discos) que limita o desempenho do sistema.
14.
Um disco magntico tradicional que roda a 3000 RPM, tem uma latncia mdia de busca de 30 ms, uma latncia de controlador de 10 ms e transfere dados a 20 MB/s.
ash
AJA, JCF
Pg. 4 de 5
Pretende-se projetar um controlador inteligente para alternar entre os discos consoante for mais ecaz. Justique as suas respostas com clculos.
a)
Considerando uma transferncia de 40 kB contguos, qual o tempo total de acesso para o disco SSD?
b)
Qual o tempo de acesso da mesma transferncia de 40 kB contguos no caso do disco magntico? Considere que aps comear a transferncia, eventuais mudanas de pista
c)
Calcule o tamanho da transferncia que o controlador inteligente deve usar como valor limite para decidir trocar entre o disco SSD e o disco magntico (i.e., o limiar de deciso).
15.
de vdeo ligada por um barramento Firewire capaz de transferir blocos de 16 kB a 800 MB/s. Pretende-se usar a estratgia de
polling
a)
Considere um cenrio em que o CPU tem de gastar 99% do seu tempo em outras tarefas que no
polling.
polling
polling
b)
Considerando apenas as restries impostas pelo barramento Firewire, qual o nmero mximo de blocos de 16 kB que podem ser lidos da cmara de vdeo num segundo?
c)
polling
Fim
AJA, JCF
Pg. 5 de 5
Maio 2012
Aspetos gerais Armazenamento de informao Comunicao com perifricos Gesto de perifricos Sistemas RAID
Maio 2012
2 / 53
Organizao de um computador
Fonte: [COD4]
FIGURE 1.4 The organization of a computer, showing the ve classic components. The processor gets Joo Canas Ferreira (FEUP)instructions and data from memory. Input writes dados memory, and output reads dataMaio 2012 Sistemas de entrada/sada de data to from memory. Control sends the signals that determine the operations of the datapath, memory, input, and output. Copyright 2009 Elsevier, Inc. All rights reserved.
3 / 53
Dispositivos de entrada/sada
Processor Interrupts
Cache
Memory-I/O Interconnect
Main memory
I/O controller
I/O controller
I/O controller
Disk
Disk
Graphics output
Network
Fonte: [COD4] FIGURE 6.1 A typical collection of I/O devices. The connections between the I/O devices,
processor, and memory are historically called buses, although de dados means shared parallel wires and most 4 / 53 the term Joo Canas Ferreira (FEUP) Sistemas de entrada/sada Maio 2012 I/O connections today are closer to dedicated serial lines. Communication among the devices and the pro-
Diversidade de perifricos
Device
Keyboard Mouse Voice input Sound input Scanner Voice output Sound output Laser printer Graphics display Cable modem Network/LAN Network/wireless LAN Optical disk Magnetic tape Flash memory Magnetic disk Input Input Input Input Input Output Output Output Output Input or output Input or output Input or output Storage Storage Storage Storage
Behavior
Partner
Human Human Human Machine Human Human Human Human Human Machine Machine Machine Machine Machine Machine Machine
FIGURE 6.2 Fonte: [COD4] The diversity of I/O devices. I/O devices can be distinguished by whether they serve as input, output, or storage devices; their communication partner (people or other computers); and their peak Joo Canas Ferreira (FEUP) Sistemas de entrada/sada de dados Maio 2012 5 / 53 communication rates. The data rates span eight orders of magnitude. Note that a network can be an input or an output device, but cannot be used for storage. Transfer rates for devices are always quoted in base 10, so that 10 Mbit/sec = 10,000,000 bits/sec. Copyright 2009 Elsevier, Inc. All rights reserved.
Conabilidade importante
Em especial, para armazenagem de informao (discos magnticos)
Medidas de desempenho
Latncia (tempo de resposta) Dbito (largura de banda) Quantidade de informao processada por unidade de tempo
Servidores
dbito e expansibilidade
Maio 2012
6 / 53
Conabilidade
Conabilidade: qualidade do sistema que permite conar justicadamente no servio oferecido. Vrios aspetos quanticveis:
Fiabilidade (reliability) Quanticao: medida do tempo de funcionamento at falhar probabilidade de no falhar durante o tempo de misso
Disponibilidade (availability) Quanticao: tempo (ou %) em que o sistema est operacional tempo mdio de reparao Reparabilidade (maintainability) Segurana contra acidentes (safety) Segurana contra acesso no autorizado (security) Fatores: integridade, condencialidade, autenticidade
Joo Canas Ferreira (FEUP) Sistemas de entrada/sada de dados Maio 2012 7 / 53
Medidas de conabilidade
Fiabilidade: tempo mdio at falhar MTTF: mean time to failure Interrupo de servio: tempo mdio de reparao MTTR: mean time to repair Tempo mdio entre falhas: MTBF: mean time between failures MTBF = MTTF + MTTR Disponibilidade: MTTF / (MTTF + MTTR) Para aumentar a disponibilidade:
Aumentar MTTF tolerncia a falhas (redundncia), previso de falhas, etc. Reduzir MTTR melhores ferramentas e processos de diagnstico e reparao
Joo Canas Ferreira (FEUP) Sistemas de entrada/sada de dados Maio 2012 8 / 53
Fonte: E. Pinheiro et al, Failure Trends in a Large Disk Drive Population, 5th USENIX Conference on File and Storage Technologies (FAST07), Fev. 2007)
Joo Canas Ferreira (FEUP) Sistemas de entrada/sada de dados Maio 2012 9 / 53
Aspetos gerais Armazenamento de informao Comunicao com perifricos Gesto de perifricos Sistemas RAID
Maio 2012
10 / 53
Discos magnticos
Pista (track): coroa circular numa face de um prato Cilindro (cylinder): conjunto de pistas que podem ser simultaneamente lidas/escritas Setor: segmento de uma pista; unidade bsica de armazenamento
Joo Canas Ferreira (FEUP) Sistemas de entrada/sada de dados Maio 2012 11 / 53
Acesso a um setor
Cada setor fsico contm:
identicador do setor dados tradicional: 512 bytes a partir de 2009: 4096 bytes cdigo corretor de erros (ECC) permite esconder defeitos e problemas de gravao informao de sincronizao e lacunas
Maio 2012
12 / 53
Formato de setores
[Fonte: Wikipedia]
Joo Canas Ferreira (FEUP) Sistemas de entrada/sada de dados Maio 2012 13 / 53
Maio 2012
15 / 53
1,000
10
2000
1 2005 0.1
Fonte: [CAQA5]
10
100
1,000
100,000
Fonte: [CAQA5]
Joo Canas Ferreira (FEUP) Sistemas de entrada/sada de dados Maio 2012 16 / 53
Memria Flash
Memria no voltil
100x 1000x mais rpida que discos magnticos menor consumo, maior robustez mais cara C/GB (entre disco magntico e DRAM)
Maio 2012
17 / 53
clulas perdem capacidade de armazenamento gesto de desgaste: mapear dados para zonas menos usadas
Joo Canas Ferreira (FEUP) Sistemas de entrada/sada de dados Maio 2012 18 / 53
Characteristics
Typical use Minimum access size (bytes) Read time (microseconds) Write time (microseconds) Read bandwidth (MBytes/second) Write bandwidth (MBytes/second) Wearout (writes per cell) Best price/GB (2008)
FIGURE 6.7 Characteristics of NOR versus NAND ash memory in 2008. These devices can read bytes and 16-bit words despite their large access sizes. Copyright 2009 Elsevier, Inc. All rights reserved.
Maio 2012
19 / 53
[Fonte: Wikipedia]
Gesto de espao
[Fonte: Wikipedia]
Maio 2012
21 / 53
[Fonte: Chameleon: A High Performance Flash/FRAM Hybrid Solid State Disk Architecture, Soon et al., IEEE-CAL Vol.7, N.1, 2008]
Maio 2012
22 / 53
Maio 2012
23 / 53
Aspetos gerais Armazenamento de informao Comunicao com perifricos Gesto de perifricos Sistemas RAID
Maio 2012
24 / 53
Interligar dispositivos
Como interligar CPU, memria e controladores de E/S ? Soluo mais simples: barramento paralelo um canal de comunicao partilhado Conjunto de ligaes paralelas para dados e sincronizao Problema: pode limitar o desempenho do sistema (gargalo) O desempenho de um barramentos est limitado por fatores fsicos
comprimento das ligaes nmero de dispositivos ligados (slots)
Maio 2012
25 / 53
Tipos de barramentos
Barramentos processador/memria Curto, alta velocidade Caratersticas adaptadas organizao da memria Exemplo: FSB: Front Side Bus Barramento de E/S (perifricos) Mais comprido Mltiplas ligaes Normalizado, para garantir interoperabilidade Ligado ao CPU atravs de uma ponte Exemplos: PCI, USB, LPC, etc.
Joo Canas Ferreira (FEUP) Sistemas de entrada/sada de dados Maio 2012 26 / 53
Maio 2012
27 / 53
ESI PCIe x8 (2 GB / sec) (2 GB / sec) PCIe x4 (1 GB / sec) PCIe x4 (1 GB / sec) PCI-X bus (1 GB / sec) PCI-X bus (1 GB / sec) Parallel ATA (100 MB / sec)
Disk
CD / DVD
FIGURE 6.9 Organization of the I/O system on an Intel server using the Intel 5000P Maio 2012 chip Joo Canas Ferreira (FEUP) Sistemas de entrada/sada de dados set. If you assume reads and writes are each half the trafc, you can double the bandwidth per link for PCIe. Copyright 2009 Elsevier, Inc. All rights reserved.
28 / 53
KBC: controlador de teclado, SP: porto srie(RS232), PP: porto paralelo , FDC: controlador de diskette (oppy disk controller)
Joo Canas Ferreira (FEUP) Sistemas de entrada/sada de dados Maio 2012 29 / 53
Aspetos gerais Armazenamento de informao Comunicao com perifricos Gesto de perifricos Sistemas RAID
Maio 2012
30 / 53
Gesto de E/S
E/S so geridas pelo sistema operativo Vrios programas partilham os recursos E/S
Proteo e sequenciamento da utilizao
Controlador tem:
Registos de comandos: indicam a tarefa a executar Registos de estado: indicam atividade em execuo e situaes de erro Registos de dados: escrita (CPU/memria para dispositivo) leitura (do dispositivo para CPU/memria)
Joo Canas Ferreira (FEUP) Sistemas de entrada/sada de dados Maio 2012 31 / 53
Maio 2012
32 / 53
Maio 2012
33 / 53
Consultar registos de estado Dispositivo pronto? Realizar operao (leitura/escrita) Dispositivo com erro? Recuperar
Tcnica comum em sistemas pequenos ou de baixo desempenho Comportamento temporal previsvel Baixo custo em hardware Simples Em sistemas de elevado desempenho: desperdia recursos de CPU Pode ser apropriado para perifricos lentos: nmero de varrimentos necessrios pequeno
Joo Canas Ferreira (FEUP) Sistemas de entrada/sada de dados Maio 2012 34 / 53
Tcnica 2: Interrupes
Dispositivo gera interrupo quando:
est pronto ocorre um erro
Prioridades so, geralmente, xas (denidas por hardware) Sistema inclui hardware especco para gerir as interrupes
Intel 8259 (PCs antigos), circuito integrado ou includo em southbridge APIC (Advanced Programmable Interrupt Controller)
Joo Canas Ferreira (FEUP) Sistemas de entrada/sada de dados Maio 2012 35 / 53
Maio 2012
36 / 53
Medidas de desempenho
Medidas de desempenho de E/S dependem de:
Hardware: CPU, memria, controladores, barramentos Software: sistema operativo, sistema de gesto de base de dados, aplicao Carga: taxas e padres de pedidos
Projeto pode beneciar tempo de resposta ou dbito Frequentemente: medir dbito com restries do tempo de resposta (o tempo de resposta no pode exceder um limiar denido) Vrios tipos de benchmarks
Bases de dados: Transaction Processing Council http://www.tpc.org Sistema de cheiros: SPEC File System (SFS) http://www.spec.org/sfs2008 Servidores Web: SPEC Web http://www.spec.org/web2009
Joo Canas Ferreira (FEUP) Sistemas de entrada/sada de dados Maio 2012 38 / 53
E/S vs CPU
Amdahl ataca de novo. . . Desempenho E/S pode comprometer ganhos obtidos por aumento do paralelismo. Exemplo:
Tarefa demora 90 s (de tempo de CPU) mais 10 s de tempo de E/S Se o nmero de CPUs duplicar cada dois anos, como evolui o tempo total, admitindo que o sistema E/S no alterado?
Fonte: [COD4]
Maio 2012
39 / 53
Aspetos gerais Armazenamento de informao Comunicao com perifricos Gesto de perifricos Sistemas RAID
Maio 2012
40 / 53
Conjuntos de discos
B0 B4
B1 B5
stripe 0 stripe 1
B2 B6
B3 B7
Discos fsicos em paralelo formam um disco virtual Blocos (B0,. . . ) de um cheiro so "espalhados"pelos discos fsicos 1 bloco = 1 ou mais setores (nmero xo) Blocos correspondentes de cada disco formam uma banda (stripe)
Joo Canas Ferreira (FEUP) Sistemas de entrada/sada de dados Maio 2012 41 / 53
Menor custo
Discos individuais mais baratos (grande volume de vendas) Controladores sosticados em circuito integrado Existem controladores capazes de lidar com 1000 discos individuais
Desvantagem: Menor abilidade Basta falhar um disco fsico para levar falha do conjunto Para um conjunto de D discos, cada um com o mesmo MTTF: MTTF D Soluo: Introduzir redundncia para recuperar de avaria de um disco MTTFarray =
Joo Canas Ferreira (FEUP) Sistemas de entrada/sada de dados Maio 2012 42 / 53
RAID
RAID = Redundant Array of Inexpensive Disks Paralelismo aumenta a abilidade mais econmico (para o mesmo nvel de abilidade) ter redundncia que aumentar a abilidade de um nico disco
Aproveita economia de escala: existe uma mercado muito grande para discos baratos
Aumenta MTBF, especialmente se for possvel trocar discos sem parar o sistema (hot swap) Paralelismo aumenta o desempenho
Um cheiro pode ser espalhado por vrios discos Leituras paralelas permitem obter vrios blocos simultaneamente
Maio 2012
43 / 53
Maio 2012
44 / 53
RAID 1
um par rplicas B0 B2 B1 B3 B0 B2 B1 B3
RAID 1: espelho (duplicao concorrente de cada disco) Discos: G = 1, C= 1 (cada disco de dados duplicado) Escrita simultnea no disco de dados e no disco-espelho Falha de disco: ler do espelho Pode ler blocos diferentes de cada disco Aproveitamento da capacidade dos discos de 50 % RAID 2 no usado na prtica.
Joo Canas Ferreira (FEUP) Sistemas de entrada/sada de dados Maio 2012 45 / 53
P(b1,b2,b3,b4), P(b5,b6,b7,b8),... Exemplo para a distribuio dos primeiros bits (b1-b15) de um bloco
RAID 3 tem C=1; cabeas de leitura sincronizadas (tipicamente) Disco adicional guarda paridade de bits correspondentes de cada disco Leitura simultnea de todos os discos reduo de desempenho para cheiros pequenos Escrita: gerar bits de paridade e escrever em todos os discos (D+C) Pouco ecaz para escritas pequenas (mas no para grandes)
Joo Canas Ferreira (FEUP) Sistemas de entrada/sada de dados Maio 2012 46 / 53
Clculo de paridade
Paridade de D bits (o smbolo representa a operaao ou-exclusivo): Paridade(b1 , b2 , . . . , bD ) = b1 b2 . . . bD = p Se nmero de bi = 1 par paridade = 0; seno paridade = 1 Usar paridade para determinar um dos bi em falta:
1 2
a (b c) = (a b) c = a b c ab=ba Para elementos com vrios bits, a paridade calculada fazendo o ou-exclusivo dos bits em posies correspondentes: Se X = [x1 , x2 , . . . , xn ] e Y = [y1 , y2 , . . . , yn ], ento Paridade(X, Y) = [x1 y1 , x2 y2 , . . . , xn yn ] Nota:
Joo Canas Ferreira (FEUP) Sistemas de entrada/sada de dados Maio 2012 47 / 53
B0 B4
B1 B5
B2 B6
B3 B7
RAID 4 tem C = 1 Melhor desempenho para escritas pequenas do que RAID 3 Dados espalhados pelos discos ao nvel do bloco Disco de vericao armazena paridade de blocos da mesma banda Leitura: acesso apenas ao disco que contm o bloco e ao disco de paridade Escrita: alterar um disco de dados e atualizar o disco de paridade (ciclo leitura-modicao-escrita)
Joo Canas Ferreira (FEUP) Sistemas de entrada/sada de dados Maio 2012 48 / 53
Fonte: [COD4]
RAID 3: aplicaes com elevado dbito, mas poucas operaes E/S RAID 4: mais eciente que RAID 3 para acessos a pequenos cheiros RAID 3 e 4: todas as escritas (de um grupo) envolvem o disco de paridade RAID 3 e RAID 4 so pouco usados, j que RAID 5 mais eciente
Joo Canas Ferreira (FEUP) Sistemas de entrada/sada de dados Maio 2012 49 / 53
Fonte: [COD4]
Joo Canas Ferreira (FEUP) Sistemas de entrada/sada de dados Maio 2012 50 / 53
RAID: concluso
Soluo econmica para necessidades de armazenamento signicativas mais barato usar vrios discos de abilidade normal que um disco de abilidade muito elevada. RAID aumenta disponibilidade (exceto RAID 0) Tambm pode aumentar o desempenho preciso ter em ateno o domnio de aplicao, porque o desempenha depende das caratersticas dos acessos Elevada disponibilidade requer trocas em funcionamento para reduzir o tempo mdio de reparao (MTTR) Ateno: Assume-se que falhas de discos so independentes! No resolve situaes em que vrios discos so afetados simultaneamente pelo mesmo evento (p.ex. falha de fonte de alimentao).
Maio 2012
52 / 53
Referncias
COD4 D. A. Patterson & J. L. Hennessey, Computer Organization and Design, 4 ed. CA5 D. A. Patterson & J. L. Hennessey, Computer Architecture: A Quantitative Approach, 5 ed. Os tpicos tratados nesta apresentao so abordados nas seguintes seces de [COD4]: 6.16.7
Maio 2012
53 / 53
1o ano 2011/12
O formato do cdigo binrio da instruo MOV mem/reg, imediato est representado na gura seguinte,
1.
1100 011w
xx00 0yyy
em que: w indica se o operando imediato do tipo byte (w=0) ou doubleword (w=1) xx dene o modo de endereamento yyy r/m o tipo de base de endereamento Determine o cdigo das instrues seguintes.
a) b) c) 2.
MOV DWORD PTR [EBX + 2345H], 1245h MOV BYTE PTR [EDI + 123H], 09h MOV EAX, 34h
O formato do cdigo binrio da instruo MOV mem/reg1, mem/reg2 est representado na gura, 1000 10dw xx reg yyy DesL DesH 0, 1 ou 4 bytes
em que: se d=0, o operando descrito por xx e yyy o destino (mem/reg1) e reg mem/reg2 se d=1, reg o destino (mem/reg1) e, xx e yyy mem/reg2 w indica se o operando da instruo do tipo byte ou doubleword xx modo de endereamento yyy r/m tipo de base de endereamento
a)
b)
Determine as diferenas fundamentais do cdigo da instruo MOV [EBX+2345H], EAX face a MOV [EBX+2*EDX+2345H], EAX.
Pg. 1 de 2
AJA, JCF
3.
O formato da instruo CMP no microprocessador da famlia IA-32 da Intel : 0011 10dw xx reg yyy ss kkk ppp SIB em que: w d indica se o operando da instruo do tipo byte ou doubleword se d=0, o operando descrito por xx e yyy o destino (mem/reg1) e reg mem/reg2 se d=1, reg o destino (mem/reg1) e, xx e yyy mem/reg2 xx modo de endereamento yyy registo usado no modo de endereamento ss escala kkk registo de ndice ppp registo de base O campo sombreado usado apenas com certos modos de endereamento.
a) b)
Apresente o cdigo da instruo CMP [EDI + 10H], AL Indique para que serve o campo SIB da instruo (assinalado a sombreado), e d um exemplo de uma instruo que utilize esse campo.
4.
O formato da instruo INC no microprocessador da famlia IA-32 da Intel 1111 111w xx 000 yyy ss kkk ppp SIB e da instruo MOV 1000 10dw w d xx yyy ss kkk ppp xx reg yyy ss kkk ppp SIB DesL DesH 0, 1 ou 4 bytes DesL DesH 0, 1 ou 4 bytes
indica se o operando da instruo do tipo byte (0) ou doubleword (1) destino reg (1) ou destino xxyyy (0); modo de endereamento registo usado no modo de endereamento escala registo de ndice registo de base
O campo sombreado opcional. Converta para cdigo-mquina (representando-o em hexadecimal) a sequncia de instrues:
MOV AL , [ EDI +200] INC AL
Fim
AJA, JCF Pg. 2 de 2