| Artículos | 01 JUL 1998

El procesador AMD K6-2

Tags: Histórico
Eugenio Barahona.

Desde hace ya bastante tiempo se encuentran disponibles en el mercado ordenadores que utilizan la familia de procesadores K6 del fabricante norteamericano AMD, siendo posible elegir entre versiones 200 a 300 MHz . Recientemente, en una rueda de prensa celebrada en Londres a la que tuvimos ocasión de asistir, AMD realizó la presentación oficial de la segunda generación de procesadores K6, denominados genéricamente como K6-2 . Pocos días después AMD nos hizo llegar a nuestro laboratorio un ordenador equipado con la versión del K6-2 que funciona a 333 MHz, máquina en la que están basadas las pruebas reflejadas en el presente artículo .

Las principales novedades que presentan estos microprocesadores son el uso de un bus del sistema que funciona a 100 MHz, la mejora de la unidad de ejecución de instrucciones MMX y la adición de una serie de instrucciones nuevas que forman la tecnología que el fabricante denomina 3DNow ! Los primeros procesadores de la nueva familia K6-2 se encuentran disponibles en versiones que funcionan a 266, 300 y 333 MHz, estando previsto que para finales de este año se lancen los que trabajarán a 350 y 400 MHz .

3DNow !

Esta tecnología añade al juego de instrucciones de la arquitectura x86, un total de 21 instrucciones nuevas que principalmente operan sobre datos en formato de coma flotante de simple precisión, que es el tipo de dato utilizado por ejemplo por la API Direct3D de Microsoft para representar las coordenadas de los polígonos 3D que se representan en la pantalla generada por una aplicación que use dicha API .

Al igual que sucede con la tecnología MMX, la base de 3DNow ! es la técnica SIMD ( Single Instruction Multiple Data ) , mediante la que una sola instrucción opera simultáneamente sobre varios datos del mismo tipo . De forma similar a lo que ocurre con el juego de instrucciones MMX, las que forman parte de 3DNow ! hacen uso del juego de registros del coprocesador matemático incluido en todos los microprocesadores de tipo Pentium . De esta forma es posible representar, mediante un único registro del coprocesador matemático, dos cantidades en formato de coma flotante de simple precisión, es decir, asignando 32 bits a cada una de las cantidades .

Los registros manejados por las instrucciones que forman parte de las extensiones 3DNow ! son los mismos que se utilizan junto con las extensiones MMX, de forma que sobre la mantisa de 64 bits de los registros del coprocesador matemático se crean ocho registros de 64 bits que toman los nombres de MM0 a MM7 . Además de las ventajas que tiene operar sobre varios datos de forma simultánea, el procesador AMD K6-2 dispone de dos unidades de registros, denominadas X e Y . Cada una de estas dos unidades puede ejecutar una instrucción distinta simultáneamente, de forma que es posible conseguir ejecutar al mismo tiempo un máximo de dos instrucciones de tipo 3DNow !

Las nuevas instrucciones se dividen en dos grupos distintos, dependiendo de los operandos sobre los que actúen: instrucciones vectoriales y escalares . Las vectoriales operan simultáneamente sobre dos operandos de 32 bits colocados en la palabra baja y alta de un registro MMX o de una dirección de memoria, mientras que las escalares trabajan sobre un único operando de 32 bits situado en los 32 bits bajos de una dirección de memoria o de un registro MMX .

Dentro de las nuevas instrucciones existen códigos de operación mediante los que es posible realizar operaciones de suma, resta, multiplicación, comparación, etc de números en formato de coma flotante de simple precisión . Existen además una serie de instrucciones especializadas mediante las que es posible codificar rutinas muy eficientes para efectuar divisiones y calcular raíces cuadradas, operaciones que suelen usarse con bastante frecuencia a la hora de programar aplicaciones gráficas 3D .

Una instrucción particularmente interesante es PREFETCH, la cual realiza explícitamente la carga en la memoria caché del microprocesador de una línea completa de dicha memoria . En el caso del procesador K6-2 la longitud de una línea de su caché interna es de 32 bytes, por lo que esta instrucción puede usarse para iniciar la carga de un bloque de datos mientras se procesa otra serie de datos que ya se encontrarían en la memoria caché de primer nivel del procesador . Mediante este esquema es posible, por ejemplo, programar rutinas muy eficientes de transformación de vértices de polígonos 3D .

Optimización de aplicaciones

El aprovechamiento de la tecnología 3DNow ! se puede realizar de varias formas distintas, obteniéndose en cada caso un aumento de rendimiento distinto respecto a la misma aplicación, pero sin que se use dicha tecnología . Evidentemente el método más eficaz para optimizar un programa para esta tecnología es haciendo que la aplicación utilice el juego de instrucciones de la tecnología 3DNow ! para optimizar el rendimiento de las funciones que consuman más tiempo . En el caso de las aplicaciones multimedia y los juegos, dichas funciones suelen ser las que simulan las leyes físicas o las encargadas de generar gráficos 3D en tiempo real . Para realizar dicha optimización se debe disponer de un compilador de C que soporte las nuevas instrucciones o bien codificar directamente en lenguaje ensamblador las rutinas cuyo rendimiento se desee mejorar . En este último caso será necesario utilizar un parche mediante el que el Macro Assembler de Microsoft podrá generar los códigos de operación de las nuevas instrucciones definidas por AMD . Dicho parche se puede conseguir en la siguiente página Web: www . amd . com/K6/k6docs/3ddoc . html .

Si por la razón que sea no se quiere optimizar la aplicación para transformarla en un programa nativo para tecnología 3DNow ! es posible conseguir aumentos de rendimiento si se utiliza una API que aproveche esta tecnología . En la actualidad 3Dfx Interactive se encuentra optimizando su API Glide para aprovechar el juego de instrucciones de la tecnología 3DNow ! , de igual forma a lo que está haciendo Silicon Graphics con OpenGL y Microsoft con la versión 6 de DirectX .

El caso particular de DirectX 6 merece comentario aparte, ya que aunque la API se optimice para aprovechar las nuevas instrucciones, no todas las aplicaciones se beneficiarán del incremento de rendimiento que es posible obtener mediante la tecnología 3DNow ! . Lo primero que hay que tener en cuenta es que las nuevas instrucciones están pensadas principalmente para acelerar ciertos procesos necesarios para generar gráficos 3D en tiempo real, concretamente para optimizar las transformaciones geométricas y los cálculos de iluminación necesarios para producir gráficos 3D realistas .

Bajo Direct3D una aplicación puede definir de tres formas distintas los vértices que forman parte de los polígonos mediante los que se construyen los objetos que se representan en la pantalla . Cada tipo de vértice se representa mediante una estructura de datos distinta de lenguaje C definida en los ficheros de cabecera del SDK de DirectX . Las estructuras encargadas de representar los tres tipos de vértice disponibles reciben los nombres D3DVERTEX, D3DLVERTEX y D3DTLVERTEX .

Mediante el tipo de vértice D3DVERTEX la aplicación indica las coordenadas locales del vértice a representar, las coordenadas de otro punto mediante el que se presenta la normal del vértice ( es decir, indica la dirección hacia la que está orientado el vértice ) y las coordenadas de la textura que corresponden al vértice en cuestión . Con este tipo de vértice las operaciones de transformación, proyección y cálculos de iluminación las realiza Direct3D, por lo que es el tipo de vértice mediante el que un programa puede aprovechar más la tecnología 3DNow ! a pesar de no tratarse

Contenidos recomendados...

Comentar
Para comentar, es necesario iniciar sesión
Se muestran 0 comentarios
X

Uso de cookies

Esta web utiliza cookies técnicas, de personalización y análisis, propias y de terceros, para facilitarle la navegación de forma anónima y analizar estadísticas del uso de la web. Consideramos que si continúa navegando, acepta su uso. Obtener más información