编写设备驱动程序

系统内存模型

系统内存模型用于定义内存操作(如装入存储)的语义,并指定处理器执行这些操作的顺序与操作到达内存的顺序之间的关系。内存模型可同时适用于单处理器和共享内存多处理器。支持两种内存模型: 全存储排序 (total store ordering, TSO) 和部分存储排序 (partial store ordering, PSO)。

全存储排序 (Total Store Ordering, TSO)

TSO 可保证存储、FLUSH 以及原子装入存储指令出现在给定处理器的内存中的顺序与该处理器发出这些指令的顺序相同。

x86 和 SPARC 处理器均支持 TSO。

部分存储排序 (Partial Store Ordering, PSO)

PSO 无法保证存储、FLUSH 以及原子装入存储指令出现在给定处理器的内存中的顺序与该处理器发出这些指令的顺序相同。处理器可以对存储的指令重新排序,以使内存的存储指令顺序与 CPU 发出的存储指令顺序不同。

SPARC 处理器支持 PSO;x86 处理器则不支持。

对于 SPARC 处理器,指令的发出顺序和内存顺序之间的一致性是由系统框架使用 STBAR 指令实现的。如果以上指令中的两条指令按处理器的发出顺序由 STBAR 指令分隔,或者指令引用同一位置,则这两条指令的内存存储顺序与发出顺序相同。使用 ddi_regs_map_setup(9F) 接口可强制执行兼容 DDI 的驱动程序中的强数据排序。兼容的驱动程序不能直接使用 STBAR 指令。

有关 SPARC 内存模型的更多详细信息,请参见《SPARC Architecture Manual, Version 9》。