Hareket Tabanlı Bellek Ayşe GENÇ
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?
Çakışma Sezme
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 – derleyici rolü
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 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”, “MESI protocol”, “Rochester Software Transactional Memory”,