今天又悟到了一点(呵呵,自我陶醉一下)。
cpu访问内存时,有一个Bank Interleaving的概念。开始只知道地址顺序的差别:
OFF: Banks are not interleaved, and address will be decoded as bank-row-column
ON: Banks are interleaved, and address will be decoded as row-bank-column
但对其根本差别不理解。
今天终于领悟到,有这么个东东的目的是为了均衡内存的访问量。kernel中buddy系统分配内存页时,都是按一定顺序来查找,找到
了就分配,如果是从低到高的顺序,则势必造成低地址的物理内存被经常访问。如果Bank Interleaving OFF,也就是说物理地址解
析是按照bank-row-column的顺序,这样就造成部分bank被经常访问。如果Bank Interleaving ON,则物理地址按照row-bank-
column顺序解析,这样虽然经常访问的物理地址是靠近低端的地址,但是解析的时候,由于bank在中间,访问的地址就被相对均匀
地分到了所有的bank上,从而防止了部分bank被频繁访问导致损坏造成的内存损坏。