Вы находитесь на странице: 1из 81

INTRODUCCION:

PARALELISMO E INCREMENTO
DE PRESTACIONES

C O N CEPTO D E ARQ U ITECTU RA:


En 1964:
La arquitectura del computador es la estructura del computador que el
programador en lenguaje maquina debe conocer para escribir un programa
correcto. Con esta definicin suponemos que la arquitectura del computador esta
compuesto por:
Registros.
Memoria.
Conjunto de instrucciones.
Este ultimo incluye los formatos los modos de direccionamiento y la codificacin de
las instrucciones.

Posteriormente el concepto se ha ido


ampliando a partir de las descripciones del
computador como un conjunto de niveles de
abstraccin estructuradas jerrquicamente, los
cuales engloban la tecnologa y la arquitectura
dentro de un marco comn de estudio del
computador.

NIVELES DE DESCRIPCIN DE UN COMPUTADOR


Los enfoques basados en niveles jerrquicos son adecuados para facilitar el
anlisis, diseo, implementacin y uso del computador
Estructura de niveles conceptuales de Blaaw [1970]:
Identifica tres niveles conceptuales en el computador
o

La arquitectura: define el comportamiento funcional del computador.

La configuracin: define la organizacin del computador en trminos de


transferencia entre registros y flujo de informacin.

La realizacin: hace referencia a la tecnologa de los elementos


concretos que se utilizan
para implementar la configuracin.

Niveles estructurales de Bell y Newell [1971]:


Describen el computador mediante aproximacin por
capas, se proponen 5 niveles:
o Componente.
o Electrnico.

Nivel de
Componentes
Nivel Electrnico
Nivel Digital

o Digital.
o Transferencia entre registros (RT).

Nivel RT

o Procesador-Memoria-Interconexin (PMS).
Nivel PMS

Niveles de interpretacin de Levy: contemplan el


computador desde un punto de vista funcional
constituida por una serie de maquinas virtuales
superpuestas en la que cada una es capaz de
interpretar las instrucciones de su nivel
proporcionando servicios a la maquina de nivel
superior y aprovechando los de la maquina de nivel
inferior se distinguen 5 niveles:

Aplicaciones
Lenguaje de Alto
nivel
Sistema Operativo
Instrucciones
Mquina
Microinstrucciones

Niveles software
superiores

La siguiente distribucin de niveles


integra la orientacin estructural de bell y
newell y el punto de vista funcional de
levy y tanenbaum.
Es posible la descripcin de los elementos
de un nivel en trminos de su estructura y
organizacin y una descripcin funcional
(en trminos de su comportamiento)

A
R
Q
U
I
T
E
C
T
U
R
A

Llamadas al sistema, interfaz


lgica, interfaz de transferencia
de datos, lenguaje de ordenes

S
O
F
T
W
A
R
E

Nivel de sistema operativo


Sistema de computo,
programas en lenguaje
maquina y ensamblador

Nivel de sistema de
computador

Procesadores, interfaces
E/S, chipsets, etc.

Nivel RT

T
E
C
N
O
L
O
G
I
A

Circuitos aritmticos, registros,


memorias, multiplexores,
contadores

Nivel de lgica digital

Puertas lgicas,
inversiones, biestables.

Nivel de circuito
electrnico
Transistores,
resistencias,
condensadores.

Nivel de componentes
Uniones PN, metal,
polisilicio.

H
A
R
D
W
A
R
E

Arquitectura concreta:
Estructura: definida en trminos de los
componentes.
Organizacin: referente a los flujos de control y
datos entre componentes presentes dinmicamente.

Arquitectura abstracta:
Descripcin funcional: designa un elemento como
caja negra en la que se especifica lo que el diseador
necesita para utilizar dicho elemento como
componente para el nivel superior.

Un aspecto central en un nivel de abstracciones la posibilidad de


ensamblar bloques propios de ese nivel para construir los bloques
de abstraccin superior teniendo en cuenta que al hacer esto se
espera obtener una mxima eficiencia, para ello consideraremos los
siguientes aspectos:
La arquitectura abstracta.
La arquitectura concreta.
La eficiencia.
El diseo.

DEFINICIN DE ARQUITECTURA DEL


COMPUTADOR
Se refiere a las arquitecturas abstracta y
concreta en el nivel de sistema computador
(SC) y a las arquitecturas concreta y abstracta
en el nivel de transferencia entre registros(RT).
Los componentes de la arquitectura concreta
en el nivel SC son los procesadores, interfaces
de E/S, memorias, etc., que tienen una
arquitectura abstracta y una arquitectura
concreta en nivel RT.

La arquitectura abstracta de un procesador tiene dos puntos de


vista:
Del programador: constituye el modelo de programacin que
es el lenguaje maquina.
Del diseador de hardware (modelo hardware): interfaces de
E/S, de interrupciones y de programa.
DISEADOR
DE
HARDWARE

PROCESAD
OR
PROGRAMADOR

INTERFAZ DE
INTERRUPCIO
N
INTERFAZ
DE E/S

INTERFAZ
DE
PROGRAMA

MODELO DE
PROGRAMACION

ARQUITECTURA:
Conjunto de instrucciones, recursos y caractersticas del procesador que son
visibles al software que se ejecuta en el mismo.
MICROARQUITECTURA:
Conjunto de recursos y mtodos utilizados para satisfacer las especificaciones que
establece la arquitectura.
Define las especificaciones para la implementacin lgica.

DISEO LOGICO O IMPLEMENTACION LOGICA:


Circuitos lgicos utilizados para satisfacer
las especificaciones dictadas por la
microarquitectura.
Determina las especificaciones para la
implementacin fsica.
IMPLEMENTACION FISICA:
Realizacin de los circuitos lgicos mediante
una tecnologa determinada de circuitos
integrados.

MBITO DE ESTUDIO QUE INCLUYE LA


ARQUITECTURA DE COMPUTADORES
Lenguaje maquina, micro arquitectura del procesador y la
interfaz de los programas
Interaccin de los elementos del computador
Interfaz para programas de alto nivel y mdulos de control de l
computador
Procedimientos de evaluacin
Tendencias de evolucin

OBJETIVOS DEL ESTUDIO DE LA


ARQUITECTURA DE COMPUTADORES
Evaluar las prestaciones, caractersticas y analizar su desempeo
identificando posibles cuellos de botella que limitaran sus prestaciones.
Disear y/o configurar un sistema para que se ajuste a los requisitos
establecidos
Aprovechar las caractersticas del computador para desarrollar
aplicaciones eficaces, que cumplan con las prestaciones requeridas

EVOLUCIN Y PRESTACIONES
DE LAS
ARQUITECTURAS

OBJETIVO DE ESTA SECCIN:


Poner de manifiesto las interacciones
Existentes entre:
Tecnologa

Aplicaciones

Arquitectura

Mercados

INTRODUCCION
Desarrollo de equipos de cmputo
Campo dinmico e Innovador
El Cambio es una constante

Saber cmo son las cosas y hacia


dnde van a evolucionar
Utilizando la evaluacin
Cuantitativa de
prestaciones

Coste de las
arquitecturas

Primeras Computadoras

Aplicaciones de clculo cientfico


Financiados por Entidades pblicas
Intereses gubernamentales o acadmicos

Las aplicaciones del computador y la


Accesibilidad al mismo han ido en aumento

La transformacin del computador:


Calculadora compleja
Procesador de informacin
Configuracin de la Sociedad de la
Informacin

Globalizacin
Potenciacin
del Ritmo de
Cambio

Organizacin
SOCIEDAD DE
LA
INFORMACIN
Inmediatez

TICs
Interactividad/
Independencia

La Evolucin de los computadores


est determinada por:
Mejoras tecnolgicas
Aplicaciones dominantes en el mercado

Relaciones a considerar en la evolucin de


los computadores:

UN MODELO SENCILLO DE PRESTACIONES:


TIEMPO DE CPU DE UN PROGRAMA

T(tarea): Tiempo de CPU de un programa


NI: Nmero de Instrucciones
CPI: Nmero de ciclos por instruccin
T(ciclo): Periodo de reloj del procesador

OBJETIVO

ANLISIS

Reducir el tiempo de ejecucin


de los programas (Ttarea)

NI
CPI
T ciclo / f ciclo

NI

Depende de

Repertorio de
instrucciones
Compilador

CPI

Depende de

Repertorio de
instrucciones
Organizacin
del computador

T/ f

Depende de

Prestaciones
que ofrece
la tecnologa

Comparacin de arquitecturas:
CISC
(Arquitecturas con
conjunto de instrucciones
complejo)
Reduce el NI,
incrementa el CPI.

RISC
(Arquitecturas con
conjunto de instrucciones
Reducido)
Reduce el CPI,
Incrementa el NI

Ambos incrementos se
contrarrestan con el aumento
de la frecuencia (f).

CISC
Los microprocesadores CISC tienen un conjunto
de instrucciones que se caracterizan por ser muy
amplios y permitir operaciones complejas.
La microprogramacin es una caracterstica
importante y esencial en casi todas las arquitecturas
CISC, como por ejemplo:
Intel 8086, 8088
Motorola 68000,68010

RISC
Es un tipo de CPU generalmente utilizado en
Microcontroladores y Microprocesadores con las
Siguientes caractersticas fundamentales:
Instrucciones de tamao fijo y presentadas en
un nmero reducido de formatos.
Solo las instrucciones de carga y almacenamiento
acceden a la memoria de datos.

CONSECUENCIAS DE LA EVOLUCIN
PREVISTA EN LA TECNOLOGA

En la dcada pasada, los microprocesadores han


estado mejorando sus prestaciones en torno al
50-60% anual.
Este ritmo se ha debido al aprovechamiento de las
Mejoras tecnolgicas para:
1. Aumentar el nmero de instrucciones por ciclo
2. Aumentar la frecuencia de reloj a la que
Funcionan los procesadores

Para entender la influencia de la tecnologa


en la potencia disipada en un circuito
integrado, se puede utilizar la sig. Expresin:

C: Capacidad a la salida de una puerta.


A: Coeficiente de actividad del circuito.
f: Frecuencia del reloj.
I corto: Corriente de cortocircuito (fuente-tierra).
t : Tiempo en el que fluye la corriente de corto.
V: Tensin.
I leak: Corriente de perdidas

Es posible reducir la potencia consumida


Disminuyendo la frecuencia de funcionamiento o disminuyendo la tensin.
No obstante, si se tiene en cuenta que la
frecuencia mxima a la que puede funcionar
el circuito, que es:

Habra que reducir la tensin umbral para


no reducir las prestaciones, pero esto
supondra aumentar exponencialmente el
valor de la corriente de prdidas que es:

Por lo tanto, aunque la reduccin de la tensin de


alimentacin implique la reduccin del consumo
sin afectar a las prestaciones, el aumento de la
potencia consumida limita el alcance de esta tcnica.

Otros factores relacionados con el consumo


De energa de los circuitos integrados:
Densidad de potencia (potencia consumida por
unidad de superficie).
Potencia pico (potencia mxima que puede
consumir un circuito sin sufrir daos).
Potencia dinmica, que hace referencia al cambio
brusco de potencia en el circuito, sin que el ruido
afecte su comportamiento.
Energa necesaria para realizar un clculo.
MIPS/W(millones de instrucciones por segundo
por watio), establece la relacin instruccin- energa.

El estudio de todas estas caractersticas


En las prestaciones de las arquitecturas
Con el fin de
Evolucionar
Y Mejorar la interaccin
Hombre - computadora

EL PARALELISMO EN
LAS ARQUITECTURAS
ELPARALELISMOES UNA FORMA DECOMPUTACINEN LA
CUAL VARIOS CLCULOS PUEDEN REALIZARSE SIMULTNEAMENTE,
BASADO EN EL PRINCIPIO DE DIVIDIR LOS PROBLEMAS GRANDES
PARA OBTENER VARIOS PROBLEMAS PEQUEOS, QUE SON
POSTERIORMENTE SOLUCIONADOS EN PARALELO.

1.3.1 CLASIFICACIN DE LAS


ARQUITECTURAS PARALELAS
El paralelismo se ha implementado en las arquitecturas siguiendo dos lneas
fundamentales.

Replicacion de elementos (procesadores modulos de memoria, )en los que se


destribuyen el trabajo.

Segmentacion de cauce pipelining (tcnica a travs de la cual un elemento se divide


en una serie de etapas que funcionan de forma independiente, por las que van pasando
operaciones, instrucciones, etc). Esta tcnica se ha aplicado en el diseo de procesadores
segmentados, permitiendo el paralelismo entre instrucciones (ILP, Instruction Level
Parallelism) procesadores susperescalares y VLIW.

CLASIFICACIN O TAXONOMA FLYNN


Las divide segn el numero de flujo de
instrucciones y flujo de datos

Es una casificaion simple que da una


idea clara de las distintas
arquitecturas.

Computarores SISD

Computadores SIMD

Computadores MIMD

Computadores MISD

COMPUTADORES SISD
Se caracteriza por tener un nico flujo de
instrucciones sobre un nico flujo de datos, es decir
ejecuta una instruccin detrs de otra, es el
concepto de arquitectura Von Neuman donde en
cualquier momento solo se ejecuta una nica
instruccin.
Ejemplo.- Maquinas secuenciales convencionales
En la actualidad:
Hoy en dia no se fabrican computadores puramente
SISD ya que la mayora de procesadores modernos
incorporan algn tipo de paralelismo como la
segmentacin de instrucciones.

COMPUTADORES SIMD
Estos sistemas tienen un nico flujo de instrucciones que
operan sobre multiples flujos de datos. Estos sistemas los
tenemos en maquinas vectoriales con hardware escalar y
vectorial.
El proceso es sncrono, la ejecucin de las instrucciones
sigue siendo secuencial como el caso anterior todos los
elementos ejecutan una misma instruccin pero sobre una
gran cantidad de datos.
Posee una nica unidad de control.
Soportan procesamiento vectorial
Util en aplicaciones uniformes (Procesamiento de
imgenes multimedia aplicaciones numericas)
Funcionamiento:
La unidad de control manda una misma instruccin a
todas las unidades de proceso (ALU) las unidades de
proceso operan sobre datos diferentes pero con la misma
instruccin recibida.

permite ejecutar varias operaciones de calculo con una sola instruccion


A los Procesadores basados en esta Arquitectura se les conoces como
(Procesadores Matriciales)
Esta arquitectura nace debido a la necesidad de aplicar repetitivamente una misma
operacin en grupos de datos diferentes como muestras continuas de audio,
matrices de video.

Matrices de video.- podemos usar ordenadores para desplegar imagenes en 2 o 4


monitores.

COMPUTADORES MIMD
Este tipo de computadores paralelo igual que SIMD
la diferencia que MIMD es asncrono, no tiene reloj
central. Cada Procesador en un sistema MIMD
puede ejecutar su propia secuencia de
instrucciones y tener sus propios datos.

Ejemplos:
Cray-2
IBM 370
UNIVAC 1100/80

LOS SISTEMAS MIMD SE CLASIFICAN EN:


Sistemas de Memoria Compartido
Sistemas de Memoria Distribuido
Sistemas de Memoria Compartido Distribuido

SISTEMAS DE MEMORIA COMPARTIDO

Cada procesador tiene acceso a toda la memoria (direccionamiento


compartido)

Tienen tiempo de acceso a memoria uniformes ya que tales


procesadores se encuentran igualmente comunicados con la memoria
principal y las lecturas y escrituras de todos los procesadores tienen
la misma latencia.

Velocidad de programacion

VENTAJAS

DESVENTAJAS

Poca estabilida de procesadores,


debido a que puede generar un cuello
de botella (disminucin de velocidad de
procesos, incrementa el tiempo de
espera y reducen la productividad la
razn principal por el alto precio de
Cray, es la memoria )

SISTEMAS DE MEMORIA DISTRIBUIDA

Tiene propia memoria local

Los procesadores pueden compartir informacin solamente enviando


mensaje. (comunicacin por paso de mensajes)

VENTAJAS

Las estabilidad, los computadores con


memoria distribuida son fciles de
escalar, mientras que la demanda de
los recursos ofrece que se puede
agregar mas memoria y procesadores.

DESVENTAJAS

La programacin puede ser complicada

El acceso remoto a memoria es lenta

SISTEMAS DE MEMORIA COMPARTIDO


DISTRIBUIDA

Tienen acceso a memoria compartida comn pero sin acceso a un


canal compartido (fsicamente cada procesador posee memoria local y
se interconecta con otros procesadores por medio de un sipositivo de
alta velocidad y todos ven las memorias de cada uno como un espacio
de direcciones globales)

VENTAJAS

Presenta estabilidad como los sistemas


de memoria distribuida

Es fcil programar

No existe el cuello de botella que se da


en memoria compartida.

COMPUTADORES MISD
Son sistemas con mltiples instrucciones que
operan sobre un nico flujo de datos
Los sistemas MISD se contemplan de dos
maneras distintas
varias instrucciones operando
simultneamente un nico dato.
varias instrucciones operando sobre un dato
que se va convirtiendo en un resultado que ser
la entrada para la siguiente etapa. Se trabaja de
forma segmentada todas las unidades de
proceso pueden trabajar de forma concurrente.
Ejemplos.Arrays sistlicos o arrayde procesadores
Aplicaciones de redes neuronales en maquinas
paralelas

EVALUACIN DE
PRESTACIONES DE UN
COMPUTADOR

Existen diversas medidas para evaluar las prestaciones de un computador como son
las siguientes:

-Tiempo de respuesta: Tiempo que tarda un computador en procesar una entrada.


-Productividad: Nmero de entradas procesadas por unidad de tiempo.
-Funcionalidad: Tipos de entradas diferentes que es capaz de procesar.
-Expansibilidad: Posibilidad de ampliar la capacidad de procesamiento aadiendo
bloques a la arquitectura existente.
-Escalabilidad: Posibilidad de ampliar el sistema.
-Eficiencia: Relacin entre la prestaciones obtenidas y el coste que ha supuesto
conseguirlas.

El peso de estos parmetros en las


prestaciones dependen del elemento que se
estudie por ejemplo.

En la organizacin de la memoria de un
computador las entradas son los accesos a
memoria y las medidas de prestaciones mas
utilizadas son:
- La latencia (tiempo de respuesta),Ancho de
banda(productividad), escalabilidad

Para un computador las entradas son los


programas de aplicaciones y sus medidas de
prestaciones serian
- Tiempo de respuesta y productividad(programas
que procesa eficazmente)

Anteriormente vimos que para un procesador


(las entradas son instrucciones) las
prestaciones que se suelen utilizar son:
- Ciclos que tarda en ejecutarse cada
instruccin(CPIi)
- El valor medio del numero de ciclos en que se
ejecuta una instruccin (CPI)
- La frecuencia de reloj
Con estos parmetros se pueden extraer
medidas de tiempo de respuesta y
productividad

La expresin de la siguiente formunla:


se puede utilizar para reflejar las caractersticas de los procesadores en relacin con
el aprovechamiento del paralelismo entre instrucciones o la potencia de sus

arquitecturas en cuanto a la codificacin de las operaciones del programa:
El cociente entre CPE e IPE es otra forma de contabilizar el numero medio de ciclos
por instruccin.

EL nmero de instrucciones NI se puede expresar en trminos del numero de


operaciones que realiza el programa Noper y el numero medio de operaciones que
puede codificar una instruccin Op_instr

TIEMPO DE RESPUESTA PARA UNA


ENTRADA COMPLEJA
Existen medidas que pretenden caracterizar la comparacin de distintos sistemas a
travs de una nica cantidad. En esta lnea estn:
- Los MIPS (millones de instrucciones por segundo)

Esta medida puede variar segn el programa y por lo tanto no sirve como medida
caracterstica de una maquina

- Los MFLOPS (millones de instrucciones en coma flotante por segundo)



No es adecuada para todos los programas ya que solo tiene en cuenta las
operaciones en coma flotante

Para contrarrestar este problema se utilizan aves los MFLPS normalizados que se
obtienen dando un valor relativo a cada instruccin.

CONJUNTOS DE PROGRAMAS DE PRUEBA


(BENCHMARK)

Aplicaciones reales (compiladores de C, editores)


Ncleos o kernels: Pequeos programas que evalan
caractersticas especificas de una maquina
Programas de prueba simples o toys
Programas sintticos

Existen consorcios o instituciones que promueven conjuntos de programas de


prueba. Estos conjuntos se cambian peridicamente para evitar optimizaciones
realizadas por los fabricantes.
Entre estos conjuntos destacan los SPEC (standard performance evaluation
corporation)

El consorcio SPEC fue fundado en 1988 pro una seria de compaas para definir un
conjunto de programas que evalen las prestaciones de sus productos
Los SPEC evalan fundamentalmente la CPU, la memoria y el compilador.

Proporcionan dos tipos de medidas


- Las medias geomtricas de las velocidades relativas obtenidas para cada
benchmark
- Las medidas geomtricas de los rendimiento relativos (ejecuciones de un programa
por unidad de tiempo)
Tambin se utilizan dos tipos de optimizaciones
- La conservadora
- La agresiva que hace uso de las opciones de compilador que permiten obtener
mejores prestaciones

MEJORA DE PRESTACIONES
Se puede utilizar la ganancia para evaluar la mejora de prestaciones de un
computador.

Prestaciones(1) son las prestaciones del programa de prueba en la maquina base
Prestaciones(p) son las prestaciones del programa de prueba en la maquina mejorada
en la que uno de sus recursos se ha mejorado en un factor de p

LEY DE AMDAHL
Ley de Amdahl
Donde f es la fraccin de tiempo de
ejecucin

en la maquina sin mejorar


donde no se puede aplicar la mejora
considerada.
Si f=0 la mejora se utiliza siempre

Ejemplo. Si un programa pasa un 25% de su tiempo de ejecucin en operaciones


coma flotante y se mejora la maquina para que realice estas operaciones en la
mitad de tiempo o sea p=2 entoces la ganancia de velocidad que se puede
obtener es

Es decir solo un 14% de mejora

Por mucho que se mejore un recurso la ganancia de velocidad esta


siempre limitada por 1/f , por tanto se puede extraer como conclusin que
para mejorar una maquina habra que aplicar un mximo esfuerzo en la
mejora de aquel recurso que se utilice mas frecuentemente.

EL COSTE DE UN COMPUTADOR
Ya vimos que junto a tecnologa y las aplicaciones, tambin los mercados han
influido en el desarrollo de la arquitectura de computadores.
Ahora estudiaremos los distintos aspectos que determinan el precio final de un
computador y relacionaremos este precio con su coste.
Aqu proporcionaremos algunas ideas basadas en la discusin que se hace en el
texto de Hennessy y Patterson.

El precio de un computador depende, en primer lugar, del coste de sus


componentes.
El precio de los componentes puede reducirse debido a la curva de aprendizaje que
ocasiona mejoras en el rendimiento de fabricacin. Por ejemplo si se duplica el
rendimiento el coste del elemento fabricado se reduce a la mitad.
Un cambio en la tecnologa de integracin produce un incremento importante en el
coste
A medida que se mejora el proceso de fabricacin el coste se reduce hasta llegar
en una situacin en el que el circuito deja de fabricarse

EVOLUCIN DEL COSTE DE LA MEMORIA


DRAM

los procesos de fabricacin de circuitos integrados determinan el coste del


circuito a partir del de la oblea, el rendimiento que se alcanza en la fabricacin
de obleas, los defectos por unidad de superficie que se introducen en el
proceso, el numero de niveles de mascaras y otros parmetros de fabricacin.

As el coste de un circuito integrado se puede expresar en funcin del coste del dado y de
su empaquetamiento, del coste del test y del rendimiento del test final del circuito
integrado

El coste del dado se puede expresar en funcin del numero de dado por oblea y del
rendimiento del dado

El numero de dado por oblea viene dado por


que:

Y
Donde es un parmetro que indica el numero de niveles de mascaras

As sustituyendo estas dos


ultimas expresiones en el coste
dado se obtiene que la
dependencia del coste del circuito
integrado con respecto al rea
del dado es de + 1.
De esta forma queda clara la
relacin entre la mejora de los
procesos de fabricacin y la
posibilidad de disponer de
circuitos integrados mas
complejos para un coste fijo.

Si el incremento del coste estimado para desarrollar una tecnologa nueva


que permita incrementar la densidad de integracin no viene acompaado
de un aumento en la eficiencia este puede llegar a no ser rentable.
En este caso una alternativa a corto plazo para mantener el ritmo de
crecimiento seria el aprovechamiento del paralelismo o a largo plazo la
utilizacin de nuevas tecnologas.

Finalmente, el precio final no depende nicamente


del coste de los componentes en la figura siguiente
se ilustran los diversos factores que intervienen
Ganancias de Venta: beneficio
que obtiene el vendedor y costes
de distribucin del producto

Margen bruto: son los costes


indirectos
Costes directos: relacionados con
la fabricacin del producto
concreto
Costes de componentes

Estacin de Trabajo

Estacin de Trabajo

Computador Personal

Вам также может понравиться