1.引入
1.1如下面的**,定義了三個變數,int,char,int,並輸出他們的十六進製制的記憶體位址。
#includeint1.2圖示分析上述****中為定義的變數a,b,c分配了記憶體單元,分配記憶體單元是從大位址開始分配的,可見a的記憶體位址大於b的位址。(除非分配的記憶體單元迴圈了。從0跳大了最大,又開始新的一輪減小)main()
int占用4個位元組,char占用1個位元組。
從**中可以看出為三個連續定義的變數的記憶體分配是不連續的。這就是因為位址對齊的原因。
2.位址對齊概念
位址對齊其實就是cpu設計中的乙個時空權衡,這裡採用的是空間換時間的。主要的解決問題是如何能過快速的讀取給定的乙個變數。
目前的主流計算機有32位,64位這是位址線,一般資料線與位址線條數相同。
如果放置資料時不考慮位址對齊,32位的cpu讀取乙個4位元組的int最少需要一次記憶體訪問,最多需要2次訪問記憶體。下圖中左面,取乙個int要兩次記憶體訪問,而右邊的只需要一次記憶體訪問。
上面的左圖為什麼是2次訪問記憶體呢?這個需要用組成原理說明。
3.計算機組成原理解釋位址對齊
這裡使用32位說明。16位的80x86,和目前流行的64位也是一樣的。
32位字長的機器,能一次訪問的資料是32bits。
如下圖所示:32條資料線,分成了4組,這樣就可以使用位元組編碼,最小的訪問記憶體單元為乙個位元組。
同樣給出乙個32位位址最多可以訪問32位的資料。
若乙個int資料儲存在32位機器中如2中的左圖所示,一次只能訪問到2位元組資料,所以需要2次記憶體訪問;若乙個int資料儲存在32位機器中如2中的右圖所示,給出一次位址就能夠訪問整個int資料。
4總結
許多ram都採用位址對齊,加速cpu。
採用位址對齊儲存資料對應的位址如下:
組成原理 指令格式 位址碼)
根據一條指令中有幾個運算元位址,可將該指令稱為幾運算元指令或幾位址指令。三位址指令 功能描述 a1 op a2 a3 pc 1 pc 解釋 a1內的資料和a2內的資料進行某種操作 op 把操作結果放到a3這個位址單元中 注 a1,a2,a3是位址碼,表示位址資訊。表示取位址碼所在的儲存單元內的資訊。...
URL位址組成
url 統一資源定位符是對可以從網際網路上得到的資源的位置和訪問方法的一種簡潔的表示,是網際網路上標準資源的位址。網際網路上的每個檔案都有乙個唯一的url,它包含的資訊指出檔案的位置以及瀏覽器應該怎麼處理它。它最初是由蒂姆 伯納斯 李發明用來作為全球資訊網的位址。現在它已經被全球資訊網聯盟編制為網際...
Cache位址對齊
cache是高速緩衝儲存器,如果將cache想象成一棟樓房,那麼每個儲存塊就相當於乙個房間,而位址就是每個房間的門牌號,可以通過位址對對應的儲存塊進行讀寫操作。axi是一種介面協議,規定位址是位元組對齊的。位元組對齊的意思是 每個位址代表的儲存塊位寬為1個位元組 byte 這裡設1byte 8bit...