很多人都有这样的疑惑,需要去学习芯片的逻辑架构和寻址之类的基本知识。
以ARM典型构架为例,CPU分高速数据总线AHB和外设总线APB,APB可能还不止一条,SPI之类的一般挂在APB上。典型的SDRAM控制器也就是挂在AHB上的一个设备,CPU发出寻址后,指定地址范围用于选中对应的总线设备,比如发出访问0000 0000地址就会仲裁到SDRAM控制器,控制器译码后再发出指令到SDRAM内读写对应的数据,该过程CPU是HOLD住的,所以如果没有cache的话一条内存访问指令要执行N(>10)个CPU周期。
如果总线是一条街,各类控制器就是街边的房子,大房子(SDRAM)占很大的空间(几十兆地址范围),小房子只占用一个角落;但是……小房子从后门出去可能会到达另一条街,或许还是更长的一条街(如SPI上面挂1片几十MB的Flash),就如@aozima说的,空间无限。
但由于是IO空间,CPU是无法直接寻址的,因此只能间接操作(通过控制器,如SPI),将数据读取到RAM空间再访问,而没有办法一条load指令直接加载SPI Flash上面的数据。
|