3. DRAM Organizasyonu
● Güncel yüksek performans işlemciler 2 veya 4
bağımsız hafıza denetleyicisine sahiptir.
● Her bir hafıza denetleyicisinin kendisine tahsis
edilmiş bir DDRx kanalı bulunmaktadır.
● DRAM, yerellikten ve istek seviyesi paralellikten
faydalanabilmek için kanallar, ranklar, banklar,
satırlar ve sütunlar olarak organize edilmiştir.
● Her kanal, paralel olarak erişebilecek ranklara
sahiptir. Ranklar ise ortak veri ve adres yolunun
paylaşılması için satırlar ve sütunlar olarak organize
edilmiştir.
5. DDRx Denetleyicisi
● Ön bellek alt sisteminden aldığı okuma/yazma isteklerini
alıp, uygun DRAM komutlarını oluşturmaktadır.
● Her bir okuma/yazma isteği, DRAM üzerinde bir satıra ait
çoklu sütunlara erişim gerektirmektedir. Sütun erişimi
öncesinde her bir satırın, satır arabelleğine activate
komutu ile yüklenmesi gerekmektedir.
● Aynı satıra yapılan ardışık erişimler düşük gecikmeye
tabidir ve satır isabeti (row hit) olarak adlandırılır.
● Satır kaybı (row miss) ise precharge komutu ile hafıza
dizisinin ön dolumunu gerektirmektedir. Ön dolum için
yeni satır, satır arabelleğine activate komutu ile
yüklenmektedir.
6. PARDIS
● Pardis (Programmable Architecture for the DDRx
interfacing standards), son seviye önbellek
denetleyicisinden istek kuyruğu adı verilen bir ilk giren ilk
çıkar (FIFO) kuyruğu aracılığıyla okuma/yazma isteklerini
alır ve işlemci-hafıza arasındaki veri iletişimini
düzenleyen DDR3 komutları üretir.
● Bu süreci birbirine sıkı bağlı 3 bileşen aracılığıyla
gerçekleştirir:
○ İstek İşlemcisi
○ İşlem İstemcisi
○ Komut Lojiği
8. 1. İstek İşlemcisi
● İstek işlemcisi, istek kuyruğundan sıradaki isteği çeker ve
istek adresine yönelik DRAM koordinatları kanal, rank,
bank, satır ve sütun numaraları olarak üretir.
● Üretilen bu koordinatlar ile yeni bir DDRx işlemi oluşturur
ve işlem kuyruğuna yerleştirir.
● İstek işlemcisi, Pardis üzerindeki istekten hafıza işlemine
yönelik dönüşümün ilk katmanıdır ve başlıca görevi DRAM
adres haritama işlemini gerçekleştirilmesidir.
9. İstek İşlemcisi Mimarisi
● İstek işlemcisi, ayrık komut ve veri hafızalarına barındıran
16-bit indirgenmiş komut seti hesaplama (RISC)
mimarisini sahiptir.
● İstek işlemcisi adres yönlendirmesi için özelleşmiş veri
türlerine, depolama yapılarına ve komutlara sahiptir.
● İstek işlemcisinin komut seti mimarisi işaretsiz tamsayı ve
istek olmak üzere iki veri türünü desteklemektedir.
● İşlemci içindeki programcıya görünür olan veri yapıları
mimari kayıtçıları, veri hafızası ve istek kuyruğudur.
● İstek işlemcisi aritmetik mantık ünitesi (ALU), kontrol
akışı, hafıza erişimi ve kuyruk erişimi olmak üzere 4 türde
toplam 44 adet 32-bit komutu desteklemektedir.
10. İstek İşlemcisi Komut Set Mimarisi
Komut Türü Komut
ALU ADD, SUB, SLL, SRL, AND, OR, XOR, NOT
Kontrol Akışı JMP, BEQ, BNEQ, BTQE
Veri hafızası LOAD, STORE
Kuyruk erişimi -R ve -T ile belirtilmiş bütün komutlar
11. İstek İşlemcisi Görev Katmanları
1. İlk katmanda istek işlemcisi komut belleğinden komutu
çeker.
2. İkinci katmanda işlemci kontrol sinyallerini seçip çıkartmak
için çekilmiş komutları çözümler, kayıt dosyasından
işlenenleri (operandları) okur. Ve istek kuyruğundan sıradaki
isteği çeker.
3. Üçüncü katmanda 16-bit ALU işlemi veya eğer komut bir
yükleme (load) veya depolama (store) komutu ise efektif
adres hesaplama işlemi gerçekleştirilir.
4. Yükleme (load) ve depolama (store) işlemleri dördüncü
katmanda veri belleğine erişir.
5. Son katmanda ise her bir komut kayıt dosyasına geri yazılır.
12. 2. İşlem İşlemcisi
● İşlem işlemcisi, her hafıza işleminin kaynak
ihtiyaçlarını, zaman kısıtlarını kaydeder ve bu
bilgileri kullanarak performans, enerji ve
servis kalite hedeflerini gerçekleştirmek üzere
DDRx komutları üretir.
● Bu sebeple işlem işlemcisi, temel olarak komut
zamanlama ve DRAM yenileme, güç yönetimi
gibi görevlerde yer alır.
● İşlem sürecinin sonucunda FIFO yapısındaki
komut kuyruğuna komutlar yerleştirilir.
13. İşlem İşlemcisi Mimarisi
● İşlem işlemcisi, ayrık komut ve veri hafızalarına barındıran 16-bit
indirgenmiş komut seti hesaplama (RISC) mimarisini sahiptir.
● İşlem işlemcisi, komut zamanlama, güç yönetimi, DRAM yenileme gibi
hesaplama yükü ağır olan görevlerden sorumlu olduğundan istek
işlemcisine göre daha güçlü bir komut seti mimarisine sahiptir. İşlem
işlemcisi işlem ve komut olmak üzere iki ek veri türüne sahiptir.
● İşlem işlemcisi ALU, kontrol akışı, hafıza erişimi, kesme işlemesi ve
kuyruk erişimi için kullanılmak üzere 30 adet komutu desteklemektedir.
● İşlemci ve kuyruk durumlarını saklamak için 64 programlanabilir sayaca
sahiptir. Bir işlem iki temel alana sahiptir: sabit ve değişken anahtarlar.
● Programcı bu alanları kullanarak işlem kuyruğu içinde arama
yapabilmektedir. Kuyruk FIFO yapısında olduğundan dolayı arama
sonucunda birden fazla sonuç bulunursa, işlemci en eski olanı ilk işlem
sonucu olarak getirmektedir.
14. İşlem İşlemcisi Komut Set Mimarisi
Komut Türü Komut
ALU ADD, SUB, SLL, SRL, AND, OR, XOR, NOT
Kontrol Akışı JMP, JR, RETI, BLT, BLSG, BMSK, BEQ, BNEQ,
BTQE, BCQE
Veri hafızası LOAD, STORE
Kesme MFSR, SIC
Kuyruk erişimi LTQ, CTQ, UTQ, SRT, LCQ, ICQ
-C ile belirtilmiş bütün komutlar
15. İşlem İşlemcisi Görev Katmanları
1. İlk aşamada işlemci 64 KB komut belleğinden sıradaki komutu çeker.
2. İkinci aşamada işlemci komutu çözümler, genel ve özel amaçlı
kayıtçıları okur ve özel amaçlı kesme kayıtçıları ayarlar. Pardis, 64
adet programlanabilir sayaca sahiptir; bu sayaçların 32'sini süre
ölçüm (timer) kesmeleri ve geriye kalan 32 tanesini ise karar
vermede yardımcı olan istatistiki bilgileri tutmak için
kullanmaktadır.
3. Üçünçü aşamada 16-bit ALU işlemleri gerçekleştirilir ve paralelinde
işlem kuyruğuna erişilir.
4. Dördüncü aşamada komut kuyruğu ve veri belleği erişimi
gerçekleştirilir.
5. Son aşamada ise işlemci komut sonucunu kayıt dosyasına yazar.
16. 3. Komut Lojiği
● Komut lojiği oluşturulan komut akışını inceler ve komut
kuyruğunun başındaki komutu – ve gerekliyse boşlukları (stall)
– inceleyerek tüm DDRx zaman kısıtlamalarının
karşılandığından emin olur ve her bir komut yayınını DDRx
saati ile senkronize eder.
● Komut lojiği bir komut seti mimarisi ile programlanabilir
değildir; bununla beraber kontrol kayıtçıları ile her bir DDRx
zaman kısıtının değerinin belirlenmesini sağlamaktadır.
Böylelikle Pardis'in farklı sistemlere uyarlanabilmesi
sağlanmaktadır.
● Komut lojiği, maskeleme ve zamanlama tabloları ve
tanımlanan zaman kısıtları için tahsis edilmiş geri sayma
sayacından faydalanmaktadır.
18. Değerlendirmeler (1)
● Gerçekleştirim algoritmalarına göre
○ FCFS: First Come, First Served
○ FR-FCFS: First Ready, First Come, First Served
○ Par-BS: Parallelism Aware Batch Scheduler
○ TCMS: Thred Cluster Memory Scheduling
%5-8 arasında performans kaybı
19. Değerlendirmeler (2)
(a) Adres haritalama
(b) Yenileme yönetimi
(c) Enerji tüketimi
(d) Güç yönetimi
%4-5 arasında performans kaybı
20. Sonuçlar
● Pardis, DRAM iç kaynaklarının programlanabilir ve yapılandırılabilir
olmasını sağlayan ilk programlanabilir DRAM denetleyicisidir.
● Pardis, işlemci-hafıza arasındaki veri iletişimini düzenleyen, optimize
eden DDR3 komutları üretir.
● Pardis yüksek seviye kullanılışlık ve kabul edilebilir düzeyde
karmaşıklık için özelleşmiş donanım ile gömülü yazılım arasında kabul
edilebilir bir iş yükü (gecikme, enerji tüketimi) sunmaktadır.
● Pardis, istek ve işlem işlemlerini gömülü yazılımda, yapılandırılabilir
zamanlama doğrulamasını ise donanımda gerçekleştirmektedir.
● Programlanabilir denetleyici, hafıza kaynaklarını daha verimli bir
şekilde kullanabilmek için uygulamalara özel kontrol politikaları
tanımlanmasını sağlamaktadır. Aynı zamanda denetleyici gömülü
yazılımının hata düzeltmelerinin, güncellemelerinin yapılmasına ve
farklı komut zamanlayıcıların kullanılmasına imkan vermektedir.
21. Kaynaklar (1)
1. Bojnordi, M. N., & Ipek, E. (2012). PARDIS : A Programmable Memory
Controller for the DDRx Interfacing Standards, 00(c).
2. Bojnordi, M. N., & Ipek, E. (2013). Programmable DDRx controllers. IEEE
Micro, 33, 106–115. doi:10.1109/MM.2013.29
3. DDR3 SDRAM Specification. (2010). JEDEC. Retrieved from http://www.jedec.
org/standards-documents/docs/jesd-79-3d
4. Hur, I., & Lin, C. (2008). A comprehensive approach to DRAM power
management. In Proceedings - International Symposium on High-Performance
Computer Architecture (pp. 315–316). doi:10.1109/HPCA.2008.4658648
5. Kim, Y. K. Y., Papamichael, M., Mutlu, O., & Harchol-Balter, M. (2010). Thread
Cluster Memory Scheduling: Exploiting Differences in Memory Access
Behavior. Microarchitecture (MICRO), 2010 43rd Annual IEEE/ACM
International Symposium on. doi:10.1109/MICRO.2010.51
6. Mutlu, O., & Moscibroda, T. (2008). Parallelism-aware batch scheduling:
Enhancing both performance and fairness of shared DRAM systems. In
Proceedings - International Symposium on Computer Architecture (pp. 63–
74). doi:10.1109/ISCA.2008.7
22. Kaynaklar (2)
7. Rebeck, A. L. (1998). Memory Systems (p. 21). Retrieved from https://www.cs.
duke.edu/courses/fall98/cps104/lectures/week10-l2/sld021.htm
8. Rixner, S., Dally, W. J., Kapasi, U. J., Mattson, P., & Owens, J. D. (2000).
Memory access scheduling. Proceedings of 27th International Symposium on
Computer Architecture (IEEE Cat. No.RS00201). doi:10.1145/342001.339668
9. Stuechelixz, J., Kaseridisx, D., Hunter, H. C., & Johnx, L. K. (2010). Elastic
refresh: Techniques to mitigate refresh penalties in high density memory. In
Proceedings of the Annual International Symposium on Microarchitecture,
MICRO (pp. 375–384). doi:10.1109/MICRO.2010.22
10. Zhang, Z. Z. Z., Zhu, Z. Z. Z., & Zhang, X. Z. X. (2000). A permutation-based
page interleaving scheme to reduce row-buffer conflicts and exploit data
locality. Proceedings 33rd Annual IEEE/ACM International Symposium on
Microarchitecture. MICRO-33 2000. doi:10.1109/MICRO.2000.898056