Journal article Open Access

A Multi-One Instruction Set Computer for Microcontroller Applications

Andrea Merello; Mirco Di Salvo; Marco Crepaldi


JSON Export

{
  "conceptrecid": "142348", 
  "created": "2023-09-29T10:05:59.446719+00:00", 
  "doi": "10.1109/access.2021.3104150", 
  "files": [
    {
      "bucket": "c5d71e7b-9252-4cbf-8f59-dc605cdc96ac", 
      "checksum": "md5:a41177f6979240f017ef23ce7b2521a5", 
      "key": "fulltext.pdf", 
      "links": {
        "self": "https://www.openaccessrepository.it/api/files/c5d71e7b-9252-4cbf-8f59-dc605cdc96ac/fulltext.pdf"
      }, 
      "size": 2992122, 
      "type": "pdf"
    }
  ], 
  "id": 142349, 
  "links": {
    "badge": "https://www.openaccessrepository.it/badge/doi/10.1109/access.2021.3104150.svg", 
    "bucket": "https://www.openaccessrepository.it/api/files/c5d71e7b-9252-4cbf-8f59-dc605cdc96ac", 
    "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": "open", 
    "access_right_category": "success", 
    "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&#x2019;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 &#x007E;6&#x0025; 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"
}
0
0
views
downloads
Views 0
Downloads 0
Data volume 0 Bytes
Unique views 0
Unique downloads 0

Share

Cite as