b'\n_START_ARTICLE_\nConjunto de instrucciones\n_START_SECTION_\nImplementaci\xc3\xb3n del conjunto de instrucciones\n_START_PARAGRAPH_\nCualquier conjunto de instrucciones se puede implementar de varias maneras. Todas las maneras de implementar un conjunto de instrucciones dan el mismo modelo programado, y todas pueden hacer funcionar los mismos ejecutables binarios. Las varias maneras de implementar un conjunto de instrucciones dan diversas compensaciones entre el coste, el funcionamiento, el consumo de energ\xc3\xada, el tama\xc3\xb1o, etc._NEWLINE_Al dise\xc3\xb1ar microarquitecturas, los ingenieros usaron bloques de circuitos electr\xc3\xb3nicos \xe2\x80\x9cduramente-conectados\xe2\x80\x9d (dise\xc3\xb1ado a menudo por separado) por ejemplo, los multiplexores, los contadores, los registros, las ALU, etc\xc3\xa9tera. Un cierto tipo del lenguaje de transferencia de registros es a menudo usado para describir la codificaci\xc3\xb3n y la secuencia de cada instrucci\xc3\xb3n de ISA usando esta microarquitectura f\xc3\xadsica._NEWLINE_Hay tambi\xc3\xa9n algunos nuevos dise\xc3\xb1os de CPU que compilan el conjunto de instrucci\xc3\xb3n a una RAM escribible o FLASH dentro de la CPU (tal como el procesador Recursiv y el Imsys Cjip), o FPGA (computaci\xc3\xb3n reconfigurable). Western Digital MCP-1600 es un ejemplo antiguo, usando una ROM dedicada, separada del microc\xc3\xb3digo._NEWLINE_ISA se puede tambi\xc3\xa9n emular en software por un int\xc3\xa9rprete. Naturalmente, debido a la interpretaci\xc3\xb3n de \xe2\x80\x9coverhead\xe2\x80\x9d, es m\xc3\xa1s lento que ejecutar programas directamente sobre el hardware emulado. Hoy, es pr\xc3\xa1ctica para los vendedores de nuevos ISA o microarquitecturas poner emuladores del software a disposici\xc3\xb3n de los desarrolladores de programas inform\xc3\xa1ticos antes de que la implementaci\xc3\xb3n del hardware est\xc3\xa9 lista._NEWLINE_Los detalles de la implementaci\xc3\xb3n tienen una influencia fuerte en las instrucciones particulares seleccionadas para el conjunto de instrucci\xc3\xb3n. Por ejemplo, muchas implementaciones de la instrucci\xc3\xb3n \xe2\x80\x9cpipline\xe2\x80\x9d permiten solamente una carga de memoria (load) o almac\xc3\xa9n en memoria (store) por instrucci\xc3\xb3n, llevando a carga-almacena arquitectura (RISC). Por otro ejemplo, algunas maneras de implementar la instrucci\xc3\xb3n \xe2\x80\x9cpipline\xe2\x80\x9d llevaron a una ranura de retardo._NEWLINE_La demanda de procesamiento de se\xc3\xb1al digital de alta velocidad han empujado en el sentido contrario, forzando la implementaci\xc3\xb3n de instrucci\xc3\xb3n de manera particular. Por ejemplo, para realizar los filtros digitales es bastante insuficiente, la instrucci\xc3\xb3n del MAC en un procesador t\xc3\xadpico de se\xc3\xb1al digital (DSP) se debe implementar usando una arquitectura de Harvard que pueda traer una instrucci\xc3\xb3n y dos palabras de datos simult\xc3\xa1neamente, y requiere un solo ciclo.\n_START_SECTION_\nDensidad del c\xc3\xb3digo\n_START_PARAGRAPH_\nEn computadoras antiguas, la memoria del programa era costosa, as\xc3\xad que minimizar el tama\xc3\xb1o de un programa para asegurar que va a caber en la memoria limitada era a menudo central. As\xc3\xad el tama\xc3\xb1o combinado de todas las instrucciones necesit\xc3\xb3 realizar una tarea particular, la densidad del c\xc3\xb3digo, era una caracter\xc3\xadstica importante de cualquier sistema de instrucci\xc3\xb3n. Las computadoras con alta densidad del c\xc3\xb3digo tambi\xc3\xa9n ten\xc3\xadan a menudo instrucciones complejas para la entrada del procedimiento, los retornos parametrizados, los lazos, etc. Sin embargo, "instrucciones CISC" combinan simplemente una operaci\xc3\xb3n b\xc3\xa1sica de la ALU, tal como "add", con el acceso de uno o m\xc3\xa1s operandos en memoria (usando modos de direcci\xc3\xb3n tales como directo, indirecto, indexado). Ciertas arquitecturas pueden permitir dos o tres operandos (incluido el resultado) directamente en memoria o pueden permitir realizar funciones tales como el incremento autom\xc3\xa1tico del puntero._NEWLINE_RISC, fueron los primeros implementados con profundidad en el per\xc3\xadodo  de r\xc3\xa1pido crecimiento de las memorias de subsistemas, se reduce el c\xc3\xb3digo con el fin de simplificar el circuito de aplicaci\xc3\xb3n y con ello tratar de aumentar el rendimiento a trav\xc3\xa9s de las frecuencias de reloj m\xc3\xa1s elevadas y el uso de m\xc3\xa1s registros. Las instrucciones RISC suelen realizar s\xc3\xb3lo una operaci\xc3\xb3n, como una "suma" de registros o una "carga" de una posici\xc3\xb3n de memoria en un registro, tambi\xc3\xa9n suelen utilizar una longitud de instrucciones fijas, mientras que un conjunto de instrucciones t\xc3\xadpicas CISC tiene instrucciones muchos m\xc3\xa1s cortas que esta longitud fija. Las instrucciones de longitud fija son menos complicadas de manejar que las instrucciones de ancho variable, por varias razones (por ejemplo: no tener que comprobar si una instrucci\xc3\xb3n se extiende a ambos lados de una l\xc3\xadnea de cach\xc3\xa9 o el l\xc3\xadmite de memoria virtual de la p\xc3\xa1gina), y por lo tanto algo m\xc3\xa1s f\xc3\xa1cil de optimizar la velocidad . Sin embargo, como los equipos RISC normalmente requieren m\xc3\xa1s y m\xc3\xa1s para implementar las instrucciones que ejecutan una determinada tarea, hacen menos \xc3\xb3ptimo el uso del ancho de banda y de la memoria cach\xc3\xa9._NEWLINE_Las computadoras m\xc3\xadnimas del conjunto de instrucciones (MISC) son una forma de m\xc3\xa1quina apilada, donde hay pocas instrucciones separadas (16-64), para poder caber instrucciones m\xc3\xbaltiples en una sola palabra de m\xc3\xa1quina. Estos tipos de n\xc3\xbacleos llevan a menudo poco silicio para implementarse, as\xc3\xad que pueden ser observadas f\xc3\xa1cilmente en un FPGA o en una forma multin\xc3\xbacleo. La densidad del c\xc3\xb3digo es similar al RISC; la densidad creciente de la instrucci\xc3\xb3n es compensada requiriendo m\xc3\xa1s de las instrucciones primitivas de hacer una tarea.\n_START_SECTION_\nN\xc3\xbamero de operando\n_START_PARAGRAPH_\nEl conjunto de instrucciones puede ser clasificado por el n\xc3\xbamero m\xc3\xa1ximo de operandos expl\xc3\xadcitamente especificados en las instrucciones (en los ejemplos que siguen, a, b y c se refieren a celdas de memoria, mientras que reg1 y sucesivos se refieren a los registros de la m\xc3\xa1quina)._NEWLINE_0-operando, tambi\xc3\xa9n llamada m\xc3\xa1quina de pila: todas las operaciones aritm\xc3\xa9ticas se ejecutan en la parte superior de una o dos posiciones de la pila, push y pop son las instrucciones utilizadas para acceder a la memoria: push a, push b, add, pop c._NEWLINE_1-operando (m\xc3\xa1quinas de una direcci\xc3\xb3n), tambi\xc3\xa9n llamadas m\xc3\xa1quinas de acumulador, incluida en la mayor\xc3\xada de las primeras computadoras y muchos microcontroladores peque\xc3\xb1os: la mayor\xc3\xada de instrucciones especifican un operando expl\xc3\xadcito a la derecha (un registro, una posici\xc3\xb3n de memoria, o una constante) y un operando a la izquierda: load a, add b, store c._NEWLINE_2-operando, la mayor\xc3\xada de las m\xc3\xa1quinas CISC y RISC entran en esta categor\xc3\xada:_NEWLINE__NEWLINE_CISC \xe2\x80\x93 load a, reg1, add reg1, b; store reg1, c_NEWLINE__NEWLINE_RISC \xe2\x80\x93 cargas que requieren la memoria expl\xc3\xadcita, las instrucciones ser\xc3\xadan: load a,reg1; load b,reg2; add reg1,reg2; store reg2,c_NEWLINE_3-operando, permite una mejor reutilizaci\xc3\xb3n de los datos: _NEWLINE_CISC - bien una sola instrucci\xc3\xb3n: add a, b, c, o m\xc3\xa1s generalmente: move a,reg1; add reg1,b,c como la mayor\xc3\xada de las m\xc3\xa1quinas se limitan a dos operandos de memoria._NEWLINE_RISC - Debido a la gran cantidad de bits necesarios para codificar los tres registros, este esquema no suele estar disponible en los procesadores RISC con peque\xc3\xb1as instrucciones de 16 bits:  load a,reg1; load b,reg2; add reg1+reg2->reg3; store reg3,c._NEWLINE_M\xc3\xa1s operandos, algunas m\xc3\xa1quinas CISC permiten una variedad de modos de direccionamiento que permiten m\xc3\xa1s de 3 operandos (registros o accesos a memoria), como el VAX "POLY", instrucci\xc3\xb3n de evaluaci\xc3\xb3n de polinomio.\n_START_SECTION_\nGesti\xc3\xb3n de interrupciones\n_START_PARAGRAPH_\nSe usan para llamar a las rutinas de servicio de interrupci\xc3\xb3n y esto se puede hacer por hardware o bien por software. Necesita una instrucci\xc3\xb3n similar a return para retornar al contexto anterior pero restableciendo el estado de la m\xc3\xa1quina, para no afectar a la aplicaci\xc3\xb3n a la cual se interrumpi\xc3\xb3 (iret).'