Descargar

La Proxima Generación de Arquitecturas de Microprocesadores: (página 2)

Enviado por 19962723


Partes: 1, 2

Merced proveerá direccionamiento de 64-bits, y tamaños de paginas altamente flexibles para reducir el intercambio de información entre memoria física y virtual., y especulación para reducir los efectos del tiempo de retrieve de memoria. Para máxima disponibilidad, el procesador Itanium incorporara una MCA mejorado que coordina el manejo de errores entre el procesador y el sistema operativo, suministrando oportunidades adicionales para corregir y entender los errores. El Itanium ofrece también otras características como el envenenamiento de datos, el cual permite enclaustrar la data corrupta y así terminar solamente los procesos afectados y con respuestas rebeldes al sistema y también una paridad extensiva y ECC. Estas características complementadas con otras de sistema anticipado como lo es el PCI Hot Plug (cambio de periféricos en tiempo de ejecución, teniendo arquitecturas redundantes obviamente), el soporte de los sistemas operativos mas utilizados y un manejo de instrucciones mejorado permitirán al Itanium satisfacer las demandas computacionales de nuestra era como lo son el e-Business, visualización y edición de gráficos 3D de gran tamaño y toda clase de operación multimedia.

El procesador Itanium extenderá la arquitectura Intel a nuevos niveles de ejecución para los servidores y estaciones de trabajo de alta capacidad, ya que en sus presentaciones Intel no ha dejado duda de que IA-64 tiene como objetivo primario este segmento del mercado.

Inicialmente llevara el chip set lógico de sistema 460GX, incluirá un servidor para entregar el rendimiento y confiabilidad necesario por estos sistemas de alto costo.

Intel indico que el 460GX soportara por lo menos 16G de standard SDRAM PC100 a 100 MHz.

El 460GX soporta ECC en el bus del sistema y en la memoria principal y puede mapear fallas de las DRAM"s. Puede manejar mas de 4 microprocesadores y puede ser usado como bloque de construcción, a pesar de que varios de los clientes de Intel están desarrollando su propia lógica del sistema para conectar 8 o mas procesadores Itanium.

El 460GX soporta "hot plugging" cuando tiene arriba de cuatro buses PCI, cada uno de 64 bits y 66 MHz de ancho de banda extra.

El multi chip set también podrá ser usado para estaciones de trabajo, ya que incluye un puerto AGP de 4x.

Como la figura 2 nos muestra, el procesador esta alojado en un modulo que contiene el chip del CPU y los chips cache.

Usando ambas caras del substrato, el modulo parece tener espacio para 4 SRAM"s. Intel podrá acomodar mas de 4M de cache de full-velocidad en el modulo del Itanium.

edu.red

La cobertura del modulo esta hoyada, formando una cañería de escape de calor, de esta manera se reducirá la densidad de calor adentro de CPU. Por supuesto el creador del sistema deberá adherir un cuerpo de refrigeración para disipar el calor totalmente. Intel no ha revelado el poder del procesador, pero el diseño del modulo implica claramente que será alto, se estima que el modulo del Itanium usara mas de 70w.

Ya que Intel y HP están desarrollando la arquitectura EPIC, dicen que es una tecnología de arquitectura fundamental, análoga a lo que es CISC y RISC.

El nuevo formato IA-64 empaqueta tres instrucciones en una sola palabra de 128 bits de longitud para un procesamiento mas veloz. Este empaquetamiento es usualmente llamado codificación LIW, pero Intel evita ese nombre. Mas bien, Intel llama a su nueva tecnología LIW EPIC.

EPIC es similar en concepto a VLIW ya que ambos permiten al compilador explícitamente agrupar las instrucciones para una ejecución en paralelo. El flexible mecanismo de agrupación del EPIC resuelve dos desperfectos del VLIW: excesiva expansión de código y falta de escalabilidad.

Puede que Merced no sea la mejor implementación de los IA-64, pero se espera que sea muy competitivo. Hoy se sabe que se están desarrollando dos procesadores IA-64:

  • El ya mencionado Merced (Itanium)

  • McKinley, cuya producción se espera en el 2001. Esta siendo desarrollado principalmente por HP.

Hace poco Intel anuncio mas procesadores IA-64: Madison aparecería en el 2002, luego Deerfield.

edu.red

Mucho de funcionamiento no provendrá del chip de por si, sino de compiladores de diseño muy complejo, los cuales transformaran el código fuente en código objeto estructurado para trabajar con las habilidades de la arquitectura del Itanium.

Los críticos afirman que realmente existe un muy poderoso trabajo de predicción de ramificaciones y de pre-fetching o pre-busqueda en el Itanium, pero dicen que importa mucho la calibración sincronizada entre los programas de aplicación y el compilador, así que el crédito no solo es del microprocesador sino también de los diseñadores de programas de aplicación.

Las técnicas como predicación, especulación y rotación avanzada de registros permitirá a los procesadores IA-64 remover ramificaciones difíciles de predecir, minimizar el efecto de retrieve de memoria y reducir sobrecarga de procesamiento por loop"s y llamadas a procedimientos.

Antes de meternos de lleno en las entrañas técnicas del IA-64, es critico entender porque Intel y HP están arriesgando su futuro en estos cambios arrolladores. La respuesta es porque Intel y HP creen que CISC y RISC se están quedando sin gasolina.

Técnicas y Conceptos innovadores:

Las técnicas innovadoras de mejoramiento de desempeño como paralelismo explícito, predicación y especulación están explicadas a continuación:

Paralelismo Explícito:

Para ilustrar las limitaciones de la arquitectura y de los beneficios del nuevo ISA de 64-bits, piensen como si un procesador estuviera operando como una sala de espera. Imaginen que nuestro banco tiene un recibidor el cual dirige a la gente a las diferentes líneas de servicio que se ofrece en nuestro banco, pudiendo ser a la línea de préstamo, retiros, etc. Esto es similar a lo que el compilador hace con el código, él lo organiza para su procesamiento. Sin embargo, en arquitecturas tradicionales, el recibidor es lento y solo puede organizar poca gente a la vez. Aún más, imaginen que el recibidor no esta seguro de que líneas hacen que cosa. Como resultado, los empleados en de las ventanillas tienen que redireccionar a los clientes. Esto requieres de trabajo a parte de que no es nada eficiente. Esto es una analogía de cómo es que operan las arquitecturas tradicionales.

En el paralelismo explícito, nuestro recibidor del banco realmente entiende las operaciones. Así que direcciona a los clientes a las ventanillas correctas y es tan eficiente que él puede llamar a las casas de los clientes para programar la entrevista por adelantado.

Esto hará que los clientes sepan exactamente a donde deben de ir, quitándole carga a nuestro recibidor. Ahora, el recibidor tiene mas libertad para programar a los clientes, maximizando el numero que puede ser atendidos. Este es el concepto detrás de paralelismo explícito, el compilador organiza eficientemente el código y hace explícito el pedido para que de esta manera el procesador pueda enfocarse en la ejecución de las instrucciones de manera mas efectiva.

Predicación:

Normalmente, un compilador cambia una expresión de ramificación del código fuente (como lo es el IF-THEN-ELSE) en bloques alternados de código de maquina arreglados como un flujo secuencial. Dependiendo del resultado de la ramificación, el CPU ejecutara uno de los bloques básico salteándose los otros.

Predicación es un método de manejar ramificaciones condicionales. La idea principal del método es que el compilador planifique ambos caminos posibles de la ramificación para que sea ejecutada en el procesador simultáneamente. Por supuesto, los procesadores EPIC tendrán muchas unidades funcionales.

Las ramificaciones representan una decisión entre dos sets de instrucciones, así como cuando el de ventanilla no sabe si llenar un documento de retiro o uno de deposito en nuestro ejemplo del banco. Asumamos, que en un esfuerzo de atender a un cliente rápidamente, el empleado de ventanilla desea preparar los documentos de retiro o deposito por adelantado para los próximos clientes. Como la mayoría de los clientes hacen depósitos, el "ventanillero" predice que se necesitara una documento de deposito. Cuando tiene razón, no hay problema; pero cuando se equivoca todos los aplicantes de la cola deben esperar mientras que complete el documento de retiro. Igualmente, las arquitecturas de hoy usan un método predicción de ramificaciones, el cual predice que set de instrucciones cargar.

Cuando las ramificaciones son predecidas mal (como cuando el ventanillero predice que el cliente quiere hacer un deposito, cuando en realidad quiere retirar dinero) la cola completa sufre una demora. Como las aruitecturas de hoy solo predicen mal 5-10% de las veces, las penalidades pueden disminuir el procesamiento 30-40%. Las ramificaciones inhiben la eficiencia del compilador y sub-utilizan las habilidades del microprocesador.

El nuevo ISA de 64-bits usa el concepto de predicación.

Asumamos que el ventanillero desarrolla una mejor estrategia para atender rápidamente a los clientes. Cuando tiene un poco de tiempo libre, prepara ambos formatos , de deposito y de retiro, para cada uno de los clientes en la línea. Dependiendo de las necesidades del próximo cliente, el solo usa el documento apropiado y descarta el otro. El ventanillero ahora trabaja de una manera mas eficiente ya que ion causa demoras de la cola. Esto es similar a la predicación, el cual permite que ambos sets de instrucciones sean ejecutados pero que solo los necesitados sean utilizados.

Técnicamente hablando, cuando un compilador encuentre una expresión de ramificación en el código fuente, marcara todas las instrucciones que representan cada camino de la ramificación con un identificador único llamado predicado. Cada instrucción tiene un campo de predicado para eso. Cuando el CPU encuentre en tiempo de ejecución una ramificación predicada, comenzara a ejecutar el código de los dos destinos de la ramificación. Pero no guardara el resultado mientras que los valores de los registros del predicado no estén definidos. Una vez que la condición sea evaluada, el procesador guardara un 1 en el registro del predicado el cual corresponde a "destino verdadero" y 0 en los otros. Antes de guardar los resultados, el CPU chequea cada registro del predicado de cada instrucción. Si el registro contiene un 1, las instrucciones es valida, así que el CPU retirara la instrucción y almacenara el resultado. Si el registro contiene un 0, la instrucción es invalida, así que el CPU descartara el resultado.

Especulación:

El retrieve de memoria, el tiempo de retorno de la data desde la memoria, es otra de las limitaciones de las arquitecturas tradicionales. Si el tiempo de traer la data desde la memoria fuese una operación bancaria, seria análoga a abrir una cuenta, la cual toma un poco de tiempo. Cuando un nuevo cliente abre una cuenta, aguanta toda la cola mientras que llenan los documentos en la ventanilla. De igual forma, el retrieve de memoria aguanta al procesador, dejándolo inactivo hasta que llegue la data desde la memoria. Debido al retrieve de memoria, no se esta conservando la velocidad del procesador, las cargas (la obtención de los datos desde la memoria) necesitan ser inicializados mas temprano para asegurar que la data llegue a tiempo para su uso.

El nuevo ISA de 64-bits usa la especulación, un método que permite al procesador iniciar la carga anticipadamente, incluso antes de que se sepa que va a ser utilizada.

Y que si el recibidor del banco pudiera identificar a los nuevos clientes del banco? Si el recibidor proveera los documentos para abrir una nueva cuenta por adelantado a todos los clientes que entren al banco, los clientes tendrían la oportunidad de terminar de rellenar los documentos para el momento que lleguen a la ventanilla. Si ellos no necesitan la solicitud, entonces ellos pueden devolver el documento mientras que legan a la cabecera de la cola, devolviéndola sin uso. Esto es comparable a como funciona la especulación. Las cargas de memoria son inicializadas por adelantado para asegurar que la data esta disponible para su uso. Como resultado, el compilador planifica la carga de memoria sin aguantar al procesador o bajar el rendimiento de éste.

Registros:

Los registros de gran longitud eliminan la complejidad del hardware, reducen la expansión del código fuente usando también los registros rotativos y mejora el desempeño reduciendo el acceso a la data de la cache.

Los registros son los siguientes:

  • 128 registros de enteros, cada uno de 64 bits de longitud.

  • 128 registros de punto flotante, cada uno de 80 bits de longitud.

  • 64 bits para la predicación.

  • 256 NAT bits.

  • 8 registros de ramificación.

  • 3 RRB"s o registros base rotativos.

  • el LC.

  • y el EC.

Todos los registros pueden ser accedidos por software, ya que son visibles al programador y de acceso aleatorio.

Estos registros son numéricamente entre 4 y 8 veces el numero de los registros de las arquitecturas RISC.

La siguiente figura no solo muestra los nuevos registros, sino también los registros necesarios para la compatibilidad con x86.

edu.red

Instrucciones:

Se espera que el Itanium ejecute entre 6 y 8 instrucciones por ciclo ya que usa un pipeline de 10 estados. Aunque en practica, procesadores raramente ejecutan mas de 2 instrucciones en un ciclo dado, debido al poco nivel de paralelismo de las instrucciones en aplicaciones corrientes.

Se ha mencionado que el tamaño del código fuente de las aplicaciones de IA-64 serán mas largas que los del RISC, ya que tres instrucciones de IA-64 serán 128 bits, mientras que los de RISC son de 32 bits de longitud, lo que hace que cuatro de sus instrucciones ocupen 128 bits.

Como la figura nos muestra, las instrucciones del IA-64 están empaquetadas por el compilador en grupos de 128 bits. Un solo paquete de 128 bits contiene tres instrucciones del IA-64 junto con una plantilla. Cada una de estas plantillas, colocadas ahí por el compilador, explícitamente brinda al CPU información acerca del paquete de instrucciones. Pero, que información?, información tal como si las instrucciones del paquete deben ser ejecutadas en paralelo o si alguna de ellas debe serlo en serie, debido a las dependencias entre los registros. La plantilla también indica si es que las instrucciones deben ser ejecutadas en paralelo con los paquetes vecinos. Los paquetes pueden ser encadenados para crear grupos de instrucciones de cualquier longitud.

Ni Intel ni HP han revelado ni la longitud de las instrucciones ni de la plantilla ni los detalles de sus contenidos. Pero, tenemos el formato (contenido) de cada una de las instrucciones:

edu.red

Formato de las instrucciones del IA-64:

  • Código de operación.

  • Registro de predicado (6 bits)

  • Registro fuente 1 (7 bits)

  • Registro fuente 2 (7 bits)

  • Registro destino (7 bits)

  • Campos especiales para la aritmética entera y de punto flotante.

  • Miscelánea.

Examinemos todas las combinaciones de las instrucciones de un paquete:

  • i1 || i2 || i3 – todas las instrucciones ejecutadas en paralelo.

  • i1 & i2 || i3 – primero i1, luego i2 y i3 ejecutadas en paralelo.

  • i1 || i2 & i3 – i1 y i2 ejecutadas en paralelo, luego i3.

  • i1 & i2 & i3 – i1, i2 y i3 ejecutadas en serie.

Un solo paquete con tres instrucciones corresponde a un set de tres unidades funcionales. Los procesadores IA-64 podrían contener un numero diferente de esos sets. Y estos procesadores serian capaces de ejecutar el mismo código.

Definitivamente es diferente el formato de instrucciones del IA-64 y del x86. Una instrucción del x86 es una unidad individual que puede variar entre 8 y 108 bits de longitud, y por lo cual es CPU debe tediosamente decodificar cada instrucción mientras que trata de descubrir el final de la instrucción.

El CPU no debe mas analizar apuradamente la cadena de instrucciones en tiempo de corrida para identificar el paralelismo oculto. El compilador identificara el paralelismo y brindara esta información en el código de maquina.

Compatibilidad:

En breve, no esta claro como es eso de la compatibilidad con la familia x86. Solo se sabe una cosa, los directivos de Intel dicen que el código x86 correrá en el Itanium, proporcionando full compatibilidad con IA-32 para proteger la inversión de los usuarios finales. Estas aplicaciones IA-32 tendrán un rendimiento de Pentium II, osea que estas aplicaciones entorpecerán el procesamiento del Itanium.

edu.red

Combinaciones permitidas entre las aplicaciones y sistemas operativos de IA-64 y x86.

Los críticos afirman que "las próximas generaciones de procesadores IA-64 correrán software IA-64 antiguos, pero el software tendrá que ser recompilado para que corra a su máxima velocidad".

En 1996, HP produjo su primer procesador de 64 bits nombrado PA-8000. Fue el primer miembro de la nueva familia PA-RISC 2.0. Las similitudes entre los códigos de EPIC y los del PA-RISC (VLIW) facilitan la conversión de código de PA-RISC a IA-64.

La siguiente figura muestra una de las posibles implementaciones obtenida de la patente de aplicaciones de Intel, mostrando que las instrucciones después de pasar por la cache de instrucciones y de ser identificada como código x86, es traducida a código IA-64.

edu.redDesde el código IA-64 se puede acceder a los registros x86, como se muestra a continuación:

edu.red

Conclusión:

La siguiente figura representa la transición proyectada desde los procesadores IA-32 (x86) a los de IA-64, solo de Intel. El reporte detalla como IA-64 desplazara a IA-32 totalmente para el 2006.

edu.red

Seis empresas lideres (Win64, SCO Unixware, HP-UX, Solaris, SGI IRIX y Novell Modesto) tienen arrancando ya sus sistemas operativos en simuladores del Itanium.

Una implicación de IA-64 es que los compiladores tendrán que ser mucho mas inteligentes de lo que Intel espera.

Por los días de la década de los 1980"s, algunos ingenieros RISC ridiculizaron a CISC y pronosticaron su perdición de la familia x86. Hoy, se sabe cual fue la historia.

Ahora, Intel afirma que RISC se esta quedando sin combustible. Podrá ser que Intel se este equivocando como los fanáticos de RISC lo hicieron?

Los chips IA-64 vendrán aproximadamente en un año, contraatacaran las otras arquitecturas; solo el tiempo nos lo hará saber.

Glosario

460GX – es el chip set que será utilizado por Itaium.

ECC – sistema de circuitos electricos de corrección de errores (Error Correction Circuitry).

ISA – arquitectura de set de instrucciones (Instruction Set Architecture).

LIW – palabra de instrucciones largas (long instruction words).

EMC – chequeo de maquina mejorado (Enhanced Machine Check).

NAT – bits de nada (Not A Thing), son un extra bit en cada uno de los registros generales, los cuales indican si el contenido de un registro es valido.

OEM – manufacturador del equipo original (Original Equipment Manufacturer).

MCA – arquitectura de comprobación de maquina (Machine Check Architecture).

EPIC – computación explícita de instrucciones en paralelo (Explicitly Parallel Instruction Computing).

CISC – acronimo de Set Complejo de Instrucciones Computacioneles.

CISC design is aimed to provide comfort for programmer/compiler. But CISC is not intended to achieve great performance. Each CISC instruction can perform several low-level operations such as memory access, arithmetic operations or address calculations. CISC design supports high-level languages by providing "high-level" instructions such as procedure call and return, loop instructions such as "decrement and branch if non-zero" and complex addressing modes to allow data structure and array accesses to be compiled into single instructions. Often CISC instructions is a microcode stored in processor's ROM. Main CISC drawbacks are significant complexity of design and low performance.

Examples of CISC processors are Motorola 680×0 family and Intel x86 family (IA-32). Both 680×0 and x86 are still popular.

CISC was coined in contrast to RISC.

RISC – acronimo de Set Reducido de Instrucciones Computacionales.

Main features of RISC concept are:

  • identical instruction length

  • uniform instruction encoding (usually: op-code, destination register, two source registers)

  • only registers can be used as instruction operands

  • a lot of general purpose registers which can be used by any instruction in any context

  • instruction can perform only simple operation

  • pipelines

  • at least one instruction completes per cycle

  • simple addressing modes

Examples of processors, recognized as RISC: MIPS, SPARC, PowerPC, Digital Alpha, HP PA-RISC, Intel 960, AMD 29000.

The RISC concept provides more abilities to the compiler to perform optimization. Now just RISC microprocessors prevails. The field of usage is very wide – from microcontrollers to supercomputers. Exactly RISC microprocessors achieve the highest levels of performance, today's industry performance leader is Digital Alpha. There are several standards on RISC architectures, often called as Open Architectures. Among them are MIPS (current version is IV, R10000), SPARC (current version is 9, UltraSPARC) and PowerPC.

VLIW – acronimo de Instrucciones de Palabras Muy Largas.

VLIW is used to describe a processor instruction set implementing horizontal microcode. Several (4 – 8) primitive instructions are packed by compiler into Very Long Instruction Word. This word corresponds to set of functional units. VLIW may be classified as a static superscalar architecture. It is static in sense that finding parallelism in code is performed by the compiler, not by the processor. As stated in Microprocessor Report (2/14/94):

The objective of VLIW is to eliminate the complicated instruction scheduling and parallel dispatch that occurs in most modern microprocessors. In theory, a VLIW processor should be faster and less expensive than a comparable RISC chip.

VLIW suits for exploiting instruction-level parallelism (ILP) in programs. There is explicit parallelism in VLIW machine code.

VLIW processors are not used wide. The most famous VLIW machine was built by (the late) Multiflow Computer, Inc. The company is defunct now. Hewlett-Packard has many engineers on-board from Multiflow. In Russia Elbrus-3 VLIW-based supercomputer is well-known. Perhaps contemporary example of VLIW processor is TI's DSP TMS320C6x family. The VLIW effort at the IBM T.J. Watson Research Center started in 1986.

Bibliografía

La mayoría de la información expuesta en la presentación de la monografía fue extraida de los siguientes documentos y páginas:

130303.pdf

ADAG.pdf

Analyst Presentation.pdf

ia64rev2.pdf

Intel.pdf

mers2ss_post.pdf

mpf_post.pdf

next.pdf

Patent Surfaces.pdf

prog_overview.pdf

Register Usage 5.pdf

[1] New 64-Bit Processor Will Extend the Intel Architecture http://www.intel.com/pressroom/archive/releases/sp100997.HTM

[2] Intel Notifies Customers Of Change In Merced Processor Schedule http://www.intel.com/pressroom/archive/releases/sp052998.htm

[3] John Crawford, Intel, and Jerry Huck, HP: Motivations and Design Approach for the IA-64 64-Bit Instruction Set Architecture http://www.intel.com/pressroom/archive/speeches/mpf1097c.htm

[3a] Slides of HP/Intel IA-64 presentation at Microprocessor Forum http://www.hp.com/esy/technology/ia_64/products/slides/index.htm

[3b] 1997 Microprocessor Forum http://www.chipanalyst.com/q/@3720331wxyxzk/events/mpf/highlights.html

[4] The Next Generation of Microprocessor Architecture: A 64-bit Instruction Set Architecture (ISA) Based on EPIC Technology http://www.intel.com/pressroom/archive/backgrnd/sp101497.HTM

[5] HP and Intel Unveil Breakthrough EPIC Technology at Microprocessor Forum http://www.intel.com/pressroom/archive/releases/sp101497.HTM

[6] Solaris on Merced: What's in it for Sun? by Robert McMillan, SunWorld, January 1998 http://www.sun.com/sunworldonline/swol-01-1998/swol-01-ia64.html

[7] Beyond Pentium-II by Tom R. Halfhill, BYTE, December 1997 http://www.byte.com/art/9712/sec5/art1.htm

[8] IA-64 and Merced–What and Why by Peter Christy, MPR 12/30/96 http://www.chipanalyst.com/q/mpr/merced/1017vp.html

[9] First Merced Patent Surfaces by Linley Gwennap, MPR 3/31/97 http://www.chipanalyst.com/q/mpr/merced/merced.html

[10] Intel, HP Make EPIC Disclosure by Linley Gwennap, MicroDesign Resources http://www.chipanalyst.com/q/mpr/merced/v11_14.html

[11] Intel's Merced and IA-64: Technology and Market Forecast by Linley Gwennap, MicroDesign Resources http://www.mdronline.com/q/tech_lib/IA64/index.html

[12] IA-64 Overview from HP http://www.hp.com/esy/technology/ia_64/overview/index.html

[13] IA-64 News from HP http://www.hp.com/esy/technology/ia_64/news/

[14] VLSI Microprocessors by Oleg Yu. Repin http://www.microprocessor.sscc.ru

[15] The Russians Are Coming by Keith Diefendorff, Microprocessor Report 02/15/1999. Short version of the article is available at http://www.elbrus.ru/press/mprep-p1.html.

[16] EPIC historical precendents by Mark Smotherman http://www.cs.clemson.edu/~mark/epic.html

[17] Texas Instruments' Digital Signal Processing Solutions http://www.ti.com/sc/docs/dsps/products.htm

[18] The VLIW project at IBM Research http://www.research.ibm.com/vliw/proj.html

[19] The Word on VLIW by Dick Pountain, BYTE, April 1996 http://www.byte.com/art/9604/sec8/art3.htm

[20] VLIW Questions by Peter Wayner, BYTE, November 1994 http://www.byte.com/art/9411/sec12/art1.htm

[21] What is VLIW? BYTE, November 1994 http://www.byte.com/art/9411/sec12/art2.htm

[22] Free On-Line Dictionary of Computing http://wombat.doc.ic.ac.uk/foldoc/index.html

 

 

Autor:

Percy Vega Castillo

Partes: 1, 2
 Página anterior Volver al principio del trabajoPágina siguiente