Arm Community
Arm Community
  • Site
  • User
  • Site
  • Search
  • User
  • Groups
    • Research Collaboration and Enablement
    • DesignStart
    • Education Hub
    • Innovation
    • Open Source Software and Platforms
  • Forums
    • AI and ML forum
    • Architectures and Processors forum
    • Arm Development Platforms forum
    • Arm Development Studio forum
    • Arm Virtual Hardware forum
    • Automotive forum
    • Compilers and Libraries forum
    • Graphics, Gaming, and VR forum
    • High Performance Computing (HPC) forum
    • Infrastructure Solutions forum
    • Internet of Things (IoT) forum
    • Keil forum
    • Morello Forum
    • Operating Systems forum
    • SoC Design and Simulation forum
    • 中文社区论区
  • Blogs
    • AI and ML blog
    • Announcements
    • Architectures and Processors blog
    • Automotive blog
    • Graphics, Gaming, and VR blog
    • High Performance Computing (HPC) blog
    • Infrastructure Solutions blog
    • Innovation blog
    • Internet of Things (IoT) blog
    • Operating Systems blog
    • Research Articles
    • SoC Design and Simulation blog
    • Tools, Software and IDEs blog
    • 中文社区博客
  • Support
    • Arm Support Services
    • Documentation
    • Downloads
    • Training
    • Arm Approved program
    • Arm Design Reviews
  • Community Help
  • More
  • Cancel
Arm Community blogs
Arm Community blogs
Tools, Software and IDEs blog Development tools support for Arm Custom Instructions
  • Blogs
  • Mentions
  • Sub-Groups
  • Tags
  • Jump...
  • Cancel
More blogs in Arm Community blogs
  • AI and ML blog

  • Announcements

  • Architectures and Processors blog

  • Automotive blog

  • Embedded blog

  • Graphics, Gaming, and VR blog

  • High Performance Computing (HPC) blog

  • Infrastructure Solutions blog

  • Internet of Things (IoT) blog

  • Operating Systems blog

  • SoC Design and Simulation blog

  • Tools, Software and IDEs blog

Tags
  • Keil MDK
  • Arm Development Studio
  • optimization
  • Arm Custom Instructions
Actions
  • RSS
  • More
  • Cancel
Related blog posts
Related forum threads

Development tools support for Arm Custom Instructions

Ronan Synnott
Ronan Synnott
February 26, 2020
4 minute read time.

In 2019, Arm Custom Instructions were announced. This is a new standard feature of the Armv8-M architecture, allowing developers to implement use case-specific workload acceleration, pushing performance and longevity of devices ready for the fifth wave of computing.

Unlike traditional approaches that implement memory mapped or coprocessor-based accelerators, these custom instructions are fully integrated to the Arm Architecture. They can make use of the processor registers and are handled through the standard instruction pipeline. This means there is no additional overhead for the use of these instructions.

Get started with Arm tools today

Arm offers a complete range of tools for all stages of the development process:

Fast Models and Cycle Models give users the ability to implement virtual platforms for software development and performance analysis in lieu of real hardware being available.

The industry-leading Arm Compiler, which is integrated into both:

Keil Microcontroller Development Kit (MDK) and Arm Development Studio. Each toolchain offers its own IDE and debug environment, as well as performance analysis features, working with both virtual and physical targets. Note that a license for Development Studio will also enable MDK.

To illustrate the usage of these tools to develop around custom instructions, we have created this brief video.

Example use case: Improved execution time

Custom instructions will typically be used to implement application or algorithm-specific instructions, which will then be used in a device-specific version of that code. In the example shown in the video, a simple CRC routine is implemented both in standard C and as a custom instruction. Projects can be developed within MDK or Development Studio as appropriate. Both offer complete project management and debug capabilities (This blog highlights the key differences between Keil MDK and Development Studio).

MDK supports Event Recorder and Event Statistics, enabling the user to generate high-level trace and profiling information through simple annotation of your code. By using these features, we can clearly see the overall benefit of the use of a custom instruction, with >4x improvement in the execution time of the routine. In a real-world scenario, this would equate to more bandwidth for other functionality, or a quicker return to a low-power mode, extending the battery life of your product.

 MDK Event Statistics

A similar analysis can be done within Development Studio. For example the trace output could be used to visualize the difference in execution of each implementation of the routine.

Development Studio trace view

Deeper system level performance analysis can be done with the Streamline Performance Analyzer. We can again easily visualize the ~4x throughput. In the below, the peaks represent the custom instruction implementation, the troughs are the C version. Further analysis within the tool allows you to deep dive into behavior of the code. My colleague Zach writes about a real world use case example of Streamline here. 

Streamline Performance Analyzer

In summary

Arm Custom Instructions will transform future generations of high-performance, low-power devices. Arm development tools are available now to support your needs today and in the future. Refer to “Get Started with Early Development on the Arm Cortex-M55 Processor” for more information about the latest software development tools. If you are unfamiliar with MDK or Development Studio, they are available to evaluate free of charge. We also invite you to contact us to discuss your specific needs in more detail.

Evaluate Keil MDK

Anonymous
Parents
  • Ronan Synnott
    Ronan Synnott over 2 years ago

    Further support for the Arm Custom Instructions were added in subsequent tools releases.

    ACLE instrinsic function support added to Arm Compiler 6.14.1 (and later)

    https://developer.arm.com/tools-and-software/embedded/arm-compiler/downloads/version-6

    Debug support is added in Development Studio 2020.0 (and later), as described here:

    https://community.arm.com/developer/tools-software/tools/b/tools-software-ides-blog/posts/development-studio-2020-0

    https://developer.arm.com/documentation/101471/2000/Arm-Debugger-commands/Arm-Debugger-commands-listed-in-alphabetical-order/set-cde-coprocessors

    • Cancel
    • Up 0 Down
    • Reply
    • More
    • Cancel
Comment
  • Ronan Synnott
    Ronan Synnott over 2 years ago

    Further support for the Arm Custom Instructions were added in subsequent tools releases.

    ACLE instrinsic function support added to Arm Compiler 6.14.1 (and later)

    https://developer.arm.com/tools-and-software/embedded/arm-compiler/downloads/version-6

    Debug support is added in Development Studio 2020.0 (and later), as described here:

    https://community.arm.com/developer/tools-software/tools/b/tools-software-ides-blog/posts/development-studio-2020-0

    https://developer.arm.com/documentation/101471/2000/Arm-Debugger-commands/Arm-Debugger-commands-listed-in-alphabetical-order/set-cde-coprocessors

    • Cancel
    • Up 0 Down
    • Reply
    • More
    • Cancel
Children
No Data
Tools, Software and IDEs blog
  • What is new in LLVM 16?

    Pablo Barrio
    Pablo Barrio
    Arm contributions from Arm to the new release include the usual architecture and CPU additions and new features such as, function multi-versioning and strict floating point support.
    • May 1, 2023
  • Product update: Arm Development Studio 2023.0 now available

    Ronan Synnott
    Ronan Synnott
    Arm Development Studio 2023.0 now available with support for Arm Neoverse V2 processor.
    • April 27, 2023
  • What is new in LLVM 15?

    Pablo Barrio
    Pablo Barrio
    LLVM 15.0.0 was released on September 6, followed by a series of minor bug-fixing releases. Arm contributed support for new Arm extensions and CPUs.
    • February 27, 2023