2편에서 분석한 결과 해당 어셈블리를 그대로 쓰면 될 것이라고 판단했다.
먼저 개인적인 호기심으로 현재 내 시스템에서 clidr_el1, ccsid_el1(level1), ccsid_el1(level2)가 궁금해서 asm 코딩을 통해서 뽑아보기로 하였다.
필자의 실험 환경은 xilnx의 ZCU102보드이며, 해당 보드는 ARM cortex-A53 프로세서를 사용한다.
cortex-A53은 16-way의 1MB L2 캐시를 가지고 있다고 스펙에 적혀있다[1]. 과연 진짜 그럴까?

출력: clidr: 0xa200023, ccsid_l1: 0x700fe01a, ccsid_l2: 0x707fe07a
1. CLIDR_EL1

종류 | 값 | 설명 |
ICB | 000(0) | 비공개 |
LoUU | 001(1) | 2레벨부터 unification cache이라는 소리 |
LoC | 010(2) | Consistency를 맞추기 위해서 3레벨(main memory)까지 데이터를 내려야된다 |
LoUIS | 001(1) | 2레벨부터 unification cache이라는 소리 |
Ctype2 | 100(4) | Instruction, Data 통합 캐시(l2) |
Ctype1 | 011(3) | Instruction, Data 분리 캐시(l1) |
2. CCSID_EL1

2.1 level1(0x700fe01a)
종류 | 값 | 설명 |
WT | 0 | |
WB | 1 | Support write-back |
RA | 1 | Support Read-allocation |
WA | 1 | Support Write-allocation |
NumSets-1 | 000_0000_0111_1111(127) | 128 set |
Associativity-1 | 00_0000_0011(3) | 4 associativity |
LineSize(word log2)-2 | 010(2) | Line = 16word = 64byte |
총 용량 = 128*4*64 = 32KB
2.2 level2(0x707fe07a)
종류 | 값 | 설명 |
WT | 0 | |
WB | 1 | Support write-back |
RA | 1 | Support Read-allocation |
WA | 1 | Support Write-allocation |
NumSets-1 | 000_0011_1111_1111(1023) | 1024 set |
Associativity-1 | 00_0000_1111(15) | 16 associativity |
LineSize(word log2)-2 | 010(2) | Line = 16word = 64byte |
총 용량 = 1024*16*64 = 1MB
3. SCTLR_EL1(0x34d5d91d)
시스템의 권환등의 컨트롤을 하는 레지스터이다.




4. CPUACTLR_EL1(0x90ca000)




ctr_el0(0x84448004)
참조
[1]https://www.xilinx.com/support/documentation/data_sheets/ds891-zynq-ultrascale-plus-overview.pdf
댓글