Intel NDA 协议

我最近正在作一个面向底层的开发工作,具体上说,是围绕内存制造与测试的工作。
这个项目就是为很多内存制造商提供测试方案,用于快速的检测内存模组的测试。

应对众多厂家的要求,我需要在软件的界面上显示测试的环境信息,这包括 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 系列的主板 G33,我们对
这块板子仍旧担心受怕。如果 Intel 仍旧将信息加密,我们无疑在这方面又会止步。恩,
G33 一样采用了 965 的组织结构,将内存信息同一管理,还继续往下分类为两个通道(for
DDR)。我们尝试用 945 的老方法读取 PCI 信息。恩??完全奏效,Intel 发了善心,并
没有封锁这段寄存器。我和同事兴高采烈的在 G33 Datasheet 中找取时序信息的描述。OMG,
我觉得 Intel 实在太不厚道了,他隐藏了非常多的资料。寄存器组中的数据很多都是
Reserved 状态,我们要的 CL 和 tRAS 就在其中!!!

寄存器有很多很多个,他们定义的空间非常大,MCHBAR 指向的空间就有 4Kb,CL 是极其重
要的参数,一旦变动会影响很多的参数,对其定位异常困难。这是另外一个僵局呢。

我使用过很多很多的软件,在很多网站上发帖请求帮助,通常总是无功而返,偶尔有人告诉
我,可以到 CPU-Z 官方论坛上。我想想也是,来看看 CPU-Z 是怎么样的呢?我使用
CPU-Z 作了很多实验,发现它也不能在 965 芯片下提供实时的时序参数。哈哈,你也没辙
了。但是在 G33 下面,CPU-Z 丝毫没有问题,我当时愣是无法明白。这资料是怎么找到的
呢?

后来我在 x86-secret 论坛上面遇到了一位朋友,我跟他说我在 G33 上遇到了些问题。他
当时就很兴奋:没有想到也有人作着同样的事情。而此时此刻他也碰到了同样的难题,他的
做法是选择向 Intel 官方寻求帮助。我地心来,这不是与虎谋皮么,他隐藏的资料,能告
诉你们?但是他却告诉我,他已经得到了官方的许诺,说是在两个工作日内给予回复。我只
有和这位老兄一起等待。

………………

几乎一个星期过去了,我终于等到这位仁兄的回复。他告诉我,Intel 的硬件设计师已经考
察了这个问题,他们回复说,这个问题是可以解决的,但是你必须和 Intel 签署一份 NDA
协议(Single-user Non-Disclosure Agreement),并且向其提供一份官方认证的发布名单,
保证我们遵守协议。

因此我们放弃了这个念头,基于此下两个原因:
1. 所谓官方认证的发布名单,必然是不会公开源代码的。
2. 即便我们想法设法签署到了 NDA 协议,我们也拿到了内存控制器的资料,我们也是不被
允许开放源代码的,否则我们就违反了 NDA 协议。

哎,搞了半天,Intel 可是在这里等着我们呢。

猜你喜欢

转载自helloxy.iteye.com/blog/148964