其实芯片和我们的生活场景有着很多共同之处,比如需求大于供应问题。PAD复用、仲裁等等都是因为多个输出需求只对应一个实际输出端口,这个时候选择哪个请求也是有讲究的。
在系统层面上,虚拟地址产生的原因之一也是因为软件应用的地址空间远大于实际物理空间。这个时候系统上的硬件或者软件除了需要完成业务,还要进行VA到PA的转换,让业务访问到实际的物理地址空间。
虚拟地址产生的另外一个原因就是给软件减负,在撸代码的时候不会关心变量具体存在那里,会不会和其它的地址范围发生冲突。
为了实现虚拟地址到物理地址的转换,那么就需要硬件具有格外的资源存储VA2PA的转换关系,即页表。
那么这个时候就会涉及粒度问题,对,就是最近互联网黑话“颗粒度”中的“粒度”。
我们没有必要存储那么细粒度的页表,一般是基于4KB、16KB和64KB粒度。如果是4KB粒度,VA的低12bit就等于PA的低12bit;如果是16KB粒度,VA的低14bit就等于PA的低14bit;如果是64KB粒度,VA的低16bit就等于PA的低16bit,这也是数字芯片中业务需求和硬件资源中的一种权衡。
页表中除了保存着VA到PA的转换关系,还可以保存着相应存储空间的各种属性(比如可执行、可读和可写属性)。类似于某明星将自己有限的光阴精确管理给多位朋友,并给这些朋友打上相应的标签(是否可以一起唱歌,是否可以一起跳舞,是否可以一边唱歌一边跳舞),而这些朋友们都觉得自己在独占美好光阴。
Ha,Funny~
作者:XinXin_Hu
原文链接:https://mp.weixin.qq.com/s/hpF_P7siAPYuVJzZicsZ6w
授权转自数字芯片实验室公众号,请勿二次转载。
推荐阅读
更多数字IC设计技术干货等请关注数字芯片实验室专栏。