Abstract

Code instrumentation enables the observability of an embedded software system during its execution. A usage example of code instrumentation is the estimation of “worst-case execution time” using hybrid analysis. This analysis combines static code analysis with measurements of the execution time on the deployment platform. Static analysis of source code determines where to insert the tracing instructions, so that later, the execution time can be captured using a logic analyser. The main drawback of this technique is the overhead introduced by the execution of trace instructions. This paper proposes a modification of the architecture of a RISC pipelined processor that eliminates the execution time overhead introduced by the code instrumentation. In this way, it allows the tracing to be non-intrusive, since the sequence and execution times of the program under analysis are not modified by the introduction of traces. As a use case of the proposed solution, a processor, based on RISC-V architecture, was implemented using VHDL language. The processor, synthesized on a FPGA, was used to execute and evaluate a set of examples of instrumented code generated by a “worst-case execution time” estimation tool. The results validate that the proposed architecture executes the instrumented code without overhead.

Highlights

  • IntroductionOn the field of real-time systems, embedded software must meet a set of non-functional requirements that involve the interaction with the environment (reaction requirements) and the platform (execution requirements) [1]

  • On the field of real-time systems, embedded software must meet a set of non-functional requirements that involve the interaction with the environment and the platform [1]

  • As a base, an earlier own design was taken. This implementation lacked a segmented design, and the first few steps were rearranging its functionality and transforming the single-stage processor to a multiple-stage segmented one. Once this task was completed the structure of this vanilla processor was the one aforementioned on Section 3.1, with five stages (IF, Instruction Decodification stage (ID), Execution stage (EX), MEM, and Write-Back stage (WB)) and a forwarding unit to overcome data hazards that can occur during program execution

Read more

Summary

Introduction

On the field of real-time systems, embedded software must meet a set of non-functional requirements that involve the interaction with the environment (reaction requirements) and the platform (execution requirements) [1]. This paper presents the implementation of this design on a RISC-V processor architecture [17,18], which enables a way to instrumentate the code without being intrusive in terms of execution time. The interest in having a mechanism to be able to implement the code and obtain trace information without adding any overhead to the execution time is of particular relevance in real-time systems with a high degree of criticality. Examples of these systems include those used in aerospace, automotive, medicine or plant control, including nuclear power plants since they all require characterization of their temporal response.

Related Work
Processor Design
Baseline Pipeline Structure
Processor Structure Modifications
Comparative Walkthrough
Singular Trace Execution Cases
Implementation
Development of a Vanilla IP-Core
Modification of the Vanilla IP-Core
Comparative Tests
Result
Findings
Conclusions
Full Text
Published version (Free)

Talk to us

Join us for a 30 min session where you can share your feedback and ask us any queries you have

Schedule a call