在调查Intel 4代及以前的平台是否支持16GB DDR3单条内存的过程中,
1.首先我是看见intelligent memory这家产内存的小厂曾经放出消息声称“这不是硬件限制,仅仅只是BIOS软件层面的问题”。
这种说法我在经过实验后基本确定移动平台上并不符合事实,这个限制应该是存在于memory address decoder之中,而且BIOS软件层面是解析SPD byte offset 5里面的列地址数目,据此进行单条粒度的软屏蔽(这一点移动平台也和桌面平台不同,移动平台被默认软屏蔽单条内存后仍然可以开机);而并非是传言声称的“MRC在解析SPD byte offset 4的时候只要看到了代表8Gbit的0x05就呆住不动”;
然而LGA2011 IvyBridge-E平台是基本符合事实的,像华硕当年还专门在官网发了文章:
https://rog.asus.com/articles/maximus-mo...herboards/
2.于是在确认了像是X79这样的平台,在硬件层面并不存在局限之后,下一个问题就是:如果主板厂商官方没能提供BIOS更新来支持16GB单条内存,是不是可以自行修改达成这个目的?
我使用IDA Pro和diaphora大致对比过IvtQpiandMrcInit模块,虽然很遗憾不同厂牌甚至不同型号的改动都不尽相同;但仍然有一点共通的修改:存在一个看上去是报错的逻辑,报错字符串是
但非常遗憾,实验发现修改跳转指令后机器仍然是黑屏不能亮机……
(不过另一方面,附近还存在类似的提及4Gb的报错逻辑,如果修改跳转指令让这个报错的逻辑总是会报错、而无视实际情况,那么就实现了“只要插上SPD中标记自身是4Gbit就一样黑屏无法正常亮机”的现象。于是这也从侧面证明,移除这处报错的逻辑是必须的,只不过仍然不充分)
3.华硕可能是在production build里把报错字符串全都去除掉了。但像是微星、华擎,又或者是CLEVO蓝天,他们的BIOS里,MRC代码中貌似仍然都含有大量报错字符串。
我很好奇这些报错字符串具体都去了哪里,尤其是,有个特别狂野的想法是,有没有可能接出来让它们打到控制台里?
不过限于我对微机原理实在是野路子一窍不通,所以完全懵逼……
目前的话,我看到华擎有一款主板X79 Extreme 6/GB,自带名叫Dr.Debug的数码管,可以显示POST code。
另外非常感谢另一位网友BufferMod,实际上就是他不辞劳苦帮我实现这些折腾实验的想法。根据他的反馈,这款主板很遗憾并不能通过转接卡使用SO-DIMM笔记本DDR3内存点亮;但16GB单条内存,和更常见的8GB或更小容量的内存,停住的POST code并不一样。
我也根据这些POST code找到了高度疑似是输出这些code的函数,但还没进一步确认。
(另外他最近一阵子都有其他的事情要忙,可能暂时没时间折腾这方面了,但我还是忍不住想在这里发帖问一问)
1.首先我是看见intelligent memory这家产内存的小厂曾经放出消息声称“这不是硬件限制,仅仅只是BIOS软件层面的问题”。
这种说法我在经过实验后基本确定移动平台上并不符合事实,这个限制应该是存在于memory address decoder之中,而且BIOS软件层面是解析SPD byte offset 5里面的列地址数目,据此进行单条粒度的软屏蔽(这一点移动平台也和桌面平台不同,移动平台被默认软屏蔽单条内存后仍然可以开机);而并非是传言声称的“MRC在解析SPD byte offset 4的时候只要看到了代表8Gbit的0x05就呆住不动”;
然而LGA2011 IvyBridge-E平台是基本符合事实的,像华硕当年还专门在官网发了文章:
https://rog.asus.com/articles/maximus-mo...herboards/
2.于是在确认了像是X79这样的平台,在硬件层面并不存在局限之后,下一个问题就是:如果主板厂商官方没能提供BIOS更新来支持16GB单条内存,是不是可以自行修改达成这个目的?
我使用IDA Pro和diaphora大致对比过IvtQpiandMrcInit模块,虽然很遗憾不同厂牌甚至不同型号的改动都不尽相同;但仍然有一点共通的修改:存在一个看上去是报错的逻辑,报错字符串是
代码:
"Error! Support for 8Gb devices has been fused off!\n"
但非常遗憾,实验发现修改跳转指令后机器仍然是黑屏不能亮机……
(不过另一方面,附近还存在类似的提及4Gb的报错逻辑,如果修改跳转指令让这个报错的逻辑总是会报错、而无视实际情况,那么就实现了“只要插上SPD中标记自身是4Gbit就一样黑屏无法正常亮机”的现象。于是这也从侧面证明,移除这处报错的逻辑是必须的,只不过仍然不充分)
3.华硕可能是在production build里把报错字符串全都去除掉了。但像是微星、华擎,又或者是CLEVO蓝天,他们的BIOS里,MRC代码中貌似仍然都含有大量报错字符串。
我很好奇这些报错字符串具体都去了哪里,尤其是,有个特别狂野的想法是,有没有可能接出来让它们打到控制台里?
不过限于我对微机原理实在是野路子一窍不通,所以完全懵逼……
目前的话,我看到华擎有一款主板X79 Extreme 6/GB,自带名叫Dr.Debug的数码管,可以显示POST code。
另外非常感谢另一位网友BufferMod,实际上就是他不辞劳苦帮我实现这些折腾实验的想法。根据他的反馈,这款主板很遗憾并不能通过转接卡使用SO-DIMM笔记本DDR3内存点亮;但16GB单条内存,和更常见的8GB或更小容量的内存,停住的POST code并不一样。
我也根据这些POST code找到了高度疑似是输出这些code的函数,但还没进一步确认。
(另外他最近一阵子都有其他的事情要忙,可能暂时没时间折腾这方面了,但我还是忍不住想在这里发帖问一问)