我最近正在作一个面向底层的开发工作,具体上说,是围绕内存制造与测试的工作。
这个项目就是为很多内存制造商提供测试方案,用于快速的检测内存模组的测试。
应对众多厂家的要求,我需要在软件的界面上显示测试的环境信息,这包括 CPU 速度和
cache 信息,SDRAM 的速率,通道模式,时序信息。时序信息包括了 CL,tRCD,tRP,tRAS。
当然还包括内存测试方案的信息,和测试状态信息。
CPU 的大致信息,你可以通过 CPUID 指令获得,而亦可以用 rdtsc 读取系统的时间戳来算
到 CPU 的实时速率。这个方法对于大多数 CPU 都是可行的,少数不支持 CPUID 指令的就
是例外。
SDRAM 的信息大多数存储于主板的芯片组中,北桥的内存控制器管理着内存的工作方式和监
督其工作状态。拿 Intel 为例,自 945 以前的芯片组,其资料都是公开的,参照官方的
Intel Datasheet,你可以获得 PCI 设置参数的读取方法。所有的信息乃至支持的模组类型,
可控的时序范围都是可以读到的。大家用到的 CPU-Z,都应该是这样读到的。
然而,到了 965 时代,这一切都发生了改变。从 965 Datasheet 资料上看,这片资料也相
对比较完整。但是 Chipset 寄存器的组织结构却发生了变化,寄存器组的分工更加的明确
和正式化。按照原先的想法,这并没有什么不妥。毕竟 965 是转向 Intel 3 系列的实验板。
但是在我们用老的方法读取这些资料的时候,发现了一个大问题。按照 Datasheet 资料上
的描述,我们却完全读取不到正确的内存信息,后来发现,内存控制寄存器 MCHBAR 被锁住
了(disabled置高),用程序也无法解锁。这里好像僵住了。
在 Datasheet 中,唯一可以看到的就是 "Locked by Intel TXT mode"。这是 Intel 新出
的一中加密技术。相当长的时间里,我也无法找到加密的方法。
事情就这样过去了,在过一段时间。公司立刻也拿到了 Intel 3 系列的主板 G3
这个项目就是为很多内存制造商提供测试方案,用于快速的检测内存模组的测试。
应对众多厂家的要求,我需要在软件的界面上显示测试的环境信息,这包括 CPU 速度和
cache 信息,SDRAM 的速率,通道模式,时序信息。时序信息包括了 CL,tRCD,tRP,tRAS。
当然还包括内存测试方案的信息,和测试状态信息。
CPU 的大致信息,你可以通过 CPUID 指令获得,而亦可以用 rdtsc 读取系统的时间戳来算
到 CPU 的实时速率。这个方法对于大多数 CPU 都是可行的,少数不支持 CPUID 指令的就
是例外。
SDRAM 的信息大多数存储于主板的芯片组中,北桥的内存控制器管理着内存的工作方式和监
督其工作状态。拿 Intel 为例,自 945 以前的芯片组,其资料都是公开的,参照官方的
Intel Datasheet,你可以获得 PCI 设置参数的读取方法。所有的信息乃至支持的模组类型,
可控的时序范围都是可以读到的。大家用到的 CPU-Z,都应该是这样读到的。
然而,到了 965 时代,这一切都发生了改变。从 965 Datasheet 资料上看,这片资料也相
对比较完整。但是 Chipset 寄存器的组织结构却发生了变化,寄存器组的分工更加的明确
和正式化。按照原先的想法,这并没有什么不妥。毕竟 965 是转向 Intel 3 系列的实验板。
但是在我们用老的方法读取这些资料的时候,发现了一个大问题。按照 Datasheet 资料上
的描述,我们却完全读取不到正确的内存信息,后来发现,内存控制寄存器 MCHBAR 被锁住
了(disabled置高),用程序也无法解锁。这里好像僵住了。
在 Datasheet 中,唯一可以看到的就是 "Locked by Intel TXT mode"。这是 Intel 新出
的一中加密技术。相当长的时间里,我也无法找到加密的方法。
事情就这样过去了,在过一段时间。公司立刻也拿到了 Intel 3 系列的主板 G3