http://blog.csdn.net/lgouc/article/details/8235471
http://blog.sina.com.cn/s/blog_67c294ca01012qbu.html
資料對齊並不是作業系統的記憶體結構的一部分,而是C P U結構的一部分
是這麼理解嗎?cpu要讀取記憶體中的資料,以多少為單位進行讀取呢?以4個位元組,還是8個位元組。還是16個位元組為單位來讀取記憶體資料?
目前主要以2個位元組為單位嗎?是的。2個位元組作為對齊單位。
以多少個位元組為單位來讀取記憶體的資料,這是cpu的知識。與cpu有關係。
資料項只能儲存在地址是資料項大小的整數倍的記憶體位置上。如int型別佔用4個位元組,地址只能在0,4,8等位置上。
也就是說,這個資料的首個地址必須是它的倍數。
比如一個資料大小是6個位元組。現在要存入記憶體中去,首個記憶體地址的位置必須是6的倍數,即6*n才行:6,12,18........這樣就可以。
這是結論,有這個限制要求。原因是什麼,減少cpu讀取記憶體的次數。不進行記憶體對齊的話,讀取次數將會增加。
記憶體對齊的本質:減少cpu讀取記憶體的次數。一次性儘可能多讀取資料進來。是這樣的嗎?
處理器的記憶體存取邊界是什麼意思?
http://www.cnblogs.com/xkfz007/archive/2012/10/08/2715163.html 這篇文章講述了cpu與記憶體之間的關係
記憶體對齊是作業系統為了快速訪問記憶體而採取的一種策略,簡單來說,就是為了放置變數的二次訪問。作業系統在訪問記憶體 時,每次讀取一定的長度(這個長度就是作業系統的預設對齊係數,或者是預設對齊係數的整數倍)。如果沒有記憶體對齊時,為了讀取一個變數是,會產生匯流排的二 次訪問。
幾個基礎知識:記憶體的每個地址能夠儲存多少資料。1個位元組。
cpu的執行指令速度
大部分簡單指令的執行只需要一個時鐘週期,也就是1/3納秒。光在這個時間點也只能走10釐米。
由於主存中使用電容來儲存資訊,為了防止因自然 放電而導致的資訊丟失,就需要週期性的重新整理它所儲存的內容,這也帶來額外的等待時間。