270 likes | 585 Views
Hareket Tabanlı Bellek. Ayşe GENÇ 504061504. AJANDA. Neden Hareket Tabalı Bellek? Temel Kavramlar Donanımsal HTB Yazılımsal HTB Bütünleşik HTB. Neden HTB?. Çok çekirdekli/çok işlemcili ve paylaşılan bellekli sistemler Tutarlılık problemi Geleneksel Karşılıklı-Dışlama yöntemi
E N D
Hareket Tabanlı Bellek Ayşe GENÇ 504061504
AJANDA • Neden Hareket Tabalı Bellek? • Temel Kavramlar • Donanımsal HTB • Yazılımsal HTB • Bütünleşik HTB
Neden HTB? • Çok çekirdekli/çok işlemcili ve paylaşılan bellekli sistemler • Tutarlılık problemi • Geleneksel Karşılıklı-Dışlama yöntemi • Ölümcül kilitlenme • Hata yapma riski yüksek
Neden HTB? • Hareket Tabanlı Bellek • Çakışma olmayacağı iyimserliği üzerine kurulu • Kritik bölümler atomik olarak belirleniyor ve soyutlanıyor • Eş zamanlı erişime izin var • Senkronizasyon problemi olmadan yürütülmesi artık HTB sorumluluğunda atomic{ hist[index]++; }
Neden HTB? • Programlaması kolay • Yüksek paralellik • Ölümcül kilitlenme yok!
Kavramlar - Hareket • Hareket (transaction) • okuma/yazma komutlarını da içeren komutlar kümesi • Tamamlanma(commit) • Hareketin içerdiği tüm komutlar ve gereken bellek güncellemeleri gerçekleştirilir. • Kesilme (abandon) • O ana kadar yapılan tüm işlemler geri alınır. • Hareket daha sonra tekrar yürütülecektir
Veri-versiyonlama • Veri- versiyonlama ( data-versioning ) • Yazma işlemi ile ilgili şüpheli durumları kotarmak • Tamamlanma durumunda veriyi diğer işçiklere görünür kılmak • Kesilme durumlarınında değişiklikleri geri alabilmek
Veri-versiyonlama • İki tip Veri-versiyonlama • Geri-al günlüğü (undo log) • Güncelleme ilgili bellek alanında yapılır • Bellek alanının eski değeri ve adresi günlükte tutulur • Güncelleme tamponu (buffed updates) • Güncellemeler harekete özel tamponlarda yapılır • Hareketin tamamlaması halinde belleğe yansıtılır
Çakışma Sezme • Hareket Yazma Kümesi ve Okuma kümesi ile ilişkilendirilmiştir. • Load için bellek adresi okuma kümesine alınır. • Store için bellek adresi ve yazılacak veri yazma kümesine alınır.
Çakışma Sezme • Sabırsız Sezme (Eager detection) • Hareketteki tüm okuma yazma kümeleri kontrol edilir • Uyuşuk Sezme (Lazy detection) • hareket tamamlanacak noktaya gelene kadar beklenir • Daha sonra okuma yazma kümeleri diğer işçiğin okuma yazma kümeleri ile karşılaştırılır.
Çakışma Sezme • Çözüm genellikle çakışmaya neden olan hareketlerden birinin kesilmesi olacaktır. • hangi hareketin kesilmesi hangi hareketin tamamlanması gerektiğine nasıl karar verilecek?
Hareket Tabanlı Bellekler • Donanımsal Hareket Tabanlı Bellek (HTM) • Yazılımsal Hareket Tabanlı Bellek (STM): donanımsal hiçbir değişikliğe gerek duymayan sistemlerdir • Karma Hareket Tabanlı Bellek: Donanım temelli olup yazılımdan da destek alan (HyTM-Hybrid TM) ya da Yazılım temelli olup donanımdan da destek alan (HaSTM-Hardware assisted TM) çeşitleri vardır.
HTM - Soyutlama • Hareketler için ISA üzerindeki değişikliklerle bir kaç komut eklenmiştir: • STR (start transaction) : hareket başlangıcı • ETR (end transaction) : hareket sonu • TLD : hareket için load komutunun özel bir versiyonu • TST: hareket için store komutunun özel bir versiyonu • ABR(abort) : hareketin kesilmesi için • VLD (validation): geçerlilik
HTM- Veri versiyonlama • Güncelleme tamponu • Güncelleme tamponu: • veri cebinde • donanım tampon
HTM – Çakışma Sezme • MESI cep tutarlılık protokolü kullanılır. • Bu protokol için fazladan iki bit eklenmesi yeterlidir. • MESI protokolü, ilgili blokta (cache line) şu bilgileri tutar: • M (modified) : cepteki veri güncellenmiş ve bellektekinden farklı. Bellek güncellemesi gerekir. • E (exclusive): cepteki veri güncellenmemiş, bellektekiyle aynı • S (shared): paylaşılan bellek alanı • I (invalid): cepteki veri geçersiz, belleğe yazılmamalı
STM - Soyutlama • Hareket içindeki veriler için ayrı bir veri yapısı kullanılması • STM tarafından özel metadataların kullanılması. • Diller, derleyiciler ve kütüphaneler ile sağlanır • Haskell, Atomus, Argus,C# dilleri...
STM – veri versiyonlama • Güncelleme Tamponu • Her harekete özel gölge kopyası (shadow copy) • okuma başvuruları da bu gölge kopyaya başvurur • Okuma için gölge kopya içinde arama maliyetli
STM – veri versiyonlama • Geri- al günlüğü • Güncelleme doğrudan küme bellek (heap) üzerinde yapılır ve günlüğe kaydedilir • Okuma işlemlerinde hareket içi tutarlılık sağlanır, aramaya gerek kalmaz!
STM – Çakışma Sezme • Engelsiz(Non-blocking) • Hareket Verisi kilitleme (transactional lock) • Karşılaşma anında (encounter-time) • Tamamlanma anında (commit time) • Karma (Hybrid)
HTM / STM • HTM hızlı ve tam işlevsel, ancak hareket boyu (transaction size) sınırlı (max. Veri cebi boyu) • STM, esnek, hareket boyu sınırı sanal belleğe kadar uzanıyor, ancak HTMye göre hantal kalıyor.
Bütünleşik HTB • Temelde yazılımsal hareket tabanlı bellek olmakla birlikte daha hızlı çalışması için donanımla desteklenmiş bir sistemdir.
Bütünleşik HTB – HTM eklentileri • Güncelleme Uyarısı (alert-on-update) • Hareket ilgilendiği alanı işaretliyor ve oluşan bir güncellemede haberdar ediliyor. • Hızlı çakışma denetimi • programlanabilir veri izolasyonu (programmable data isolation) • MESI protokolü genişletilerek TMESI protokolü oluşturulmuş • Hareket içindeki değişiklikler T(M,I,E) gibi tutulup daha sonra belleğe yansıtılıyor. • Hızlı sonuçlanan tamamlama/kesme
Bütünleşik HTB - STM • Bütünleşik hareket tabanlı bellek: • Engelsiz (nonblocking) çalışan • Özel hareket veri nesneleri içeren • Çakışma sezme için sabırsız/uyuşuk arasında geçiş yapma esnekliğine sahip, aynı zamanda donanımdan gelen uyarıları dinleyen • Hareket boyu için sınırsız kapasite kullanabilen • Tamamlanma/kesilme durumlarını hızlı kotaran • Güncelleme tamponu olarak CPUya daha yakın ikinci bir cep ve hareket nesnelerinin kopyasını kullanabilen.
Kaynakça • Harris T., Cristal A., Unsal O.S., Ayguade E., Gagliardi F., Smith B., Valero M., “Transactional Memory: An Overview” , IEEE Computer Society publications, May-June 2007. • Ananian C. S., Asanovic K. , Kuszmaul B. C., Leiserson C. E. , Lie S.,“Unbounded transactional Memory”, Proceedings of the 11th Int’l Symposium on High-Performance Computer Architecture, IEEE,2005. • Dice D., Shavit N.,“Understanding tradeoffs in Software Transactional memory”, International Symposium on Code Generation and Optimization, IEEE,2007 • Shriraman A., Spear M. F., Hossain H. , Marathe V. J., Dwarkadas S. , Scott M. L., “An Integrated Hardware-Software Approach to Flexible Transactional Memory”, Department of Computer Science, University of Rochester, 2006 • Blundell C., Lewis E. C. , Martin M. M. K., “Subtleties of Transactional Memory Atomicity Semantics”,IEEE Computer Architecture Letters VOL. 5, NO. 2, 2006 • “Software Transactional Memory”, http://en.wikipedia.org/wiki/Software_transactional_memory • “MESI protocol”, http://en.wikipedia.org/wiki/MESI_protocol • “Rochester Software Transactional Memory”, http://www.cs.rochester.edu/research/synchronization/rstm/