Journal article Closed Access
Andrea Merello; Mirco Di Salvo; Marco Crepaldi
{ "conceptrecid": "142348", "created": "2023-09-29T10:05:59.446719+00:00", "doi": "10.1109/access.2021.3104150", "id": 142349, "links": { "badge": "https://www.openaccessrepository.it/badge/doi/10.1109/access.2021.3104150.svg", "doi": "https://doi.org/10.1109/access.2021.3104150", "html": "https://www.openaccessrepository.it/record/142349", "latest": "https://www.openaccessrepository.it/api/records/142349", "latest_html": "https://www.openaccessrepository.it/record/142349" }, "metadata": { "access_right": "closed", "access_right_category": "danger", "communities": [ { "id": "itmirror" } ], "creators": [ { "name": "Andrea Merello" }, { "name": "Mirco Di Salvo" }, { "name": "Marco Crepaldi" } ], "description": "This work presents a simple integer-only instruction set architecture and microarchitecture derived from One Instruction Set Computers (OISCs) and embedding multiple execution modes ( ${m}$ OISC), capable of running at a reasonable performance level to enable basic usability in microcontroller applications. The purpose of ${m}$ OISC is to enable simple data transfer tasks and run small programs while maintaining ultimate simplicity. We present the internal organization for a computer architecture including an 8bit I/O register, and 64kB central Random Access Memory (RAM), organized in two-bytes words. The processor can run code generated assuming an OISC or a Complex Instruction Set Computer (CISC) scheme (op-code based), depending on the programmer’s demands and based on the initial setting of a register during start-up. To enable practical applications and demonstrate successful exploitation of ${m}$ OISC in view of integration in a compiler back-end, we designed a custom Proof-of-Concept (PoC) software design toolchain based on LLVM and clang. Although not targeting all the features of commercial ISA, the toolchain is capable of compiling C code from LLVM intermediate representation or generating ${m}$ OISC code translated from ARM, x86, RISC-V, and MIPS assembly. The toolchain also enables practical Value Change Dump (VCD) simulations output with graphical plots of the CPU state and associated symbols. A PoC microcontroller system has been synthesized in a low power Field Programmable Gate Array (FPGA) and verified in a basic wireless telemetry application including a Synchronous Peripheral Interface (SPI) RFM9x Long RAnge (LoRA) transceiver and a MAX30205 Inter Integrated Circuit (I<sup>2</sup>C) temperature sensor, using its 8bit I/O port, with software bus interface implementation. ${m}$ OISC occupies ~6% of resources on a Cyclone 10LP FPGA, for 1397 Adaptive Look-Up Tables (ALUTs) and 461 dedicated logic registers. The measured dynamic current consumption of the complete FPGA board with synthesized ${m}$ OISC is 12mA at 100MHz clock.", "doi": "10.1109/access.2021.3104150", "keywords": [ "General Engineering", "General Materials Science", "General Computer Science" ], "language": "und", "license": { "id": "CC-BY-4.0" }, "notes": "", "publication_date": "2021-01-01", "relations": { "version": [ { "count": 1, "index": 0, "is_last": true, "last_child": { "pid_type": "recid", "pid_value": "142349" }, "parent": { "pid_type": "recid", "pid_value": "142348" } } ] }, "resource_type": { "subtype": "article", "title": "Journal article", "type": "publication" }, "title": "A Multi-One Instruction Set Computer for Microcontroller Applications" }, "owners": [ 14 ], "revision": 1, "stats": { "downloads": 0.0, "unique_downloads": 0.0, "unique_views": 0.0, "version_downloads": 0.0, "version_unique_downloads": 0.0, "version_unique_views": 0.0, "version_views": 0.0, "version_volume": 0.0, "views": 0.0, "volume": 0.0 }, "updated": "2023-09-29T10:05:59.541393+00:00" }
Views | 0 |
Downloads | 0 |
Data volume | 0 Bytes |
Unique views | 0 |
Unique downloads | 0 |