From WikiChip
Editing arm holdings/microarchitectures/cortex-m55

Warning: You are not logged in. Your IP address will be publicly visible if you make any edits. If you log in or create an account, your edits will be attributed to your username, along with other benefits.

The edit can be undone. Please check the comparison below to verify that this is what you want to do, and then save the changes below to finish undoing the edit.

This page supports semantic in-text annotations (e.g. "[[Is specified as::World Heritage Site]]") to build structured and queryable content provided by Semantic MediaWiki. For a comprehensive description on how to use annotations or the #ask parser function, please have a look at the getting started, in-text annotation, or inline queries help pages.

Latest revision Your text
Line 13: Line 13:
 
|process 6=16 nm
 
|process 6=16 nm
 
|process 7=10 nm
 
|process 7=10 nm
 +
|process 8=7 nm
 +
|process 9=5 nm
 
|cores=1
 
|cores=1
 
|cores 2=2
 
|cores 2=2
Line 21: Line 23:
 
|speculative=No
 
|speculative=No
 
|renaming=No
 
|renaming=No
|stages min=4
+
|stages=4
|stages max=5
 
 
|decode=1-2-way
 
|decode=1-2-way
 
|isa=ARMv8.1-M
 
|isa=ARMv8.1-M
Line 34: Line 35:
 
|l1d per=core
 
|l1d per=core
 
|l1d desc=4-way set associative
 
|l1d desc=4-way set associative
|predecessor=Cortex-M4
 
|predecessor link=microarchitecture/arm_holdings/microarchitectures/cortex-m4
 
|predecessor 2=Cortex-M7
 
|predecessor 2 link=microarchitecture/arm_holdings/microarchitectures/cortex-m7
 
|process 8=7 nm
 
|process 9=5 nm
 
 
}}
 
}}
'''Cortex-M55''' is an ultra-low-power [[ARM]] [[microarchitecture]] designed by [[ARM Holdings]] for microcontrollers and embedded subsystems. This microarchitecture is designed as a synthesizable [[IP core]] and is sold to other semiconductor companies to be implemented in their own chips. The Cortex-M55, which implements the {{arm|ARMv8.1-M}} ISA, is an ultra-low-power core which is often found in microcontrollers, low-power chips, and in the embedded subsystems of more powerful chips.
+
'''Cortex-M55''' is an ultra-low-power [[ARM]] [[microarchitecture]] designed by [[ARM Holdings]] for microcontrollers and embedded subsystems. This microarchitecture is designed as a synthesizable [[IP core]] and is sold to other semiconductor companies to be implemented in their own chips. The Cortex-M55, which implemented the {{arm|ARMv8.1-M}} ISA, is an ultra-low-power core which is often found in microcontrllers, low-power chips, and in the embedded subsystems of more powerful chips.
  
 
== History ==
 
== History ==
Line 47: Line 42:
  
 
== Process Technology ==
 
== Process Technology ==
The Cortex-M55 is designed to be fabricated on various different [[process nodes]] ranging from very mature nodes such as the [[130 nm]] to leading-edge [[7 nm]] and [[5 nm]] nodes.
+
Though the Cortex-M55 is designed to be fabricated on various different [[process nodes]] ranging from very mature nodes such as the [[130 nm]] to leading-edge [[7 nm]] and [[5 nm]] nodes.
  
 
== Compiler support ==
 
== Compiler support ==
Line 62: Line 57:
  
 
== Architecture ==
 
== Architecture ==
=== Key changes from {{\\|Cortex-M7}}/{{\\|Cortex-M4}} ===
 
* {{arm|ARMv8.1-M}} (from {{arm|ARMv7-M}})
 
* 64-bit internal bus (from 32-bit)
 
* Performance
 
** 4.2 [[CoreMark/MHz]] (self reported, +18.6% over {{\\|Cortex-M4|M4}}, -19.3% over {{\\|Cortex-M7|M7}})
 
** 1.6 [[DMIPS/MHz]] (self reported, +28% over {{\\|Cortex-M4|M4}}, -25.2% over {{\\|Cortex-M7|M7}})
 
** 1.15x frequency over {{\\|Cortex-M4|M4}} (depend on configuration)
 
* Pipeline
 
** 4 stages (up from 3 in {{\\|Cortex-M4|M4}}, down from 6 in {{\\|Cortex-M7|M7}})
 
** 2x external interrupts (480, up from 240)
 
** 2x32-bit or 4x16-bit or 8x8-bit MACs/cycle (up from 1x32-bit or 2x16-bit MACs/cycle in {{\\|Cortex-M7|M7}})
 
** FPU
 
*** new half-precision support (SP/DP in {{\\|Cortex-M7|M7}})
 
** TCM
 
*** 4x32-bit D-TCM interfaces (up from 2x32-bit in {{\\|Cortex-M7|M7}})
 
*** 64-bit AHB DMA port to crossbar interface (up from 32-bit in {{\\|Cortex-M7|M7}})
 
* Bus
 
** AXI5 (up from AXI4 and AHB Lite in {{\\|Cortex-M7|M7}}), up from AHB Lite {{\\|Cortex-M4|M4}})
 
* New integration
 
** New {{arm|coprocessor interface}} support
 
** New {{arm|custom instructions}}
 
** New {{arm|Helium}} extension support
 
** {{arm|TrustZone}} for {{arm|ARMv8-M}}
 
 
{{expand list}}
 
 
 
=== Block Diagram ===
 
=== Block Diagram ===
:[[File:cortex-m55 block diagram.svg|850px]]
+
:[[File:cortex-m55 block diagram.svg|800px]]
  
 
=== Memory Hierarchy ===
 
=== Memory Hierarchy ===
Line 115: Line 84:
  
 
== Overview ==
 
== Overview ==
[[File:cortex-m55 general block.png|thumb|right|Cortex-M55]]
+
{{empty section}}
The Cortex-M55 is a synthesizable ultra-low-power core designed by [[Arm]] for an array of applications such as microcontrollers and embedded subsystems doing background work on more performant SoCs. Successionally and architecturally, the Cortex-M55 is the successor to the {{\\|Cortex-M7}} and the {{\\|Cortex-M4}}, although in purely raw performance it's slightly behind the M7, though it makes up for it in new technologies such as its {{arm|Helium|new vector extension}}. The Cortex-M55 is said to deliver 1.6 [[Dhrystone DMIPS/MHz]] and 4.2 [[CoreMark/MHz]] which is about 25% higher than the {{\\|Cortex-M4|M4}} but about 20% lower than the {{\\|Cortex-M7|M7}}. In terms of frequency, the M55 is said to deliver up to 15% higher clock speed over the {{\\|Cortex-M4|M4}}.
 
 
 
In addition to supporting the {{arm|ARMv8.1-M}} [[ISA]], the M55 introduces a number of upgrades and features, most of which are optional and configurable, including support for the {{armh|coprocessor interface}}, {{arm|Helium}} vector extension, and {{arm|custom instructions}}. The architecture has additional optional support for MPUs, {{armh|TrustZone}}, and tightly coupled memory (TCM).
 
  
=== Configuration ===
+
=== Pipeline ===
From a programming model (ISA) point of view, the Cortex-M55 supports five different major configurations. FPU can be included without {{arm|Helium}}. {{arm|Helium}} support for fixed-point vectored data types can be implemented without the FPU, while floating-point vector data types must include the FPU.
+
{{empty section}}
 
 
{| class="wikitable"
 
! Configuration !! Base (Integer) !! FPU (FP16, FP32, FP64) !! Helium (Int8, Int16, Int 32) !! Helium (FP16, FP32)
 
|-
 
| 1 || {{tchk|yes|Included}} || {{tchk|no|-}} || {{tchk|no|-}} || {{tchk|no|-}}
 
|-
 
| 2 || {{tchk|yes|Included}} || {{tchk|yes|Included}} || {{tchk|no|-}} || {{tchk|no|-}}
 
|-
 
| 3 || {{tchk|yes|Included}} || {{tchk|no|-}} || {{tchk|yes|Included}} || {{tchk|no|-}}
 
|-
 
| 4 || {{tchk|yes|Included}} || {{tchk|yes|Included}} || {{tchk|yes|Included}} || {{tchk|no|-}}
 
|-
 
| 5 || {{tchk|yes|Included}} || {{tchk|yes|Included}} || {{tchk|yes|Included}} || {{tchk|yes|Included}}
 
|}
 
 
 
== Pipeline ==
 
The Cortex-M55 is a 4-stage [[in-order]] [[scalar pipeline]] design. The design comprises of the main pipeline which is always present and an extended processing unit. The main pipeline is the typical integer pipeline designed to support the full {{arm|ARMv8.1-M}} ISA. The extended processing unit is optional and is only present when the core implements the FPU or the {{arm|Helium}} extensions. When the extended processing unit is present, that part of the pipeline is extended by an additional stage (for a total of 5 stages). The separate pipeline allows the core to go into retention state or be entirely power-down when not used.
 
 
 
 
 
:[[File:cortex-m55 pipeline.svg|700px]]
 
 
 
=== Fetch & Decode ===
 
The M55 features a configurable private [[instruction cache]]. It is optional, but when present, it can be configured from 0 KiB to 64 KiB organized as a 2-way set associative. There is also optional ECC support if desired. Each cycle, four bytes are fetched from the instruction cache. There, instructions are pre-parsed and are sent to the decode. Since the {{arm|ARMv8}} supports a limited subset of {{arm|T16}}, when two adjacent instructions are both 16-bit wide ({{arm|T16}}+T16), the two instructions may be sent to decode to be decoded simultaneously. However, since the dual-issue capabilities are incredibly limited, Arm does not classify the design as a superscalar (unlike the capabilities of the {{\\|Cortex-M7}}).
 
 
 
=== Execution ===
 
The M55 can do 1 64-bit load or store operation per cycle. Compared to the {{\\|Cortex-M7|M7}}, the M55 can performance twice the MACs/cycle: 2x32-bit, 4x16-bit or 8x8-bit MACs/cycle.
 
 
 
=== Extended processing pipeline ===
 
From decode, the FPU and {{arm|Helium}} instructions are routed to a separate pipeline. In order to save on power, that pipeline may go into a low-power retention state or be powered-down when not used. The extended processing pipeline is present if either the FPU or the {{arm|Helium}} extensions are present. The FPU unit is based on the Arm {{arm|FPv5|FPv5 architecture}}. This is a fully IEEE-754 compliant FPU with support for [[half-precision]], [[single-precision]], and [[double-precision]] scalar [[floating-point]] data forms. Half-precision floating-point operations can be processed at twice the throughput per clock cycle as single-precision floats.
 
 
 
When the {{arm|Helium}} extension is present, it reuses the FPU registers as vector registers, each being 128-bit wide. Internally, the vector unit is implemented with a 64-bit data path. This is twice as wide as prior Cortex-M designs but half the width of the ISA operations, therefore each operation takes two clock cycles to complete. The architecture permits overlapping execution cycles between instructions which are taken advantage of by the Cortex-M55, therefore when overlapping memory access and data processing operations together, both operations can be carried out in parallel.
 
  
 
=== Memory subsystem ===
 
=== Memory subsystem ===
The Cortex-M55 has a private [[data cache]]. It is optional and configurable from 0 KiB to 64 KiB in capacity organized as a [[4-way set associative]]. The [[L1D$]] supports both [[write-back]] and [[write-through]] policies as well as optional ECC support.
+
{{empty section}}
 
 
The Cortex-M55 features a fairly complex memory subsystem. The two main parts are the [[tightly-coupled memory]] (TCM) and the cache subsystem. Both are optional and both are configurable in sizes. The TCM is optimized for real-time applications with highly deterministic behaviors while the cache subsystem is designed for complex memory hierarchies, hiding higher latencies. The main bus interface to the Cortex-M55 from the rest of the system is the 64-bit [[AMBA 5 AXI]]. The interface supports multiple outstanding memory transfers as well as burst transfers and can operate at the core frequency or at some divided clock frequency.
 
 
 
There are a number of additional interfaces including a 32-bit AHB peripheral interface for legacy AHB peripherals. A debug AHB interface is a 32-bit debug AHB5 slave interface providing debug support for the Debug Access Port (DAP) to the memory system.
 
 
 
==== TCM subsystem ====
 
The TCM subsystem is somewhat similar to the one found in the {{\\|Cortex-M7}} but comes with a few noticeable differences. The TCM consists of an instruction TCM (I-TCM) and a data TCM (D-TCM). As with the {{\\|Cortex-M7|M7}}, the purpose of the TCM subsystem is to provide deterministic latencies for real-time applications. The instruction TCM is optional and configurable from 0 to 16 MiB with optional ECC support. It is 32-bit wide, allowing up to 4 bytes per cycle to be transferred from the I-TCM to either the [[instruction fetch]] or the [[instruction memory]]. The D-TCM is also optional and is configurable from 0 to 16 MiB in capacity with optional ECC support. Whereas the {{\\|Cortex-M7}} featured two 32-bit data TCM interfaces, the M55 features four 32-bit data TCM interfaces which are split equally using address bits[3:2]. The data TCM interfaces collectively have an aggregated bandwidth of 128-bit per cycle, however since the Helium vector extension features an interface data path of 64-bit, software execution can only generate 64-bit data transfers per cycle. The rest of the bandwidth can be used for other purposes such as data memory access operations, transferring data from and to the TCM simultaneously while the data is read by the core execution. Accesses to TCM memory banks are prioritized for software execution, therefore an attempt by the DMA controller will be stalled while the software is reading from the same TCM bank.
 
 
 
 
 
:[[File:cortex-m55 tcm xbar.svg|600px]]
 
  
 
== All Cortex-M55 chips ==
 
== All Cortex-M55 chips ==

Please note that all contributions to WikiChip may be edited, altered, or removed by other contributors. If you do not want your writing to be edited mercilessly, then do not submit it here.
You are also promising us that you wrote this yourself, or copied it from a public domain or similar free resource (see WikiChip:Copyrights for details). Do not submit copyrighted work without permission!

Cancel | Editing help (opens in new window)
codenameCortex-M55 +
core count1 +, 2 + and 4 +
designerARM Holdings +
first launchedFebruary 10, 2020 +
full page namearm holdings/microarchitectures/cortex-m55 +
instance ofmicroarchitecture +
instruction set architectureARMv8.1-M +
manufacturerTSMC +
microarchitecture typeCPU +
nameCortex-M55 +
pipeline stages (max)5 +
pipeline stages (min)4 +
process55 nm (0.055 μm, 5.5e-5 mm) +, 45 nm (0.045 μm, 4.5e-5 mm) +, 32 nm (0.032 μm, 3.2e-5 mm) +, 28 nm (0.028 μm, 2.8e-5 mm) +, 22 nm (0.022 μm, 2.2e-5 mm) +, 16 nm (0.016 μm, 1.6e-5 mm) +, 10 nm (0.01 μm, 1.0e-5 mm) +, 7 nm (0.007 μm, 7.0e-6 mm) + and 5 nm (0.005 μm, 5.0e-6 mm) +