...the world's most energy friendly microcontrollers
is returned to the processor in one clock cycle. Thus, performance is also improved when wait-states
are used (i.e. running at frequencies above 16 MHz).
The instruction cache is connected directly to the ICODE bus on the Cortex-M3 and functions as a
memory access filter between the processor and the memory system, as illustrated in Figure 7.2 (p.
36) . The cache consists of an access filter, lookup logic, a 128x32 SRAM (512 bytes) and two
performance counters. The access filter checks that the address for the access is to on-chip flash
memory (instructions in RAM are not cached). If the address matches, the cache lookup logic and SRAM
is enabled. Otherwise, the cache is bypassed and the access is forwarded to the memory system.
The cache is then updated when the memory access completes. The access filter also disables cache
updates for interrupt context accesses if caching in interrupt context is disabled. The performance
counters, when enabled, keep track of the number of cache hits and misses. The cache consists of 16
8-word cachelines organized as 4 sets with 4 ways. The cachelines are filled up continuously one word
at a time as the individual words are requested by the processor. Thus, not all words of a cacheline
might be valid at a given time.
Figure 7.2. Instruction Cache
Inst ruct ion Cache
Cache
ICODE
AHB-Lit e Bus
Look-up Logic
Access
Filt er
ICODE
AHB-Lit e Bus
128x32
SRAM
IDCODE
CODE
Mem ory Space
AHB-Lit e Bus
IDCODE
MUX
Perform ance Count ers
Cort ex-M3
DCODE
AHB-Lit e Bus
By default, the instruction cache is automatically invalidated when the contents of the flash is changed
(i.e. written or erased). In many cases, however, the application only makes changes to data in the
flash, not code. In this case, the automatic invalidate feature can be disabled by setting AIDIS in
MSC_READCTRL. The cache can (independent of the AIDIS setting) be manually invalidated by writing
1 to INVCACHE in MSC_CMD.
In general it is highly recommended to keep the cache enabled all the time. However, for some sections
of code with very low cache hit-rate more energy-efficient execution can be achieved by disabling the
cache temporarily. To measure the hit-rate of a code-section, the built-in performance counters can
be used. Before the section, start the performance counters by writing 1 to STARTPC in MSC_CMD.
This starts the performance counters, counting from 0. At the end of the section, stop the performance
counters by writing 1 to STOPPC in MSC_CMD. The number of cache hits and cache misses for
that section can then be read from MSC_CACHEHITS and MSC_CACHEMISSES respectively. The
total number of 32-bit instruction fetches will be MSC_CACHEHITS + MSC_CACHEMISSES. Thus, the
cache hit-ratio can be calculated as MSC_CACHEHITS / (MSC_CACHEHITS + MSC_CACHEMISSES).
When MSC_CACHEHITS overflows the CHOF interrupt flag is set. When MSC_CACHEMISSES
overflows the CMOF interrupt flag is set. These flags must be cleared explicitly by software. The
range of the performance counters can thus be extended by increasing a counter in the MSC interrupt
routine. The performance counters only count when a cache lookup is performed. If the lookup fails,
MSC_CACHEMISSES is increased. If the lookup is successful, MSC_CACHEHITS is increased. For
example, a cache lookup is not performed if the cache is disabled or the code is executed from
RAM. When caching of vector fetches and instructions in interrupt routines is disabled (ICCDIS in
MSC_READCTRL is set), the performance counters do not count when these types of fetches occur
(i.e. while in interrupt context).
By default, interrupt vector fetches and instructions in interrupt routines are also cached. Some
applications may get better cache utilization by not caching instructions in interrupt context. This is done
by setting ICCDIS in MSC_READCTRL. You should only set this bit based on the results from a cache
hit ratio measurement. In general, it is recommended to keep the ICCDIS bit cleared. Note that lookups
in the cache are still performed, regardless of the ICCDIS setting - but instructions are not cached when
2012-04-24 - Giant Gecko Family - d0053_Rev0.96
36
www.energymicro.com
相关PDF资料
EFM32LG-DK3650 KIT DEV EFM32 LEOPARD GECKO
EK-K7-KC705-CES-G-J KINTEX-7 FPGA KC705 EVAL KIT
EK-S6-SP601-G KIT EVAL SPARTAN 6 SP601
EK-S6-SP605-G KIT EVAL SPARTAN 6 SP605
EK-V6-ML631-G-J VIRTEX-6 HXT FPGA ML631 EVAL KIT
EK-V7-VC707-CES-G VIRTEX-7 VC707 EVAL KIT
EK-Z7-ZC702-CES-G ZYNQ-7000 EPP ZC702 EVAL KIT
EL1848IYZ-T7 IC LED DRIVR WHITE BCKLGT 8-MSOP
相关代理商/技术参数
EFM32G-MCP3550 功能描述:子卡和OEM板 Gecko DK MCU Plugin board RoHS:否 制造商:BeagleBoard by CircuitCo 产品:BeagleBone LCD4 Boards 用于:BeagleBone - BB-Bone - Open Source Development Kit
EFM32-GXXX-PTB 功能描述:BOARD PROTOTYPING FOR EFM32 RoHS:是 类别:编程器,开发系统 >> 配件 系列:EFM®32 产品培训模块:Lead (SnPb) Finish for COTS Obsolescence Mitigation Program RoHS指令信息:IButton RoHS Compliance Plan 标准包装:1 系列:- 附件类型:USB 至 1-Wire? RJ11 适配器 适用于相关产品:1-Wire? 设备 产品目录页面:1429 (CN2011-ZH PDF)
EFM32HG108F32G-A-QFN24 功能描述:ARM? Cortex?-M0+ Happy Gecko Microcontroller IC 32-Bit 25MHz 32KB (32K x 8) FLASH 24-QFN (5x5) 制造商:silicon labs 系列:Happy Gecko 包装:托盘 零件状态:有效 核心处理器:ARM? Cortex?-M0+ 核心尺寸:32-位 速度:25MHz 连接性:I2C,IrDA,智能卡,SPI,UART/USART 外设:欠压检测/复位,DMA,I2S,POR,PWM,WDT I/O 数:17 程序存储容量:32KB(32K x 8) 程序存储器类型:闪存 EEPROM 容量:- RAM 容量:4K x 8 电压 - 电源(Vcc/Vdd):1.98 V ~ 3.8 V 数据转换器:- 振荡器类型:内部 工作温度:-40°C ~ 85°C(TA) 封装/外壳:24-VQFN 裸露焊盘 供应商器件封装:24-QFN(5x5) 标准包装:490
EFM32HG108F64G-A-QFN24 功能描述:ARM? Cortex?-M0+ Happy Gecko Microcontroller IC 32-Bit 25MHz 64KB (64K x 8) FLASH 24-QFN (5x5) 制造商:silicon labs 系列:Happy Gecko 包装:托盘 零件状态:有效 核心处理器:ARM? Cortex?-M0+ 核心尺寸:32-位 速度:25MHz 连接性:I2C,IrDA,智能卡,SPI,UART/USART 外设:欠压检测/复位,DMA,I2S,POR,PWM,WDT I/O 数:17 程序存储容量:64KB(64K x 8) 程序存储器类型:闪存 EEPROM 容量:- RAM 容量:8K x 8 电压 - 电源(Vcc/Vdd):1.98 V ~ 3.8 V 数据转换器:- 振荡器类型:内部 工作温度:-40°C ~ 85°C(TA) 封装/外壳:24-VQFN 裸露焊盘 供应商器件封装:24-QFN(5x5) 标准包装:490
EFM32HG108F64G-B-QFN24 功能描述:IC MCU 32BIT 64KB FLASH 24QFN 制造商:silicon labs 系列:Happy Gecko 包装:托盘 零件状态:在售 核心处理器:ARM? Cortex?-M0+ 核心尺寸:32-位 速度:25MHz 连接性:I2C,IrDA,智能卡,SPI,UART/USART 外设:欠压检测/复位,DMA,I2S,POR,PWM,WDT I/O 数:17 程序存储容量:64KB(64K x 8) 程序存储器类型:闪存 EEPROM 容量:- RAM 容量:8K x 8 电压 - 电源(Vcc/Vdd):1.98 V ~ 3.8 V 数据转换器:- 振荡器类型:内部 工作温度:-40°C ~ 85°C(TA) 封装/外壳:24-VQFN 裸露焊盘 供应商器件封装:24-QFN(5x5) 标准包装:490
EFM32HG110F32G-A-QFN24 功能描述:ARM? Cortex?-M0+ Happy Gecko Microcontroller IC 32-Bit 25MHz 32KB (32K x 8) FLASH 24-QFN (5x5) 制造商:silicon labs 系列:Happy Gecko 包装:托盘 零件状态:有效 核心处理器:ARM? Cortex?-M0+ 核心尺寸:32-位 速度:25MHz 连接性:I2C,IrDA,智能卡,SPI,UART/USART 外设:欠压检测/复位,DMA,I2S,POR,PWM,WDT I/O 数:17 程序存储容量:32KB(32K x 8) 程序存储器类型:闪存 EEPROM 容量:- RAM 容量:4K x 8 电压 - 电源(Vcc/Vdd):1.98 V ~ 3.8 V 数据转换器:A/D 2x12b 振荡器类型:内部 工作温度:-40°C ~ 85°C(TA) 封装/外壳:24-VQFN 裸露焊盘 供应商器件封装:24-QFN(5x5) 标准包装:490
EFM32HG110F64G-A-QFN24 功能描述:ARM? Cortex?-M0+ Happy Gecko Microcontroller IC 32-Bit 25MHz 64KB (64K x 8) FLASH 24-QFN (5x5) 制造商:silicon labs 系列:Happy Gecko 包装:托盘 零件状态:有效 核心处理器:ARM? Cortex?-M0+ 核心尺寸:32-位 速度:25MHz 连接性:I2C,IrDA,智能卡,SPI,UART/USART 外设:欠压检测/复位,DMA,I2S,POR,PWM,WDT I/O 数:17 程序存储容量:64KB(64K x 8) 程序存储器类型:闪存 EEPROM 容量:- RAM 容量:8K x 8 电压 - 电源(Vcc/Vdd):1.98 V ~ 3.8 V 数据转换器:A/D 2x12b 振荡器类型:内部 工作温度:-40°C ~ 85°C(TA) 封装/外壳:24-VQFN 裸露焊盘 供应商器件封装:24-QFN(5x5) 标准包装:490
EFM32HG110F64G-B-QFN24 功能描述:ARM? Cortex?-M0+ Happy Gecko Microcontroller IC 32-Bit 25MHz 64KB (64K x 8) FLASH 24-QFN (5x5) 制造商:silicon labs 系列:Happy Gecko 包装:托盘 零件状态:在售 核心处理器:ARM? Cortex?-M0+ 核心尺寸:32-位 速度:25MHz 连接性:I2C,IrDA,智能卡,SPI,UART/USART 外设:欠压检测/复位,DMA,I2S,POR,PWM,WDT I/O 数:17 程序存储容量:64KB(64K x 8) 程序存储器类型:闪存 EEPROM 容量:- RAM 容量:8K x 8 电压 - 电源(Vcc/Vdd):1.98 V ~ 3.8 V 数据转换器:A/D 2x12b 振荡器类型:内部 工作温度:-40°C ~ 85°C(TA) 封装/外壳:24-VQFN 裸露焊盘 供应商器件封装:24-QFN(5x5) 标准包装:490