MPACT-Sim'e giriş

MPACT-Sim, çok çeşitli talimat seti mimarileri için yüksek performanslı ISA simülatörleri oluşturmayı kolaylaştırmak üzere tasarlanmış bir çerçeve ve kitaplıktır. MPACT-Sim kullanılarak oluşturulan simülatörleri oluşturmak, kullanmak kolay ve hızlıdır. MPACT-Sim için motive edici kullanım alanı, mimari keşifler için simülatörleri (talimat seti) hızlı bir şekilde oluşturmak ve kolayca değiştirmektir. Ancak sonuçta ortaya çıkan simülatör, donanım kullanılabilirliği olmayan (veya sınırlı) mimarilerde sistem modelleme, derleyici doğrulaması veya yazılım geliştirme için de kullanılabilir.

MPACT-Sim, talimat semantiğini basit C++ işlevleri/çağrılabilirler olarak ifade etmeyi ve uygulamayı kolaylaştırır. MPACT-Sim, aynı zamanda talimat kod çözücüsünün çoğunun otomatik olarak oluşturulmasını sağlamak amacıyla talimatların ifade edilmesi için bildirim temelli bir metodoloji de sunar. Bu yöntem, yeni simülatörlerin oluşturulmasını kolaylaştırır ve hızı artırır. Özel yapılandırma girişleri kolayca eklenebilir ve ortaya çıkan simülatörler, bir dizi standart sınıf kullanılarak kolayca kullanılabilir.

Eğiticiler

Aşağıdaki eğiticilerde, RV32I mimari alt kümesi için derlenmiş bir "helloworld" uygulamasını çalıştırmak üzere yeterli olan RiscV talimatlarının bir alt kümesi için ISA simülatörü oluşturma kılavuzu adım adım açıklanmaktadır. Bu toplantılarda aşağıdaki faaliyetler ele alınmaktadır:

  • RV32I için ISA kod çözücü açıklaması yazın.

    Bu, harici temsillerinden (kodlama) bağımsız olarak bireysel talimatları tanımlar. Bu açıklama, simülatörün dahili talimat açıklayıcılarını başlatan C++ kodu oluşturmak için kullanılır.

  • RV32I için ikili kod çözücü açıklaması yazın.

    Bu, talimatların, bit alanlarının ve değerlerinin ikili kodlamasını açıklar. Bu kullanım, talimat kelimesini işlem kodu ile eşleyebilen ve belirli bit alanlarının değerlerini çıkarabilen talimatlar için bir kod çözücü oluşturmak amacıyla kullanılır.

  • Üretilen iki kod çözücüyü entegre eden ve oluşturulan kodun ne işe yaramadığını belirtmek için gerekli kodu ekleyen entegre (tam) bir talimat kod çözücü yazın.

  • Hedef RV32I talimatlarının her birinin uygulamalarını sağlamak için talimat semantik fonksiyonlarını yazın.

Simülatörü tamamlamak için gereken kodun (öğretim sorununu kontrol eden kod dahil) yazılması, mevcut eğiticilerin kapsamında değildir ancak gelecekte eklenebilir. Ancak örnek kod, hem eğitim deposunda hem de [MPACT-RiscV Simulator]https://github.com/mpact-riscv deposunda görüntülenebilir.

Simülatör altyapısı C++'ta yazıldığından C++ hakkında iyi düzeyde bilgi sahibi olduğu varsayılır.