• 已解决 73482 个问题
  • 已帮助 5993 位优秀工程师

带MMU的CPU,外设寄存器,SMMU,TLB?

沃尔夫斯堡的羊 2021-08-21 浏览量:873

单片机中可以直接对外设寄存器进行配置,这是大部分MCU系统中物理地址,MCU可以直接配置外设寄存器,从而使外设直接工作,

而在CPU的SoC中,为什么有时对外设进行配置,需要配置外设的类似于TLB转换功能的寄存器,外设自行通过这个寄存器中虚拟地址和物理地址转换找到对应的数据存储地址进行工作,比如某些带TLB/SMMU的外设,这是为什么呢?

个人猜想,对于整个物理地址空间,CPU和外设的视图不一样?CPU看到的是虚拟地址空间,外设看到的是物理地址空间,二者不统一,如果CPU直接配置外设寄存器,配置的是虚拟地址,外设无法正确工作,所以需要配置外设的寄存器SMMU表,让外设自己去工作?可是,CPU是如何找到外设的寄存器的呢,外设寄存器会通过总线映射到CPU的虚拟地址空间?

0 0 收起

我来回答

上传资料:
选择文件 文件大小不超过15M(格式支持:doc、ppt、xls、pdf、zip、rar、txt)
最佳答案
  • 我个人觉得因为这样,开发操作系统才能更高效,毕竟这样的CPU都是运行在有操作系统的环境中,当前的操作系统都要完成很复杂的工作,包括各种不同类型硬件的支持,可能大部分的硬件并不需要特别高的内存处理操作,但个别的可能涉及大量数据交换,为了更高效完成一些任务,就需要特殊的权限处理,这包括了类似硬件特殊寄存器映射之类的操作。


    此外,我认为一些细节会在操作系统层面进行处理,但也涉及到系统总线之类的操作,其实对于CPU执行指令来是,无所谓数据具体在那个地方,只要有合理的前置处理,相关数据已经直接放置在寄存器中,或者在寄存器中放置某个引用位置,都可以获取到数据,这就是说,要么CPU执行时直接在寄存器中取得数据(大多数情况),要么通过直接寄存器获取到一个外设硬件映射的独立外设寄存器地址引用,从而获取数据而已。

    • 发布于 2021-08-22
    • 举报
    • 评论 0
    • 0
    • 0

其他答案 数量:0

相关问题

问题达人换一批

带MMU的CPU,外设寄存器,SMMU,TLB?