Penalidades en lecturas no alineadas dentro de Microcontroladores RISC-V
Resumen
La arquitectura RISC-V fue concebida con el fin de evitar los problemas de sobrecarga de instrucciones de las arquitecturas x86 y ARM. Su definición es abierta dejando librado los detalles de la microarquitectura al diseñador del procesador. Las implementaciones de microcontroladores RISC-V se comportan de manera distinta en cuanto a los accesos a datos de forma no alineada. Si bien los compiladores buscan evitar este tipo de accesos, determinadas estructuras de datos requieren los mismos en ámbitos donde la memoria es limitada. En este artículo se estudia la implementación de tres microarquitecturas RISC-V en cuanto a los accesos a memoria no alineados y se plantea un código que permite salvar la ejecución de programas que realizan accesos no alineados cuando la microarquitectura no tiene soporte para los mismos. En los casos donde la microarquitectura soporta accesos no alineados se estudia el impacto en la eficiencia de ejecución de instrucciones.
Citas
[2] D. M. Harris and S. L. Harris, Digital design and computer architecture, 2nd edition. 2012. doi: 10.1016/C2011-0-04377-6.
[3] D. Jang, J. Kim, M. Park, Y. Jung, H. Lee, and B. B. Kang, “Rethinking Misalignment to Raise the Bar for Heap Pointer Corruption.” arXiv, 2018. doi: 10.48550/ARXIV.1807.01023.
[4] K. Asanović and D. Patterson, “RISC-V: An Open Standard for SoCs | EE Times,” EE Times, 2014.
[5] Agam Shah, “RISC-V takes steps to minimize fragmentation” https://www.theregister.com/2022/04/01/riscv_fragmentation/, Apr. 01, 2022.
[6] R. M. Stallman and T. G. D. Community, “Using the GNU Compiler Collection,” Development, vol. 2. 2012.
[7] A. Waterman et al., “The RISC-V instruction set manual,” Volume I: User-Level ISA’, version, vol. 2, 2014.
[8] C. Celio, P. Dabbelt, D. A. Patterson, and K. Asanović, “The Renewed Case for the Reduced Instruction Set Computer: Avoiding ISA Bloat with Macro-Op Fusion for RISC-V.” arXiv, 2016. doi: 10.48550/ARXIV.1607.02318.
[9] A. Singh, Mac OS X Internals: A Systems Approach (paperback). Addison-Wesley Professional, 2006.
[10] Daniel Lemire, “Data alignment for speed: myth or reality?,” https://lemire.me/blog/2012/05/31/data-alignment-for-speed-myth-or-reality/, May 31, 2012.
[11] Damien Le Moal, “[v2,1/9] riscv: Unaligned load/store handling for M_MODE” https://patchwork.kernel.org/project/linux-riscv/patch/20200312051107.1454880-2-damien.lemoal@wdc.com/, Mar. 12, 2020.
[12] M. Hubacz and B. Trybus, “Data Alignment on Embedded CPUs for Programmable Control Devices,” Electronics (Basel), vol. 11, no. 14, 2022, doi: 10.3390/electronics11142174.
[13] SiFive Inc, “SiFive FE310-G002 Manual v1p4,” 2019.
[14] Edgardo Gho, “RISC-V Traps,” https://github.com/edgardogho/RISC-V-Traps, Jul. 18, 2022.
[15] Espressif Systems, “ESP32-C3 Series Datasheet,” 2022.
[16] Edgardo Gho, “RiscVP,” https://github.com/edgardogho/RiscVP, Mar. 04, 2021.