< Bu mesaj bu kişi tarafından değiştirildi Madnessisme -- 14 Aralık 2018; 18:13:58 > < Bu ileti mobil sürüm kullanılarak atıldı > |
Bildirim
< Bu mesaj bu kişi tarafından değiştirildi Madnessisme -- 14 Aralık 2018; 18:13:58 > < Bu ileti mobil sürüm kullanılarak atıldı > |
Pratikte aynı tip bellekler için 1 CL=133 Mhz gibi bir değerdir.
Yani 1600 MHz CL-9 ile 3200 MHz CL-18 teorik olarak birbirine denk bellek bant genişliği sağlar. Bu nedenle 1066 MHz CL-5 ile 2400 Mhz CL-15 aynı olmaz. Teorik olarak 1066 Mhz CL-5 için denk olan 2133 MHz CL-10 olur. CL zaten frekans kadar artmıyor. En yaygın DDR3 bellek 1600 MHz CL-9 idi, eşit oranda artsaydı 3200 DDR4 bellekler CL-18 filan gelirdi. Böyle olanlar da var ama genelde kalitesine göre 14-16 civarlarında. (DDR3 içinde 1600-11 olanlar vardı mesela) Yani CL gecikmesi MHz kadar artmıyor, daha yavaş artıyor. 1000 MHz CL-5 = 2000 MHz CL-10 teorik olarak denk olsalar da pratikte 2000 olan daha hızlıdır. Eğer bellek erişimlerini her seferinde tek satır okusaydık böyle olurdu. Bir okuma CL kadar sürer. 1000 MHz CL-5 için 200 M okuma yapar 64 bitten 1600 Mbyte okumuş olurduk. 2000 MHz CL-10 için de yine 200 M kere okuma yapar yine 1600 Mbyte değeri elde ederdik. Ancak bu her seferinde tek satır okuma işi geçmişte kaldı. Artık işlemciler bellek erişimlerinin en az %90 kadarını Burst mode ile her seferinde 4 satır ile yapar. (yeni model 8 satır Burst mode) Biz standart 4 satırlık Burst paketi ile hesaplayalım. 4 satırlık bir Burst paketinde ilk satır CL süresinde, diğer üç satır ise 1 çevrimde okunur. CL-5 için Burst süresi 8 çevrim, CL-10 için 13 çevrimdir. (5+1+1+1, 10+1+1+1) Buna göre hesaplayalım. 1000 Mhz CL-5 bellekte 1 saniyede 1.000.000.000/8=125.000.000 paket okunur. Bu da 4 satır 64 bitten =4.000.000.000 Byte yani 4 GB eder. 1000 MHz CL-5 belleğimizin bant genişliği 4 GBs olur. 2000 Mhz CL-10 bellekte 1 saniyede 2.000.000.000/13=153.846.154 paket okunur. Bu da 4 satır 64 bitten =4.923.076.928 Byte yani 4.9 GB eder. 2000 Mhz CL-10 belleğimizin bant genişliği 4.9 GBs olur. Görüldüğü gibi teorik olarak denk olsalar da pratikte nerede ise % 25 fark var. Farkı CL 5-10 değil 1+1+1 yaratıyor. Bu 1+1+1 okumayı birinde 1000 Mhz ile diğerinde 2000 Mhz ile (yarı süresinde) yapıyoruz çünkü. Bu da yetmez bir de Full Burst Mode (FBM diye kısaltalım) denen şey var. DMA ile kullanılır ve de epeyce kullanılır. Ağ kartına, disklere, ses kartına, grafik kartına vb veri gönderme-alma işleri bu modda yapılır. Bellek blok kopyalamaları da bu modda yapılır. Burst modda 4 satırlık paketler CL+3 şeklinde okunuyordu. FBM ise CL+(toplam satır-1) şeklinde okunur. Standart DMA en fazla 64 KB blok, bellek kopyalamaları daha büyük blok desteklese de FBM pratik olarak 4 KB ile sınırlıdır. Zira 32-64 bit sistemlerde belleğimiz 4 KB sayfalar şeklide ayrılmıştır ve belleğe erişimi sağlayan TLB birimleri de buna göre organize edilmiştir. (Big page modunda 4 MB) Dolayısı ile 4 KB bir sayfa 64 bit (8 Byte) ile 512 satır yapar. FBM ile ilk satı CL süresinde, diğerleri 1 çevrimde okunduğundan FBM paket süreleri 1000-5 için 5+511=516, 2000-10 için 10+511=521 olur. 1000 MHz bellekte 1.000M/516=1.937.984,496 erişim yapabiliriz. Bu 64 bit 8 Byte satırlarla 15.503.875,9 Byte yani 15.5 GB yapar. 2000 Mhz bellekte ise 2.000M/521=3.838.771,59 okuma ile 30.710.172,7 Byte yani 30.7 GB yapar. Full Burst Modunda 2000-10 bellek teoride eşit olduğu 1000-5 bellekten nerede ise 2 kat daha hızlı. FBM de epeyce kullanıldığından (%10 bile desek) normal Burst mode ile birlikte 4+1,55 yerine 4,9+3.07 ile 5,55 GB karşısında 7.97 GB ile öne geçer. Fark da %25 civarlarından % 43 civarlarına çıkar. Üzerine bir de Bank Interleave denen olay var. Her kanal belleğimiz (mesela güncel I3-I5-I5, R3-R5-R7 için iki bellek kanalı var, slot sayısı ayrı olay) en az Bust paketi kadar Bank denen bölümlere ayrılır. Standart Burst paketi 4 satır olduğundan genelde 4 Bank kullanılır. (hızlı bellekler 8-12-16 kullanabilir) Güncel işlemciler 64 bit=8 Byte. Belleğimiz 4 Banka (0-1-2-3) şöyle dağılır. Tek kanal bellekle tabi. Çift kanalda 4-5-6-7 satırlar diğer kanalda yer alır mesela (unganged modda). Bu durumda bu kanalda girişler de 0-1-2-3 ve 8-9-10-11 gibi olur. Biz tek kanalmış gibi hesaplayalım. Çift olunca mantık değişmiyor, bant genişiliği iki kat artıyor sadece. SATIR........BANK-0........BANK-1........BANK-2........BANK-3 --------------------------------------------------------------- 0-1-2-3......0-7 Byte......8-15 Byte.....16-23 Byte....24-31 Byte 4-5-6-7......32-39 Byte....40-47 Byte....48-55 Byte....56-63 Byte 8-9-10-11....64-71 Byte....72-79 Byte....80-87 Byte....88-95 Byte ..... Belleğe normal Burst erişimi ile adresi verdik. (adres 0-en başı) CL-1 kadar bekliyoruz. CL 5-10 için 4-9 çevrim bekledikten sonra CL süresinde (5 veya 10'uncu çevrimde) satır 0 verisini (Byte 0-7) Bank-0 alanından okuyoruz. Arkasından CL kadar değil sadece 1 çevrimde Satır 1 verisini (Byte 8-15) Bank-1 alanından okuyoruz. Satır 2-3 için de böyle devam ediyor. Bank interleave farkı burada ortaya koyuyor. Biz satır-0 (bank-0) okuyup satır-1 (bank-1) alanına geçtiğimizde Bank-0 boş boş beklemiyor. Yahu bu işlemci benden birazdan sonraki verileri ister diyor. Ve de biz 1-2-3 vb satırları (Bank 1-2-3) okurken Bank-0 uyanığı da kendi alanında bulunan sonraki satırı, yani satır-4 değerini (Byte 32-39) hazır ediyor. Biz satır-3 verisini (Byte 24-31) Bank-3 alanından okuyup satır-4 okumaya gelince fark ortaya çıkıyor. Bu sefer CL-1 kadar (4-9 çevrim) beklemiyoruz. Hemen 1 çevrimde okumaya aralıksız devam ediyoruz. Aynı şey satır-8 ve sonrakilerde de devam ediyor. Normal Burst mode ile 5+1+1+1...8.8.8.8..... yada 10+1+1+1... 13.13.13.13..... şeklinde gidecek olan okuma 5+1+1+1...1.1.1.1..... veya 10+1+1+1...1.1.1.1..... şeklinde devam ediyor. Bank interleaving normal Burst modunun nerede ise Full Burst Mode kadar hızlı çalışmasını sağlıyor. Burada püf noktası, hile-uyanıklık şurada gizli. Bellekte istenecek bir sonraki verinin sonraki adreste (yani sırada) olma ihtimali çok yüksektir. Bank interleave buna dayanır. Yani birazdan çok büyük olasılıkla sıradaki veri istenecek, öyleyse onlar istemeden ben hazır edeyim, bekletmeden hemen göndereyim şeklinde. Zira veriler gerçekten çoğunlukla ardışıktır. Resim verisi ardışık bir byte sekansından ibarettir. Video-müzik izlerken-dinlerken sonraki kısımlar mevcut verinin arkasından gelir. Indexler ardışıktır, DB verileri çoğunlukla ardışıktır, sayfalar ardışıktır genelde vb vb. Hatta kodlar bile çoğunlukla sıralı-ardışık çalışır, dallanma olan kısım çok daha azdır. Özetle verilerimizin büyük kısmı ardışıktır. Bu yüzden beklenen verinin sıradaki adreste olma ihtimali gerçekten çok yüksektir. Çoğu zaman % 90 oranlarını rahatlıkla bulur-geçer. Yani Bank interleave aslında bir ileri tahmin mekanizmasıdır ve isabet oranı da yüksektir. Nerede ise 10 tahmininin 9 tanesi/fazlası tutuyor meretin. (aynı oranı biz yakalasak loto-iddia vb ile köşe olurduk. ) Şimdi yine 1000-5 ve 2000-10 bellekleri ele alalım. Normal Burst Mode erişim Bank Interleave ile sanki FBM imiş gibi çalışınca ne olur bakalım. %90 doğru tahmin isabet oranını kullanacağız. 1000-5 için 10 erişimin ilki ve ıska olanı 5+1+1+1 şeklinde diğerleri 1+1+1+1 şeklinde çalışır. 2000-10 için 10+1+1+1 ve 1+1+1+1 şeklinde. 1000-5 için 2x(5+1+1+1) + 8x (1+1+1+1) olur, 2000-10 için ise 2x(10+1+1+1) + 8x(1+1+1+1) olur. (2x8)+(8x4) vs (2x13)+(8x4) --> 16+32 vs 26+32 --> 48 vs 58 olur. Bellek 1000-5/2000-10 olmasına rağmen 10 paketlik bir erişimde BM+BI->FBM etkisi nedeni ile paket süreleri çok az (48-58) farketti. (1000 MHz/48)*8=16,66 GBs karşısında (2000 MHz/58)*8=27,58 GBs alıyor ve 27,58/16,66=% 65,54 hızlı sonuç veriyor. Yani 1000 Mhz CL-5 ile 2000 Mhz CL-10 teorik olarak (her seferinde tek satır erişim yapılan eski sistem) aynı bant genişliğinde eşit olsalar da, pratikte Burst Mode ve Bank Interleaving çok ciddi bir fark yaratıyor. |
|
< Bu mesaj bu kişi tarafından değiştirildi Madnessisme -- 14 Aralık 2018; 18:58:31 > < Bu ileti mobil sürüm kullanılarak atıldı > |
|
< Bu ileti mobil sürüm kullanılarak atıldı > |
< Bu mesaj bu kişi tarafından değiştirildi melikulupinar -- 14 Aralık 2018; 21:45:25 > |
< Bu mesaj bu kişi tarafından değiştirildi Madnessisme -- 14 Aralık 2018; 22:0:1 > < Bu ileti mobil sürüm kullanılarak atıldı > |
|