一个微架构设计引发的思考¶
看了一个对于PMA的寄存器的设计,由此引发了一些思考和感悟
设计¶
简要描述一下这个设计,重点在寄存器号部分,它将PMA这个模块设计成了若干个组,每个组实现了三个寄存器, 属性寄存器,起始地址寄存器,结束地址寄存器,还有一个保留寄存器,大概的寄存器号分配如下
组 | 属性寄存器号 | 起始地址寄存器号 | 结束地址寄存器号 | 保留寄存器号 |
---|---|---|---|---|
0 | 3C0 | 3C1 | 3C2 | 3C3 |
1 | 3C4 | 3C5 | 3C6 | 3C7 |
2 | 3C8 | 3C9 | 3CA | 3CB |
相比大家应该看明白了,每个组都是一样的,分了若干个组
思考¶
乍看起来这没啥问题,似乎很合理。但又去看了同类型的PMP的寄存器设计,以及hpm的设计,发现同类型的寄存器都是顺序排列的,没有分组。 那如果我是微架构设计者,我会怎么选择呢?是在寄存器上明确的划分组还是像PMP一样,同类型的顺序排列? 目前,在这方面我还见的太少,也没有机会能够跟这方面的专家讨论,希望后续,随着在这个领域的学习,能够有自己的见解。
无论如何,在为架构设计方面,任何一点儿设计都能体现出是否经验充足。