Unicore es una arquitectura de conjunto de instrucciones para computadoras diseñada por el Centro de Investigación y Desarrollo de Microprocesadores (MPRC) de la Universidad de Pekín en la República Popular China . La computadora construida sobre esta arquitectura se llama Unity-863 . [ 1 ] La CPU está integrada en un SoC completamente funcional para crear un sistema similar a una PC. [ 2 ]
El procesador es muy similar a la arquitectura ARM , pero utiliza un conjunto de instrucciones diferente. [ 3 ]
Fue compatible con el kernel de Linux a partir de la versión 2.6.39; [ 4 ] la compatibilidad se eliminó en la versión 5.9 del kernel de Linux ya que, según un desarrollador, "nadie parecía mantenerlo y el código se estaba quedando atrás con respecto al resto del código del kernel y los requisitos del compilador". [ 5 ]
Conjunto de instrucciones
Las instrucciones son casi idénticas a los formatos ARM estándar, excepto que se ha eliminado la ejecución condicional y se han reasignado los bits para expandir todos los especificadores de registro a 5 bits. [ 6 ] [ 7 ] Asimismo, el formato inmediato es de 9 bits rotados en una cantidad de 5 bits (en lugar de 8 bits rotados en 4), los tamaños de desplazamiento de carga/almacenamiento son de 14 bits para byte/palabra y de 10 bits para byte con signo o media palabra. Los movimientos condicionales se proporcionan codificando la condición en el segundo campo de registro fuente (no utilizado por ARM) Rn para las instrucciones MOV y MVN.
El significado de los distintos bits de indicador (por ejemplo, S=1 habilita la configuración de los códigos de condición) es idéntico al del conjunto de instrucciones ARM. La instrucción de carga/almacenamiento múltiple solo puede acceder a la mitad del conjunto de registros, dependiendo del bit H. Si H=0, los 16 bits indican R0–R15; si H=1, R16–R31.
Referencias
- ↑ "Introducción al MPRC" . Centro de Investigación y Desarrollo de Microprocesadores, Universidad de Pekín.
- ↑ Xu Cheng; Xiao Yin Wang; Junlin Lu; Jiangfang Yi; Dong Tong; Xuetao Guan; Feng Liu; Xianhua Liu; Chun Yang; Yi Feng (marzo de 2010), "Progreso de la investigación de CPU UniCore y SoC PKUnity" (PDF) , Journal of Computer Science and Technology , 25 (2): 200– 213, doi : 10.1007/s11390-010-9317-1 , S2CID 7083916 , consultado el 11 de julio de 2012
- ↑ Bergmann, Arnd (2012-07-09). "Re: [ PATCH 00/36 ] Puerto del kernel de Linux AArch64" . linux-kernel (Lista de correo) . Recuperado el 2012-07-11 .
Otro ejemplo interesante es unicore32, que en realidad comparte más código con arch/arm que el propuesto arch/aarch64. Creo que la base de código de unicore32 se beneficiaría de ser fusionada de nuevo en arch/arm como un tercer conjunto de instrucciones, pero el costo de mantenimiento adicional para todos los que trabajan en ARM hace que eso no sea realista.
- ↑ "Ventana de fusión cerrada - 2.6.39-rc1 fuera" . Linus Torvalds .
- ↑ "eliminar la compatibilidad con unicore32" . Mike Rapoport.
- ↑ Hsu-Hung Chiang; Huang-Jia Cheng; Yuan-Shin Hwan (25 de febrero de 2012), "Duplicando el número de registros en procesadores ARM" (PDF) , 16.º Taller sobre Interacción entre Compiladores y Arquitecturas de Computadoras (INTERACT) , págs. 1-8 , doi : 10.1109/INTERACT.2012.6339620 , ISBN 978-1-4673-2613-1, S2CID 6832041
- ↑ Código fuente del simulador del procesador Unicore . Los formatos de instrucción se encuentran en decode.c, el desensamblaje en interpret.c y la emulación en instEx.c.
- ↑ Código fuente del emulador QEMU Unicore32
- Procesamiento de instrucciones
- Arquitecturas de conjuntos de instrucciones
- Ciencia y tecnología en China
- Esbozos de ingeniería informática