• 在ARM架构中,内存、IO外设都处于同一个地址空间;对于CPU来说没有什么不同
      • image.png
      • 但不要认为这是理所当然的,在ARM中内存和外设地址范围处于同一个地址空间,因此可以直接访问操作
      • CPU是个大爷,只管发出地址,至于怎么内存控制器去访问哪个设备、怎么从设备上获取数据它都是不管的
      • CPU发出的地址无法到达如NAND FLASH的地址空间,这是两个不同的地址空间;只有位于CPU的地址空间的外设才能直接访问,否则需要通过对应的外设控制器去访问
        • image.png
        • CPU看到的0地址和EMMC控制器(外设控制器)看到的0地址不是一回事
      • ARM架构中,对内存/外设寄存器只有读/写功能,所有的运算都在CPU内部实现
        • image.png
    • 在X86架构中,内存和IO的地址空间是分开的;需要通过不同的指令访问
      • image.png
      • 内存空间和IO空间完全是两回事
      • 通过不同指令来分辨不同的地址空间
      • 在X86中,我们执行一条复杂指令时会触发一个“微程序”
        • image.png
        • CISC也是要通过操作内存、寄存器、运算器来完成复杂指令的。它在实现时,是将复杂指令转换成了一个微程序,微程序在制造CPU时就已存储于微服务存储器。一个微程序包含若干条微指令(也称微码),执行复杂指令时,实际上是在执行一个微程序。
        • 微程序是不能被打断的

    • 哈佛结构与冯诺依曼结构
      • image.png
    • CPU架构可以分为哈弗架构与冯诺伊曼架构。哈弗架构中指令与数据分开存放,CPU可以同时读入指令、读写数据。冯诺伊曼架构中指令、数据混合存放,CPU依次读取指令、读写数据,不可同时操作指令和数据
    • ARM公司的芯片,ARM7及之前的芯片是冯诺伊曼架构,ARM7之后使用“改进的哈弗架构”。
    • 在“改进的哈弗架构”里,指令和数据在外部存储器中混合存放;CPU运行时,从指令cache中获得指令,从数据cache中读写数据。表现为外部是冯诺依曼结构,内部是哈弗结构
    • image.png
    • image.png

    STM32属于哈佛结构,还是冯诺依曼结构?.pdf