Ptlsim

PTLsim, x86 işlemcilerinin iç yapısını taklit eden bir benzetimliktir. Intel x86 programlarının gerçek bir işlemcide nasıl çalışacağını denemek ve mikroişlemcinin iç yapısında yapılan değişikliklerin ne tür etkiler yaratacağını gözlemek amacıyla kullanılır.PTLsim Matt T.Yourst tarafından başlangıcı 2001’e dayanan bir süreçte tasarlanmış ve geliştirilmiştir. Esas PTLsim kod temeli, düzensiz işlemci modeli de dahil olmak üzere, 2003’ten beri aktif olarak geliştirilmekte ve belli başlı yüzlerce üniversite, endüstri araştırma laboratuvarları ve çeşitli tanınmış mikroişlemci sağlayıcılarına ek olarak Binghamton’daki New York Eyalet Üniversitesi’ndeki işlemci tasarım araştırma grubu tarafından kullanılmaktadır. PTLsim mikroişlemcinin, araştırmacılarının çağdaş ve daha geniş çapta kullanılan, rahatlıkla ulaşılan donanım uygulamalarıyla bir komut setine (x86 ve x86–64) geçmesine yardım etmesi amaçlanmaktadır. Böylece sadece Alpha veya MIPS tabanlı komut setlerini destekleyen simülasyon araçlarıyla takılıp kalmış araştırmacılar için yeni bir fırsat sağlanmış olunmuştu. PTLsim yazılımı ve el kitabı GNU Genel Kamu Lisansı sürüm 2 altında lisanslı bedava yazılımlardır.PTLsim x86 ve x86–64 komut setleri için en modern çevrim hatasız mikroişlemci simülatörü ve sanal makinedir. PTLsim, düzensiz bir x86–64 uyumlu, CPU’daki tam-hızlı doğal uygulamalardan tüm anahtar boruhattı yapılarının RTL seviye modellerine kadar inen işlemci çekirdeğini modern bir superscalar olarak modeller.Buna ek olarak, tüm önbellek hiyerarşisi, bellek altsistemi ve destekleyen donanım araçları gerçek çevrim doğruluğuyla modellenir. PTLsim Pentium 4+, Athlon 64 ve bütün uzantılarla benzer makinelerin tam x86–64 komut setlerini destekler (x86–64, SSE/SSE2/SSE3, MMX, x87). PTLsim günümüzde gerçek x86 mikro mimarilerini destekleyen kamuya açık tek doğru çevrim modelleme aracıdır ve çoğu çevrim hatasız simülatörden çok farklıdır.Çünkü simüle ettiği platformda çalışır (bir x86 or x86–64 makinesi, tipik olarak Linux çalıştırır). PTLsim’in çalışan kullanıcı koduna tamamen şeffaf olarak herhangi bir zamanda düzensiz simülasyon modu ve doğal x86 veya x86–64 moduna geçmesi ve bu modlardan çıkması mümkündür. Bu da kullanıcıların kullanıcı kodunun ilginç olmayan kısımlarıyla uğraşmadan küçük bir kısmını hızlıca “profile” etmelerine izin verir ve gerçek bir referans makinesiyle simülasyon arasındaki ıraksama noktasını bularak otomatik hata ayıklamayı mümkün kılar. Klasik sürüm herhangi bir 32-bit veya 64-bit tek thread’li userspace Linux uygulamasını çalıştırır.PTLsim altında tipik benchmarklardan grafik uygulamalarına ve network sunucularına kadar geniş aralıktaki programları başarılı bir şekilde çalıştırılmıştır. PTLsim/X yalın donanım üzerinde çalışır ve tam sistem x86–64 simülasyonu, çoklu-işlemci ve çoklu-parçacık desteği, kontrol noktaları, çevrim hatasız sanal araç zamanlama modelleri, kararlı zaman açılımı ve daha birçok özelliği PTLsim’in tasarımında var olan hız ve hatasızlıktan ödün vermeden sağlamasına izin vererek Xen hipervizörüyle bütünleşir. PTLsim/X her Xen-uyumlu işletim sisteminin simülasyon altında koşmasını mümkün kılar; bu şekilde başarılı bir şekilde rastgele Linux dağıtımlarını ve standart endüstri uygulamalarıyla benchmarkları PTLsim/X ile boot edilir.Muadili simülatörlerle karşılaştırıldığında, tam çevrim hatasız düzensiz simülasyon modunda çalışırken bile PTLsim oldukça yüksek performans sağlamaktadır. Kapsamlı ayarlama sırasında, önbellek profili ve x86 belirli hızlandırılmış vektör işlemleri ve komutlarının kullanımında, PTLsim geleneksel araştırma simülatörleriyle karşılaştırıldığında simülasyon zamanını belirli ölçüde keser. En iyilenmiş çekirdekle bile, PTLsim en iyilenmiş C++ model sınıflarının ve senkronize mantık tasarımına uygun hale getirilen kütüphanelerinin kullanımı sırasındaki deneylerin kolaylığı için belirgin ölçüde esnekliğe izin verir.En Son Sabit Sürümü https://web.archive.org/web/20110724114014/http://www.ptlsim.org/ptlsim-20090314-r229.tar.bz2 adresinden sağlanabilir. (PTLsim’in tüm test takımlarını geçen en güncel sürümüdür.)Geliştirme SnapShotlarına https://web.archive.org/web/20110724113234/http://www.ptlsim.org/ptlsim-snapshot.tar.bz2 adresinden ulaşılabilir.Not: Bu dosyalar gzip değil bzip2 kullanılarak sıkıştırılırlar. Dosyaları herhangi bir Linux sistemine çıkarmak için “tar jxvf filename.tar.bz2” komutu kullanılır.Aynı PTLsim kod tabanı hem standart 32-bit x86 hem de 64-bit x86–64 üzerine temellendirilir. PTLsim’in oluşturulmasında ve çalıştırılmasında karışıklıktan kaçınmak için, PTLsim Kullanıcı Kılavuzu ve Referansı’nın “Getting Started” kısmını okunması tavsiye edilmektedir.PTLsim’e Linux kerneli ve daha birçok proje için kullanılan sürüm kontrol sistemi git aracılığıyla da ulaşılabilir. Otomatik olarak güncellendiğinden PTLsim’i elde etmek için önerilen bir yoldur.Mevcut PTLsim git kaynaklarına https://web.archive.org/web/20110130063301/http://www.ptlsim.org/git/ adresinden göz atılabilir.Yukarıdaki sabit veya geliştirme tar.gz paketleri indirilse bile, indirilen sürümü “git pull” u çalıştırarak her zaman son geliştirme sürümüne çevirmek mümkündür.PTLsim geliştiricileri ssh’da git clone git.ptlsim.org:/project/git/ptlsim-stable.git. kullanarak direkt olarak repo’ya erişebilirler.PTLsim daha önce “Subversion (SVN)” sürüm kontrol sistemi olarak kullanmaktaydı. Ancak onaylanmamış SVN kaynağı artık kullanılmadığı için bundan böyle git kaynağını kullanmak daha doğrudur. SVN sunucusu yakın zamanda kapatılacaktır.KVM/QEMU üzerine dayalı ve çığır açan birçok yeni özellik sunan PTLsim 3.0 başlangıç sürümü çıkarılmıştır. Bu sadece erken bir geliştirme ürünü olmakla birlikte henüz resmi olarak desteklenmemektedir. Başlangıç komutları için “PTLsim 3.0 KVM/QEMU Introduction and Preliminary Documentation (PTLsim-KVM-Intro.pdf) “ dokümanı yararlı olacaktır.KVM sürümüyle ilgili soru ve sorunlar için “ptlsim-kvm@ptlsim.org”, Xen-tabanlı ürünler içinse “ptlsim-devel@ptlsim.org” mail adresleri kullanılmaktadır.xen-3.1-ptlsim.tar.bz2: Tüm PTLsim uzantılarıyla pre-patched edilmiş Xen hipervizör (hypervisor) kaynak kodu (sürüm 3.1).linux-2.6.22.6-mtyrel-64bit-xen.tar.bz2: Xen uzantılarıyla ve yamalarıyla derlenmiş Linux 2.6.22.6 kerneli. Bütün gerekli modüller (xennet, xenblk, ext2) burada derlendiğinden bu kernel sadece domU için kullanılır. Fakat, dom0’daki gerçek donanımda kullanmak için gerekli sürücüleri toplarken mkinitrd kullanmaya ihtiyaç duyulabilir.linux-2.6.22-mtyrel-source.tar.bz2: Testte kullanılan özelleştirilmiş Linux kernel için kaynak kodu.ptlsim-disk-image-example.tar.bz2: Görüntüyü yeniden oluşturmada ve kontrol noktaları elde etmede kullanılan örnek disk görüntüsü ve kelime dizinleriDisk görüntülerinin ve kontrol noktalarının nasıl kurulacağını “SPEC cpu 2006 PTLsim için benchmark” takım seti dokümanında bulunabilir.Kullanıcılara PTLsim’i kıyaslama ortamında çalıştırırken yardımcı olmak amacıyla PTLsim ile birlikte “ SPEC CPU 2000 1.1” benchmarkları kullanılmaktadır. Benchmarkların en iyi derleyici seçenekleriyle oluşturulduğunu garanti etmek için bir dizi özel ayarlanmış make file’ lar kullanılır.SPECfp 2000: wupwise, swim, mgrid, applu, mesa, art, equake, apsi, sixtrack, ammp, fma3d, lucas, facerecSabit sürümünü indirerek veya Subversion kaynağını tarayarak PTLsim https://web.archive.org/web/20090518203721/http://www.ptlsim.org/download.php sayfasından yüklenir.SPEC 2000 kısmından dosyalar kopyalanır. Aşağıdaki komut dizisi SPEC CD veya dağıtımınızın rootunda bulunan benchspec dizinine ihtiyaç duyar. SPEC tescilli dosyalarını PTLsim’e özgü SPEC ağacına kopyalar ve kodu PTLsim tetik noktalarıyla yamar. Bu yamalar elinizde SPEC CPU 2000 v1.1 olduğunu, daha sonraki sürümler olmadığını kabul eder. get-from-spec /path/to/SPEC2000-CD/benchspecBenchmarklar için bütün derleme ve çalıştırma seçenekleri spec2000/Makefile.config içerisindedir. Tüm benchmarklar hem 32-bit x86 hem de 64-bit x86-64 formatındadır. İkili değerler buna göre isimlendirilir (e.g. spec2000/gzip/gzip-32bit ve spec2000/gzip/gzip-64bit), fakat setmode kelime dizini değerleri gerçek isimlerine bağlayacaktır (e.g. spec2000/gzip/gzip). Eğer benchmark takımını kaynaktan derlerseniz doğru bağlantılar otomatik olarak kurulacaktır.Seçeneklerin özelikle yüksek performans için x87 (32-bit x86 da varsayılan) yerine SSE2 matematiğini derlediği ve 64-bit ikili değerler AMD K8 için programlanırken Pentium 4 için 32-bit ikili değerleri programladığı gözden kaçmamalıdır.ptlsim/spec2000 dizinine gidilir. Tüm benchmarklara PTLsim yapılandırma seçeneklerini uygulamak için setconfig kelime dizini kullanılır. Buna aşağıdaki gibi bir örnek verilebilir:runbench-cluster Perl komut dizini (script) test grubumuzdaki 25 benchmarkın hepsini de bütün yükü tüm makineler ve CPU’lar arasında otomatik olarak eşit dağıtarak bir Linux öbeğinde çalıştırır, böylece toplam çalışma zamanı minimum yapılmış olunur.Komut dizini listelenmiş benchmarkları paralel alt listelere ayırır. Daha sonra her bir makineye bağlanmak için ssh kullanır. Her bir öbek makinesindeki her bir CPU üzerinde seri olarak bir alt-liste çalıştırmak için runbench-local yardımcı komut dizisini başlatır. Bu, teknik olarak her benchmarkın dizinine girilerek ve make run çalıştırılarak yapılırUygunluk açısından, runbench-cluster-all kullanılabilir bütün benchmarkların tam listesiyle runbench-cluster’ ı başlatacaktır.Benchmarkları seri olarak çalıştırmak için benchmark dizinine gidilir (e.g. spec2000/gzip) make run yazılır. En üst seviye spec2000 dizininde de make run yazabilirsiniz, fakat bu durumda benchmarklar paralel yerine seri olarak çalışacaktır.logfile PTLsim’in genel bilgi içeren kayıt dosyasıdır. Bu bilgi son ana kadar kaç adet çevrim ve teslimat (commit) gerçekleştirildiğini de kapsamaktadır (kontrol etme işlemi için yararlıdır).Daha fazla bilgi için PTLsim Kullanıcı Kılavuzu ve Referansına bakılmalıdır. Dosya isimlerini değiştirmek için setconfig komutu kullanılabilmektedir.