1、vxWorks SMP架构硬件要求及特性
首先vxworks SMP要求两个以上对称处理器,可以是多核处理器,也可以多处理器。
其次要求处理器是可标识的,并且CPUS可以平等使用内存,外设。也就是说使用UMA架构。
如上图所示:
每个核访问相同内存系统,也就是说每个核没有自己的本地内存。
每个核有自己的MMU,这样每个核就可以使用不同的虚地址执行任务。这方面主要是用的RTP程序上,比如CPU0可以在RTP1中执行一个任务,而CPU1可以在RTP2中执行一个任务。
每个核可以公平的访问所有设备(有个核私有设备除外)。这些设备的中断可以路由到任何一个核。这就是说当中断发生时,CPU可以不相关的执行中断服务。
任务与中断服务可以跨CPU同步,而互斥量需要使用spinlock。多核不能在多核上同时加中断锁,每个核必须独立加锁。SMP架构上没有使用中断锁作为互斥手段。
总线上的SNOOP单元可以保证CPUS间的数据总是一致的,这就是说操作系统并不需要执行数据一致性操作。
最后上一张UMA架构的图说明一下UMA的概念:
2、cache一致性及顺序内存访问模型
cache一致性可以使用snoop协议与目录协议。
snoop协议就是每个核可以监视总线上的事务,并有一些tagg来标识cache块状态,这样就可以自己更新自己的CAHCE块了。
至于目录协议在目前使用的嵌入式系统比较少见,可以查一下资料。
顺序内存操作定义了内存读写的原子性。硬件上必须对多核访问内存做出仲裁。
每次读写定义为一次原子操作。如果COre0的操作没有完成时,core1不能访问内存。