Geçici Olmayan Ana Bellek İçin Yazılım Yönetimli Okuma ve Yazma Aşınma Dengelemesi Bölüm 2
Aug 06, 2024
Dikkate alınan sistem sınıfı genellikle normal masaüstü bilgisayarlarda da bulunan birçok özelliği sağlar. Örneğin, eksiksiz bir MMU ve sanal bellek genellikle çeşitli görevlerin adres alanını birbirinden izole etmek veya donanım erişimini kısıtlamak için kullanılır.
Sanal bellek, bilgisayar işletim sistemlerindeki en önemli kavramlardan biridir. Bellek yetersiz olduğunda daha büyük programların çalıştırılabilmesi için bilgisayarların sabit disk alanını genişletilmiş bellek olarak kullanmasına olanak tanır. Sanal bellek bilgisayar belleğiyle yakından ilgilidir.
Bilgisayar belleği sınırlıdır. Eğer sanal hafıza gibi bir mekanizmamız yoksa hafıza yetersiz kaldığında sadece programın yürütülmesinden vazgeçebilir veya bazı uygulamaları kapanmaya zorlayabiliriz. Sanal belleğin ortaya çıkışı bu sorunu büyük ölçüde hafifletti. Sanal belleğin sağladığı bellek alanı sayesinde bilgisayar, bellekteki kullanılmayan kısımları belirli kurallara göre sabit diske taşıyabilir. Bu sayede bilgisayar, fiziksel belleği artırmadan kullanılacak belleği genişletebilir, daha fazla ve daha büyük programları kullanmaya devam etmemizi sağlar.
Bu mekanizma bize büyük kolaylık sağlıyor. Bilgisayarımızın donanımına çok fazla önem vermemize gerek yok. Programı sanal bellek sınırları dahilinde çalıştırdığımız sürece, fiziksel belleğimiz çok küçük olsa bile bilgisayarımız çeşitli farklı programları çalıştırabilir ve bellek taşması ve diğer sorunlar konusunda endişelenmenize gerek yoktur.
Bilgisayardaki hafızanın genişletilmesinin çok gerekli olduğu söylenebilir. Sanal bellek bize daha iyi bir çözüm sunuyor. Aynı zamanda sabit diskler gibi diğer aygıtlardan daha iyi yararlanmamıza ve bilgisayarların potansiyelinden tam anlamıyla yararlanmamıza da olanak tanır. Hiç şüphe yok ki sanal bellek ile bellek arasındaki ilişki ayrılmazdır. Sanal belleğin ortaya çıkışı bize bilgisayarın işletim verimliliğinden ödün vermeden bilgisayar donanımından daha fazla yararlanma olanağı sağlıyor. Belleği geliştirmemiz gerektiği görülebilir. Cistanche hafızayı önemli ölçüde geliştirebilir çünkü antioksidan, anti-inflamatuar ve anti-aging etkilere sahiptir, bu da beyindeki oksidasyonu ve inflamatuar reaksiyonları azaltmaya yardımcı olabilir, böylece sinir sisteminin sağlığını koruyabilir. Ek olarak Cistanche, sinir hücrelerinin büyümesini ve onarımını da destekleyerek sinir ağlarının bağlantısını ve işlevini geliştirebilir. Bu etkiler hafızayı, öğrenme yeteneğini ve düşünme hızını geliştirmeye yardımcı olabilir ve ayrıca bilişsel işlev bozukluklarının ve nörodejeneratif hastalıkların ortaya çıkmasını önleyebilir.

Beyin fonksiyonunu iyileştirmenin yollarını bilin'e tıklayın
Ancak bu, tam bir önbellek hiyerarşisinin mümkün ve yararlı olduğu anlamına gelmez. Bu sistemlerin saat frekansı, güç tüketimini azaltmak için genellikle yüzlerce megahertz'e ayarlanmıştır.
Bellek erişimi gecikmeleri bu durumda zaten daha az kritik hale gelir ve önbellek durumu pek iyileştirmez ancak daha fazla yonga alanı tüketir.
Ek olarak, en kötü yürütme sürelerini garanti etmek için, önbellekler yerine karalama defteri belleği tercih edilebilir. Bu nedenle, karalama defteri belleğinin kapsadığı bellek bölgeleri için bellek yıpranması azalır, ancak diğer bölgeler için bu azalma olmaz.
Geriye kalan bu bölgelerin hala bir aşınma dengeleme mekanizmasına ihtiyacı var. Bu makalede, tüm bellek bölgelerinin aşınma dengelemeye ihtiyaç duyduğu en kötü duruma odaklanıyoruz. Daha önce belirtilen nedenlerden dolayı, hedef sistemimiz tam MMU'ya sahip, sanal belleğe sahip ve önbellek içermeyen gömülü bir işlemciden oluşur. Tek tip belleklerin dezavantajlarının (örneğin, NVM'lerin ömrü veya SRAM'lerin geçiciliği) üstesinden gelmek için, çeşitli sistemler uygulanır. hibrit bir bellek mimarisi [7].
Bu sistemler için, CPU'ya birden fazla bellek tipi bağlanır (örn. FeRAM ve SRAM) ve CPU adres alanına eşlenir. İşletim sistemi ve uygulama daha sonra hangi bellek içeriğinin hangi belleğe yerleştirilmesi gerektiğine, ilgili adres bölgesinde depolayarak aktif olarak karar verebilir.
Ancak bu çalışmada, sistemde yalnızca bir NVM'yi ana bellek olarak kabul ediyoruz ve iki nedenden dolayı bu ana belleğe tahsis edilen tüm bellek bölümleri için çözümümüzü geliştiriyoruz.
Öncelikle, çeşitli hafızalardan oluşan hibrit bir hafıza hiyerarşisi varsa, diğer hafızalar için de uygun bakım mekanizmaları ayrı ayrı uygulanabilmektedir. Daha sonra NVM parçası için hala bir aşınma dengeleme mekanizması sağlıyoruz.
İkincisi, hibrit bir bellek hiyerarşisi mevcut olsa bile, bellek bölümlerinin tahsisinin çeşitli kısıtlamalara uyması gerekebilir, bu da keyfi bir eşlemeyi imkansız hale getirir. Dolayısıyla, bellek içeriklerinin yine de NVM'ye tahsis edilmesi gerekebilir ve bu da NVM'nin hızla tükenmesine neden olur. Çözümümüz, bellek bölümlerinin belirli bir eşlemesinin ömrünü uzatacak bir mekanizma sağlar.
Önerilen yöntemlerimiz yazılım tabanlı olduğundan, çalışan uygulama üzerinde ayrıcalıklı kontrole sahip olmak için işletim sistemi benzeri bir katmanda çalıştırılmaları gerekir. Küçük gömülü sistemler için tam bir işletim sistemi mevcut olmasa bile, donanımı yönetmek, başlatma prosedürlerini kontrol etmek ve kontrol akışını yönetmek için ince bir yazılım katmanı gerekir.
Yöntemlerimiz bu kadar basit bir işletim sisteminde de uygulanabilir. Bu çalışma boyunca tanımlanan hedef sistem sınıfına odaklansak da yöntemlerimiz uygun değişikliklerle diğer sistemlere de uygulanabilir. Örneğin, önbelleğe sahip daha büyük sistemlerde, ilki hafızayı yıpratmadığı, ikincisi ise yıprattığı için, isabetler ve ıskalamaların düzgün bir şekilde ayırt edilmesi gerekir.
3.1 Uygulama Platformu
Değerlendirmede uygulanan yöntemlerimizi aşınma dengeleme kalitesine göre değerlendirdiğimiz için, uygulamamız için yaşı (yani bellek hücresi başına toplam erişim sayısını) tam olarak çıkarabileceğimiz bir platform kullanıyoruz.

Önceki çalışmalarımızın [10] tam sistem simülasyon tabanlı çerçevesini kullanıyoruz. Bu çerçeve, gem5 simülatörünü, NVM simülasyonları için NVMain eklentisi ve uygulama ile işletim sistemi belleğinin keskin bir şekilde ayrılmasına olanak tanıyan özel bir işletim sistemi ile birlikte çalıştırır. NVMain, her simülasyon için her bellek erişimi (yani okuma ve yazma erişimleri) hakkında kesin bilgiler içeren bir izleme dosyası çıkarır.
Bu çalışmanın ilerleyen kısımlarında aşınma dengeleme stratejilerinin uygulanmasını açıklayacağız. Bu stratejileri, simülasyon çerçevesinde de çalışan çıplak metal işletim sistemi için uyguladık. Bu nedenle, algoritmalarımızı gerçekçi bir tam sistem simülasyonunda doğrudan değerlendirebiliyoruz ve sonuçta elde edilen bellek erişim izini analiz ederek herhangi bir üst düzey tahmine güvenmiyoruz. aşınma dengeleme özelliği etkinleştirilmiş bir simülasyon.
Kodun doğrudan simülasyon çerçevesinde mevcut olması nedeniyle kıyaslama uygulamalarını [10] yeniden kullanıyoruz. Bununla birlikte, aşınma dengeleme tekniklerimiz CPU mimarisinden bağımsızdır ve somut uygulama ve değerlendirme, bellek simülatörü [10] nedeniyle ARM tabanlı bir 64-bit uygulama işlemcisi (ARMv8) için yapılır.
Belirli bir CPU mimarisi üzerinde somut bir uygulamanın, bu makalede de belirtilen birkaç özel uygulama ayrıntısı gerektirdiğini unutmayın. Ancak bu ayrıntılar diğer CPU mimarilerine yeniden uygulanabilir.
4 SORUN ANALİZİ
Aşınma dengeleme ihtiyacını göstermek ve belirli bölgeler için aşınma dengelemeyi haklı çıkarmak amacıyla, bu bölümde bir dizi kıyaslama uygulamasının bellek erişim davranışını analiz ediyoruz ve bellek ömrü üzerindeki etkisini tartışıyoruz. Karşılaştırmalı değerlendirme uygulamaları aşağıda ayrıntılı olarak sunulmaktadır:
• Dijkstra, MiBench paketinin [8] bir parçasıdır ve Dijkstra algoritmasına göre bir grafikteki en kısa yolları hesaplar. Bu kıyaslamanın özelliği, algoritmanın adımlarının veri bölümünde saklanan bir kuyrukta yönetilmesidir.
• çözümleme, NVM simülasyon kurulumunun [10] bir parçasıdır ve Gauss eleme algoritmasına göre bir doğrusal denklem sistemini çözer. Bu kıyaslama, girdi verilerini doğrudan değiştirir.
• aynı zamanda MiBench paketinin [8] bir parçasıdır ve verilen giriş verilerinin SHA-1 karmasını hesaplar.
• qsort, NVM simülasyon kurulumunun [10] bir parçasıdır ve hızlı sıralama algoritmasının yinelemeli bir uygulamasıdır. Bu nedenle, yalnızca giriş verileri değiştirilmez, aynı zamanda yığın segmenti de yoğun bir şekilde kullanılır.
• rijndael, MiBench güvenlik paketinin [8] bir parçasıdır ve verilen giriş verilerini Rijndael algoritmasıyla şifreler. Bu kıyaslama için girdi bir dosyadan okunmaz ancak veri bölümünün kendisindeki bölgeden okunur.
• crc32 aynı zamanda MiBench güvenlik paketinin [8] bir parçasıdır ve verilen girdi verileri üzerinde crc sağlama toplamlarını hesaplar

İki farklı senaryoyu (okuma-yıkıcı ve okuma-yıkıcı olmayan NVM sistemleri) hedeflediğimiz için her iki durumu da analiz ediyoruz. Okumaya zarar vermeyen NVM sistemleri için, bellek hücresi başına toplam yazma erişimi sayısını araştırırız ve okumaya zarar veren NVM sistemleri için, bellek hücresi başına birikmiş okuma ve yazma erişimi sayısını araştırırız. Karşılaştırma uygulamalarını daha önce açıklandığı gibi yürütüyoruz ve sonuçta ortaya çıkan bellek erişim modellerini Şekil 1 ve 2'de gösteriyoruz.

Bellek erişimlerinin farklı bellek bölgelerindeki bellek hücrelerinde farklı hızlarda gerçekleştiğini gözlemliyoruz. Genel olarak, tekdüze erişim modellerine sahip geniş bölgelere rağmen yoğun erişim sıcak noktaları bulunabilir.
Bu sıcak noktaların hafıza ömrü üzerinde ciddi bir etkisi vardır, çünkü yalnızca birkaç hücre yoğun bir şekilde yıpranır, diğer hücreler ise hiç kullanılmaz. Bu erişimler daha iyi dağıtılsaydı, kullanım ömrü büyük ölçüde artacaktı.
Okumaya zarar vermeyen NVM'ler için (Şekil 1), yoğun yazma sıcak noktaları çoğunlukla kullanılan yol yığını belleğinden kaynaklanan yığında bulunur. Diğer tüm bölgeler daha az yazma sıcak noktasıyla karşı karşıyadır. Okumayı bozan NVM'ler için, derlenen program kodu bu bölgede bulunduğundan ve yürütme sırasında okunduğundan okuma etkin noktaları metin bölgelerinde de bulunabilir.

Genel olarak, aşınma dengeleme algoritmalarımız için iki hedef çıkarıyoruz. Öncelikle farklı erişim frekanslarına sahip bölgelerin çalışma süresi boyunca doğru bir şekilde tespit edilmesi ve erişim sıklığına göre diğer bellek bölgelerine yerleştirilmesi gerekmektedir. Bu hedefi gerçekleştirmek için kaba taneli, yaşlanmaya duyarlı bir aşınma dengeleme algoritması öneriyoruz.
İkincisi, yoğun erişim sıcak noktalarının, erişimlerin bellek hücrelerinin daha geniş bir bölgesine yayılacağı şekilde çözülmesi gerekir. Bu, tek hücrelerin stresini azaltır ve yıpranmayı daha geniş bir bölgeye ortalamaya alır. Bunu başarmak için iki tane ayrıntılı çözüm öneriyoruz: biri yığın bölümü için, diğeri metin bölümü için.
5 KABA TANELİ AŞINMA TESVİYESİ
Bu bölümde, önerilen yaşlanmaya duyarlı kaba taneli aşınma dengelemenin ayrıntılarını açıklıyoruz. Bir bellek hücresinin yaşını değerlendirmek için belleğe erişim davranışının izlenmesi gerekir. Geçerli erişim davranışı donanım tarafından izlenemiyorsa ve çalışan uygulama için herhangi bir bellek izi bilinmiyorsa, eskimeye duyarlı teknikler varsayılan olarak uygulanamaz.
Bu sorunun üstesinden gelmek için, öncelikle, yalnızca yaygın olarak bulunan donanım desteğini (örn. MMU, performans sayaçları) kullanarak bellek erişim dağıtımını (yani sabit boyutlu bellek bölgelerine yazma ve okuma sayısını) tahmin eden, yazılımla yönetilen bir erişim dağıtımı yaklaşım tekniği öneriyoruz. ve kesintiye uğrar).
Bu erişim yaklaşımı, çalışma zamanı ortamında (örneğin, işletim sistemi) bir sistem hizmeti olarak uygulanır. Erişim dağıtımı yaklaşımı daha sonra yaşlanmaya duyarlı bir aşınma dengeleme algoritmasına girdi olarak sağlanabilir.
5.1 Yazma Erişimi Örneklemesi
Daha önce de belirtildiği gibi, yazılımla yönetilen kaba taneli aşınma dengelemeye yönelik ilk adım, bellek erişim dağılımının uygun bir şekilde tahmin edilmesidir. Yazma ve okuma erişimleri için bu yaklaşımın yakalanması çoğunlukla benzer olsa da, öncelikle yazma yaklaşımının yakalanmasını ayrıntılı olarak sunuyoruz. Daha sonra, okuma yaklaşımını da yakalamak için gereken ek adımları açıklayacağız.
Bir uygulamanın çalışma zamanında yazma dağıtımının yaklaşık olarak kaydedilmesi için birkaç adım gereklidir. İlk olarak, her yazma örneğini eşit aralıklarla örnekledik, uygulamanın yazma erişimini hedef adresini yakaladık ve uygun bir veri yapısında sakladık.
Cwritesample sayısı, yaklaşıklık tekniğinin zamansal ayrıntı düzeyini belirler ve doğruluk ile ortaya çıkan ek yük arasında bir denge kurulmasına olanak tanır. Yazmayı yakaladıktan sonra veri yapısının uzamsal ayrıntı düzeyi de dikkate alınmalıdır.
Her bayt için tahmini yazma sayısının saklanması, büyük bir depolama yüküne neden olur ve zamansal ayrıntı düzeyi kaba olduğunda kesin olmayan sonuçlara yol açar. Bunun yerine baytlar daha büyük bellek bloklarıyla ilişkilendirilebilir ve yazma sayıları bu bloklara her yazma erişimi için toplanır. Uygulamamız için, 4-kB bellek blokları için yazma sayılarını topluyoruz çünkü aşınma dengeleme algoritması bu ayrıntı düzeyini dikkate alır (yani karar, bellek sayfalarına dayalıdır).
Her blok için bir 8-bayt sayacı kullanıldığında, yaklaşık yazma dağıtımını depolamak için 1512 · bellek boyutunda bayt gerekir (örneğin, 1 GB ana bellek izlendiğinde 2 MB).
Her Cwrite örneğinin ve belleğe yazma erişiminin hedefini yakalamanın ayrıntılı akışı, iki tekniğin uygulanmasını gerektirir. İlk olarak, yazma erişimi aracılığıyla her Cwrite örneğinden sonra bir tuzak oluşturulmalıdır ve böylece yaklaşım uygulaması harekete geçebilir. Daha sonra, belleğe yazma erişiminin hedefi belirlenmeli ve veri yapısında saklanmalıdır.
Her iki uygulamaya da ileride ayrıntılı olarak yer verilmiştir. Her ne kadar Gogte ve ark. [6] örneklenmiş aralıklarla CPU yazma isteklerinin doğrudan yakalanmasına izin verir, yaklaşımları özel bir hata ayıklama yeteneğine dayanır.
Yöntemimiz, daha yaygın olarak kullanılabilen donanım özelliklerinden yararlanan bir alternatif sağlar. Vogland Eckert [21] bir uygulamanın talimat yürütmesini özel olarak analiz etmek için performans sayaçlarının kullanılmasını önermektedir. Aşağıda açıklandığı gibi, bir uygulamanın bellek kullanımını analiz etmek için benzer şekilde performans sayaçlarını kullanırız.

For more information:1950477648nn@gmail.com






