El transputor (el " todo-minúsculo del INMOS; transputer" era la forma escrita oficial) era un pionero diseño computacional concurrente del microprocesador del de los años 80 INMOS, una compañía británica del semiconductor basada en el Bristol . Por algún tiempo a el final de los '80 muchos consideraban el transputor ser el gran diseño siguiente para el futuro de la computación.

Hoy, esta viruta interesante se olvida en gran parte. Mientras que en última instancia una falta comercial, la arquitectura del transputor era alto influyente en la causa de nuevas ideas en arquitectura de computadora, varios cuyo han reaparecido en diversas formas en sistemas modernos.

Fondo

En el principios de los 80, aparecía que las CPU convencionales alcanzaban sus límites de funcionamiento. Hasta ese tiempo, la cantidad de diseñadores del trazado de circuito podría colocar en una viruta fue limitada sobre todo fabricando ediciones. Pero con mejoras continuas en el " fabbing" el proceso (fabricación), esta restricción desapareció y pronto el problema se convirtió en que las virutas podrían sostener más trazado de circuito que los diseñadores sabían utilizar. Pronto los diseños tradicionales del CISC alcanzaban una meseta del funcionamiento, y no estaba claro él podría ser superado.

Parecía que la única manera delantera era aumentar el uso del paralelismo, el uso de varias CPU que funcionarían juntas para solucionar varias tareas al mismo tiempo. Esto dependió de las máquinas en la pregunta que podía funcionar con varias tareas inmediatamente, un proceso conocido como trabajos m3ultiple . Esto había sido generalmente demasiado difícil para que los diseños anteriores de la CPU dirijan, pero diseños más recientes podían lograrlo con eficacia. Estaba claro que en el futuro ésta sería una característica de todos los sistemas operativos

Un efecto secundario de la mayoría del diseño polivalente es que a menudo también permite que los procesos sean funcionados con en CPU físicamente diversas, en este caso se conoce como multiprocesamiento . Una CPU barata construida con multiprocesamiento en mente podía permitir que la velocidad de una máquina sea aumentada agregando las CPU adicionales, potencialmente lejos más barato que usando un solo diseño más rápido de la CPU.

Diseño

El transputor (puter del de COM del istor del transporte del ) era el primer microprocesador de fines generales diseñado específicamente para ser paralelamente sistemas de cálculo usados. La meta era producir una familia de virutas que se extendían en la energía y el coste que se podrían atar con alambre junto para formar una computadora completa. El nombre fue seleccionado para indicar que el papel que los transputores individuales desempeñarían: los números de ellos serían utilizados como bloques huecos básicos, apenas como los transistores tenían anterior.

El plan era original hacer que el transputor cuesta solamente algunos dólares por unidad. INMOS los vio que eran utilizados para prácticamente todo, del funcionamiento como la CPU principal para una computadora a la actuación como regulador de canal para los accionamientos de disco en la misma máquina. Los ciclos de repuesto en ninguno de estos transputores se podían utilizar para otras tareas, grandemente aumentando el funcionamiento total de las máquinas.

Incluso un solo transputor tendría todo el trazado de circuito necesario para trabajar por sí mismo, una característica asociada más comunmente a los microcontroladores que la intención era permitir que los transputores sean conectados juntos tan fácilmente como sea posible, sin el requisito para un autobús complejo (o la placa madre). La energía y una señal de reloj simple tuvieron que ser suministradas, pero poco: el RAM, un regulador del RAM, la ayuda e incluso un RTOS todo del autobús fueron incorporados.

Acoplamientos

El diseño básico del cuento por entregas incluido del transputor liga que permitió que comunicara con hasta cuatro otros transputores, cada uno en 5, 10 o 20 mbit/s de – cuál era muy rápidamente para los años 80. Cualquier número de transputores se podría conectar junto sobre incluso los acoplamientos bastante largos (diez de metros) para formar un solo " computacional; farm". Una máquina de escritorio hipotética pudo tener dos del " " bajo; los transputores que manejan la entrada-salida encargan en algunas de sus líneas seriales (enganchadas hasta el hardware apropiado) mientras que hablaron con uno de sus primos más grandes que actuaban como CPU en otro.

Había límites al tamaño de un sistema que se podría construir de este modo. Puesto que cada transputor fue ligado a otro en una disposición de punto a punto fija, el envío de mensajes a un transputor más distante requirió los mensajes ser retransmitido por cada viruta en la línea. Esto introdujo un retardo con cada " hop" sobre un acoplamiento, llevando a los retardos largos en redes grandes. Para solucionar este problema INMOS también proporcionó cero-retrasa el interruptor que conectó hasta 32 transputores (o los interruptores) en incluso redes más grandes.

Booting

Los transputores se podrían patear sobre los enlaces de red (en comparación con la memoria como en la mayoría de las máquinas) así que un solo transputor podría comenzar para arriba la red entera. Había un perno llamado BootFromROM que cuando está afirmado causado el transputor para comenzar dos octetos de la tapa de la memoria (suficiente para hasta un salto posterior de 256 octetos, generalmente fuera de la ROM). Cuando este perno no fue afirmado, el primer octeto que llegó abajo de cualquier acoplamiento era la longitud de un elástico de bota que se transferirá, que fue puesto en memoria baja y funcionamiento. Las longitudes “especiales” de 0 y 1 eran reservadas para la “ojeada” y “empujar” - permitir la inspección y el cambio del RAM en un transputor unbooted. Después de una ojeada (que requirió una dirección) o un empuje (que tomó una dirección de palabra, y una palabra de datos - el pedacito 16 o 32 dependiendo de la anchura básica de la palabra de la variante del transputor) que el transputor volvería a esperar un elástico de bota.

Planificador

El apoyo de los acoplamientos era el trazado de circuito adicional que manejó la previsión del tráfico sobre ellos. Los procesos que esperan en comunicaciones se detendrían brevemente automáticamente mientras que el trazado de circuito del establecimiento de una red acabó su lee o escribe. Otros procesos que funcionan en el transputor entonces serían dados a eso tiempo de transformación. Incluyó dos niveles de prioridad para mejorar el operación en tiempo real del multiprocesador de y. El mismo sistema lógico fue utilizado para comunicar entre los programas que funcionaban en un solo transputor, ejecutado como " links" de la red virtual; en memoria. Programa tan pedir cualquier entrada o la salida se detuvo brevemente automáticamente mientras que la operación terminada, una tarea que requirió normalmente el sistema operativo dirigir como el árbitro del hardware. Los sistemas operativos en el transputor no tuvieron que manejar la previsión: de hecho, uno podía considerar la viruta sí mismo para tener un OS dentro de él.

Para incluir toda esta funcionalidad en una sola viruta, la lógica de la base del transputor era más simple que la mayoría de las CPU. Mientras que algunos han llamado un RISC debido a su naturaleza algo de repuesto (y porque eso era un palabra de moda deseable de la comercialización en ese entonces), era microcodificado tenía pesadamente un sistema de registro limitado, e instrucciones complejas de la memoria-a-memoria, que lo ponen firmemente en el campo del CISC . Desemejante de colocar-pesado carga-almacenar las CPU del RISC, el transputor tenía solamente tres registros de los datos, que se comportaron como apilado. Además un indicador del espacio de trabajo señaló a un apilado de memoria convencional, fácilmente accesible vía la carga local y almacena instrucciones locales. Esto permitida para la conmutación de contexto muy rápida simplemente cambiando el indicador del espacio de trabajo a la memoria usada por otro proceso (una técnica usada en un número de diseños del contemporáneo). El tres contenido del apilado de registro no era últimas ciertas instrucciones preservadas, como salto, cuando el transputor podría hacer un interruptor del contexto.

Sistema de instrucción

El sistema de instrucción del transputor abarcó las instrucciones de 8 bits divididas en el Opcode y los mordiscos del operando el " upper" el mordisco contuvo los 16 códigos de instrucción primarios posibles, haciéndole uno muy de las pocas computadoras mínimas comercializadas del sistema de instrucción el " lower" el mordisco contuvo el solo operando constante inmediato, de uso general como compensación concerniente al indicador del espacio de trabajo (apilado de memoria). Dos instrucciones del prefijo permitieron la construcción de constantes más grandes prepending sus mordiscos más bajos a los operandos de instrucciones siguientes. Las instrucciones adicionales fueron apoyadas vía el funcionan el código de instrucción de (Opr), que descifró el operando constante como opcode extendido del cero-operando, previendo la extensión casi sin fin y fácil del sistema de instrucción mientras que más nuevas puestas en práctica del transputor fueron introducidas.

Las 16 instrucciones “primarias” del uno-operando eran:-

Tranvías

Para proporcionar medios fáciles de la creación de un prototipo, los sistemas del múltiple-transputor que construían y de configuraciones, INMOS introdujeron el estándar de la TRANVÍA (módulo del del transputor) en 1987. UNA TRANVÍA era esencialmente una tarjeta secundaria del bloque hueco que abarcaba un transputor y, opcionalmente, una memoria externa y/o dispositivos periféricos, con los conectadores estandardizados simples proporcionando energía, acoplamientos del transputor, el reloj y señales del sistema. Los varios tamaños de la TRANVÍA fueron definidos, de la TRANVÍA básica del tamaño 1 (3.66 adentro antes de 1.05 adentro) hasta el tamaño 8 (3. INMOS produjo una gama de las placas madres de la TRANVÍA para los varios autobuses del anfitrión tales como AIA, microcanal o VMEbus .

Software

Los transputores fueron pensados para ser programados usar el lenguaje de programación de Occam, basado en el cálculo del proceso CSP . De hecho es justo decir que el transputor fue construido específicamente para funcionar el occam, aun más que los diseños contemporáneos del CISC fueron construidos para funcionar con idiomas como el Pascal o el C . Occam apoyó la concurrencia y canal-basó la comunicación entre procesos o del inter-procesador como parte fundamental de la lengua. Con el paralelismo y las comunicaciones incorporadas a la viruta y la lengua obrando recíprocamente con él directo, escribiendo el código para las cosas como reguladores de dispositivo se convirtió en un &ndash de la trivialidad; incluso el código más básico podría mirar los puertos seriales para la entrada-salida, y dormiría automáticamente cuando no había datos.

El entorno de desarrollo inicial del occam para el transputor era el sistema de desarrollo del transputor del de INMOS D700 (TDS). Esto era un entorno de desarrollo integrado poco ortodoxo que incorporaba un redactor, un recopilador, una máquina para hacer chorizos y una depuración (post mortem). El TDS era sí mismo un uso del transputor escrito en occam. El editor de textos del TDS era notable en que era redactor plegable, permitiendo que que revelans los bloques de código sean ocultados y, hacer la estructura del código más evidente. Desafortunadamente, la combinación de un lenguaje de programación desconocedor y de un entorno de desarrollo igualmente desconocedor no hizo nada para el renombre temprano del transputor. Más adelante, INMOS lanzaría compiladores cruzados más convencionales del occam, los juegos de herramientas del occam 2 del .

Las puestas en práctica de más lenguajes de programación de corriente, tales como C, FORTRAN, Ada y Pascal eran también más adelante lanzadas por INMOS y los vendedores de tercera persona. Estas extensiones o bibliotecas generalmente incluidas de lengua que proporcionan, de una manera menos elegante, occam-como concurrencia y la comunicación canal-basada.

La carencia del transputor de la ayuda para la memoria virtual inhibió virar hacia el lado de babor de las variantes de corriente del sistema operativo de UNIX, aunque los puertos de UNIX-como sistemas operativos de (tales como Minix y Idris Whitesmiths ) fueron producidos. Un avanzado UNIX-como el sistema operativo distribuido, HeliOS, también fue diseñado específicamente para los sistemas del multi-transputor por el software del perihelio.

Puestas en práctica

Los primeros transputores fueron anunciados en el 1983 y lanzados en el 1984 .

En armonía con su papel como microcontrolador - como los dispositivos, incluyeron el RAM a bordo y un regulador incorporado del RAM que permitieron a más memoria ser agregados sin ningún hardware adicional. Desemejante de otros diseños, los transputores no incluyeron líneas de la entrada-salida: éstos debían ser agregados con el hardware atado a los acoplamientos seriales existentes. Había una línea del “acontecimiento”, similar a la línea de la interrupción de un procesador convencional. Tratado como canal, un programa podría “entrar” del canal del acontecimiento, y procede solamente después que la línea del acontecimiento fue afirmada.

Todos los transputores funcionaron de una entrada de reloj externa de 5 megaciclos; esto fue multiplicada para proporcionar el reloj del procesador.

El transputor no incluyó un MMU o un sistema de la memoria virtual .

Las variantes del transputor (excepto el T9000 cancelado) se pueden categorizar en tres grupos: la serie de 16 bits del T2, la serie de 32 bits del T4 y la serie de 32 bits del T8 con la ayuda flotante 64-bit de IEEE 754 .

T2: de 16 bits

El transputor de 16 bits del prototipo era el S43, que careció el planificador y la transferencia de bloque Acceso-controlada en los acoplamientos. En el lanzamiento, el T212 y el M212 (estes 3ultimo con un regulador de disco a bordo) eran las ofrendas de 16 bits. El T212 estaba disponible en grados de la frecuencia de reloj del procesador de 17. El T212 fue reemplazado por el T222, con el RAM de la en-viruta ampliado a partir el 2 del kB a 4kB, y, más adelante, el T225 . Esta ayuda agregada del punto de desempate de la eliminación de errores (extendiendo el J 0 de la instrucción) más algunas instrucciones adicionales del sistema de instrucción T800. El T222 y T225 funcionaron en 20 megaciclos.

T4: de 32 bits

En el lanzamiento, el T414 era el ofrecimiento de 32 bits. Original, la primera variante de 32 bits era ser el T424, pero las dificultades de la fabricación significaron que esto fue reajustada como el T414 con RAM a bordo de 2 kB en vez del kB previsto 4. El T414 estaba disponible en variedades de 15 y 20 megaciclos. El RAM fue reinstalado más adelante al kB 4 en el T425 (en variedades de 20, 25 y 30 megaciclos), que también agregó la ayuda del punto de desempate del J 0 y las instrucciones adicionales T800. El T400, en septiembre lanzado 1989, era 20 un derivado barato del megaciclo T425 con el kB 2 y dos en vez de cuatro acoplamientos, previstos para el encajaron el mercado de los sistemas .

T8: coma flotante

El transputor de segunda generación del T800, introducido en el 1987, incluyó una unidad 64-bit de la coma flotante y tres registros adicionales para el uso de la coma flotante, además de un sistema de instrucción extendida. También tenía kB 4 de RAM a bordo y estaba disponible en versiones de 20 o 25 megaciclos. La ayuda del punto de desempate fue agregada en el posterior T801 y el T805, el anterior ofreciendo la dirección separada y los ómnibus de datos para mejorar funcionamiento. El T805 estaba también disponible posterior como partición de 30 megaciclos.

Un realzado T810 fue planeado, que habría tenido más RAM, más y acoplamientos más rápidos, las instrucciones adicionales y microcódigo mejorado, pero esto fue cancelada alrededor 1990.

INMOS también produjo una variedad de virutas de la ayuda para los procesadores del transputor, tales como el interruptor del acoplamiento de la manera del C004 32 y el " del C012 ; adapter" del acoplamiento; cuál permitió que los acoplamientos del transputor fueran interconectados a un ómnibus de datos de 8 bits.

Mercados

Mientras que el transputor era simple pero de gran alcance comparado a muchos diseños contemporáneos, nunca vino cerca de resolver su meta de ser utilizado universal en papeles de la CPU y del microcontrolador. En el reino del microcontrolador, el mercado fue dominado por las máquinas de 8 bits donde estaba la única gran consideración el coste. Aquí, incluso los T2s eran demasiado de gran alcance y costosos para la mayoría de los usuarios.

En la mesa de la computadora/el mundo del sitio de trabajo, el transputor era bastante rápido (funcionamiento aproximadamente 10 MIPS en 20 megaciclos). Éste era funcionamiento excelente para el principios de los 80, pero para el momento en que el T800 FPU-equipado enviara, otros diseños del RISC lo habían sobrepasado. Esto se habría podido atenuar en gran parte si las máquinas habían utilizado los transputores múltiples tal y como previsto, solamente T800s costado cerca de $400 por cada uno cuando estaba introducida, que significaron un cociente pobre del precio/funcionamiento. Pocos sistemas de sitio de trabajo transputor-basados fueron diseñados; probablemente el ser más notable el sitio de trabajo del transputor de Atari.

El transputor era más acertado en el campo es paralelo a masivo que computaba, donde varios vendedores produjeron sistemas transputor-basados en los últimos años 80 . Éstos incluyeron el Meiko (fundado por los ex-INMOS empleados), los sistemas de la coma flotante, el Parsytec y el Parsys . Varias instituciones académicas británicas fundaron actividades de investigación en el uso de sistemas paralelos transputor-basados, incluyendo la escuela politécnica 'centro del transputor de s Bristol y la universidad de Bristol del proyecto concurrente del superordenador de Edimburgo de s de Edimburgo '.

T9000

INMOS mejoró en el funcionamiento de los transputores de la serie T8 con la introducción del T9000 ( code-named H1 durante el desarrollo). El T9000 compartió la mayoría de las características con el T800, pero se trasladó varios pedazos del diseño al hardware y agregó varias características para la ayuda de Superscalar . Desemejante de los modelos anteriores, el T9000 tenía un escondrijo de alta velocidad verdadero de 16 kB en vez de RAM, pero también permitido lo que se utilizará como memoria e incluido MMU-como funcionalidad para dirigir todo el esto (conocido como el PMI ). Para la velocidad adicional el T9000 depositó las 32 localizaciones superiores del apilado, en vez de tres como en versiones anteriores.

El T9000 utilizó una tubería de cinco etapas para aún más velocidad. Una adición interesante era el mero del que recogería instrucciones fuera del escondrijo y las agruparía en paquetes más grandes de 4 octetos para alimentar la tubería más rápidamente. Los grupos entonces terminaron en un solo ciclo, como si fueran solas instrucciones más grandes que trabajaban en una CPU más rápida.

El sistema del acoplamiento fue aumentado a un nuevo modo de 100 megaciclos, pero desemejante de los sistemas anteriores los acoplamientos eran no más hacia abajo compatibles. Este nuevo protocolo de acoplamiento paquete-basado fue llamado el DS-Acoplamiento del y más adelante formado la base del estándar serial de la interconexión de IEEE 1355 . El T9000 también agregó el hardware de la encaminamiento de acoplamiento llamado el VCP (procesador del canal virtual) que cambió los acoplamientos de punto a punto a una red verdadera, teniendo en cuenta la creación de cualquier número de los canales virtuales del en los acoplamientos. Esto significó que los programas no más tuvieron que ser conscientes de la disposición física de las conexiones. Una gama de virutas de la ayuda del DS-Acoplamiento también fue desarrollada, incluyendo el interruptor de barra transversal de la manera del C104 32, y el adaptador de acoplamiento del C101 .

Los retardos largos en el desarrollo de T9000 significaron que el más rápidos carga-almacenan diseños lo superaban ya para el momento en que debiera ser lanzado. De hecho no pudo constantemente alcanzar su propia meta de funcionamiento de batir por un factor de diez el T800: cuando el proyecto finalmente fue cancelado todavía alcanzaba solamente cerca de 36 MIPS en 50 megaciclos. Los retardos de la producción dieron lugar a la burla que la mejor arquitectura del anfitrión para un T9000 era un retroproyector.

Éste era demasiado para INMOS, que no tenía la financiación necesaria para continuar el desarrollo. Para entonces, habían vendido a la compañía al SGS-Thomson (ahora STMicroelectronics ), cuyo foco era el mercado de sistemas encajado, y el proyecto T9000 fue abandonado eventual. Sin embargo, un transputor de 32 bits comprensivo reajustado previsto para los usos encajados, la serie del ST20, fue producido más adelante, utilizando una cierta tecnología desarrollada para el T9000. La base ST20 fue incorporada en los chipsetes para la caja de la Fijar-tapa y los usos del GPS .

Comparación con tecnología moderna

Estaba irónico en gran parte con el paralelismo interno adicional que los diseños convencionales de la CPU consiguieron más rápidamente. En vez de usar un sistema explícito del roscar-nivel tener gusto del transputor, diseños de la CPU llegó a ser paralelo implícito en el nivel de la instrucción, mirando el código que es funcionado y entonces la distribución de las instrucciones que no afectan a cada-otros resulta a través de un número de unidades aritméticas internas dentro de la base de la CPU. Esta forma de paralelismo, conocida como Superscalar, ha probado más conveniente a la computación de fines generales. Lo más críticamente posible, ella y la ejecución especulativa entregaron un aumento tangible del funcionamiento al código existente. Por usos existentes de aceleración, el microprocesador clásico de la “sola CPU” manejó superar sistemas paralelos tales como el transputor, cuyas ventajas del funcionamiento aparecieron solamente en instalaciones del masivo-multiprocesador. Los lenguajes de programación de corriente del tiempo - Pascal, FORTRAN, C y C++ posterior - carecieron cualquier paralelización intrínseca, así que este paralelismo solo-CPU entregaron un speedup sin la necesidad de reescribir el uso usar tecnologías no maduras.

Sin embargo, el modelo de procesadores baratos, de cooperaciones múltiples se puede encontrar en el racimo de la proliferación que computa los sistemas de que han dominado diseño del superordenador en el siglo XXI. Desemejante en de la arquitectura propuesta del transputor, las unidades centrales en estos sistemas son típicamente similares a los servidores convencionales. Poseen las CPU con una arquitectura superscalar interna, el acceso a las cantidades substanciales de memoria y de almacenamiento a menudo en discos, y sistemas operativos e interfaces de red convencionales. La arquitectura de los programas usada para formar los procesos de cooperación del software a través de los procesadores débilmente acoplados en estos sistemas es típicamente lejos más pesada que lo ejecutados en la arquitectura del transputor.

El problema fundamental que el transputor intentaba solucionar, sin embargo, no salió con la falta del transputor. El problema pone sobre todo inactivo por más de 20 más años -- mientras tanto las cuentas del transistor doblaron repetidas veces -- pero los diseñadores del microprocesador finalmente funcionaron de los propósitos a los cuales emplear los recursos físicos disponibles. Por otra parte, las soluciones en las cuales la industria han colocado ser poco diferente esencialmente de ésos propuestos por INMOS.

Hoy (2007), mismo Intel quita el corazón a 2 muere, con poca modificación, es solicitado accionar todo a partir de los cuadernos de 2 libras a los superordenadores del multiton. La tendencia hacia la consolidación de los componentes, especialmente interfaces de red, en la CPU sí mismo de la materia está también en curso bien y se pronostica para llegar a ser de corriente pronto. Por otra parte, mucho entusiasmo se centra alrededor de diseños especializados de la Sistema-en-uno-Viruta que, como el transputor, sean casi enteramente autónomos. De hecho, los superordenadores más de gran alcance del mundo, basado en diseños de la Universidad de Columbia y puesto como IBM BlueGene, no son nada menos o las encarnaciones más que del mundo real del transputor soñan. Son montajes extensos de las virutas idénticas, relativamente de resultado inferior del SoC; versiones modificadas cuyo también energía el Wii de Nintendo.

Las tendencias recientes también han intentado solucionar el dilema del transistor de las maneras que habrían sido demasiado anacrónicas incluso para INMOS. Al lado de agregar componentes a la CPU morir y colocando dados del múltiplo en un sistema, los corazones múltiples del lugar moderno de los procesadores en uno mueren cada vez más. Mientras que el transputor luchó para caber incluso una base en su presupuesto del transistor, diseñadores, trabajando con un doblez 1000 más transistores, ahora colocar típicamente varios.

Las cosas más importantes haber ocurrido en las décadas desde el transputor, sin embargo, se refieren no a soporte físico pero a software. Solamente ahora, como técnicas de programación paralela finalmente están siendo forzadas en las mentes de los reveladores, son las arquitecturas paralelas que comienzan a entregar resultados. En estas épocas del cambio, incluso enteramente los nuevos acercamientos a la programación se están considerando de los gustos de la tecnología de ATI, de CUDA de NVidia, de IBM, y de PeakStream que rechazan las ineficacias del superscalarism abrazando paralelismo penetrante explícito en lugar de otro. Sin embargo, la programación paralela todavía se considera difícil y el mundo continúa esperando una herramienta que disiparía definitivo esta barrera persistente.

Ver también


David mayo, arquitecto del

l transputor
Sitio de trabajo del transputor de Atari
El IEEE 1355 datos de interconecta el estándar derivado de los DS-acoplamientos T9000
Superficie computacional de Meiko
IWarp
Lenguaje de programación de la facilidad

.

  • Zenithic
  • Idiosepius
    Random links:Oxyurinae | Marqués de Zetland | Ruta 120 del estado de California | Lista de aeropuertos en el condado de Clark, Nevada | Libertad en la medianoche

  • © 2007-2008 enciclopediaespana.com; article text available under the terms of GFDL, from en.wikipedia.org
    ="http://pagead2.googlesyndication.com/pagead/show_ads.js">