当我们用
C语言
进行编程时,
指针
对应的地址,就是这条总线的地址。
对于CPU架构,按总线数量可以分为 冯诺依曼架构 和 哈佛架构 ,冯诺依曼架构是所有存储器访问共用一条总线,哈佛则是有多条总线(不一定每个数据通道都有一条)。
但是C语言编程时,指针的地址空间只有一个,一个地址只能对应一个存储单元,也就是内存是 统一编址 的,而很多单片机的CPU采用了哈佛架构(如STM32),
由于哈佛架构有多条总线,而每条总线有 独立的地址空间 ,这就与C语言的设计相违背。
实际的应用中,处理器厂商为我们做了这些处理,对外只有一个存储器控制器,内部的多条总线共同访问这一个存储器控制器,这样对芯片外来说,就是统一编址的了。
Intel的PC机系统由于功能较多,主频分级,将这个存储器映射的过程分为两歌步骤来做,所以主板上才会有集成度从大到小的三块芯片(CPU、北桥、南桥)。
由于XH_CPU主要面向单片机应用,对总线的速度匹配不做区分,所以没有了南桥芯片的功能,它被分散在了各个外设模块中。
而 北桥 其实就是一个 存储器控制器 ,实现前端总线对外部存储器的访问,由于速度不分等级,所以这里把前端总线和存储器控制器合并,直接将存储器和外设挂接在前端总线上。
对于CPU架构,按总线数量可以分为 冯诺依曼架构 和 哈佛架构 ,冯诺依曼架构是所有存储器访问共用一条总线,哈佛则是有多条总线(不一定每个数据通道都有一条)。
但是C语言编程时,指针的地址空间只有一个,一个地址只能对应一个存储单元,也就是内存是 统一编址 的,而很多单片机的CPU采用了哈佛架构(如STM32),
由于哈佛架构有多条总线,而每条总线有 独立的地址空间 ,这就与C语言的设计相违背。
实际的应用中,处理器厂商为我们做了这些处理,对外只有一个存储器控制器,内部的多条总线共同访问这一个存储器控制器,这样对芯片外来说,就是统一编址的了。
Intel的PC机系统由于功能较多,主频分级,将这个存储器映射的过程分为两歌步骤来做,所以主板上才会有集成度从大到小的三块芯片(CPU、北桥、南桥)。
由于XH_CPU主要面向单片机应用,对总线的速度匹配不做区分,所以没有了南桥芯片的功能,它被分散在了各个外设模块中。
而 北桥 其实就是一个 存储器控制器 ,实现前端总线对外部存储器的访问,由于速度不分等级,所以这里把前端总线和存储器控制器合并,直接将存储器和外设挂接在前端总线上。