2013-05-18 60 views
0

我試圖瞭解內存對齊,但沒有多少成功。我正在使用IBM的this文章。雙字節內存訪問粒度

可有人請向我解釋一下這個摘自雙字節內存訪問粒度段的意思是:

但是,請注意,從地址1.閱讀時,由於該地址沒有均勻地落在發生了什麼處理器的內存訪問邊界,處理器有額外的工作要做。這樣的地址被稱爲未對齊地址。由於地址1未對齊,因此具有雙字節粒度的處理器必須執行額外的內存訪問,從而減慢操作速度。

爲什麼要按順序訪問另一個存儲器?內存訪問邊界是什麼意思,它甚至在內存訪問邊界上?

我有一個非常有限的CPU知識,因爲我只有delt的上層編程(Objective-C和C++)。任何幫助是極大的讚賞!

謝謝!

+0

您是否閱讀過文章的前半部分「內存訪問粒度」,並顯示處理器如何訪問內存? – Barmar

+0

是的,但我不明白爲什麼會接到另一個電話。 – foobar5512

回答

2

該示例描述了當您嘗試在雙字節訪問粒度的CPU上讀取4個連續字節的塊時發生的情況。在這種類型的CPU上,內存以字節對的形式訪問,始終以偶數字節開始。

如果嘗試讀取以字節0開頭的塊,則必須執行2次讀取:字節0-1和字節2-3。

如果您嘗試讀取以字節1開頭的塊,則必須執行3次讀取:字節0-1(獲取字節1),字節2-3和字節4-5(獲取字節4) 。

存儲器存取粒度是它訪問一次的字節數,和一個存儲器存取邊界是其中這些基團各自的字節的開始。字節組總是以偶數倍的地址尋址 - 如果是雙字節粒度,則它們從偶數地址開始,如果是四字節粒度,則它們的倍數爲4.

作爲一個類比,考慮每層樓有4個單位的公寓樓。單位0-3位於0樓,單位4-7位於1樓等。如果你想在單位0-3的門下滑動傳單,你只需要到一層樓。但是,如果您想要在1-4下滑動傳單,則必須轉到2層:第0層爲1-3,第2層爲第4單元。

+0

是否有一個原因,它不能從1開始。例如,1-2,2-3。那也不是4個字節嗎?謝謝! – foobar5512

+0

因爲這不是如何對齊內存訪問的作品。硬件設計用於訪問特定塊中的內存。 – Barmar

+0

噢,好的...謝謝你的幫助! – foobar5512