Procesadores desde el interior. Procesadores desde el interior Diseño de placa base de computadora

Actualmente, la principal cuota de mercado de los microprocesadores universales la ocupan los microprocesadores de 32 y 64 bits. Este capítulo describe los microprocesadores de 32 bits de Intel que componen la familia IA-32 (Intel Architecture-32). Esta arquitectura forma la base de la arquitectura x86-64 de 64 bits de Intel y la arquitectura AMD-64 de AMD.

2.1 Composición y funciones de los registros

Registros denominada memoria de alta velocidad ubicada dentro de la CPU y diseñada para el almacenamiento en línea de datos y el rápido acceso a ellos desde los componentes internos del procesador. Por ejemplo, al optimizar la velocidad de los bucles de programa, las variables a las que se accede dentro del bucle se ubican en los registros del procesador, no en la memoria. La totalidad de todos estos registros a veces se denomina memoria de borrador (CoRAM).

2.1.1 Registros básicos

La Figura 2.1 muestra la estructura de los principales registros y sus nombres hay 8 registros propósito general(RON), registros de 6 segmentos, registro de bandera, registro de puntero de instrucción, así como registros del sistema, registros de depuración y prueba.

Registros de propósito general (RON). Estos registros se utilizan principalmente para realizar operaciones aritméticas y transferir datos. Se puede acceder a cada RON como un registro de 32 bits o como un registro de 16 bits. Se puede acceder a algunos registros como de 8 bits. Por ejemplo, el registro EAX es de 32 bits, pero sus 16 bits inferiores se denominan registro AX. Los 8 bits superiores del registro AX se denominan AH y los 8 bits inferiores se denominan AL. Las partes de 16 bits de los registros de índice y los registros de puntero generalmente se usan solo cuando se escriben programas para el modo de direccionamiento real, es decir, para MS-DOS o su emulación en Windows.

Significado de las abreviaturas de nombres de registros:

Se amplía el prefijo E al comienzo de los nombres de registro.

El sufijo X al final de los nombres de registro significa el registro real.

AX - Acumulador (accionamiento).

BX - Registro base (registro base).

CX - Contador (contador).

DX - Datos (datos).

AL - Acumulador bajo (mitad inferior del registro AX).

AH - Acumulador alto (mitad superior del registro AX).

BL - Base baja (mitad inferior del registro BX).

BH - Base alta (mitad superior del registro BX).

CL - Contador bajo (mitad inferior del registro CX).

CH - Contador alto (mitad superior del registro CX).

DL - Datos bajos (mitad inferior del registro DX).

DH - Datos altos (mitad superior del registro DX).

SI - Índice de origen (índice de origen). Contiene la dirección de origen actual.

DI - Índice de destino (índice de destinatario). Contiene la dirección actual del receptor.

BP - Puntero base (puntero base). Para acceso aleatorio a datos dentro de la pila

SP - Puntero de pila (puntero de pila). Contiene el puntero superior de la pila.

CS - Segmento de código (segmento de código).

DS - Segmento de datos (segmento de datos).

ES - Segmento de datos extra (segmento de datos adicionales).

FS - Segmento de datos extendidos (segmento de datos adicionales).

GS - Segmento de Datos Extendidos (segmento de datos adicionales).

SS - Segmento de pila (segmento de pila).

IP - Puntero de instrucción (instrucción puntero o contador de instrucciones).

F - Banderas (registro de banderas).

GDTR - Registro de la tabla de descriptores globales (registro de la tabla de descriptores globales).

IDTR - Registro de tabla de descriptores de interrupción (registro de tabla de descriptores de interrupción).

TR - Registro de tareas (registro de tareas).

LDTR - Registro de tabla de descriptor local (registro de tabla de descriptor local).

DR - Registro de depuración (registro de depuración).

TR - Registro de prueba (registro de prueba).

CR - Registro de control (registro de control).

Características del uso de los registros. Al ejecutar instrucciones por parte del procesador, algunos registros de propósito general tienen un propósito especial.

    El contenido del registro EAX se utiliza automáticamente al ejecutar las instrucciones de multiplicación y división. Dado que este registro generalmente se asocia con la ejecución de instrucciones aritméticas, a menudo se lo denomina registro acumulador extendido (expandido acumulador).

    El registro ECX es utilizado automáticamente por el procesador como contador de ciclos.

    El registro ESP accede a los datos almacenados en la pila. Pila es un área de memoria del sistema, a la que se accede según el principio FILO (primera entrada - última salida) "primera escritura, última lectura". Este registro normalmente nunca se usa para realizar operaciones aritméticas y de transferencia de datos normales. a menudo llamado el registro de puntero de pila extendida (expandido pila puntero). El registro ESP apunta a la dirección de la parte superior de la pila (la dirección donde el comando PUSH empujará la siguiente variable).

    Los registros ESI y EDI se usan comúnmente para instrucciones de transferencia de datos de alta velocidad de una ubicación de memoria a otra. Por eso a veces se les llama registros de índice de fuente extendida y recipiente datos (expandido fuente índice y expandido destino índice). El registro ESI es la dirección de origen y contiene la dirección del comienzo del bloque de información para la operación de "mover bloque" (dirección completa DS:ESI), y el registro EDI es la dirección de destino (dirección completa ES:EDI).

    El registro EBP es comúnmente utilizado por compiladores de lenguaje de alto nivel para referirse a parámetros de funciones y para referirse a variables locales asignadas en la pila. No debe usarse para realizar operaciones aritméticas ordinarias o para mover datos, excepto cuando se usan técnicas de programación especiales por parte de programadores experimentados. A menudo se le conoce como caso extendido. puntero de marco de pila (expandido marco puntero). El registro EUR contiene la dirección desde la cual la información se inserta o extrae en la pila (o la "profundidad" de la pila). Los parámetros de función tienen un cambio positivo en relación con EBP, las variables locales tienen un cambio negativo y la dirección completa de esta ubicación de memoria se almacena en el par de registros SS:EBP.

    El registro EIP almacena el desplazamiento de la dirección de instrucción. La dirección completa de la siguiente instrucción ejecutable se almacena en el par de registros CS:EIP.

    Los registros ESP, EBP, ESI, EDI almacenan el desplazamiento de la dirección de datos.

registros de segmento. Estos registros se utilizan como registros base cuando se accede a áreas preasignadas de RAM, que se denominan segmentos Hay tres tipos de segmentos y, en consecuencia, registros de segmento:

    código (CS), almacenan solo los comandos del procesador, es decir, código máquina del programa;

    datos (DS, ES, FS y GS), almacenan áreas de memoria asignadas para variables y datos del programa;

    stack (SS), almacenan un área de memoria del sistema llamada pila, en el que se distribuyen las variables locales (temporales) del programa y los parámetros que se pasan a las funciones cuando son llamadas.

Los registros de segmento se cargan mediante selectores de segmento, que son compensaciones de la Tabla de descriptores globales (GDT) o la Tabla de descriptores locales (LDT).

Los bits de registro del segmento contienen la siguiente información:

0 - 1. RPL - Nivel de privilegio solicitado. El nivel de privilegio solicitado.

2. TI - Indicador de mesa. Bit de tabla indicadora. Le dice al procesador dónde buscar el selector especificado. Si el bit está establecido, el procesador lee el selector de la tabla de descriptores locales. Si el bit está limpio, el procesador lee el selector de la tabla de descriptores globales.

3 - 15. Estos bits almacenan el índice de la tabla de descriptores global o local.

El registro CS es demasiado pequeño para contener un segmento de código, por lo que debe establecerse en un segmento ejecutable. El registro SS es demasiado pequeño para contener un segmento de pila, por lo que debe establecerse en un segmento de datos grabable.

El nivel de privilegio establecido en el registro del segmento CS es el nivel de privilegio del programa en ejecución y se denomina Nivel de privilegio actual (CPL). Los registros de segmento DS, ES, FS, GS son para datos y deben establecerse en un segmento de datos con permiso de escritura. Los niveles de privilegio requeridos por cada uno de estos selectores deben ser mayores que el nivel de privilegio CPL actual.

Los registros de descriptores de sombra están asociados con cada uno de los seis registros de segmento. La dirección base de 32 bits del segmento, el límite de 20 bits y los atributos (permisos) de las tablas de descriptores se reescriben en los registros de sombra en modo protegido.

Registro de puntero de instrucción. El registro EIP almacena el desplazamiento relativo al inicio del programa (desplazamiento) de la siguiente instrucción a ejecutar. Hay varias instrucciones en el procesador que afectan el contenido de este registro. Cambiar la dirección almacenada en el registro EIP provoca una transferencia de control a una nueva sección del programa.

Registro de banderas FE (EFLAGZ) . Los bits de este registro se denominan banderas y son responsables de los detalles de la ejecución de algunas instrucciones de la CPU o reflejan el resultado de la ejecución de comandos por parte de la ALU. Las banderas de registro se enumeran en la Tabla 2.1. Los bits 22 a 31 inclusive están reservados.

Tabla 2.1 Registro de banderas

Para analizar los bits de este registro, se proporcionan instrucciones de procesador especiales. Dicen la bandera instalado, cuando el bit de bandera es 1, y que la bandera cayó, cuando su valor de bit es 0. Además, el registro EF extendido contiene cinco banderas nuevas en comparación con el registro F.

Banderas de control. El programador puede cambiar el estado de los bits en el registro EFLAGS, correspondientes a las banderas de control, usando comandos especiales del procesador. Estas banderas (DF, IF, TF) controlan la ejecución de algunas instrucciones de la CPU:

8. TF - Bandera de trampa. Indicador de seguimiento (modo de paso). Cuando se establece (TF=1), después de la ejecución de cada instrucción, se llama a una interrupción interna INT 1, que detiene el proceso computacional, lo que permite verificar el contenido de los registros.

9.IF - Indicador de activación de interrupción. Indicador de habilitación de interrupción. Con IF=1, las interrupciones de hardware enmascaradas están habilitadas. Si IF=0, está deshabilitado.

10. DF - Indicador de dirección. Indicador para controlar la dirección del procesamiento de matriz en comandos de cadena. Cuando DF=1, los registros de índice SI, DI, que participan en los comandos de cadena, se reducen automáticamente según el número de bytes de operandos, procesando así las cadenas de principio a fin. Con DF=0, se incrementan, procesando desde el principio hasta el final de la cadena.

Indicadores de estado. Estas banderas reflejan varias indicaciones del resultado de ejecutar instrucciones aritméticas y lógicas de la CPU:

0.CF - Llevar bandera. La bandera de acarreo se establece si, al realizar una operación aritmética sin signo, se obtiene un número cuyo ancho de bits excede el ancho de bits del campo de resultado asignado para él. En las instrucciones de cambio, la bandera CF fija el valor del bit más significativo.

2. PF - Bandera de paridad. El indicador de paridad/paridad se establece cuando hay un número par de unos en el resultado.

4. AF - Acarreo auxiliar. Bandera para transferencia/préstamo adicional de la tétrada inferior a la anterior (del tercer al cuarto dígito). Se usa en comandos para procesar datos de 8 bits, generalmente números BCD.

6. ZF - Bandera cero. El indicador cero se establece si una operación aritmética o lógica da como resultado un número igual a cero (es decir, todos los bits del resultado son 0).

7. SF - Bandera de signo. La bandera de signo duplica el valor del bit más significativo del resultado. SF=0 para positivo, SF=1 para negativo.

11. OF - Indicador de desbordamiento. bandera de desbordamiento , o ) se establece si, al realizar una operación aritmética con un signo, se obtiene un número cuya profundidad de bits excede el ancho de bits del campo de resultado asignado para él.

banderas, agregado al registro EF:

12-13. IOPL significa Nivel de privilegio de E/S. Indicador de nivel de privilegio de E/S. Se utiliza en el modo protegido del microprocesador para controlar el acceso a los comandos de E/S, según el privilegio de la tarea.

14. NT - Bandera de tarea anidada. Indicador de anidamiento de tareas. Se utiliza en el modo protegido del microprocesador para registrar el hecho de que una tarea está anidada dentro de otra.

16. RF - Indicador de reanudación. reanudar la bandera. En el modo de depuración, un solo valor de RF permite que el comando se reinicie después de las interrupciones. Se utiliza junto con los registros de punto de interrupción de depuración.

17. VM: indicador de modo virtual. Indicador de modo virtual. Signo de operación del microprocesador en modo virtual 8086. 1 – el procesador opera en modo virtual 8086; 0: el procesador se ejecuta en modo real o protegido.

18. CA - Comprobación de alineación. Indicador del modo de funcionamiento del procesador, en el que se produce el control de alineación. Solo se usa en el nivel de privilegio 3. Si AC=1 y AM=1 (AM es un bit en el registro de control CR0), entonces si se accede a un operando que no está alineado con el límite apropiado (2 o 4 u 8) bytes, se generará la excepción 17 La alineación del operando dentro de los límites 2,4,8 significa que la dirección del operando es un múltiplo de 2,4,8, respectivamente.

19. VIF - Indicador de interrupción virtual. Indicador de activación de interrupción en el modo de procesador virtual.

20. VIP - Pendiente de interrupción virtual. Indicador de retraso de interrupción en el modo de procesador virtual.

21. ID - Identificación de la CPU. Indicador de identificación del procesador. El indicador se puede cambiar si el procesador admite el comando CPUID.

En los registros de control CR0-CR3 son signos de estado del procesador almacenados comunes a todas las tareas. El registro CR0 tiene los siguientes bits:

0. PE - Habilitar protección. Indicador de modo protegido. Si PE=1, el modo del procesador está protegido.

1. MP - Presente matemático. Marca para la presencia de un coprocesador matemático. Si MP=1, entonces el coprocesador matemático está presente.

2. EM - Emular extensión numérica. Bandera de emulación de instrucción de punto flotante. Cuando se establece la bandera, los comandos para trabajar con números reales se pueden emular en el software.

3.TS - Tarea cambiada. Indicador de cambio de tarea. El indicador se establece después de cambiar la tarea.

4. ET - Tipo de extensión. Indicador de tipo de extensión. Establezca si está presente el coprocesador aritmético 387 o superior.

5. NE - Habilitación de error numérico. Indicador de resolución de errores del coprocesador. Si se establece el indicador, en caso de un error en el coprocesador, se genera la excepción 16.

16.WP - Protección contra escritura. Bandera de protección contra escritura. Si se establece el indicador, se asignan páginas de memoria al kernel del sistema operativo en modo de solo lectura (read-only).

18.AM - Máscara de alineación. Indicador de enmascaramiento de alineación. Cuando se establece el indicador, en caso de acceso a operandos no alineados, se generará la excepción 17. Si se borra el indicador, dicha excepción se enmascara.

29. NW - Sin escritura simultánea. Indicador de desactivación de escritura simultánea.

30. CD - Caché desactivado. Deshabilitar el indicador de almacenamiento en caché.

31.PG - Habilitar paginación. Indicador de modo de paginación de memoria. Cuando se establece la bandera, el sistema operativo se ejecuta en modo de paginación.

Los bits restantes del registro CR0 están reservados.

El registro CR1 está reservado. El registro CR2 almacena la dirección lineal de 32 bits en la que se recibió un error de página. Los 20 MSB de CR3 almacenan la dirección base física de la tabla del directorio de páginas y los bits de control de caché. El registro CR4 contiene los bits de habilitación para extensiones arquitectónicas del MP. En general, estos registros se utilizan en la programación del sistema y establecen el modo de funcionamiento del procesador (normal, protegido, etc.), paginación de memoria, etc.

Registros de direcciones del sistema. La tabla de descriptores globales GDTR y los registros de puntero del sistema de la tabla de interrupciones IDTR almacenan direcciones base de 32 bits y límites de tabla de 16 bits, respectivamente. El segmento de tareas del sistema registra TR y la tabla de descriptores locales LDTR son selectores de 16 bits. Corresponden a los registros del descriptor de sombra, que contienen la dirección base de 32 bits del segmento, el límite de 20 bits y el byte de permiso.

En registros de depuración DR0-DR3 contienen direcciones de punto de interrupción de 32 bits en modo de depuración; DR4-DR5 están reservados y no se utilizan; DR6 muestra el estado del punto de control; DR7: gestiona la ubicación de los puntos de control en el programa.

Registros de prueba TR son parte de un grupo de registros específicos del modelo, su composición y número dependen del tipo de procesador: el MP 386 usa dos registros TR6 y TR7 para controlar el sistema de paginación de asignación de memoria por parte del sistema operativo. Pentium II y superiores utilizan doce registros TR1-TR12. Este grupo de registros también contiene los resultados de las pruebas del MP y la memoria caché.

El artículo revela el significado del término "64 bits". El artículo repasa brevemente la historia del desarrollo de los sistemas de 64 bits, describe los procesadores de 64 bits más comunes actualmente de la arquitectura Intel 64 y el sistema operativo Windows de 64 bits.

Introducción

En el marco de la arquitectura informática, el término "64 bits" se refiere a números enteros de 64 bits y otros tipos de datos que tienen un tamaño de 64 bits. Los sistemas de "64 bits" pueden referirse a arquitecturas de microprocesador de 64 bits (p. ej., EM64T, IA-64) o sistemas operativos de 64 bits (p. ej., Windows XP Professional x64 Edition). Podemos hablar de compiladores que generan código de programa de 64 bits.

Este artículo cubrirá varios problemas relacionados con las tecnologías de 64 bits. El artículo está destinado a programadores que quieran comenzar a desarrollar programas de 64 bits, y está dirigido a desarrolladores de Windows, ya que el tema de la familiaridad con los sistemas de 64 bits es el más relevante para ellos.

Historia de los sistemas de 64 bits

64 bits ha entrado recientemente en la vida de la mayoría de los usuarios y programadores de aplicaciones. Sin embargo, trabajar con datos de 64 bits tiene una larga historia.

1961: IBM lanza la supercomputadora IBM 7030 Stretch, que utiliza palabras de datos de 64 bits, instrucciones de máquina de 32 o 64 bits.

1974: Control Data Corporation lanza la supercomputadora vectorial CDC Star-100, que utiliza una arquitectura de palabras de 64 bits (los sistemas CDC anteriores tenían una arquitectura de 60 bits).

1976: Cray Research lanza la primera supercomputadora Cray-1, que implementa una arquitectura de palabras de 64 bits y servirá como base para todas las supercomputadoras vectoriales Cray posteriores.

1985: Cray lanza UNICOS, la primera implementación de 64 bits del sistema operativo Unix.

1991: MIPS Technologies lanza el primer procesador de 64 bits, el R4000, que implementa la tercera iteración de la arquitectura MIPS de su empresa. Este procesador se ha utilizado en estaciones de trabajo gráficas SGI desde el modelo IRIS Crimson. Kendall Square Research lanza su primera supercomputadora KSR1 basada en su arquitectura RISC de 64 bits patentada que ejecuta OSF/1.

1992: Digital Equipment Corporation (DEC) presenta la arquitectura Alpha de 64 bits, una creación del proyecto PRISM.

1993: DEC lanza el sistema operativo DEC OSF/1 AXP de 64 bits similar a Unix (más tarde rebautizado como Tru64 UNIX) para sus sistemas Alpha.

1994: Intel anuncia sus planes para desarrollar la arquitectura IA-64 de 64 bits (con Hewlett-Packard) como sucesora de sus procesadores IA-32 de 32 bits. Fecha de lanzamiento fijada para 1998-1999. SGI lanza IRIX 6.0 con soporte de 64 bits para el chipset R8000.

1995: Sun lanza la familia de procesadores SPARC UltraSPARC de 64 bits. HAL Computer Systems, una subsidiaria de Fujitsu, está lanzando estaciones de trabajo basadas en el procesador SPARC64 de 64 bits de primera generación desarrollado independientemente por HAL. IBM lanza los microprocesadores A10 y A30, así como los procesadores PowerPC AS de 64 bits. IBM también está lanzando una actualización de 64 bits para AS/400 que puede transformar el sistema operativo, las bases de datos y las aplicaciones.

1996: Nintendo presenta la videoconsola Nintendo 64, basada en una variante más económica de la MIPS R4000. HP lanza una implementación 2.0 de 64 bits de su arquitectura patentada PA-RISC PA-8000.

1997: IBM lanza la línea RS64 de procesadores PowerPC/PowerPC AS de 64 bits.

1998: Sun lanza Solaris 7 con compatibilidad total con UltraSPARC de 64 bits.

1999: Intel lanza el conjunto de instrucciones para la arquitectura IA-64. AMD anuncia públicamente su conjunto de extensiones de 64 bits para IA-32, que se denominó x86-64 (luego rebautizado como AMD64).

2000: IBM lanza su primer mainframe zSeries z900 de 64 bits compatible con ESA/390, así como el nuevo sistema operativo z/OS.

2001: Intel finalmente lanza una línea de procesadores de 64 bits, ahora llamada Itanium, para servidores de alto rendimiento. El proyecto no cumple con las expectativas debido a los numerosos retrasos en la comercialización del IA-64. NetBSD se convierte en el primer sistema operativo que se ejecuta en el procesador Intel Itanium después de su lanzamiento. Además, Microsoft también está lanzando Windows XP 64-Bit Edition para la arquitectura IA-64 de la familia Itanium, aunque conserva la capacidad de ejecutar aplicaciones de 32 bits utilizando la capa WoW64.

2003: AMD presenta las líneas de procesadores Opteron y Athlon 64 basadas en la arquitectura AMD64, que es la primera arquitectura de procesador de 64 bits basada en la arquitectura x86. Apple comienza a utilizar el procesador PowerPC 970 "G5" de 64 bits de IBM. Intel afirma que la familia de chips de procesador Itanium seguirá siendo el único procesador de 64 bits desarrollado por su empresa.

2004: En respuesta al éxito comercial de AMD, Intel admite que estaban desarrollando un clon de las extensiones AMD64, al que llamaron IA-32e (luego rebautizado como EM64T y luego Intel 64). Intel también lanza versiones actualizadas Familias de procesadores Xeon y Pentium 4 con soporte para nuevos comandos.

2004: VIA Technologies presenta su procesador Isaiah de 64 bits.

2005: 31 de enero Sun lanza Solaris 10 con soporte para procesadores AMD64/Intel 64. 30 de abril Microsoft lanza Windows XP Professional x64 Edition para procesadores AMD64/Intel 64.

2006: Sony, IBM y Toshiba lanzan el procesador Cell de 64 bits para PlayStation 3, servidores, estaciones de trabajo y otros dispositivos. Microsoft lanza Windows Vista con una versión de 64 bits incluida para procesadores AMD64/Intel 64 que admite compatibilidad con 32 bits. Todas las aplicaciones y componentes de Windows son de 64 bits, pero muchos de ellos tienen versiones de 32 bits incluidas como complementos para compatibilidad.

2009: Al igual que Windows Vista, Windows 7 de Microsoft incluye una versión completa de 64 bits para procesadores AMD64/Intel 64, y la mayoría de las computadoras nuevas vienen con la versión de 64 bits de forma predeterminada. Se estrena el sistema operativo de la empresa Mac de manzana OS X 10.6, "Snow Leopard" que tiene un kernel de 64 bits y está diseñado para procesadores AMD64/Intel 64, sin embargo, este sistema está instalado por defecto solo en algunos de los últimos modelos de computadoras Apple. La mayoría de las aplicaciones enviadas con Mac OS X 10.6 ahora también son de 64 bits.

Para obtener más detalles sobre la historia del desarrollo de 64 bits, consulte el artículo de John Masha "El largo camino hacia los 64 bits" y el artículo enciclopédico de Wikipedia "64 bits".

Programación de aplicaciones y sistemas de 64 bits

En el momento de escribir este artículo en 2010, las más famosas y extendidas son dos arquitecturas de microprocesador de 64 bits: IA64 e Intel 64.
  1. IA-64 Arquitectura de microprocesador de 64 bits desarrollada conjuntamente por Intel y Hewlett Packard. Implementado en microprocesadores Itanium e Itanium 2. Para un conocimiento más detallado de la arquitectura IA-64, puede consultar los siguientes artículos de Wikipedia: "IA-64", "Itanium", "Itanium 2". Se admite la arquitectura Itanium un gran número de fabricantes de servidores: Bull, Fujitsu, Fujitsu Siemens Computers, Hitachi, HP, NEC, SGI y Unisys. Estos proveedores se han unido a Intel y una gran cantidad de desarrolladores de software para formar Itanium Solutions Alliance para avanzar en la arquitectura y acelerar el ritmo de la migración de software.
  2. Intel 64(AMD64 / x86-64 / x64 / EM64T): esta arquitectura es una extensión de la arquitectura x86 con total compatibilidad con versiones anteriores. Existen muchas variantes del nombre de esta arquitectura, lo que induce a confusión, aunque, en realidad, todos estos nombres significan lo mismo: x86-64, AA-64, Hammer Architecture, AMD64, Yamhill Technology, EM64T, IA-32e , Intel 64, x64. Para obtener más información sobre cómo surgieron tantos nombres, consulte el artículo de Wikipedia: "X86-64". Los procesadores con arquitectura Intel 64 son ampliamente utilizados en las computadoras personales. Y lo más probable es que su computadora esté equipada con un procesador con esta arquitectura.
Es importante comprender que IA-64 e Intel 64 (AMD64) son arquitecturas de microprocesador completamente diferentes e incompatibles. Más adelante en el artículo, consideraremos solo la arquitectura Intel 64 (x64 / AMD64), ya que es más popular entre los desarrolladores de aplicaciones. software para el sistema operativo Windows. Para abreviar, el modelo de programación Intel 64 disponible para un programador en un sistema Windows de 64 bits se llama Win64.

Arquitectura Intel 64 (AMD64)

La arquitectura Intel 64 que se está considerando es una extensión retrocompatible simple pero potente de la arquitectura x86 industrial heredada. Agrega un espacio de direcciones de 64 bits y expande los recursos de registro para admitir un mejor rendimiento de los programas de 64 bits recompilados. La arquitectura brinda soporte para sistemas operativos y código de aplicación heredados de 16 y 32 bits sin modificación ni recompilación.

Una característica distintiva del Intel 64 es la compatibilidad con dieciséis registros de propósito general de 64 bits (el x86-32 tenía ocho registros de 32 bits). aritmética de 64 bits y operaciones lógicas sobre números enteros. Se admiten direcciones virtuales de 64 bits. Para abordar nuevos registros para comandos, se han introducido "prefijos de extensión de registro", para lo cual se ha optado por la gama de códigos 40h-4Fh, utilizados para comandos INC.<регистр>y DIC<регистр>en modos de 32 y 16 bits. Los comandos INC y DEC en modo de 64 bits deben codificarse en la forma más general de dos bytes.

Registros:

16 registros de propósito general enteros de 64 bits (RAX, RBX, RCX, RDX, RBP, RSI, RDI, RSP, R8 - R15),
8 registros de punto flotante de 80 bits (ST0 - ST7),
8 registros de extensiones multimedia de 64 bits (MM0 - MM7, espacio compartido con registros ST0 - ST7),
16 registros SSE de 128 bits (XMM0 - XMM15),
Puntero RIP de 64 bits y registro de bandera RFLAGS de 64 bits.

La necesidad de una arquitectura de 64 bits está determinada por las aplicaciones que necesitan un gran espacio de direcciones. En primer lugar, se trata de servidores de alto rendimiento, sistemas de gestión de bases de datos, sistemas CAD y, por supuesto, juegos. Estas aplicaciones se beneficiarán enormemente de un espacio de direcciones de 64 bits y más registros. El bajo número de registros disponibles en la arquitectura heredada x86 limita el rendimiento en las tareas informáticas. El mayor número de registros proporciona suficiente rendimiento para muchas aplicaciones.

Destacamos las principales ventajas de la arquitectura x86-64:

  • espacio de direcciones de 64 bits;
  • conjunto ampliado de registros;
  • un conjunto de comandos familiares para los desarrolladores;
  • la capacidad de ejecutar aplicaciones antiguas de 32 bits en un sistema operativo de 64 bits;
  • la capacidad de utilizar sistemas operativos de 32 bits.

sistemas operativos de 64 bits

Casi todos los sistemas operativos modernos ahora tienen versiones para la arquitectura Intel 64. Por ejemplo, Microsoft proporciona Windows XP x64. Principales desarrolladores sistemas UNIX también proporciona versiones de 64 bits, como Linux Debian 3.5 x86-64. Sin embargo, esto no significa que todo el código de dicho sistema sea completamente de 64 bits. Es posible que parte del código del sistema operativo y muchas aplicaciones sigan siendo de 32 bits, ya que Intel 64 proporciona compatibilidad con versiones anteriores de aplicaciones de 32 bits. Por ejemplo, 64 bits versión de Windows utiliza un modo especial WoW64 (Windows-on-Windows 64), que traduce llamadas de aplicaciones de 32 bits a recursos de un sistema operativo de 64 bits.

WoW64

Windows-on-Windows de 64 bits (WoW64) es un subsistema del sistema operativo Windows que le permite ejecutar aplicaciones de 32 bits en todas las versiones de Windows de 64 bits.

El subsistema WoW64 no admite los siguientes programas:

  • programas compilados para sistemas operativos de 16 bits;
  • Programas en modo kernel compilados para sistemas operativos de 32 bits.
Hay diferencias en WoW64 según la arquitectura del procesador. Por ejemplo, la versión de Windows de 64 bits diseñada para el procesador Intel Itanium 2 usa WoW64 para emular instrucciones x86. Esta emulación consume muchos recursos en comparación con WoW64 para la arquitectura Intel 64, ya que cambia del modo de 64 bits al modo de compatibilidad cuando se ejecutan programas de 32 bits.

WoW64 en la arquitectura Intel 64 (AMD64/x64) no requiere la emulación de instrucciones. Aquí, el subsistema WoW64 emula solo un entorno de 32 bits, debido a una capa adicional entre la aplicación de 32 bits y la API de Windows de 64 bits. En algún lugar esta capa es delgada, en algún lugar no tanto. Para programa secundario las pérdidas de rendimiento debidas a la presencia de dicha capa serán de alrededor del 2%. Para algunos programas, este valor puede ser mayor. El dos por ciento no es mucho, pero tenga en cuenta que las aplicaciones de 32 bits se ejecutan un poco más lentamente en un sistema operativo Windows de 64 bits que en un entorno de 32 bits.

La compilación de código de 64 bits no solo elimina la necesidad de WoW64, sino que también proporciona un aumento de rendimiento adicional. Esto se debe a cambios en la arquitectura del microprocesador, como un aumento en el número de registros de propósito general. Para un programa promedio, puede esperar entre un 5% y un 15% de aumento en el rendimiento de una simple recompilación.

Debido a la presencia de la capa WoW64, los programas de 32 bits funcionan de manera menos eficiente en un entorno de 64 bits que en uno de 32 bits. Aún así, las aplicaciones simples de 32 bits pueden beneficiarse de ejecutarlas en un entorno de 64 bits. Probablemente sepa que un programa compilado con el modificador /LARGEADDRESSAWARE:YES puede asignar hasta 3 gigabytes de memoria si se inicia un sistema operativo Windows de 32 bits con el modificador /3gb. Por lo tanto, el mismo programa de 32 bits que se ejecuta en un sistema de 64 bits puede asignar casi 4 GB de memoria (en la práctica, alrededor de 3,5 GB).

El subsistema WoW64 aísla los programas de 32 bits de los programas de 64 bits al redirigir el acceso a archivos y registros. Esto evita que los programas de 32 bits accedan accidentalmente a datos de aplicaciones de 64 bits. Por ejemplo, una aplicación de 32 bits que ejecuta un archivo DLL desde el directorio %systemroot%\System32 podría acceder accidentalmente a un archivo DLL de 64 bits que no es compatible con un programa de 32 bits. Para evitar esto, el subsistema WoW64 redirige el acceso desde la carpeta %systemroot%\System32 a la carpeta %systemroot%\SysWOW64. Esta redirección ayuda a evitar errores de compatibilidad porque requiere un archivo DLL diseñado específicamente para funcionar con aplicaciones de 32 bits.

Más información sobre los mecanismos de redirección sistema de archivos y el registro se puede encontrar en la sección de MSDN "Ejecución de aplicaciones de 32 bits".

Modelo de programación Win64

Al igual que en Win32, el tamaño de página en Win64 es de 4Kb. Los primeros 64 K del espacio de direcciones nunca se asignan, por lo que la dirección válida más pequeña es 0x10000. A diferencia de Win32, las DLL del sistema se cargan por encima de los 4 GB.

La peculiaridad de los compiladores para Intel 64 es que pueden usar registros de manera más efectiva para pasar parámetros a funciones, en lugar de usar la pila. Esto permitió a los desarrolladores de la arquitectura Win64 deshacerse de una convención de llamadas (convención de llamadas). En Win32, puede usar diferentes convenciones: __stdcall, __cdecl, __fastcall, etc. Solo hay una convención de llamadas en Win64. Considere un ejemplo de cómo se pasan cuatro argumentos de tipo entero en los registros:

  • RCX: primer argumento
  • RDX: segundo argumento
  • R8: tercer argumento
  • R9: cuarto argumento
Los argumentos después de los primeros cuatro enteros se pasan a la pila. Para argumentos flotantes, se utilizan los registros XMM0-XMM3, así como la pila.

La diferencia en las convenciones de llamada significa que tanto el código de 64 bits como el de 32 bits no se pueden usar en el mismo programa. En otras palabras, si la aplicación está compilada para el modo de 64 bits, todas las bibliotecas utilizadas (DLL) también deben ser de 64 bits.

Pasar parámetros a través de registros es una de las innovaciones que hace que los programas de 64 bits tengan un mejor rendimiento que los de 32 bits. Se puede obtener una ganancia de rendimiento adicional mediante el uso de tipos de datos de 64 bits.

Espacio de dirección

Mientras que un procesador de 64 bits teóricamente puede manejar 16 exabytes de memoria (2^64), Win64 actualmente admite 16 terabytes (2^44). Hay varias razones para esto. Los procesadores actuales solo pueden acceder a 1 terabyte (2^40) de memoria física. La arquitectura (pero no el hardware) puede expandir este espacio hasta 4 petabytes (2^52). Sin embargo, en este caso, se necesita una gran cantidad de memoria para las tablas de páginas asignadas en memoria.

Además de estas limitaciones, la cantidad de memoria disponible en una versión particular del sistema operativo Windows de 64 bits también depende de las consideraciones comerciales de Microsoft. La siguiente es información sobre la cantidad de memoria admitida por varias versiones de Windows de 64 bits:

Windows XP Professional: 128 GB;
Windows Server 2003, Estándar - 32 Gbytes;
Windows Server 2003, Enterprise - 1 Tbyte;
Windows Server 2003, centro de datos - 1 Tbyte;
Windows Server 2008, Centro de datos - 2 Tbyte;
Windows Server 2008, Enterprise - 2 Tbyte;
Windows Server 2008, Estándar - 32 Gbytes;
Windows Server 2008, servidor web - 32 Gbyte;
Vista Home Basic - 8 Gbyte;
Vista Hogar Premium - 16 GB;
Vista empresarial - 128 GB;
Vista Empresa - 128 GB;
Vista último - 128 GB;
Windows 7 Home Basic - 8 GB;
Windows 7 Home Premium - 16 GB;
Windows 7 Profesional - 192 GB;
Windows 7 Empresa - 192 GB;
Windows 7 último - 192 GB;

Desarrollo de aplicaciones de 64 bits

Los problemas relacionados con el desarrollo de aplicaciones de 64 bits se analizan más detalladamente en el curso "

En 1985 la firma Intel lanzó un microprocesador de 32 bits, que se convirtió en el antepasado de la familia IA-32. El desarrollo de esta familia ha pasado por varias etapas, entre las que se pueden distinguir las siguientes: la implementación de un bloque para el procesamiento de números en coma flotante directamente en el chip MP (microprocesador I486), Introducción MMX-tecnología de procesamiento de datos de punto fijo según el principio SIMD - datos múltiples de instrucción única(un flujo de instrucciones - muchos flujos de datos) en el microprocesador Pentium MMX y el desarrollo de esta tecnología sobre números de coma flotante ( SSE - Extensión SIMD de transmisión), que apareció por primera vez en MP Pentium III. Sin embargo, las principales características de esta arquitectura se mantienen sin cambios hasta el momento actual.

La arquitectura de un microprocesador de 32 bits difiere significativamente de la de uno de 16 bits. Algunas de estas diferencias son puramente cuantitativas, mientras que otras son fundamentales.

La principal diferencia externa es el aumento del ancho del bus de datos y del bus de direcciones a 32 bits. Esto, a su vez, está asociado con cambios en la profundidad de bits de los elementos internos del microprocesador y en el mecanismo para realizar algunos procesos, por ejemplo, la formación de una dirección física.

Los registros de la unidad de procesamiento de punto fijo se convirtieron en 32 bits. Se puede acceder a cada uno de ellos como una palabra doble (32 bits). Se puede acceder a los 16 bits inferiores de estos registros de la misma manera que en un microprocesador de 16 bits.

Se produjeron cambios tanto cuantitativos como cualitativos en el bloque de registros de segmentos. Además de los cuatro registros utilizados en modo real, CS, DS, SS y ES, se han añadido dos más: FS y GS. Aunque la profundidad de bits de los registros de este bloque se mantuvo igual (cada uno de 16 bits), se usan de manera diferente en la formación de la dirección física de la RAM. Cuando el microprocesador está operando en el llamado modo protegido, están destinados a buscar el descriptor del segmento (descriptor) en las tablas del sistema correspondientes, y la dirección base y los atributos del segmento ya están almacenados en el descriptor. La generación de direcciones en este caso la realiza el bloque de segmentación del administrador de memoria.

Si, además de los segmentos, la memoria también se divide en páginas, el bloque de control de página realiza el cálculo final de las direcciones físicas.

Comenzando con el microprocesador I486, el chip del microprocesador incluye una unidad de procesamiento de números de coma flotante, que incluye ocho registros de 80 bits para representar signos, mantisas y exponentes de tales números.

El chip del microprocesador también tiene una memoria caché interna, que es una memoria intermedia de alta velocidad especialmente organizada y diseñada para almacenar la información utilizada con más frecuencia (comandos y datos). En varios modelos de microprocesadores, la cantidad de memoria caché varía de 8 KB a 512 KB.

El microprocesador a nivel de hardware soporta el modo de multiprogramación de la computadora, es decir, la capacidad de tener en memoria varios programas listos para ejecutarse al mismo tiempo, los cuales son lanzados por el sistema operativo de acuerdo con los algoritmos de su funcionamiento o dependiendo sobre las situaciones especiales que se desarrollan en el funcionamiento de dispositivos externos.

Indisolublemente unidas a esta capacidad están las protecciones de memoria, que brindan control sobre las interacciones no autorizadas entre programas individuales. Estos incluyen protección de administración de memoria y protección de privilegios.

Las características principales del formato de comando extendido son la capacidad de usar cualquiera de los registros de uso general en cualquiera de los modos de direccionamiento, así como la adición de un modo de direccionamiento más: índice base relativo con escala. En este caso, el domicilio efectivo se forma de la siguiente manera:

EA = (base) + (índice) escala + disp,

donde (base) es el valor del registro base; (índice) - valor de registro de índice; escala - valor del factor de escala (escala = 1,2,3,4); disp es el valor de desplazamiento codificado en el comando mismo.

Tenga en cuenta que en una arquitectura de 32 bits, la dirección efectiva generalmente se denomina desplazamiento, aunque se distingue del desplazamiento codificado en la instrucción misma (desplazamiento).

La arquitectura de bits de la PC.

El código Win64 combina las características principales del código de 32 bits y también incluye cambios de mejora de bits. El programador tiene:

· punteros de 64 bits;

· tipos de datos de 64 bits;

· tipos de datos de 32 bits;

Interfaz API Win64.

Tenga en cuenta que los tipos de datos de 32 bits no desaparecieron cuando la plataforma aumentó en bits (como sucedió con los tipos de datos de 16 bits cuando se pasó a Win32). Esto se debe a que incluso en aplicaciones de 64 bits, en la mayoría de los casos, las variables no requieren 8 bytes de memoria, por lo que usar tipos de 64 bits en tales casos sería extremadamente ineficiente. Sistema operativo Tendría que agregar ceros a los bits altos para aumentar el tamaño de los datos a 8 bytes (dichos datos también son muy incómodos de leer). Esto conduciría a una degradación del rendimiento.

Un destino diferente le sucedió a los punteros de 32 bits: desaparecieron por completo. El hecho es que el uso de punteros de 32 bits impone un límite en la cantidad de memoria direccionable. Por ejemplo, una de las principales ventajas del modelo de memoria plana (que es el principal para programar aplicaciones de 32 bits para la plataforma NT) utilizando punteros de 32 bits es la capacidad de crear segmentos de hasta 4 GB de tamaño. Los nuevos punteros de 64 bits brindan la capacidad de abordar hasta 16 TB de memoria (1 TB = 1012 MB). Este volumen es bastante demandado por las aplicaciones comerciales modernas.

Las funciones de la API de Win64 han sufrido cambios menores. Solo se han cambiado los nombres de algunos de ellos para reflejar la plataforma de 64 bits. En la mayoría de los casos, solo han cambiado los tipos de parámetros que son argumentos para las llamadas a funciones. Todos los demás beneficios (la capacidad de dejar de usar archivos de paginación, etc.) están asociados con una mayor cantidad de direccionamiento o con nuevos tipos de datos.

Diseño de placas de sistema. Factor de forma

Diseño de placa base de computadora

tarjeta madre(placa base en inglés, MB, también se usa el nombre de la placa base en inglés: la placa principal; argot. mamá, madre, placa base) es una placa de circuito impreso multicapa compleja en la que se instalan los componentes principales computadora personal(procesador central, controlador de RAM y RAM propiamente dicha, ROM de arranque, controladores para interfaces de E/S básicas). Como regla general, la placa base contiene conectores (ranuras) para conectar controladores adicionales, para los cuales generalmente se usan buses USB, PCI y PCI-Express.

UPC

Conjunto lógico del sistema (eng. Chipset): un conjunto de chips que conectan la CPU a la RAM y los controladores de los dispositivos periféricos. Como regla general, los conjuntos modernos de lógica del sistema se construyen sobre la base de dos VLSI: "puentes del norte" y "puentes del sur".

puente norte(English Northbridge), MCH (concentrador de controlador de memoria), controlador del sistema: proporciona conexión de la CPU a los nodos mediante buses de alto rendimiento: RAM, controlador de gráficos.

Se pueden usar FSB como Hyper-Transport y SCI para conectar la CPU al controlador del sistema.

Por lo general, la RAM está conectada al controlador del sistema. En este caso, contiene el controlador de memoria. Por lo tanto, el tipo de controlador del sistema utilizado generalmente depende de volumen máximo RAM, así como el ancho de banda del bus de memoria de una computadora personal. Pero la tendencia actual es construir el controlador de RAM directamente en la CPU (por ejemplo, el controlador de memoria está integrado en el procesador en AMD K8 e Intel Core i7), lo que simplifica las funciones del controlador del sistema y reduce la generación de calor.

PCI Express se utiliza como bus para conectar un controlador de gráficos en las placas base modernas. Se utilizaron buses previamente compartidos (ISA, VLB, PCI) y el bus AGP.

puente sur(eng. Southbridge), ICH (concentrador de controlador de E / S), controlador periférico: contiene controladores de dispositivos periféricos ( disco duro, Ethernet, audio), controladores de bus para conectar periféricos ( autobús pci, PCI-Express y USB), así como controladores de bus a los que se conectan dispositivos que no requieren un gran ancho de banda (LPC: se usa para conectar una ROM de arranque; el bus LPC también se usa para conectar un controlador múltiple (inglés Super I / O ) - microcircuitos, que brindan soporte para interfaces de transferencia de datos de bajo rendimiento "obsoletas": interfaces en serie y paralelas, controlador de teclado y mouse).

Como regla general, los puentes norte y sur se implementan como VLSI separados, pero también existen soluciones de un solo chip. Es el conjunto de la lógica del sistema que determina todo. características clave placa base y qué dispositivos se pueden conectar a ella.

Memoria de acceso aleatorio (también memoria de acceso aleatorio, RAM) - en informática - memoria, parte del sistema de memoria de la computadora, a la que el procesador puede acceder en una sola operación (saltar, mover, etc.). Está destinado al almacenamiento temporal de datos y comandos necesarios para que el procesador realice operaciones. La RAM transfiere datos al procesador directamente o a través de la memoria caché. Cada celda RAM tiene su propia dirección individual.

La memoria RAM puede fabricarse como una unidad separada o incluirse en el diseño de una computadora o microcontrolador de un solo chip.

ROM de arranque: almacena el software que se ejecuta inmediatamente después de encender el equipo. Por regla general, la ROM de arranque contiene el BIOS, pero también puede contener software que se ejecuta dentro de la EFI.

Características arquitectónicas de MP de 64 bits


5.1. Itanio 2 Intel

El procesador fue desarrollado desde cero y, en paralelo, en dos versiones a la vez: por ingenieros de Intel y Hewlett-Packard. Sin embargo, ambos chips se basaron naturalmente en las mismas ideas, ya que, sin embargo, se crearon en conjunto, y ambos deberían haberse convertido en los fundadores de la misma familia. La composición de cimentación fue, por supuesto, una ideología única que reemplazó a CISC - EPIC (Computación de instrucciones explícitamente paralelas) y una nueva arquitectura - IA-64, que incluye un conjunto de instrucciones, una descripción de registros y otras cosas similares. Sin embargo, la arquitectura es solo algo cambiante, basta recordar cómo los procesadores CISC como 8086 e i80486 difieren entre sí, ambos creados sobre la base de 80x86.
De manera similar, Merced y McKinley, Itanium e Itanium 2, ambos están construidos sobre la base de la misma ideología, pero en diferentes variedades de arquitectura. En un momento, la misma historia, en general, fue con el Pentium y el Pentium Pro. Sin embargo, aquellos tenían características comunes, y estos también los tienen, EPIC es "responsable" de esto. En primer lugar, estamos hablando de superescalaridad a gran escala en toda regla, es decir, la capacidad de ejecutar varias instrucciones simultáneamente. Para qué, por supuesto, el procesador contiene módulos ejecutivos: para operaciones con números enteros, con números de coma flotante, etc.
A diferencia del Pentium y sus sucesores, que descubren el código por sí mismos, los procesadores EPIC dependen en gran medida del compilador, que debe analizar el código para encontrar los lugares óptimos para paralelizar su ejecución y proporcionar al procesador esta información. Por lo tanto, se usa "explícitamente": el procesador no debe intentar comprender qué se puede ejecutar en paralelo y qué no, etc. - el compilador le explicará todo esto de antemano. Además, potentes mecanismos para la predicción de bifurcaciones, preejecución de fragmentos de código, precarga de datos y similares: la carga de las unidades de ejecución debe distribuirse de la manera más uniforme posible.
Se ha resuelto radicalmente el problema de los registros, cuyo número se ha incrementado varias veces: para Itanium, su número es 128 para fines generales (Fig. 1), 128 para almacenar números de coma flotante, 8 registros de transición y 64 responsables para ra -bot de mecanismos de predicción. Todo es obvio aquí: tal cantidad de registros, e incluso los de 64 bits, serán suficientes para almacenar cualquier número requerido para cualquier cantidad razonable de módulos ejecutivos. Itanium, el primer representante de la familia, tiene solo cinco registros de este tipo: dos enteros, dos para operaciones de memoria y cuatro para operaciones de coma flotante. La memoria física se direcciona con números de 44 bits, lo que en realidad limita su tamaño a "solo" 17,6 Terabytes, los bloques de coma flotante funcionan con números en representación de 82 bits.

Intel abandonó la idea de implementar un núcleo 80x86 de 32 bits en forma de hardware, por considerarlo un uso demasiado ineficiente del área de matriz. Entonces, para poder ejecutar el código Itanium 80x86, se creó un sistema de traducción que convierte el código 80x86 a IA-64 sobre la marcha.
Obviamente, en igualdad de condiciones, el rendimiento de dicha solución será inferior al de x86 puro funcionando a la misma frecuencia. Sin embargo, nadie esperaba una ejecución de alta velocidad de los programas x86 de Itanium: el soporte para esta arquitectura es más un costo de período de transición. Sin embargo, el hecho es que esta familia no es adecuada para resolver problemas de 32 bits. Sin embargo, casi nadie utilizará Itanium para tales fines en presencia de un software completo de 64 bits.
Además, el Itanium en sí era más o menos un proyecto piloto, al igual que el Pentium Pro, por lo que, en general, el procesador debería verse más como una demostración de las capacidades de la arquitectura. Un toque característico: el conjunto de chips para Itanium, 460GX, solo admite PC100 SDRAM como memoria, lo que dice algo sobre la velocidad con la que el procesador puede digerir datos. Por otro lado, sin embargo, hasta cierto punto no es una interfaz demasiado rápida con RAM compensado por un caché L3 muy grande: 2 o 4 MB, que se ejecuta a la frecuencia máxima del procesador (733 o 800 MHz) con un rendimiento de hasta 12,8 GB / s.
Otra tarea de Itanium fue resolver el problema con los compiladores; después de todo, los procesadores EPIC, como ya se mencionó, dependen mucho de ellos. A diferencia de los compiladores para procesadores 80x86, que casi no afectaron su rendimiento, aquí los compiladores son socios completos del procesador; después de todo, le brindan información que es extremadamente necesaria para el trabajo, y qué tan alta será la calidad, dependerá on: cuelgue la velocidad de ejecución de este programa por parte del procesador.
Itanium 2 ya es un producto mucho más interesante comercialmente. Creado por Hewlett-Packard, que tuvo en sus manos la creación de procesadores de 64 bits de la serie PA-RISC, el chip resultó ser mucho más avanzado. Con una cantidad ligeramente menor de L3 (1,5 o 3 MB) y una frecuencia ligeramente superior, 900 MHz o 1 GHz, proporciona un rendimiento entre una vez y media y dos veces más rápido en las mismas tareas que Itanium. Es, de hecho, el primer representante de la arquitectura IA-64.
Además, se planea una paralelización aún mayor de la manera más moderna: el procesador tendrá que cambiar a dos núcleos físicos, lo que casi duplicará el rendimiento a un precio bastante razonable; al menos, el resultado será mucho más barato. que si se intentara conseguir el mismo número de módulos ejecutivos, registros, etc. en un solo chip.

5.2. Athlon 64 AMD

En primer lugar, notamos que el procesador Athlon 64 es exactamente el procesador de escritorio de 64 bits que AMD planeó lanzar originalmente. Posteriormente, a la luz del lanzamiento de los procesadores Pentium 4 de alta velocidad, la aparición de un bus de 800 MHz y la tecnología Hyper-Threading en ellos, AMD decidió urgentemente apuntar el Opteron de un solo procesador al mercado de escritorio, dándole el nombre de Athlon. 64 efectos. Sin embargo, Athlon 64 FX, debido a su origen de servidor, resultó ser costoso y no muy utilizado. Es Athlon 64 el que realmente debería promover la arquitectura AMD64 para uso masivo.
A continuación se muestra la Tabla 1 con las especificaciones para los MP de 64 bits Athlon 64 3200+, Athlon 65 FX-51 y Athlon XP 3200+:

tabla 1

* Tenga en cuenta que la memoria en Athlon 64 y Athlon 64 FX está sincronizada en relación con el reloj central, por lo que los relojes de memoria reales en este caso son 129,4, 157,1 y 200 MHz.
De hecho, Athlon 64 se diferencia de su homólogo anterior Athlon 64 FX, además de la forma y las dimensiones de la carcasa, solo en el controlador de memoria. Aunque, a la vez, ambos procesadores están fabricados con los mismos cristales. El controlador de memoria en Athlon 64 es de un solo canal, y esta es tanto su debilidad como su ventaja en comparación con Athlon 64 FX. La desventaja del controlador de memoria de un solo canal en Athlon 64 es obvia: es un ancho de banda teórico más bajo.
Dado que Athlon 64 es capaz de trabajar con memoria DDR400, el ancho de banda máximo del controlador de memoria integrado en la CPU es de 3,2 GB por segundo. Esto es dos veces menos que la característica similar de Athlon 64 FX. La ventaja del controlador de memoria Athlon 64 es que, a diferencia del controlador Athlon 64 FX, admite módulos de memoria convencionales no registrados. Dichos módulos son más baratos en comparación con los módulos de registro, tienen tiempos más agresivos y funcionan más rápido, incluso con la misma configuración que los módulos de registro. Es decir, con un ancho de banda más bajo proporcionado por el controlador de memoria Athlon 64, el subsistema de memoria que lo usa tiene una latencia más baja, que mostraremos a continuación.
AMD Atlon 64 apariencia similar a Opteron y Athlon 64 FX.
Las diferencias se encuentran solo en el etiquetado y menos pines en el reverso, ya que los procesadores Athlon 64 están instalados en placas base con Socket 754 y no son compatibles con las placas Socket 940 diseñadas para las familias de CPU Athlon 64 FX y Opteron.
Además de las características enumeradas anteriormente, los nuevos procesadores Athlon 64 tienen una más. Estos procesadores son compatibles con la tecnología Cool'n'Quiet, que en realidad les llegó desde opciones móviles MP. De hecho, Cool'n'Quiet es una especie de tecnología de ahorro de energía PowerNow!, que se ha utilizado durante mucho tiempo en los MP móviles de AMD. Pero ahora esta tecnología finalmente ha llegado a los procesadores de escritorio de la compañía. La compatibilidad con Cool'n'Quiet es otra ventaja de Athlon 64 sobre Athlon 64 FX/Opteron, que aún no cuentan con dichas tecnologías. AMD ha estado prestando mucha atención a la reducción del nivel de disipación de calor de sus procesadores de escritorio durante mucho tiempo.
Debe decirse que la compañía ha sido durante mucho tiempo superior a Intel en esto: los modelos más antiguos de procesadores AMD emiten significativamente menos calor a carga máxima que los modelos antiguos Pentium 4. Además, los procesadores utilizan tecnologías que reducen la disipación de calor incluso con poca carga. Más familias MP
Las funciones de Athlon XP tenían la capacidad de cambiar al "modo de espera" (Halt/Stop Grant) al ejecutar el comando HALT, lo que resultó en una disminución de la temperatura del procesador cuando se cargó por debajo del 100%. Ahora, sin embargo, AMD ha ido aún más lejos. Los nuevos procesadores Athlon 64 cuentan con un esquema de reducción de calor aún más inteligente.
Además de los estados Halt/Stop Grant, el Athlon 64 puede restablecer su velocidad de reloj y voltaje para reducir aún más la disipación de calor. Cuando se utiliza esta tecnología, la velocidad del reloj de la CPU está controlada por el controlador del procesador, que la restablece o aumenta según los datos de su carga. De hecho, si el procesador hace frente por completo al trabajo que se le asigna y su carga es mucho menor al 100%, entonces es posible reducir su frecuencia de reloj sin perjuicio del funcionamiento del sistema en su conjunto: esto no afectará la operación. del sistema de ninguna manera. Por ejemplo, cuando está inactivo, trabajando en aplicaciones de oficina, viendo videos, desfragmentando discos y tareas similares, la potencia del procesador no se utiliza por completo. Es en tales casos que el controlador del procesador cambia el Athlon 64 a una frecuencia de reloj más baja. Cuando se requiere que el procesador brinde un rendimiento completo, por ejemplo, en juegos, al resolver problemas computacionales, en tareas de codificación de datos, etc., la frecuencia del procesador aumenta a la nominal. Así es exactamente como funciona la tecnología Cool'n'Quiet.
En la práctica, se ve así. En condiciones normales, con una carga mínima de MP, el controlador del procesador restablece la frecuencia del Athlon 64 3200+ del estándar de 2 GHz a 800 MHz. El voltaje del procesador se reduce entonces a 1,3 V. Como puede ver, la reducción en la frecuencia del reloj se obtiene al reducir el multiplicador del procesador a 4x. Esto, por cierto, también determina el hecho de que los procesadores Athlon 64 3200+ se suministren con un multiplicador no fijo. En este modo, el procesador continúa funcionando hasta que su carga supera el 70-80%. En particular, pudimos ejecutar simultáneamente la desfragmentación del disco, reproducir archivos mp3 (archivos de audio) y ver videos MPEG-4 (archivos de video), mientras el procesador continuaba funcionando a una frecuencia de 800 MHz.
Cuando la carga del procesador Athlon 64 a 800 MHz supera el límite permitido, el controlador cambia el MP al siguiente estado, en el que la frecuencia del Athlon 64 3200+ es de 1,8 GHz y el voltaje de alimentación es de 1,4 V. Esto se logra nuevamente al reducir el multiplicador, esta vez a 9x. Y solo si en este caso la carga del procesador vuelve a ser excesivamente alta, el controlador cambia el MP al modo normal: la frecuencia es de 2 GHz, la tensión de alimentación es de 1,5 V.
Tenga en cuenta que en los modos de baja potencia y baja frecuencia, la disipación de calor del procesador Athlon 64 3200+ cae bruscamente. A modo de comparación, presentamos la Tabla 4 con la disipación de calor de este procesador en los modos principales.

Por lo tanto, el uso de la tecnología Cool'n'Quiet le permite reducir significativamente la temperatura del procesador no solo durante los tiempos de inactividad, sino también durante una serie de tareas que no requieren el máximo rendimiento del MP. Lo importante es que el rendimiento del MP en tareas que demandan recursos del procesador no disminuya en absoluto. Como resultado, cuando se utilizan sistemas de enfriamiento con ventiladores de velocidad variable, el uso de la tecnología Cool'n'Quiet puede reducir significativamente el nivel de ruido.