Wave, son zamanlarda MIPS komut setinin (ISA) dünya çapındaki müşterilere serbestçe yetkilendirileceğini resmen duyurdu. Yeni nesil SOC'ler geliştirmek için dünyanın dört bir yanındaki yarı iletken şirketler, geliştiriciler ve üniversiteler için ücretsiz MIPS mimarisi sağlayın. MIPS mimarisi açık planı, tüm katılımcılara mimari lisans ücretleri ve telif hakkı ücretleri ödemeden en yeni 32 bit ve 64 bit MIPS mimarilerini ücretsiz olarak sunacak.Aynı zamanda, MIPS mimarisinin tüm kullanıcılarına dünya çapında yüzlerce öğe sağlayacaktır. Patent koruması var.
Bu hareket kısa bir süre içinde tam teşekküllü X86 ve ARM üzerinde çok fazla etkiye sahip olmayacak olsa da, şu anda oyuncuları katılmaları için bir afiş olarak açık kaynağa dayanan RISC-V'ye bir darbe için elverişli değil. RISC-V'nin birçok üretici arasında popüler olmasının nedeni, dünyadaki herhangi bir IC tasarım biriminin, herhangi bir fikri mülkiyet sorunu olmaksızın RISC-V tabanlı CPU'lar tasarlayabilmesidir. Bu, IC tasarım şirketlerini RISC-V ile çok ilgilenir.
Bununla birlikte, MIPS ayrıca ücretsiz lisansı duyurduktan sonra, RISC-V'nin sahip olduğu avantajlara yol açmıştır, MIPS de buna sahiptir ve herkes MIPS tabanlı CPU tasarlayabilir. MIPS komut seti ücretsiz olarak yetkilendirildikten sonra, daha iyi ekoloji ve daha iyi performans nedeniyle RISC-V üzerinde büyük bir etkiye sahip olacağı söylenebilir.
Elbette, Mips çekirdeği açık kaynaklı değildir ve temel lisanslama işi hala devam etmektedir. Bu çok mantıklı bir ticari düzenlemedir.Tüm komut setinin ekosistemi, açık kaynak komut seti aracılığıyla genişletilir ve ardından çekirdek yetkilendirme işi, genişletilmiş ekosistem tarafından geri beslenerek tam bir ticari kapalı döngü tamamlanır.
Birkaç yıl önce, EETOP OpenMips topluluğunu kurdu Moderatör herkes için daha gelişmiş bir MIPS tasarımını ve kodunu paylaştı, ancak o sırada Mips açık değildi, bu nedenle sadece öğrenme sürümü ve öğretme sürümü olarak adlandırılabilirdi.
Topluluk ekran görüntüsü
Moderatör, topluluktaki Mips CPU'nun 10 günlük tasarımı için geliştirme notlarını ve uygulama kodunu paylaştı, şimdi size tanıtacağım ve öğrenebilirsiniz.
Geliştirme notları
EETOP'taki tüm öğrencilere ve moderatör tyxuanyuanlx'e "Bubu Jingxin-Soft Core İşlemci İç Tasarım Analizi" kitabına verdikleri destek için teşekkür etmek amacıyla, açık kaynaklı bir işlemci OpenMIPS'e katkıda bulunacağım.
Harvard mimarisine sahip 32 bitlik skaler bir işlemci olan OpenMIPS, MIPS32 mimarisiyle uyumludur, böylece mevcut MIPS derleme ortamı kullanılabilir. OpenMIPS aşağıdaki özelliklere sahiptir:
(1) Beş aşamalı tamsayı ardışık düzeni, yani: getirme, kod çözme, yürütme, getirme ve geri yazma
(2) Harvard yapısı, ayrı komut ve veri arayüzü
(3) 32 adet 32 bit tam sayı kaydı
(4) Big-endian modu
(5) Vektörize edilmiş istisna işleme, hassas istisna işlemeyi destekler
(6) 8 harici kesinti
(7) 32bit veri ve adres veriyolu genişliği
(8) Tek döngülü çarpma
(9) Gecikmeli aktarımı destekleyin
(10) MIPS32 komut setindeki tüm tamsayı talimatlarını destekleyen MIPS32 mimarisiyle uyumludur
(11) Çoğu talimat bir saat döngüsünde tamamlanabilir
(12) Entegre edilebilir
On gün içinde arka arkaya yayınlanması planlanıyor, bu nedenle başlık "İşlemci-OpenMIPS geliştirme notlarını uygulamak için 10 gün". Umarım onu daha fazla kullanabilir ve iyileştirme için önerilerde bulunabilirsiniz. Genel plan aşağıdaki gibidir:
1.gün
(1) OpenMIPS'e Giriş
(2) Deneysel ortam yapımı
(3) Genel kayıt Kayıt Dosyasını gerçekleştirin
(4) Yönerge belleği imemini gerçekleştirin
(5) Veri depolamayı gerçekleştirin dmem
2. gün
(1) Beş aşamalı bir ardışık düzen çerçevesi elde edin
(2) İlk talimatı gerçekleştirin-ORI
3. gün
(1) Boru hattı verileriyle ilgili sorunları çözün
(2) Mantık çalıştırma talimatlarının geri kalanını gerçekleştirin - AND, ANDI, LUI, NOR, OR, XOR, XORI
4. gün
(1) Vardiya operasyon talimatlarını uygulayın - SLL, SLLV, SRA, SRAV, SRL, SRLV
(2) Çarpma ve bölme-ADD, ADDI, ADDIU, ADDU, CLO, CLZ, SLT, SLTI, SLTIU, SLTU, SUB, SUBU hariç tüm aritmetik işlem talimatlarını gerçekleştirin
5. Gün
(1) Çarpma talimatlarını uygulayın - MADD, MADDU, MSUB, MSUBU, MUL, MULT, MULTU
(2) Bölme talimatını gerçekleştirin-DIV, DIVU
6. gün
(1) Mobil işletim talimatlarını gerçekleştirin - MFHI, MFLO, MOVN, MOVZ, MTHI, MTLO
(2) Kontrol komutlarını gerçekleştirin-NOP, SSNOP
7. Gün
(1) Atlama talimatlarını gerçekleştirin-J, JAL, JALR, JR
(2) Şube talimatlarını gerçekleştirin-B, BAL, BEQ, BGEZ, BGEZAL, BGTZ, BLEZ, BLTZ, BLTZAL, BNE
8. Gün
(1) Yükleme talimatlarını uygulayın - LB, LBU, LH, LHU, LL, LW, LWL, LWR
(2) Depolama talimatlarını uygulayın - SB, SC, SH, SW, SWL, SWR
9. Gün
(1) İşlemci CP0'ın bazı kayıtlarını gerçekleştirin
(2) Yardımcı işlemci erişim talimatlarını uygulayın-MFC0, MTC0
10. gün
(1) Kendiliğinden yakalanan talimatları uygulayın - SYSCALL, TEQ, TEQI, TGE, TGEI, TGEIU, TGEU, TLT, TLTI, TLTIU, TLTU, TNE, TNEI
(2) Kesinti işlemeyi gerçekleştirin
(3) Anormal iade talimatı uygulayın-ERET
Burada sadece her gün ne yapılacağının bir özetini veriyoruz.Tüm bu detaylı tasarım moderatörleri ek olarak forumdaki ilgili mesajlara yüklendi. Orijinal indirmeyi okumak için makalenin sonuna tıklayabilirsiniz.
Kod uygulama talimatları
OpenMIPS öğretim sürümü ile karşılaştırıldığında, OpenMIPS uygulama sürümünün en büyük özelliği Wishbone veri yolu arayüzünün tanıtımı ve SDRAM denetleyicisi, GPIO denetleyicisi, flaş denetleyicisi, UART denetleyicisi ve gerçek test için DE2'ye indirilen SOPC'nin oluşturulmasıdır. SOPC'nin yapısı aşağıdaki gibidir:
Dosya dizini aşağıdaki gibidir: (Kod, verilog ve vhdl'yi içerir, burada örnek olarak vhdl verilmiştir)
Her klasörün açıklaması aşağıdaki gibidir:
rtl
OpenMIPS uygulamalı sürümünün tüm kaynak kodu dosyaları bu klasörde, ardışık düzen dosyası iu.vhd, bölme modülü div.vhd, kayıt dosyası Regfile.vhd, en üst dosya OpenMIPS.vhd, makro tanımlama dosyası stdlib.vhd dahil
min_sopc
Çeşitli IP çekirdekleri dahil: GPIO, UART, SDRAM denetleyici, flash denetleyici, Wishbone veri yolu ara bağlantı matrisi, vb. Ve Wishbone aracılığıyla OpenMIPS'in en küçük SOPC'sini test etmek için kullanılan bir üst düzey dosya OpenMIPS_min_sopc.vhd Veriyolu bağlantı matrisi, bir SOPC oluşturmak için OpenMIPS ile bağlanır. SOPC'nin yapısı Bölüm 8'de tanıtılacaktır. Buradaki çeşitli IP çekirdeklerinin tümü OpenCores'dan indirilir ve tümü Wishbone veri yolu arabirim spesifikasyonuna uygundur.
araçlar
Spesifik değerlendirme panosuyla ilgili bazı araçları içerir.Yazar, değerlendirme panosu olarak çoğunlukla Altera'nın DE2'sini kullanır, bu nedenle araçlar altında, DE2'nin DE2_control_panel araç yazılımını içeren bir Altera / DE2 dizini vardır. flaş çipi.
Bu dizin ayrıca, BootLoader ve SimpleOS deneylerinde yararlı olan ve BootLoader ve SimpleOS tarafından oluşturulan ikili dosyaları birleştirmek için kullanılan bir BinMerge.exe yazılımı içerir.
belge
Bazı dokümantasyon içerir, özellikle: "MIPS32 Komut Seti", "Programcılar için MIPS Mimarisi Cilt III", "OpenMIPS Hızlı Başlangıç Kılavuzu (Pratik Baskı)", "İşlemci-OpenMIPS büyüme notunu gerçekleştirmek için 10 gün" ve min_sopc dosyası Çeşitli IP çekirdeklerinin kullanım kılavuzlarını klipsleyin.
asm_test
GPIO, UART, SDRAM ve kapsamlı bir programı test etmek için kullanılan, tümü assembly'de yazılmış birkaç test programı içerir. Entegre program, BootLoader ve SimpleOS'tan oluşur ve bir işletim sisteminin başlatılmasını simüle etmek için kullanılır.
OpenMips CPU modülü bağlantı şeması