¿Cuál es el rol de ISA (Instruction Set Architecture) en la pila de abstracción de archivos comp? [cerrado]

1

Tengo experiencia en programación, y recientemente comencé a tomar el curso de arquitectura de computadoras. La mayoría de las conferencias que veo utilizan algún tipo de estratificación como se describe en el siguiente diagrama que explica lo que se tratará en el curso.

Lapreguntaaquíessielcompilador(softwaredelsistema)seencargadeconvertirelcódigodealtonivel/ensambladoenuncódigodemáquinaquepuedacomprenderelprocesador.Elsistemaoperativoejecutaestecódigoaladministrarlosrecursos,comolaprogramacióndelprocesador,laadministracióndelamemoria,etc.,asíque,¿cuáleselroldelacapaISAaquí?

  1. ¿Cuáleslainterfazdeentradaaestacapa(códigodemáquinadelsistemaoperativo)?
  2. ¿Cuáleslainterfazdesalidaparaestacapa?

Imagencortesía: enlace

    
pregunta Vivek Maran

3 respuestas

4

El ISA es el nivel al que se dirige un compilador (aunque las optimizaciones son sensibles a la microarquitectura, particularmente en términos de programación óptima). La ISA es una definición simplificada pero suficiente de la interfaz de hardware.

La ISA describe el comportamiento abstracto del motor de cálculo subyacente y cuáles son las operaciones fundamentales que pueden codificarse en las instrucciones de código de máquina. Definirá qué tipo de registros tiene el procesador, cómo interactúan con la memoria y qué operaciones aritméticas son posibles.

El ISA también puede influir en la facilidad con la que se optimiza la implementación (por ejemplo, tuberías largas o problemas generales) y puede implementar funciones destinadas a lenguajes específicos de alto nivel (o simplificar la tarea de un compilador).

Junto con ISA, habrá garantías arquitectónicas de ordenamiento, excepciones, control de potencia y controles de acceso que también definen la arquitectura del procesador. Estos no son relevantes para un compilador (y con frecuencia requieren de acceso intrínseco), pero son críticos para un sistema operativo (y, a veces, para aplicaciones).

Su diagrama es una abstracción engañosa, aunque cada elemento es distinto, no se interconectan entre sí de la misma manera que lo haría una pila de software. La microarquitectura está, por ejemplo, influenciada por el tamaño de la característica, tanto en términos de tiempo como de costos, la vista a nivel de puerta es lo que piensan los diseñadores cuando trabajan en microarcos).

Para dar un ejemplo de alto nivel de lo que es un ISA, considere cómo se puede dividir una instrucción de 32 bits de longitud fija.

4 bits para el tipo de instrucción (Cargar / Almacenar, ALU, etc.) 4 bits para operación de instrucción (Add / Sub, o modo de direccionamiento) 4 bits para el operando 1 registro 4 bits para registro de operando 2 4 bits para registro de destino 4 bits para control de flujo 4 bits para entrada constante (por ejemplo, cambio de operandos) 4 bits más específicos de la instrucción

Le gustaría asignar estos a algunos superconjuntos de las funciones que necesita para una máquina de turing eficiente. Por lo tanto, la ISA describe con precisión lo que representan el código de máquina y el código de ensamblaje (en una relación más o menos 1: 1). Algunas instrucciones (siendo el ejemplo obvio NOP) se pueden lograr usando un código de operación personalizado o una instrucción de tipo A = A | A si la simetría lo permite.

En referencia a la fuente del diagrama, en arquitectura de computadora, la microarquitectura generalmente no se usaría para referirse a la RAM, ROM y temporizadores en un microcontrolador. Se referiría a cómo se implementa la división de enteros, cuántas instrucciones se pueden ejecutar por ciclo, cuántas cargas pueden ser sobresalientes a la vez, el tipo de detalle que es difícil de observar en el software.

    
respondido por el Sean Houlihane
2

El gráfico no tiene nada que ver con entradas y salidas, por lo que la pregunta, tal como está redactada, no tiene sentido.

Cualquier sistema dado puede describirse con diferentes niveles de detalle, y de eso se trata el gráfico. Cada capa describe el mismo sistema , pero utilizando diferentes términos de referencia.

Por ejemplo, podría describir un servidor web en el nivel más alto de abstracción como una computadora que acepta solicitudes HTTP y proporciona los datos solicitados, donde la "solicitud HTTP" se define en un documento de estándares particular como una conexión TCP / IP que lleva datos en un formato particular (el siguiente nivel de detalle).

El mismo sistema podría describirse en términos de los campos electromagnéticos que recibe y transmite, junto con la forma en que las cargas eléctricas se mueven dentro de los patrones de metal y semiconductores dentro de él. Este sería el nivel "físico" de abstracción. Proporciona muchos detalles, pero en realidad es demasiado detalle para ser útil en términos de entender el comportamiento de alto nivel.

En los sistemas informáticos, los niveles más altos de abstracción se definen en el software. En cierto sentido, cada capa de abstracción "se ejecuta" en la máquina virtual definida por el siguiente nivel inferior. El ISA es el nivel en el que se realiza la transición del software al hardware: el ISA define la interfaz hardware-software. En este nivel, la "máquina virtual" es muy general, porque en la mayoría de los casos, no queremos definir diferentes máquinas de hardware para diferentes aplicaciones.

En algunos casos, el ISA en sí mismo es una abstracción que se ejecuta en una máquina de hardware de nivel inferior. Hay máquinas microcodificadas que pueden cargar diferentes versiones de microcódigo para impulsar diferentes ISA. El procesador de microcódigo está hecho de registros físicos y puertas.

Intento leer entre las líneas de tu pregunta y responder una pregunta que realmente no hiciste. ¿Algo de esto ayuda?

    
respondido por el Dave Tweed
0

Creo que el diagrama se explica por sí mismo. En el contexto y la partición tal como se presenta en el artículo original de theembeddedguy.com y el paradigma "entrada-salida", la entrada para la capa representada como "ISA" es el código binario generado en el "Código de nivel de máquina". La capa ISA obtiene el flujo binario y lo analiza de acuerdo con la arquitectura interna de un procesador. En la arquitectura particular de x86, traduce instrucciones complejas (CISC) en formatos de tipo RISC más simples de acuerdo con la microarquitectura del procesador interno. Esta es la "salida".

El modelo completo de niveles múltiples es solo una abstracción y no es particularmente útil en el mundo real. Los límites pueden ser borrosos, se pueden introducir varias capas de abstracción más, en las implementaciones se pueden combinar algunas capas, etc. El artículo completo de theembeddedguy.com es una combinación ecléctica de términos, que probablemente explique la confusión.

    
respondido por el Ale..chenski
Comentarios Recientes

Los problemas y las alternativas sugeridas incluyen: Me preocupa que a menudo tanto la instrucción de arranque como la de ejecución se realicen como ejecuciones. Esto inhibe la recolección del mismo acumulador más de una vez, lo que lleva a ejemplos como gen.next: ejecución indirecta más retraso distinto de cero + ... Ejecutando `git update --init --allow HEAD` o overkill (to hacer dos historias en ejecución en una reconstrucción) de comp :: initialize-> Init). []); inseguro {shift;! StackTooLarge; void... Lees verder