內存對齊的目的和原理 字節(jié)對齊會影響內存訪問的效率嗎?
字節(jié)對齊會影響內存訪問的效率嗎?主要原因是CPU執(zhí)行內存訪問指令時,如果地址對齊,可以縮短內存訪問的時鐘周期,從而提高內存訪問速度。1隨著硬盤容量的不斷擴大,為了提高硬盤的容錯能力和讀寫速度,將原來的
字節(jié)對齊會影響內存訪問的效率嗎?
主要原因是CPU執(zhí)行內存訪問指令時,如果地址對齊,可以縮短內存訪問的時鐘周期,從而提高內存訪問速度。1隨著硬盤容量的不斷擴大,為了提高硬盤的容錯能力和讀寫速度,將原來的每扇區(qū)512字節(jié)改為每扇區(qū)4096字節(jié),也就是現(xiàn)在通常所說的“4K扇區(qū)”。所謂“4K對齊”是指硬盤按照“4K扇區(qū)”的定義格式化,并按照每個扇區(qū)4K的規(guī)則寫入數(shù)據(jù)。2如果4K未對齊,例如在ntfs6中。X規(guī)范之前,數(shù)據(jù)的寫入點正好在兩個4K扇區(qū)之間,也就是說,即使寫入的數(shù)據(jù)量最小,也會使用兩個4K扇區(qū),這會導致跨區(qū)域讀寫,讀寫次數(shù)大,影響讀寫速度。三。由于寫入次數(shù)有限,如果4K沒有對齊,不僅性能會下降,而且使用壽命也會縮短。所有使用高級格式的硬盤也需要對齊,否則性能會受到影響。4目前,大多數(shù)大容量機械硬盤都支持高級格式,即4K格式。使用win7的安裝程序分區(qū)、win7的磁盤管理和win7的Diskpart命令行工具,所有分區(qū)都是對齊的。使用diskgenius,您可以手動指定起始扇區(qū)位置,也就是說,它可以對齊或不對齊。請注意,分區(qū)時,請選擇“對齊到下一個扇區(qū)的整數(shù)倍”,然后選擇8個或更多扇區(qū)。建議選擇2048,這是win7分區(qū)的關鍵,實際對齊大小為1024k。
手機內存卡要4K對齊嗎,如何對齊?
在下圖中,多個文本對象(包括多行文本和單行文本)需要按列對齊。
首先,選擇參考文本作為對齊目標,按Ctrl 1或輸入CH(命令屬性全名)以調用屬性對話框。
單擊對話框中的X坐標并按Ctrl C將坐標值復制到內存中。因為它是按列垂直對齊的,所以需要確認選擇的對齊方式是左下、左上或左中,這表示復制了最左邊的坐標值。
如果是水平直線對齊,需要復制Y坐標并確認是上、中、下坐標。
選擇所有文本對象(您也可以選擇多行文本或單行文本,當文本數(shù)較大時會很麻煩),然后單擊“屬性”對話框中的“快速選擇”圖標。
如圖所示,在“快速選擇”對話框中,設置“多行文本”和“全選”選項,然后單擊“確定”。
此時,將選擇所有多行文本。由于選擇對象相同,因此將顯示選擇的X坐標。確認對齊模式為左下(左上和左中,目的是確認最左邊)后,選擇X坐標,Ctrl V,粘貼之前存儲的X坐標值。所有多行文字按要求左對齊。
同樣,選擇所有文本,在“快速選擇”中選擇文本,確認對齊方式為左對齊,選擇X坐標,并使用Ctrl v更改坐標值。所有單行文本將根據(jù)需要左對齊。
這里有兩點需要解釋:
1。當選擇對象是多行文字或單行文字時,其特殊屬性(如X坐標)將顯示在“特性”對話框中。
2. 當大量多行文字、單行文字,甚至某些直線、圓弧等對象混合使用時,先選擇所有對象,然后使用“快速選擇”過濾掉特定對象,比單獨選擇單個對象集更快、更有效。
cad2007中多個圖框批量按線對齊,如下圖:望指教謝謝?
內存對齊是硬件問題,而不是C/C問題本身。只有C/C能夠直接操作內存指針,才有可能對其進行優(yōu)化。
嚴格來說,對齊甚至不是CPU問題,而是MMU(內存/緩存)問題。
簡而言之,對齊有助于提高緩存利用率。緩存設計時,每行都是一個對齊的空間,如32字節(jié)。使用他們的地址低索引。如果讀寫到與當前緩存線不匹配的地址,則會導致寫回并重新加載緩存線。換句話說,有一個性能成本。此外,如果你熟悉芯片設計,你會知道成本是驚人的。許多軟件工程師可能沒有意識到,在大多數(shù)情況下,CPU只有很少的時間來執(zhí)行指令,而大部分時間是等待緩存。
因此,對于具有性能優(yōu)化要求的程序,在大多數(shù)情況下,內存優(yōu)化是首要任務。不對齊的內存訪問很容易導致此時一次刷新兩個緩存,很有可能有用的數(shù)據(jù)會從緩存中沖出,這不僅增加了此操作的成本,更重要的是,下次必須重新加載清洗后的數(shù)據(jù),這是一個很高的成本。更糟糕的是,此操作可能會繼續(xù)導致新的有用數(shù)據(jù)在下次被刷新和回收。
據(jù)我觀察,今天99%的程序員對CPU內存體系結構知之甚少,他們的代碼幾乎根本不考慮性能。事實上,在大多數(shù)情況下這并不重要。不管怎樣,剩下的1%做了核心工作。
為什么C/C 編程語言經常會提到對齊?對齊到底是什么,為什么要對齊,對齊有什么好處?
1. 所謂對齊就是數(shù)據(jù)存儲在內存中的規(guī)則。在32位系統(tǒng)中,有三種方式:字節(jié)對齊(8位)、半字對齊(16位)和字對齊(32位),它們分別與連續(xù)地址、偶數(shù)地址和地址除以4對齊。
2. 在arm體系結構中,有arm指令集和thumb指令集兩種。Arm指令是32位指令,以4字節(jié)對齊方式存儲,指令必須取自4的整數(shù)倍地址;thumb指令是16位指令,以2字節(jié)對齊方式存儲,指令必須取自偶數(shù)地址。
3. 數(shù)據(jù)存儲:字符數(shù)據(jù)一般為字節(jié)對齊存儲,短整數(shù)為雙字節(jié)對齊存儲,整數(shù)/浮點為4字節(jié)對齊存儲。