SoC
  • Home
  • Arm
  • Arm Cortex M0/M0+
  • Arm Cortex M4
  • Arm Cortex M3
  • Contact
Reading: What is the memory and bus architecture of the Cortex-M3?
SUBSCRIBE
SoCSoC
Font ResizerAa
  • Home
  • Arm
  • Arm Cortex M0/M0+
  • Arm Cortex M4
Search
  • Home
  • Arm
  • Arm Cortex M0/M0+
  • Arm Cortex M4
Have an existing account? Sign In
Follow US
  • Looking for Something?
  • Privacy Policy
  • About Us
  • Sitemap
  • Contact Us
© S-O-C.ORG, All Rights Reserved.
Arm

What is the memory and bus architecture of the Cortex-M3?

Scott Allen
Last updated: October 5, 2023 9:55 am
Scott Allen 8 Min Read
Share
SHARE

The Cortex-M3 is a 32-bit microcontroller developed by ARM Holdings. It features a von Neumann architecture with separate instruction and data buses along with advanced features like Thumb-2 instruction set, nested vectored interrupt controller, and optional memory protection unit.

Contents
Memory ArchitectureBus ArchitectureAHB Lite Bus FeaturesAPB Bus FeaturesHarvard vs Von Neumann ArchitectureThumb InstructionsNested Vectored Interrupt ControllerMemory Protection UnitCortex-M3 Configuration OptionsConclusion

Memory Architecture

The Cortex-M3 has a modified Harvard architecture, which means it has separate instruction and data memories but they are connected via the Memory Accelerator Module (MAM) which allows instructions to be fetched from data memory. This enables better code density compared to pure Harvard architecture.

The memory architecture consists of:

  • Flash memory for storing code and constants
  • RAM for storing data and stack
  • Memory mapped peripherals

The Cortex-M3 supports up to 4GB of flash and up to 1GB of RAM. The flash and RAM can be on-chip or external or a combination of both. On-chip flash typically ranges from 32KB to 512KB while on-chip RAM ranges from 4KB to 128KB.

The following memory regions are present in the Cortex-M3 memory map:

  • Code Region: Stores code and constants. Maps to internal or external flash.
  • SRAM Region: Stores data and stack. Maps to internal SRAM.
  • Peripheral Region: Memory mapped registers for peripherals like timers, GPIO, etc.
  • Device Region: Additional peripherals including system control blocks.

The MAM module connects the instruction and data buses allowing access to code stored in SRAM for better flexibility.

Bus Architecture

The Cortex-M3 uses the Advanced Microcontroller Bus Architecture (AMBA) which defines the interfaces required for on-chip communication between various modules and peripherals. It consists of three main buses:

  • Advanced High-performance Bus (AHB): The main system bus that connects the CPU, memory and high-speed peripherals. This is the backbone bus with high bandwidth.
  • Advanced Peripheral Bus (APB): The peripheral bus that connects peripherals requiring lower bandwidth like UART, I2C, SPI etc. This bus runs at half the speed of AHB bus.
  • Advanced Extensible Interface (AXI): An optional bus that provides high speed interface to external memory and peripherals.

The Cortex-M3 implements AMBA AHB-Lite protocol which is a subset of the full AHB protocol. It provides features like burst transfers, split transactions and single cycle bus master handover.

The memory accelerator module connects the instruction and data AHB interfaces. Additional ports are provided for tightly coupled memories like ITCM and DTCM Instruction and data tightly coupled memories help improve performance and determinism.

The system bus matrix connects the processor and other bus masters like DMA to the peripherals and memories via the AHB-Lite bus. It allows concurrent access paths to the peripherals with arbiters to handle contention.

AHB Lite Bus Features

  • 32-bit system bus supporting up to 256 bus masters
  • Burst transfers for improved efficiency
  • Single cycle bus master handover for low latency
  • Non-tristate implementation allowing concurrent bus master operation
  • Configurable address decode allowing flexible memory mapping
  • Peripheral DMA requests to offload data transfers from CPU

APB Bus Features

  • 32-bit peripheral bus clocked at half rate of AHB bus
  • Supports up to 16 peripheral bus masters
  • Simpler interface compared to AHB suitable for low bandwidth peripherals
  • Allows concurrent access to peripherals via separate read and write buses

Harvard vs Von Neumann Architecture

The Cortex-M3 uses a modified Harvard architecture which provides some benefits over pure Von Neumann architecture:

  • Separation of instruction and data buses increases bandwidth
  • No contention between instruction fetch and data access
  • Instruction and data can be scaled independently based on need
  • MAM module provides flexibility of Von Neumann architecture

Some limitations of Harvard architecture are code flexibility and higher memory cost. The MAM module helps overcome this by connecting instruction and data buses.

Thumb Instructions

The Cortex-M3 uses Thumb-2 instruction set which builds on top of the compact 16-bit Thumb instruction set used in earlier microcontrollers. The key features of Thumb-2 are:

  • Mix of 16-bit and 32-bit instructions for improved code density
  • 16-bit Thumb instruction set enhanced with additional instructions
  • 32-bit instructions for better performance on loops, functions, etc.
  • symmetrical 32-bit instruction encoding for simpler decoding
  • Low interrupt latency of only 10 cycles

The Thumb-2 instruction set provides 60% better code density compared to earlier ARM architectures while improving performance by 40% making it ideal for embedded applications.

Nested Vectored Interrupt Controller

The Cortex-M3 incorporates a nested vectored interrupt controller (NVIC) which provides low latency interrupt handling using a priority based preemption model. Key features are:

  • Supports up to 256 external and internal interrupt sources
  • Configurable priorities for each interrupt
  • Interrupt nesting with late arrival handling
  • Wakeup interrupt controller for low power operation
  • Reduces interrupt latency to as low as 10 cycles

The NVIC allows ultra low interrupt latency enabling real-time response in interrupt driven systems.

Memory Protection Unit

The optional memory protection unit (MPU) provides memory access control and hard fault exceptions generation for Cortex-M3 devices. The key features are:

  • Up to 8 memory regions can be defined with individual permission controls
  • Region sizes can be configured from 32 bytes to full memory size
  • Programmable background region for default access permissions
  • Permission attributes include read, write and execute
  • Enables privileged software execution mode for OS-based designs

The MPU improves reliability and security by protecting memory areas from unintended access.

Cortex-M3 Configuration Options

The Cortex-M3 provides various configuration options to enable customization for specific application requirements:

  • Memory Options: ITCM, DTCM, and MPU can be enabled based on need.
  • Peripheral Bus: AHB or AMBA AXI bus can be selected.
  • Debug Options: Debug access port and trace port options.
  • Co-processor Interface: For connecting application specific co-processors.
  • Number of Interrupts: Up to 256 external interrupts.
  • CPU Clock Speed: Up to 200 MHz system clock speed.

These options allow tailoring the Cortex-M3 for diverse applications including industrial, automotive, consumer devices, etc.

Conclusion

In summary, the Cortex-M3 provides a high performance 32-bit processor architecture optimized for embedded applications. The modified Harvard architecture, Thumb-2 instruction set, AMBA AHB-Lite bus, NVIC, and MPU provide an excellent combination of performance, power efficiency, and ease of integration. The extensive configuration options make the Cortex-M3 a versatile solution that can be scaled across a wide range of embedded products.

Newsletter Form (#3)

More ARM insights right in your inbox

 


Share This Article
Facebook Twitter Email Copy Link Print
Previous Article What is the size of the ARM Cortex-M3’s address bus?
Next Article What is the bus interface in the Cortex-M3 processor?
Leave a comment Leave a comment

Leave a Reply Cancel reply

Your email address will not be published. Required fields are marked *

2k Followers Like
3k Followers Follow
10.1k Followers Pin
- Sponsored-
Ad image

You Might Also Like

ARM Cortex-M3 Programming Techniques

The ARM Cortex-M3 is a 32-bit processor core licensed by…

8 Min Read

Arm Cortex M4 Errata

The Arm Cortex-M4 processor is a popular 32-bit microcontroller core…

6 Min Read

Staying under code size limits when simulating Cortex-M0 in ModelSim Student

The Cortex-M0 is one of ARM's most popular microcontroller cores,…

7 Min Read

ARM FPU Instruction Set

The ARM Floating Point Unit (FPU) provides hardware support for…

7 Min Read
SoCSoC
  • Looking for Something?
  • Privacy Policy
  • About Us
  • Sitemap
  • Contact Us
Welcome Back!

Sign in to your account