Saltar ao contido

Arquitectura de conxunto de instrucións

Na Galipedia, a Wikipedia en galego.
Arquitectura de conxunto de instrucións
 Subclase de
 Parte de
 Aspecto de
Códigos e identificadores
Freebase/m/0cvbt Editar o valor en Wikidata
OpenAlexC202491316 Editar o valor en Wikidata
Wikidata C:Commons
Diagrama da arquitectura do conxunto de instrucións RISC-V, que pode ter implementacións tanto propietarias como de código aberto.

En enxeñaría informática, a arquitectura de conxunto de instrucións (Instruction Set Architecture ou ISA en inglés), é un modelo abstracto que define en termos xerais como o software controla a unidade central de procesamento (CPU) dun ordenador ou familia de ordenadores.[1] Un dispositivo ou programa que executa as instrucións descritas por esa ISA, como unha unidade central de procesamento (CPU), denomínase implementación desa ISA.[2]

En xeral, unha ISA define as instrucións, os tipos de datos, os rexistros e a interface de programación para xestionar a memoria principal, como os modos de enderezo, a memoria virtual e os mecanismos de consistencia da memoria. A ISA tamén inclúe o modelo de entrada/saída da interface programable.[3]

Unha ISA especifica o comportamento do código máquina que se executa nas súas implementacións independentemente das súas implementacións, garantindo a compatibilidade binaria. Isto permite varias implementacións dunha ISA que difiren en características como o rendemento, o tamaño físico e o custo, pero que son capaces de executar o mesmo código máquina. Así, unha máquina con menor rendemento e custos máis baixos pode ser substituída por unha con maior rendemento e custos máis altos, sen necesidade de substituír o software. Ademais, a ISA permite a evolución das microarquitecturas das súas implementacións, para garantir a compatibilidade con versións anteriores; é dicir, unha implementación máis nova e de maior rendemento dunha ISA pode executar software que se executa en xeracións anteriores de implementacións.[3][4][5]

Se un sistema operativo (SO) mantén unha interface binaria de aplicación (Application binary interface ou ABI, en inglés) estándar e compatible para unha ISA particular, o código máquina executarase en futuras implementacións desa ISA e sistema operativo. Non obstante, se unha ISA admite a execución de varios sistemas operativos, isto non garante que o código máquina para un sistema operativo se execute noutro SO a menos que o primeiro admita a execución de código máquina creado para o segundo.[6]

Unha ISA pódese ampliar engadindo instrucións ou outras funcionalidades, ou engadindo compatibilidade con enderezos e valores de datos máis grandes; unha implementación de ISA ampliada aínda poderá executar código máquina para versións non ampliadas da ISA. Pola contra, o código máquina que usa tales extensións só se executará en implementacións que as admitan.[5]

A compatibilidade binaria que proporcionan converte as ISA nunha das abstraccións máis fundamentais da informática.[3][6]

Visión xeral

[editar | editar a fonte]

Unha arquitectura de conxunto de instrucións distínguese dunha microarquitectura, que é o conxunto de técnicas de deseño de procesadores empregadas nun procesador en particular para implementar o conxunto de instrucións. Os procesadores con diferentes microarquitecturas poden compartir un conxunto de instrucións común. Por exemplo, o Intel Pentium e o AMD Athlon implementan versións case idénticas do conxunto de instrucións x86, pero teñen deseños internos radicalmente diferentes.[7]

O concepto de arquitectura, distinta do deseño dunha máquina específica, foi desenvolvido por Fred Brooks en IBM durante a fase de deseño de System/360:

Antes de NPL [System/360], os deseñadores de ordenadores da empresa tiñan liberdade para cumprir os obxectivos de custo non só seleccionando tecnoloxías, senón tamén creando refinamentos funcionais e arquitectónicos. O obxectivo de compatibilidade SPREAD, pola contra, postulou unha única arquitectura para unha serie de cinco procesadores que abarcan unha ampla gama de custos e rendementos. Ningún dos cinco equipos de deseño de enxeñería podía contar con ser capaz de introducir axustes nas especificacións arquitectónicas como forma de aliviar as dificultades para acadar os obxectivos de custo e rendemento.[8]:p.137

Algunhas máquinas virtuais que admiten bytecode como ISA, como Smalltalk, a máquina virtual Java e o Common Language Runtime de Microsoft, implementan isto traducindo o bytecode das rutas de código usadas habitualmente a código máquina nativo.[9] Ademais, estas máquinas virtuais executan rutas de código usadas con menos frecuencia por interpretación. Transmeta implementou o conxunto de instrucións x86 sobre procesadores de palabras de instrución moi longas (VLIW) deste xeito.[10]

Clasificación das ISA

[editar | editar a fonte]

Unha ISA pódese clasificar de diferentes xeitos. Unha clasificación común é por complexidade arquitectónica. Un ordenador con conxunto de instrucións complexo (CISC) ten moitas instrucións especializadas, algunhas das cales poden usarse raramente en programas prácticos. Un ordenador con conxunto de instrucións reducido (RISC) simplifica o procesador ao implementar eficientemente só as instrucións que se usan con frecuencia nos programas, mentres que as operacións menos comúns se implementan como subrutinas, e o tempo de execución adicional do procesador resultante compénsase polo uso pouco frecuente.[11]

Outros tipos inclúen as arquitecturas VLIW[12] e as arquitecturas estreitamente relacionadas de palabras de instrución longas (LIW)[13] e de computación de instrucións explicitamente paralelas (EPIC).[12] Estas arquitecturas buscan aproveitar o paralelismo a nivel de instrución con menos hardware que RISC e CISC facendo que o compilador sexa responsable da emisión e programación das instrucións.[14]

Investigáronse arquitecturas con aínda menos complexidade, como o computador con conxunto mínimo de instrucións (MISC) e o computador cun conxunto de instrucións único (OISC). Trátase de tipos teoricamente importantes, pero non se comercializaron.[15][16]

  1. "GLOSSARY: Instruction Set Architecture (ISA)". arm.com (en inglés). Arquivado dende o orixinal o 2023-11-11. Consultado o 2024-02-03.
  2. Takeshi, Erick (2024-05-29). "Instruction Set Architecture, a linguagem das máquinas". dev.to (en portugués). Consultado o 2026-02-03.
  3. 1 2 3 Trovão, Hugo (2005). "Instruction Set Architecture's". Departamento de Engenharia Informática da Universidade de Coimbra (en portugués). Consultado o 2026-02-03.
  4. "Nível ISA" (PDF) (en portugués). Consultado o 2026-01-03.
  5. 1 2 Moshovos, A. (2005). "Instruction Set Architecture and its Implications" (PDF). Universidade de Toronto (en inglés). Consultado o 2026-01-03.
  6. 1 2 Negromonte, Emanuel (2023-07-21). "O que é Interface Binária de Aplicação (ABI)?". SempreUpdate (en portugués). Consultado o 2026-01-03.
  7. Rocha, Ricardo. "Computer Architecture 2019/2020" (PDF). Universidade do Porto (en portugués). Consultado o 2026-01-04.
  8. Pugh, Emerson W.; Johnson, Lyle R.; Palmer, John H. (1991). IBM's 360 and Early 370 Systems (en inglés). MIT Press. ISBN 0-262-16123-0.
  9. "The Java Virtual Machine Instruction Set". Oracle (en inglés). Consultado o 2026-01-04.
  10. "The Technology Behind Crusoe™ Processors" (PDF). Transmeta Corporation (en inglés). 2000. Consultado o 2026-01-04.
  11. Chen, Crystal; Novick, Greg; Shimano, Kirk (2006-12-16). "RISC Architecture: RISC vs. CISC". cs.stanford.edu (en inglés). Arquivado dende o orixinal o 2015-02-21. Consultado o 2015-02-21.
  12. 1 2 P. Silva, Gabriel. "Arquiteturas VLIW" (PDF) (en portugués). Universidade Federal do Rio de Janeiro. Consultado o 2026-03-14.
  13. Sophie Wilson. "The FirePath™ LIW Processor and ISA Extensions for Broadband" (PDF) (en inglés). Broadcom. Consultado o 2026-03-14.
  14. Schlansker, Michael S.; Rau, B. Ramakrishna (febreiro de 2000). "EPIC: Explicitly Parallel Instruction Computing". Computer (en inglés) 33 (2): 37–45. doi:10.1109/2.820037.
  15. Shaout, Adnan; Eldos, Taisir (Summer 2003). "On the Classification of Computer Architecture". International Journal of Science and Technology (en inglés) 14: 3. Consultado o 2023-03-02.
  16. Gilreath, William F.; Laplante, Phillip A. (2012-12-06). Computer Architecture: A Minimalist Perspective (en inglés). Springer Science+Business Media. ISBN 978-1-4615-0237-1.

Véxase tamén

[editar | editar a fonte]

Outros artigos

[editar | editar a fonte]

Ligazóns externas

[editar | editar a fonte]

Este artigo tan só é un bosquexo
 Este artigo sobre informática é, polo de agora, só un bosquexo. Traballa nel para axudar a contribuír a que a Galipedia mellore e medre.
 Existen igualmente outros artigos relacionados con este tema nos que tamén podes contribuír.