STMicroelectronics STM32H5 시리즈 마이크로컨트롤러

소개
본 애플리케이션 노트에서는 STMicroelectronics가 최초로 개발한 캐시인 명령어 캐시(ICACHE)와 데이터 캐시(DCACHE)에 대해 설명합니다. Arm® Cortex®-M33 프로세서의 AHB 버스에 도입된 ICACHE 및 DCACHE는 아래 표에 나열된 STM32 마이크로컨트롤러(MCU)에 내장되어 있습니다. 이러한 캐시를 사용하면 사용자는 내부 및 외부 메모리 모두에서 명령과 데이터를 가져올 때 또는 외부 메모리에서 데이터 트래픽을 가져올 때 애플리케이션 성능을 향상하고 소비를 줄일 수 있습니다. 이 문서는 전형적인 예를 제공합니다ampICACHE 및 DCACHE 기능을 강조하고 구성을 용이하게 하는 파일입니다.
표 1. 적용 제품
| 유형 | 제품 시리즈 |
| 마이크로컨트롤러 | STM32H5 시리즈, STM32L5 시리즈, STM32U5 시리즈 |
일반 정보
메모:
이 애플리케이션 노트는 Arm® Cortex® 코어 기반 장치인 STM32 시리즈 마이크로 컨트롤러에 적용됩니다. Arm은 미국 및/또는 기타 지역에서 Arm Limited(또는 그 자회사)의 등록 상표입니다.
ICACHE 및 DCACHE 종료view
이 섹션에서는 다음을 제공합니다.view STM32 Arm® Cortex® 코어 기반 마이크로컨트롤러에 내장된 ICACHE 및 DCACHE 인터페이스. 이 섹션에서는 ICACHE 및 DCACHE 다이어그램과 시스템 아키텍처의 통합에 대해 자세히 설명합니다.
STM32L5 시리즈 스마트 아키텍처
이 아키텍처는 여러 마스터(Cortex-M33, ICACHE, DMA1/2 및 SDMMC1)가 여러 슬레이브(예: 플래시 메모리, SRAM1/2, OCTOSPI1 또는 FSMC)에 액세스할 수 있도록 하는 버스 매트릭스를 기반으로 합니다. 아래 그림은 STM32L5 시리즈 스마트 아키텍처를 설명합니다.
그림 1. STM32L5 시리즈 스마트 아키텍처

Cortex-M33 성능은 고속 버스를 통해 내부 메모리(플래시 메모리, SRAM8 또는 SRAM1)에서 코드나 데이터를 가져올 때 C-AHB 버스에 도입된 2Kbyte ICACHE 인터페이스를 사용하여 향상됩니다. 느린 버스를 통한 외부 메모리(OCTOSPI1 또는 FSMC).
STM32U5 시리즈 스마트 아키텍처
이 아키텍처는 여러 마스터(Cortex-M33, ICACHE, DCACHE, GPDMA, DMA2D 및 SDMMC, OTG_HS, LTDC, GPU2D, GFXMMU)가 여러 슬레이브(예: 플래시 메모리, SRAM, BKPSRAM, HSPI/)에 액세스할 수 있도록 하는 버스 매트릭스를 기반으로 합니다. OCTOSPI 또는 FSMC). 아래 그림은 STM32U5 시리즈 스마트 아키텍처를 설명합니다.
그림 2. STM32U5 시리즈 스마트 아키텍처

Cortex-M33과 GPU2D 인터페이스는 모두 CACHE를 사용하여 이점을 얻습니다.
- ICACHE는 고속 버스(플래시 메모리, SRAM)를 통해 내부 메모리에서, 느린 버스(OCTOSPI33/1 및 HSPI2 또는 FSMC)를 통해 외부 메모리에서 코드나 데이터를 가져올 때 Cortex-M1의 성능을 향상시킵니다. DCACHE1은 s-버스(GFXMMU, OCTOSPI1/2 및 HSPI1 또는 FSMC)를 통해 내부 또는 외부 메모리에서 데이터를 가져올 때 성능을 향상시킵니다.
- DCACHE2는 M2 포트 버스를 통해 내부 및 외부 메모리(GFXMMU, 플래시 메모리, SRAM, OCTOSPI1/2 및 HSPI1 또는 FSMC)에서 데이터를 가져올 때 GPU0D의 성능을 향상시킵니다.
STM32H5 시리즈 스마트 아키텍처
STM32H523/H533, STM32H563/H573 및 STM32H562 스마트 아키텍처 이 아키텍처는 여러 마스터(Cortex-M33, ICACHE, DCACHE, GPDMA, 이더넷 및 SDMMC)가 여러 슬레이브(예: 플래시 메모리, SRAM, BKPSRAM)에 액세스할 수 있도록 하는 버스 매트릭스를 기반으로 합니다. , OCTOSPI 및 FMC). 아래 그림은 STM32H5 시리즈 스마트 아키텍처를 설명합니다.
그림 3. STM32H563/H573 및 STM32H562 시리즈 스마트 아키텍처

Cortex-M33은 CACHE를 사용하여 이점을 얻습니다.
- ICACHE는 고속 버스(플래시 메모리, SRAM)를 통해 내부 메모리에서, 느린 버스(OCTOSPI 및 FMC)를 통해 외부 메모리에서 코드나 데이터를 가져올 때 Cortex-M33의 성능을 향상시킵니다.
- DCACHE는 느린 버스(OCTOSPI 및 FMC)를 통해 외부 메모리에서 데이터를 가져올 때 성능을 향상시킵니다.
STM32H503 스마트 아키텍처
이 아키텍처는 여러 마스터(Cortex-M33, ICACHE 및 GPDMA)가 여러 슬레이브(예: 플래시 메모리, SRAM 및 BKPSRAM)에 액세스할 수 있도록 하는 버스 매트릭스를 기반으로 합니다. 아래 그림은 STM32H5 시리즈 스마트 아키텍처를 설명합니다.
그림 4. STM32H503 시리즈 스마트 아키텍처

Cortex-M33은 CACHE를 사용하여 이점을 얻습니다.
- ICACHE는 고속 버스(플래시 메모리, SRAM)를 통해 내부 메모리에서 코드나 데이터를 가져올 때 Cortex-M33의 성능을 향상시킵니다.
ICACHE 블록 다이어그램
ICACHE 블록 다이어그램은 아래 그림에 나와 있습니다.
그림 5. ICACHE 블록 다이어그램

ICACHE 메모리에는 다음이 포함됩니다.
- 그만큼 TAG 메모리:
- 주소 tags 캐시 데이터 메모리에 어떤 데이터가 포함되어 있는지를 나타냅니다.
- 유효성 비트
- 캐시된 데이터가 포함된 데이터 메모리
DCACHE 블록 다이어그램
DCACHE 블록 다이어그램은 아래 그림에 나와 있습니다.
그림 6. DCACHE 블록 다이어그램

DCACHE 메모리에는 다음이 포함됩니다.
- 그만큼 TAG 메모리:
- 주소 tags 캐시 데이터 메모리에 어떤 데이터가 포함되어 있는지를 나타냅니다.
- 유효성 비트
- 특권 비트
- 더러운 비트
- 캐시된 데이터가 포함된 데이터 메모리
ICACHE 및 DCACHE 기능
듀얼 마스터
ICACHE는 다음 중 하나를 통해 AHB 버스 매트릭스에 액세스합니다.
- AHB 마스터 포트 1개: masterXNUMX(고속 버스)
- AHB 마스터 포트 1개: master2(고속 버스) 및 masterXNUMX(느린 버스)
이 기능을 사용하면 캐시 누락으로 인한 CPU 정지를 줄이기 위해 다양한 메모리 영역(예: 내부 플래시 메모리, 내부 SRAM 및 외부 메모리)에 액세스할 때 트래픽을 분리할 수 있습니다. 다음 표에는 메모리 영역과 해당 주소가 요약되어 있습니다.
표 2. 메모리 영역 및 해당 주소
| 주변 장치 | 캐시 가능한 메모리 액세스 | 캐시할 수 없는 메모리 액세스 | |||||||
|
유형 |
이름 |
제품 이름 및 지역 크기 |
버스 이름 |
비보안 지역 시작 주소 |
보안, 비보안 호출 가능 지역 시작 주소 |
버스 이름 |
비보안 지역 시작 주소 |
보안, 비보안 호출 가능 지역 시작 주소 | |
|
내부 |
플래시 |
STM32H503 | 128킬로바이트 |
ICACHE 빠른 버스 |
0x0800 0000 |
없음 |
없음 |
없음 |
없음 |
| STM32L5
시리즈/ STM32U535/ 545/ STM32H523/ 533 |
512킬로바이트 |
0x0C00 0000 |
|||||||
| STM32U575/585
STM32H563/573/562 |
2메가바이트 |
||||||||
| STM32U59x/
5Ax/5Fx/5Gx |
4메가바이트 | ||||||||
|
스램1 |
STM32H503 | 16킬로바이트 |
0x0A00 0000 |
없음 |
S-버스 |
0x2000 0000 |
0x3000 0000 |
||
| STM32L5
series/ STM32U535/ 545/575/585 |
192킬로바이트 |
0x0E00 0000 |
|||||||
| STM32H523/533 | 128킬로바이트 | ||||||||
| STM32H563/573/562 | 256킬로바이트 | ||||||||
| STM32U59x/
5Ax/5Fx/5Gx |
768킬로바이트 | ||||||||
|
스램2 |
STM32H503
시리즈 |
16킬로바이트 | 0x0A00 4000 | 없음 | 0x2000 4000 | 없음 | |||
| STM32L5
series/ STM32U535/ 545/575/585 |
64킬로바이트 |
0x0A03 0000 |
0x0E03 0000 |
0x2003 0000 |
0x3003 0000 |
||||
| STM32H523/533 | 64킬로바이트 |
0x0A04 0000 |
0x0E04 0000 |
0x2004 0000 |
0x3004 0000 |
||||
| 주변 장치 | 캐시 가능한 메모리 액세스 | 캐시할 수 없는 메모리 액세스 | |||||||
|
내부 |
스램2 |
STM32H563/573/562 | 80킬로바이트 |
ICACHE 빠른 버스 |
0x0A04 0000 | 0x0E04 0000 |
S-버스 |
0x2004 0000 | 0x3004 0000 |
| STM32U59x/
5Ax/5Fx/5Gx |
64킬로바이트 | 0x0A0C 0000 | 0x0E0C 0000 | 0x200C 0000 | 0x300C 0000 | ||||
|
스램3 |
STM32U575/585 | 512킬로바이트 | 0x0A04 0000 | 0x0E04 0000 | 0x2004 0000 | 0x3004 0000 | |||
| STM32H523/533 | 64킬로바이트 |
0x0A05 0000 |
0x0E05 0000 |
0x2005 0000 |
0x3005 0000 |
||||
| STM32H563/573/562 | 320킬로바이트 | ||||||||
| STM32U59x/
5Ax/5Fx/5Gx |
832킬로바이트 | 0x0A0D 0000 | 0x0E0D 0000 | 0x200D 0000 | 0x300D 0000 | ||||
| 스램5 | STM32U59x/
5Ax/5Fx/5Gx |
832킬로바이트 | 0x0A1A 0000 | 0x0E1A 0000 | 0x201A 0000 | 0x301A 0000 | |||
| 스램6 | STM32U5Fx/
5Gx |
512킬로바이트 | 0x0A27 0000 | 0x0E27 0000 | 0x2027 0000 |
없음 |
|||
|
외부 |
HSPI1 | STM32U59x/
5Ax/5Fx/5Gx |
256메가바이트 |
ICACHE 느린 버스 |
[0x0000 0000 범위의 별칭 주소 0x07FF FFFF] 또는 [0x1000 0000:0x1FFF FFFF] 리매핑 기능을 통해 정의 |
없음 |
0xA000 0000 | ||
| FMC SDRAM | STM32H563/573/562 | 0xC000 0000 | |||||||
|
옥토스피1 비보안 은행 |
STM32L5/U5
시리즈 STM32H563/573/562 |
0x9000 0000 |
|||||||
|
FMC 은행 3 안전하지 않은 |
STM32L5/U5
시리즈 STM32H563/573/562 |
0x8000 0000 |
|||||||
| 옥토스피2
비보안 은행 |
STM32U575/
585/59x/5축/ 5Fx/5Gx |
0x7000 0000 |
|||||||
|
FMC 은행 1 안전하지 않은 |
STM32L5/U5
시리즈 STM32H563/573/562 |
0x6000 0000 |
|||||||
1. 해당 지역을 다시 매핑할 때 선택됩니다.
단방향 대 양방향 ICACHE
기본적으로 ICACHE는 연관 작동 모드(양방향 활성화)로 구성되지만 매우 낮은 전력 소비가 필요한 애플리케이션의 경우 직접 매핑 모드(단방향 활성화)로 ICACHE를 구성할 수도 있습니다. ICACHE 구성은 다음과 같이 ICACHE_CR의 WAYSEL 비트를 사용하여 수행됩니다.
- WAYSEL = 0: 직접 매핑된 작동 모드(단방향)
- WAYSEL = 1(기본값): 연관 작동 모드(2-way)
표 3. 단방향 ICACHE와 양방향 ICACHE
| 매개변수 | 단방향 ICACHE | 단방향 ICACHE |
| 캐시 크기(KB) | 8 (1) /32 (2) | |
| 다양한 방법으로 캐시 | 1 | 2 |
| 캐시 라인 크기 | 128비트(16바이트) | |
| 캐시 라인 수 | 512 (1) /2048 (2) | 편도당 256(1)/1024(2) |
- STM32L5 시리즈/STM32H5 시리즈/STM32U535/545/575/585용
- For STM32U59x/5Ax/5Fx/5Gx
버스트 유형
일부 Octo-SPI 메모리는 중요한 단어 우선 기능 성능의 이점을 제공하는 WRAP 버스트를 지원합니다. 재매핑된 영역에 대한 AHB 메모리 트랜잭션의 ICACHE 버스트 유형을 구성할 수 있습니다. ICACHE_CRRx 레지스터의 HBURST 비트로 선택된 증분 버스트 또는 WRAP 버스트를 구현합니다. WRAP과 증분 버스트의 차이점은 다음과 같습니다(그림 참조).
- 랩 버스트:
- 캐시 라인 크기 = 128비트
- 시작 주소로 버스트 = CPU가 요청한 첫 번째 데이터의 워드 주소
- 증분 버스트:
- 캐시 라인 크기 = 128비트
- 버스트 시작 주소 = 요청된 단어가 포함된 캐시 라인의 경계에 정렬된 주소
그림 7. 증분 대 WRAP 버스트

캐시 가능 영역 및 리매핑 기능
ICACHE는 C-AHB 버스를 통해 Cortex-M33과 연결되며 주소 [0x0000 0000 ~ 0x1FFF FFFF]의 코드 영역을 캐시합니다. 외부 메모리는 [0x6000 0000 ~ 0xAFFF FFFF] 범위의 주소에 매핑되므로 ICACHE는 모든 외부 메모리 영역을 [0x0000 0000 ~ 0x07FF FFFF] 범위의 주소에 다시 매핑할 수 있도록 하는 리맵 기능을 지원합니다. [0x1000 0000 to 0x1FFF FFFF], C-AHB 버스를 통해 접근 가능합니다. 이 기능을 사용하면 최대 32개의 외부 메모리 영역을 다시 매핑할 수 있습니다. 영역이 다시 매핑되면 ICACHE가 비활성화되거나 트랜잭션을 캐시할 수 없는 경우에도 다시 매핑 작업이 수행됩니다. 캐시 가능한 메모리 영역은 메모리 보호 장치(MPU)에서 사용자가 정의하고 프로그래밍할 수 있습니다. 아래 표에는 STM5L32 및 STM5UXNUMX 시리즈 메모리의 구성이 요약되어 있습니다.
표 4. STM32L5 및 STM32U5 시리즈 메모리 구성
|
제품 메모리 |
캐시 가능
(MPU 프로그래밍) |
ICACHE에서 다시 매핑됨
(ICACHE_CRRx 프로그래밍) |
| 플래시 메모리 | 예 또는 아니오 |
필요하지 않음 |
| 에스램 | 추천하지 않습니다 | |
| 외부 메모리(HSPI/OCTOSPI 또는 FSMC) | 예 또는 아니오 | 사용자가 C-AHB 버스(다른 S-AHB 버스)에서 외부 코드 가져오기를 원하는 경우 필요합니다. |
ICACHE 외부 메모리 재매핑의 이점
전직amp아래 그림의 파일은 외부 8MB 외부 Octo-SPI 메모리(예: 외부 플래시 메모리 또는 RAM)에 액세스할 때 코드 실행 또는 데이터 읽기 중에 ICACHE 향상된 성능을 활용하는 방법을 보여줍니다.
그림 8. Octo-SPI 메모리 재맵핑 예시ample

이 외부 메모리를 다시 매핑하려면 다음 단계가 필요합니다.
외부 메모리에 대한 OCTOSPI 구성
Memory Mapped 모드에서 외부 메모리에 접근하기 위해 OCTOSPI 인터페이스를 구성합니다. (외부 메모리는 [0x9000 0000 to 0x9FFF FFFF] 영역에 매핑된 내부 메모리로 보입니다.) 외부 메모리 크기가 8Mbyte이므로 [0x9000 0000~0x907F FFFF] 영역에서 나타난다. 이 영역의 외부 메모리는 S-버스를 통해 액세스되며 캐시할 수 없습니다. 다음 단계에서는 이 지역을 다시 매핑하기 위한 ICACHE 구성을 보여줍니다.
메모: 메모리 매핑 모드의 OCTOSPI 구성에 대해서는 STM32 마이크로컨트롤러(AN5050)의 Octo‑ SPI 인터페이스 애플리케이션 노트를 참조하세요.
외부 메모리 매핑된 영역을 다시 매핑하는 ICACHE 구성
[8x0 9000 ~ 0000x0F FFFF] 영역에 있던 907MB는 [0x1000 0000 ~ 0x107F FFFF] 영역으로 다시 매핑됩니다. 그런 다음 느린 버스(ICACHE master2 버스)를 통해 액세스할 수 있습니다.
- ICACHE_CR 레지스터 구성
- EN = 0으로 ICACHE를 비활성화합니다.
- 각각 WAYSEL = 1 또는 2을 사용하여 단방향 또는 양방향(애플리케이션 요구 사항에 따라)을 선택합니다.
- ICACHE_CRRx 레지스터 구성(최대 0개 지역, x = 3 ~ XNUMX)
- BASEADDR [0:1000] = 0000x28으로 21x0 80 기본 주소(재매핑 주소)를 선택합니다.
- RSIZE[8:2] = 0x0으로 다시 매핑할 3MB 영역 크기를 선택합니다.
- 0x9000 0000 재매핑된 주소 REMAPADDR[31:21] = 0x480을 선택합니다.
- MSTSEL = 2인 외부 메모리의 경우 ICACHE AHB master1 포트를 선택합니다.
- HBURST = 0인 WRAP 버스트 유형을 선택합니다.
- REN = 1로 지역 x에 대한 재매핑을 활성화합니다.
다음 그림은 재매핑을 활성화한 후 IAR을 통해 메모리 영역이 어떻게 표시되는지 보여줍니다.
그림 9. 메모리 영역 재매핑 example

이제 8MB 외부 메모리가 다시 매핑되어 [0x1000 0000 ~ 0x107F FFFF] 영역을 통해 액세스할 수 있습니다.
ICACHE 활성화
- ICACHE_CR 레지스터 구성 EN = 1로 ICACHE를 활성화합니다.
적중률 모니터
ICACHE는 성능 분석을 위해 32비트 적중 모니터와 16비트 미스 모니터라는 두 가지 모니터를 제공합니다.
- 적중 모니터는 ICACHE 콘텐츠(캐시에서 이미 사용 가능한 가져온 데이터)에 적중하는 슬레이브 캐시 포트에서 캐시 가능한 AHB 트랜잭션을 계산합니다. 적중 모니터 카운터는 ICACHE_HMONR 레지스터에서 사용할 수 있습니다.
- 미스 모니터는 ICACHE 콘텐츠(가져온 데이터는 아직 캐시에서 사용할 수 없음)가 누락된 슬레이브 캐시 포트의 캐시 가능한 AHB 트랜잭션을 계산합니다. 누락된 모니터 카운터는 ICACHE_MMONR 레지스터에서 사용할 수 있습니다.
메모:
이 두 모니터는 최대값에 도달해도 랩오버되지 않습니다. 이러한 모니터는 ICACHE_CR 레지스터의 다음 비트에서 관리됩니다.
- 히트(각각 미스) 모니터를 활성화/중지하는 HITMEN 비트(각각 MISSMEN 비트)
- 히트(각각 미스) 모니터를 재설정하기 위한 HITMRST 비트(각각 MISSMRST 비트) 기본적으로 이러한 모니터는 전력 소비를 줄이기 위해 비활성화됩니다.
ICACHE 유지 관리
소프트웨어는 ICACHE_CR 레지스터의 CACHEINV 비트를 설정하여 ICACHE를 무효화할 수 있습니다. 이 작업을 수행하면 전체 캐시가 무효화되어 비어 있게 됩니다. 한편, 일부 재매핑된 영역이 활성화된 경우 ICACHE가 비활성화된 경우에도 재매핑 기능은 계속 활성화됩니다. ICACHE는 읽기 트랜잭션만 관리하고 쓰기 트랜잭션은 관리하지 않기 때문에 쓰기 시 일관성을 보장하지 않습니다. 결과적으로 소프트웨어는 지역을 프로그래밍한 후 ICACHE를 무효화해야 합니다.
ICACHE 보안
ICACHE는 GTZC TZSC 보안 구성 레지스터를 통해 보안으로 구성할 수 있는 보안 가능한 주변 장치입니다. 보안으로 구성되면 ICACHE 레지스터에 대한 보안 액세스만 허용됩니다. ICACHE는 GTZC TZSC 권한 구성 레지스터를 통해 권한이 부여되도록 구성할 수도 있습니다. ICACHE가 권한 있는 것으로 구성되면 ICACHE 레지스터에 대한 권한 있는 액세스만 허용됩니다. 기본적으로 ICACHE는 GTZC TZSC를 통해 비보안 및 권한이 없습니다.
이벤트 및 인터럽트 관리
ICACHE는 ICACHE_SR에 ERRF 플래그를 설정하여 감지된 기능 오류를 관리합니다. ICACHE_IER에 ERRIE 비트가 설정된 경우에도 인터럽트가 생성될 수 있습니다. ICACHE 무효화의 경우 캐시 사용 상태가 완료되면 ICACHE_SR에 BSYENDF 플래그가 설정됩니다. ICACHE_IER에 BSYENDIE 비트가 설정된 경우에도 인터럽트가 생성될 수 있습니다. 아래 표에는 ICACHE 인터럽트 및 이벤트 플래그가 나열되어 있습니다.
표 5. ICACHE 인터럽트 및 이벤트 관리 비트
| 등록하다 | 비트 이름 | 비트 설명 | 비트 액세스 유형 |
|
ICACHE_SR |
바쁜 | 전체 무효화 작업을 실행하는 캐시 |
읽기 전용 |
| BSYENDF | 캐시 무효화 작업이 완료되었습니다. | ||
| 오류 | 캐싱 작업 중 오류가 발생했습니다. | ||
|
ICACHE_IER |
에리 | 캐시 오류에 대한 인터럽트 활성화 |
읽기/쓰기 |
| 비센디 | 무효화 작업이 완료된 경우 인터럽트 활성화 | ||
|
ICACHE_FCR |
CERRF | ICACHE_SR에서 ERRF를 지웁니다. |
쓰기 전용 |
| CBSYENDF | ICACHE_SR에서 BSYENDF를 지웁니다. |
DCACHE 기능
데이터 캐시의 목적은 프로세서나 다른 버스 마스터 주변 장치에서 나오는 외부 메모리 데이터 로드와 데이터 저장소를 캐시하는 것입니다. DCACHE는 읽기 및 쓰기 트랜잭션을 모두 관리합니다.
DCACHE 캐시 가능성 트래픽
DCACHE는 AHB 버스를 통해 마스터 포트 인터페이스의 외부 메모리를 캐시합니다. 들어오는 메모리 요청은 AHB 트랜잭션 메모리 잠금 속성에 따라 캐시 가능한 것으로 정의됩니다. DCACHE 쓰기 정책은 MPU에서 구성한 메모리 속성에 따라 연속 쓰기 또는 후기입으로 정의됩니다. 지역이 캐시 불가능으로 구성되면 DCACHE가 우회됩니다.
표 6. AHB 트랜잭션에 대한 DCACHE 캐시 가능성
| AHB 조회 속성 | AHB 버퍼링 가능 속성 | 캐시 가능성 |
| 0 | X | 읽기 및 쓰기: 캐시 불가능 |
|
1 |
0 |
읽기: 캐시 가능
쓰기: (캐시 가능) 연속 쓰기 |
|
1 |
1 |
읽기: 캐시 가능
쓰기: (캐시 가능) 다시 쓰기 |
DCACHE 캐시 가능 영역
STM32U5 시리즈의 경우 DCACHE1 슬레이브 인터페이스는 S-AHB 버스를 통해 Cortex-M33에 연결되고 GFXMMU, FMC 및 HSPI/OCTOSPI를 캐시합니다. DCACHE2 슬레이브 인터페이스는 M2 포트 버스를 통해 DMA0D에 연결되며 모든 내부 및 외부 메모리(SRAM4 및 BRKPSRAM 제외)를 캐시합니다. STM32H5 시리즈의 경우 DCACHE 슬레이브 인터페이스는 FMC 및 OCTOSPI를 통해 S-AHB 외부 메모리를 통해 Cortex-M33에 연결됩니다.
표 7. DCACHE 캐시 가능 영역 및 인터페이스
| 캐시 가능한 메모리 주소 영역 | DCACHE1 캐시 가능 인터페이스 | DCACHE2 캐시 가능 인터페이스 |
| GFXMMU | X | X |
| 스램1 |
없음 |
X |
| 스램2 | X | |
| 스램3 | X | |
| 스램5 | X | |
| 스램6 | X | |
| HSPI1 | X | X |
| 옥토스피1 | X | X |
| FMC 은행 | X | X |
| 옥토스피2 | X | X |
메모
일부 인터페이스는 특정 제품에서 지원되지 않습니다. 그림 1 또는 특정 제품 참조 매뉴얼을 참조하십시오.
버스트 유형
ICACHE와 마찬가지로 DCACHE는 증분 버스트 및 래핑 버스트를 지원합니다(섹션 3.1.3 참조). DCACHE의 경우 버스트 유형은 DCACHE_CR의 HBURST 비트를 통해 구성됩니다.
DCACHE 구성
부팅하는 동안 DCACHE는 기본적으로 비활성화되어 슬레이브 메모리 요청이 마스터 포트로 직접 전달됩니다. DCACHE를 활성화하려면 DCACHE_CR 레지스터에 EN 비트를 설정해야 합니다. Hit-and-miss 모니터 DCACHE는 캐시 성능 분석을 위해 4개의 모니터를 구현합니다.
- 32개의 XNUMX비트(R/W) 히트 모니터: CPU가 DCACHE 마스터 포트(캐시에서 이미 사용 가능한 데이터)에서 트랜잭션을 생성하지 않고 캐시 메모리에서 데이터를 읽거나 쓰는 횟수를 계산합니다. (R/W) 히트 모니터 카운터는 DCACHE_RHMONR 및 DCACHE_WHMONR 레지스터에서 각각 사용할 수 있습니다.
- 16개의 XNUMX비트(R/W) 미스 모니터: 메모리 영역에서 데이터를 로드하기 위해 CPU가 캐시 메모리에서 데이터를 읽거나 쓰고 DCACHE 마스터 포트에서 트랜잭션을 생성하는 횟수를 계산합니다. 이미 캐시에서 사용 가능). (R/W) 미스 모니터 카운터는 DCACHE_RMMONR 및 DCACHE_WMMONR 레지스터에서 각각 사용할 수 있습니다.
메모:
이 4개의 모니터는 최대값에 도달해도 랩오버되지 않습니다. 이러한 모니터는 DCACHE_CR 레지스터의 다음 비트에서 관리됩니다.
- 쓰기 적중(각각 누락) 모니터를 활성화/중지하는 WHITMAN 비트(각각 WMISSMEN 비트)
- 읽기 적중(각각 누락) 모니터를 활성화/중지하는 RHITMEN 비트(각각 RISSMEN 비트)
- 쓰기 적중(각각 누락) 모니터를 재설정하는 WHITMRST 비트(각각 WMISSMRST 비트)
- 읽기 적중(각각 누락) 모니터를 재설정하는 RHITMRST 비트(각각 RMISSMRST 비트)
기본적으로 이러한 모니터는 전력 소비를 줄이기 위해 비활성화되어 있습니다.
DCACHE 유지 관리
DCACHE는 DCACHE_CR의 CACHECMD[2:0]을 통해 구성할 수 있는 여러 유지 관리 작업을 제공합니다.
- 000: 작업 없음(기본값)
- 001: 깨끗한 범위. 캐시의 특정 범위를 정리합니다.
- 010: 범위를 무효화합니다. 캐시의 특정 범위를 무효화
- 010: 범위를 정리하고 무효화합니다. 캐시의 특정 범위를 정리하고 무효화합니다.
선택한 범위는 다음을 통해 구성됩니다.
- CMDSTARTADDR 레지스터: 명령 시작 주소
- CMDENDADDR 레지스터: 명령 종료 주소
메모:
이 레지스터는 CACHECMD가 기록되기 전에 설정되어야 합니다. 캐시 명령 유지 관리는 STARTCMD 비트가 DCACHE_CR 레지스터에 설정되면 시작됩니다. DCACHE는 또한 DCACHE_CR 레지스터에 CACHEINV 비트를 설정하여 전체 CACHE 무효화를 지원합니다.
DCACHE 보안
DCACHE는 GTZC TZSC 보안 구성 레지스터를 통해 보안으로 구성할 수 있는 보안 주변 장치입니다. 보안으로 구성되면 DCACHE 레지스터에 대한 보안 액세스만 허용됩니다. DCACHE는 GTZC TZSC 권한 구성 레지스터를 통해 권한 있는 것으로 구성될 수도 있습니다. DCACHE가 권한 있는 것으로 구성되면 DCACHE 레지스터에 대한 권한 있는 액세스만 허용됩니다. 기본적으로 DCACHE는 안전하지 않으며 GTZC TZSC를 통해 권한이 부여되지 않습니다.
이벤트 및 인터럽트 관리
DCACHE는 DCACHE_SR에 ERRF 플래그를 설정하여 감지된 기능 오류를 관리합니다. DCACHE_IER에 ERRIE 비트가 설정된 경우에도 인터럽트가 생성될 수 있습니다. DCACHE 무효화의 경우 캐시 비지 상태가 끝나면 DCACHE_SR에 BSYENDF 플래그가 설정됩니다. DCACHE_IER에 BSYENDIE 비트가 설정된 경우에도 인터럽트가 생성될 수 있습니다. DCACHE 명령 상태는 DCACHE_SR을 통해 CMDENF, BUSYCMDF를 통해 확인할 수 있습니다. DCACHE_IER에 CMDENDIE 비트가 설정된 경우에도 인터럽트가 발생할 수 있습니다. 아래 표에는 DCACHE 인터럽트 및 이벤트 플래그가 나열되어 있습니다.
표 8. DCACHE 인터럽트 및 이벤트 관리 비트
| 등록하다 | 등록하다 | 비트 설명 | 비트 액세스 유형 |
|
DCACHE_SR |
바쁜 | 전체 무효화 작업을 실행하는 캐시 |
읽기 전용 |
| BSYENDF | 캐시 가득 참 무효화 작업이 종료되었습니다. | ||
| 바쁜CMDF | 범위 명령을 실행하는 캐시 | ||
| CMDENDF | 범위 명령 종료 | ||
| 오류 | 캐싱 작업 중 오류가 발생했습니다. | ||
|
DCACHE_IER |
에리 | 캐시 오류에 대한 인터럽트 활성화 |
읽기/쓰기 |
| 명령디 | 범위 명령 종료 시 인터럽트 활성화 | ||
| 비센디 | 전체 무효화 작업 종료 시 인터럽트 활성화 | ||
|
DCACHE_FCR |
CERRF | DCACHE_SR에서 ERRF를 지웁니다. |
쓰기 전용 |
| CCMENDF | DCACHE_SR에서 CMDENDF를 지웁니다. | ||
| CBSYENDF | DCACHE_SR에서 BSYENDF를 지웁니다. |
ICACHE 및 DCACHE 성능 및 전력 소비
ICACHE 및 DCACHE를 사용하면 외부 메모리에 액세스할 때 애플리케이션 성능이 향상됩니다. 다음 표는 외부 메모리에 액세스할 때 CoreMark® 실행에 대한 ICACHE 및 DCACHE의 영향을 보여줍니다.
표 9. 외부 메모리를 사용한 CoreMark 실행 시 ICACHE 및 DCACHE 성능
| (1) | ||||
| 코어마크 코드 | 코어마크 데이터 | ICACHE 구성 | DCACHE 구성 | CoreMark 점수/Mhz |
| 내부 플래시 메모리 | 내부 SRAM | 활성화됨(양방향) | 장애가 있는 | 3.89 |
| 내부 플래시 메모리 | 외부 Octo-SPI PSRAM(S버스) | 활성화됨(양방향) | 활성화됨 | 3.89 |
| 내부 플래시 메모리 | 외부 Octo-SPI PSRAM(S버스) | 활성화됨(양방향) | 장애가 있는 | 0.48 |
| 외부 Octo-SPI 플래시(C 버스) | 내부 SRAM | 활성화됨(양방향) | 장애가 있는 | 3.86 |
| 외부 Octo-SPI 플래시(C 버스) | 내부 SRAM | 장애가 있는 | 장애가 있는 | 0.24 |
| 내부 플래시 메모리 | 내부 SRAM | 장애가 있는 | 장애가 있는 | 2.69 |
시험 조건:
- 적용 제품: STM32U575/585
- 시스템 주파수: 160MHz.
- 외부 Octo-SPI PSRAM 메모리: 80MHz(DTR 모드).
- 외부 Octo-SPI 플래시 메모리: 80MHz(STR 모드).
- 컴파일러: IAR V8.50.4.
- 내부 플래시 프리페치: ON.
ICACHE 및 DCACHE를 사용하면 내부 및 외부 메모리에 액세스할 때 전력 소비가 줄어듭니다. 다음 표는 CoreMark 실행 중 ICACHE가 전력 소비에 미치는 영향을 보여줍니다.
표 10. CoreMark 실행 ICACHE가 전력 소비에 미치는 영향
| ICACHE 구성 | MCU 전력 소비(mA) |
| 활성화됨(양방향) | 7.60 |
| 활성화됨(단방향) | 7.13 |
| 장애가 있는 | 8.89 |
- 시험 조건:
- 적용 제품: STM32U575/585
- CoreMark 코드: 내부 플래시 메모리.
- CoreMark 데이터: 내부 SRAM.
- 내부 플래시 메모리 PREFETCH: ON.
- 시스템 주파수: 160MHz.
- 컴파일러: IAR V8.32.2.
- 권tage 범위: 1.
- SMPS: 켜짐.
- 캐시에 완전히 로드할 수 없는 코드에 대해서는 방향 집합 연관 구성이 단방향 집합 연관 구성보다 성능이 더 좋습니다. 한편, 1방향 집합 연관 캐시는 거의 항상 1방향 집합 연관 캐시보다 전력 효율적입니다. 성능과 전력 소비 사이에서 최상의 균형점을 선택하려면 두 가지 연관성 구성에서 각 코드를 평가해야 합니다. 선택은 사용자 우선순위에 따라 달라집니다.
결론
STMicroelectronics가 개발한 최초의 캐시인 ICACHE 및 DCACHE는 내부 및 외부 메모리를 캐시할 수 있어 데이터 트래픽 및 명령 가져오기에 대한 성능 향상을 제공합니다. 이 문서에서는 ICACHE 및 DCACHE가 지원하는 다양한 기능, 구성 단순성과 유연성을 통해 개발 비용을 낮추고 출시 시간을 단축할 수 있음을 보여줍니다.
개정 내역
표 11. 문서 개정 내역
| 날짜 | 버전 | 변화 |
| 10년 2019월 XNUMX일 | 1 | 최초 출시. |
|
27-2020-XNUMX |
2 |
업데이트됨:
• 표 2. 메모리 영역 및 해당 주소 • 섹션 2.1.7 ICACHE 유지 관리 • 섹션 2.1.8 ICACHE 보안 |
|
7-2021-XNUMX |
3 |
업데이트됨:
• 문서 제목 • 소개 • 섹션 1 ICACHE 및 DCACHE 이상view • 섹션 4 결론이 추가되었습니다: • 섹션 2 ICACHE 및 DCACHE 기능 • 섹션 3 ICACHE 및 DCACHE 성능 및 전력 소비 |
|
15-2023-XNUMX |
4 |
업데이트됨:
• 섹션 2.2: STM32U5 시리즈 스마트 아키텍처 |
|
11년 2024월 XNUMX일 |
5 |
업데이트됨: |
중요 공지 – 주의 깊게 읽어보세요
STMicroelectronics NV 및 그 자회사("ST")는 통지 없이 언제든지 ST 제품 및/또는 이 문서를 변경, 수정, 향상, 수정 및 개선할 수 있는 권리를 보유합니다. 구매자는 주문하기 전에 ST 제품에 대한 최신 관련 정보를 얻어야 합니다. ST 제품은 주문 승인 당시의 ST 판매 약관에 따라 판매됩니다. ST 제품의 선택, 선택 및 사용에 대한 책임은 전적으로 구매자에게 있으며, ST는 구매자 제품의 애플리케이션 지원이나 설계에 대해 어떠한 책임도 지지 않습니다. ST는 지적 재산권에 대해 명시적이든 묵시적이든 어떠한 라이센스도 부여하지 않습니다. 여기에 명시된 정보와 다른 조항을 적용하여 ST 제품을 재판매할 경우 해당 제품에 대해 ST가 부여한 보증이 무효화됩니다. ST 및 ST 로고는 ST의 상표입니다. ST 상표에 대한 추가 정보는 www.st.com/trademarks를 참조하십시오. 기타 모든 제품 또는 서비스 이름은 해당 소유자의 자산입니다. 이 문서의 정보는 이 문서의 이전 버전에서 이전에 제공된 정보를 대체하고 대체합니다. © 2024 STMicroelectronics – 판권 소유
문서 / 리소스
![]() |
STMicroelectronics STM32H5 시리즈 마이크로컨트롤러 [PDF 파일] 사용자 매뉴얼 STM32H5 시리즈 마이크로컨트롤러, STM32H5, 시리즈 마이크로컨트롤러, 마이크로컨트롤러 |

