当前位置:网站首页>Arm GIC (IV) GIC V3 register class analysis notes.
Arm GIC (IV) GIC V3 register class analysis notes.
2022-07-07 08:33:00 【Galloping tortoise】
Catalog
Life cycle disruption

- generate: The peripheral initiates an interrupt
- distribute:distributor Arbitrate the received interrupt source , And then send it to the corresponding cpu interface
- deliver:cpu interface Send interrupt to core
- activate:core By reading the GICC_IAR register , To acknowledge the interruption
- priority drop: core By writing GICC_EOIR register , To achieve priority heavy
- deactivation:core By writing GICC_DIR register , To invalidate the interrupt
The whole interruption life cycle ,distribute and deliver The distribution mechanism depends on interrupt configuration , from activate To deactivation Are the working contents of interrupt processing function . The last few blog posts have introduced in detail GIC Infrastructure . Next, try to decompose from the source code and register manual TF-A GIC V3 Driver source code , Further understanding arm gic Interrupt the whole process of the life cycle .
GIC register
gicv3 in , Many more registers , And for registers , Provides 2 Access mode , One is memory-mapped The interview of , The other is system register access :
memory-mapped Registers accessed :
- GICC: cpu interface register
- GICD: distributor register
- GICH: virtual interface Control register , stay hypervisor Mode access
- GICR: redistributor register
- GICV: virtual cpu interface register
- GITS: ITS register
Register accessed by system register :
- ICC: Physics cpu interface System register
- ICV: fictitious cpu interface System register
- ICH: fictitious cpu interface Control system register
The picture below is gicv3 in , Each register , Where it is .

For system register access gic register , It is realized in core Inside . and memory-mapped How to access gic register , Is in gic Inside .
gicv3 Architecture , There is no coercion , Register of system register access mode , It can't go through memory-mapped Way to visit . That is to say ICC, ICV, ICH register , It can also be realized in gic Inside , adopt memory-mapped Way to visit . But in general implementation , There is no such implementation .
The picture below is ICC The system register of , and memory-mepped Part of the correspondence of the mode register , Check more gicv3 Of spec.
that , The problem is coming. ,gicv3 in , Why choose to cpu interface, from gic Middle detachment , Realize in core Inside ? Why would you cpu interface The register of , Add system register access mode , Realize in core Internal ? To do so , What are the benefits ?
In my submission ,gicv3 The above arrangement , The first is to make software writing simple , Universal ; The second is to make the interrupt response faster .
First of all, understand , stay gic In the register of , Which registers , Will be frequently core Visited , Which registers , Will not be frequently core Visited . without doubt ,cpu interface The register of , Will be frequently core Visited , because core Need to access cpu interface The register of , To acknowledge the interruption , To interrupt completion , To invalid interrupt . Other registers , The configuration is interrupted , Only in core When you need to configure interrupts , Only by visiting . With this understanding , Then understand what I'm talking about , It's easier .
stay gicv2 in ,cpu interface The register of , It is realized in gic Inside , So when core When an interrupt is received , Will pass axi Bus ( hypothesis memory The bus is axi Bus ), To visit cpu interface The register of . And interrupt in a soc In the system , It will happen frequently , That means ,core Will visit frequently gic The register of , This will occupy axi Bandwidth of the bus , In general, it will affect the real-time response of interrupts , and core adopt axi Bus to access cpu interface register , Delay , It's bigger .
stay gicv3 in , take cpu interface from gic Take it out , Realize in core Inside , But not in gic in .core Yes cpu interface The interview of , Access through system registers , That is to use msr,mrs visit , that core Yes cpu interface Register access , It accelerates , And it doesn't occupy axi Bus bandwidth . such core Interrupt handling , It accelerates .
cpu interface And gic Between , Through dedicated AXI-stream Bus , To transmit information , This will not occupy AXI Bandwidth of the bus .
TF-A Interrupt configuration source code analysis
TF-A Interrupt processing source code analysis
边栏推荐
- Several ways of lambda used in functions in kotlin (higher-order functions)
- opencv学习笔记五——梯度计算/边缘检测
- Data type - integer (C language)
- Full text query classification
- 饥荒云服管理脚本
- Learn how to compile basic components of rainbow from the source code
- Splunk子查询模糊匹配csv中字段值为*
- A single game with goods increased by 100000, and the rural anchor sold men's clothes on top of the list?
- Understanding of out covariance, in inversion and invariance in kotlin
- opencv学习笔记二——图像基本操作
猜你喜欢

单元测试报告成功率低
![[quick start of Digital IC Verification] 11. Introduction to Verilog testbench (VTB)](/img/c2/32a2c1ede493b778a6c44077d765d0.png)
[quick start of Digital IC Verification] 11. Introduction to Verilog testbench (VTB)

Open3D ISS关键点

Splunk查询csv lookup table数据动态查询

Opencv learning notes 1 -- several methods of reading images

Train your dataset with swinunet

打通法律服务群众“最后一公里”,方正璞华劳动人事法律自助咨询服务平台频获“点赞”

BiSeNet的特點

Installation and configuration of PLSQL

Interpreting the practical application of maker thinking and mathematics curriculum
随机推荐
[quick start of Digital IC Verification] 14. Basic syntax of SystemVerilog learning 1 (array, queue, structure, enumeration, string... Including practical exercises)
Battery and motor technology have received great attention, but electric control technology is rarely mentioned?
Deit learning notes
Using helm to install rainbow in various kubernetes
MES系统,是企业生产的必要选择
Merge sort and non comparison sort
Opencv learning note 3 - image smoothing / denoising
Implement your own dataset using bisenet
DeiT学习笔记
下载和安装orcale database11.2.0.4
Open3D ISS关键点
Lua 编程学习笔记
21 general principles of wiring in circuit board design_ Provided by Chengdu circuit board design
饥荒云服管理脚本
JEditableTable的使用技巧
opencv学习笔记三——图像平滑/去噪处理
Golang compilation constraint / conditional compilation (/ / +build < tags>)
【雅思口语】安娜口语学习记录 Part2
2-3查找樹
Go语言中,函数是一种类型