Técnicamente, no lo hacemos. La pragmática dicta lo contrario.
Tenemos instrucciones en el conjunto de instrucciones porque
- En algún momento en el pasado, algún ingeniero tenía la opinión de que podría ser útil. En los “viejos” días, a menudo esto era envidia del conjunto de instrucciones: “Bueno, la computadora X tiene esa instrucción, por lo que nuestra nueva computadora Y también debería tener algo así”. Este tipo de pensamiento fue generalizado en los primeros días cuando nadie midió el rendimiento con cuidado, o lo cambió por el costo.
- En un momento más reciente en el pasado, un equipo de análisis de rendimiento descubrió que ciertos algoritmos, considerados clave por el personal de marketing, funcionarían más rápido si existiera alguna instrucción especial.
De hecho, puede sobrevivir con solo una instrucción: restar A de B, saltar a C si es negativo.
Puede implementar todo lo demás usando solo esto. Entonces, cualquier instrucción real adicional sería simplemente salsa.
- ¿Qué compañía es mejor TCS o Headstrong para un muy buen ingeniero informático con interés en el desarrollo en Java y con buenas habilidades de codificación?
- ¿Cuáles son algunos proyectos de hardware o IOT que un estudiante de ciencias de la computación btech de último año puede emprender como proyecto de último año?
- ¿Puedo entrar en astronomía después de hacer b.tec en ingeniería informática?
- En términos de ingeniería informática, ¿está bien asistir a una universidad de bajo rango para mi licenciatura si planeo tener una maestría y un doctorado de una universidad de alto rango como MIT en el futuro?
- ¿Cuáles son las mejores universidades para la ingeniería informática en India?
Para máquinas más realistas, es difícil evitar LOAD, STORE, CMP, ADD, SUB y AND, condicional. Es fácil “desplazarse a la izquierda 1” agregando un valor a sí mismo; “Desplazar a la izquierda N” haciendo eso N veces.
Desplazar a la derecha es más difícil, pero siempre puede dividir un valor en fragmentos de M bits (Y con 2 ^ M-1) y luego buscar ese valor de M bits en una tabla que contiene la versión desplazada a la derecha. Debe hacer esto para cada uno de los fragmentos de M bits que forman el operando del cambio, y volver a ensamblar los resultados (¡haciendo el desplazamiento a la izquierda!). Torpe, sí, factible sí.
Por lo tanto, en realidad no necesitamos estas instrucciones para que las computadoras funcionen. Pero puede ver que tenerlos puede producir respuestas más rápidas cuando las necesitamos.
¿Cuándo podríamos necesitar estos? Bueno, cualquier circunstancia que implique multiplicar o dividir valores, en una máquina que no tiene instrucciones de multiplicar y dividir sofisticadas ya integradas. Puede codificar la multiplicación y la división como un algoritmo que se desplaza hacia la izquierda o hacia la derecha, utilizando algoritmos de multiplicación y división que aprendió en el 4to grado, adaptados de decimal a binario. (Detalles dejados al lector).
Entonces, estas (o cualquier otra instrucción adicional) están ahí para hacer que los programas de ensamblaje sean realmente más pequeños y más eficientes (o para instrucciones mucho más antiguas como Agregar Decimal, imaginado por ingenieros como más pequeño).
Como cuestión práctica, el conjunto de instrucciones que forman el núcleo de la mayoría de las máquinas RISC son las que compran gran parte del rendimiento. La mayoría del resto compra rendimiento adicional en circunstancias especiales, generalmente a un costo bastante alto en transistores adicionales. Pero en estos días, los transistores son baratos. Espere que los proveedores de CPU sigan inventando nuevas instrucciones útiles, a veces.