1 poin oleh GN⁺ 2025-04-06 | 1 komentar | Bagikan ke WhatsApp
  • Dengan target komputer minimal yang bisa dirakit di rumah, sistem kelas 8MB RAM·1 MIPS yang dapat menjalankan Debian Linux, vi, gcc, dan make diwujudkan hanya dengan komponen 8-pin
  • Papan akhir terdiri dari tiga chip: STM32G031, 8MB SPI PSRAM, dan bridge USB-serial PL2303GL, dan karena batasan paket 8-pin hanya ada 6 I/O yang bisa digunakan
  • Kekurangan pin menjadi tantangan inti desain; RAM memakai SPI biasa, kartu SD memakai 1-bit SDIO yang berbagi pin dengan RAM, dan transmisi UART ditangani dengan bit-banging
  • Perangkat lunak memanfaatkan kembali emulator MIPS berbasis assembly ARMv6M yang sudah ada, dan bootloader 8KB memperbarui firmware dari FIRMWARE.BIN pada filesystem FAT kartu SD
  • STM32G031 dioverclock melampaui 64MHz resmi dengan pengaturan VOS0, dan pada CPU host 148MHz dapat menjalankan Debian dalam sekitar 1 menit pada tingkat setara kira-kira 1.65MHz MIPS R3000

Komputer Linux minimal yang dibuat hanya dengan chip 8-pin

  • Tujuannya adalah membuat komputer modern berbentuk kit yang mudah dirakit di rumah hanya dengan chip 8-pin
  • Standar minimal komputer modern ditetapkan sebagai kemampuan menjalankan Debian Linux, vi, gcc, dan make
  • Berdasarkan eksperimen sebelumnya, spesifikasi minimum yang dibutuhkan untuk menjalankan Linux ditetapkan sebagai 8MB RAM dan CPU 1 MIPS
  • Media penyimpanan menggunakan kartu SD, dan koneksi konsol menggunakan USB-serial
  • Papan berbentuk lingkaran kecil, dengan konektor USB-C di tepi atas papan
  • Jumlah komponen dan jumlah pin dikurangi agar bahkan orang yang hampir tidak punya pengalaman menyolder pun bisa merakitnya dengan solder 45W

Pemilihan komponen

  • PL2303GL dipilih untuk koneksi USB
    • Ini adalah bridge USB-serial yang dapat bekerja tanpa komponen eksternal, dan juga menyediakan output regulator 3.3V sebesar 100mA
    • Tersedia driver untuk sistem operasi utama, dan di macOS diperlukan instalasi dari App Store
  • Sebagai alternatif, implementasi USB dengan ATTINYx5 dan V-USB juga dipertimbangkan
    • USB low-speed menurut spesifikasi tidak boleh menggunakan bulk endpoint, tetapi karena OS utama tidak memaksakan ini, implementasi port serial ACM tetap berjalan
    • V-USB memakai banyak waktu CPU, flash, dan RAM sehingga terlalu membebani proyek ini
  • RAM menggunakan SPI PSRAM SOIC-8
    • ISSI, APMEMORY, Vilsion, dan lainnya membuat komponen terkait, dan komponen 8MB dapat diperoleh dari distributor umum
    • Chip 16MB dijanjikan oleh beberapa vendor, tetapi dinilai belum benar-benar tersedia di pasaran
  • Mikrokontroler yang dibandingkan meliputi PIC16F, RL78, PSoC1, eZ8, S08CPUv2, STM8, MSP430, AVR, PSoC4, MSPM0C, CH32V003, CH570E, dan keluarga STM32G0
  • Pilihan akhirnya adalah keluarga STM32G031J4M6/STM32G031
    • Menyediakan core Cortex-M0+, 64MHz resmi, 32KB flash, dan 8KB RAM
    • Dalam paket 8-pin, performa dan memorinya lebih unggul dibanding kandidat lain
    • Kualitas dokumen errata chip STM sempat menjadi kekhawatiran, tetapi karena desain ini menggunakan periferal on-chip seminimal mungkin, chip ini tetap layak dipilih

Desain hardware yang dimasukkan ke dalam 6 pin I/O

  • UART konsol

    • UART RX dan TX sulit digabungkan dengan fungsi lain
    • Jika RX dibagi, data terima bisa terlewat saat fungsi lain berjalan; jika TX dibagi, pulsa low yang singkat pun bisa terlihat sebagai karakter di PC
    • Karena itu, 2 dari 6 I/O dialokasikan untuk konsol UART
    • Pada susunan pin akhir, pin 8 dipakai sebagai USART2 RX, dan pin 7 menangani UART TX dengan bit-banging
    • Saat transmisi UART berlangsung, seluruh eksekusi berhenti, sehingga digunakan 115.200bps secepat mungkin
    • Mengirim satu karakter memerlukan sekitar 87 mikrodetik, dan karena papan tidak banyak mencetak output hampir sepanjang waktu, cara ini dianggap bisa diterima
  • Koneksi RAM

    • SPI PSRAM mendukung QSPI, tetapi QSPI memerlukan 6 pin sehingga tidak bisa dipakai
    • dual-SPI dapat 2 kali lebih cepat daripada SPI biasa tanpa menambah pin, tetapi STM32G031 tidak mendukung dual-SPI
    • Dinilai bahwa dual-SPI dengan bit-banging oleh CPU pun sulit mengungguli kombinasi hardware SPI dan DMA
    • Hasilnya, RAM dihubungkan dengan SPI biasa, dan koneksi ini saja sudah memakai keempat pin yang tersisa
  • Koneksi kartu SD

    • Untuk memakai kartu SD dalam mode SPI dibutuhkan satu pin chip select tambahan, tetapi tidak ada pin yang tersisa
    • Cara membalik nCS RAM dengan inverter untuk dijadikan nCS kartu SD bermasalah pada sebagian kartu dan juga membutuhkan komponen tambahan
    • Berbagi pin UART TX sebagai nCS kartu SD dengan low-pass filter juga dipertimbangkan, tetapi akan membutuhkan UART di bawah 300bps dan rapuh saat kartu SD lambat
    • Solusi akhirnya adalah mengimplementasikan langsung protokol 1-bit SDIO milik kartu SD
    • nCS RAM dibagi sebagai SD CLK, RAM CLK sebagai SD CMD, dan RAM MOSI sebagai SD DAT
    • Akses RAM terlihat seperti bit 1 dalam keadaan idle bagi kartu SD, sedangkan akses SD terlihat seperti pengulangan select/deselect saja bagi RAM, sehingga dapat bekerja aman
    • Namun, akses RAM tidak boleh menyela di tengah transaksi SD, sehingga multi-block read/write tidak bisa digunakan
    • Karena susunan pin STM32G031 tidak memungkinkan penggunaan SDIO lewat perangkat keras, seluruh akses SD dilakukan dengan bit-banging
    • Implementasi assembly menghasilkan throughput sekitar 14 siklus CPU per bit

Bootloader dan alur boot Linux

  • Emulator

    • Emulator MIPS dari proyek LinuxCard yang sudah ada digunakan kembali
    • Emulator itu ditulis dalam assembly ARMv6M dan dapat mem-boot Linux
    • MIPS-to-ARMv6M JIT juga sempat ditulis untuk eksekusi lebih cepat, tetapi ukuran kodenya 46KB sehingga terlalu besar, dan peningkatan kecepatannya dengan cache translasi 6KB juga tidak cukup, jadi tidak dipakai
    • Flash 32KB pada STM32G031 dibagi menjadi bootloader 8KB dan kode utama 24KB
  • Bootloader untuk pembaruan firmware

    • Karena tidak ada pin debugging yang bisa disisakan, dibutuhkan bootloader untuk memperbarui firmware dari kartu SD
    • Bootloader memuat driver SDIO, driver filesystem FAT, kode penulisan flash, logging, dan kode kirim UART bit-banging
    • Ukuran nyatanya sekitar 6,5KB, tetapi karena satuan blok flash, area 8KB tetap digunakan
    • Bootloader mencari FIRMWARE.BIN di kartu SD, lalu menerapkan pembaruan jika lolos pemeriksaan dasar dan memenuhi syarat kenaikan versi
    • Word pada offset 16 image aplikasi dipakai sebagai nomor versi
    • Byte pada offset 8 bootloader adalah versi bootloader, dan selain untuk menampilkan teks saat boot aplikasi utama tidak digunakan
    • Bootloader juga mencari file atau direktori di filesystem FAT yang namanya diawali CLOCK
    • Angka setelahnya dipakai sebagai kecepatan clock aplikasi utama; jika tidak ada nilainya atau berada di luar 32–200MHz, maka dipakai 132MHz
  • Partisi kartu dan pemuatan kernel

    • Alur boot disusun mirip proses boot PC
    • Sektor pertama kartu SD dibaca ke awal RAM lalu dieksekusi
    • Kode tahap pertama mencari partisi tipe 0xBB, memuatnya ke 0x80001000, lalu melompat ke sana
    • Bootloader tahap kedua me-mount partisi yang ditandai active sebagai FAT16 lalu memuat file VMLINUX sebagai ELF
    • Command line kernel ditanamkan di dalam bootloader
    • root adalah /dev/pvd3, dan init adalah /sbin/uMIPSinit
    • /dev/pvd1 dicoba untuk di-mount sebagai /boot
    • Urutan partisi proyek ini adalah partisi FAT, partisi bootloader, lalu rootfs
    • Karena Windows dan macOS me-mount partisi pertama, file dapat dengan mudah dimasukkan dan diambil lewat partisi FAT
    • Di Linux yang sudah boot, partisi itu juga terlihat sebagai /boot

Performa dan overclock

  • Kecepatan operasi resmi STM32G031 adalah 64MHz, tetapi dicoba clock yang lebih tinggi dengan pengaturan tegangan internal
  • Dokumen STM mencantumkan pengaturan VOS2 1.0V dan VOS1 1.2V, dan pada VOS1 kestabilan di atas sekitar 75MHz kurang baik
  • Dengan memakai pengaturan VOS0 1.35V yang muncul di dokumen lama dan dokumen chip serupa, ruang overclock meningkat jauh
  • Kebanyakan chip berjalan baik pada 136MHz, dan sebagian bisa mencapai 180MHz
  • Karena memori flash tidak ikut menjadi lebih cepat, flash wait states harus dikelola dengan benar
  • Pada CPU host 148MHz, CPU MIPS yang diemulasikan setara kira-kira dengan MIPS R3000 1.65MHz tanpa FPU
  • Sistem boot dalam sekitar 1 menit, dan vi, make, objdump, serta gcc dapat berjalan
  • Karena ini sistem Debian penuh, paket .deb bisa dibawa ke /boot lalu diinstal

Perakitan dan menjalankan pertama kali

  • Alur perakitan

    • File desain disediakan agar papan bisa dibuat sendiri, dan sedang dicari perusahaan untuk menjual kitnya
    • Perakitan dilakukan dengan urutan socket kartu SD, kapasitor, resistor, STM32G031, lalu PL2303GL
    • R101, R102, R201, dan R202 pada awalnya tidak dipasang
    • Bootloader harus lebih dulu ditulis ke STM32
    • R101 dan R201 dijembatani untuk membuat jalur serial bagi ROM bootloader
    • Langkah ini dilakukan tanpa memasang kartu SD dan dengan chip RAM yang juga belum disolder
    • Setelah bootloader ditulis, jembatan R101/R201 dilepas lalu R102/R202 dijembatani
    • Setelah itu, menyolder chip RAM APS6408 atau VTI7064 ke posisi U2 akan menyelesaikan perakitan hardware
  • Firmware dan boot pertama

    • Kartu SD minimal harus 1GB, lalu image disk yang disediakan ditulis ke sana
    • Image itu berisi bootloader MIPS tahap 1, bootloader MIPS tahap 2, partisi yang berisi kernel Linux dan salinan firmware, serta rootfs Debian
    • Jika FIRMWARE.BIN diletakkan di partisi FAT, bootloader akan melakukan flash ke dirinya sendiri saat boot pertama
    • Terminal serial diatur ke 115.200bps, 8N1
    • Saat pertama dijalankan, fuse STM32 akan diprogram, dan kabel USB-C mungkin perlu dicabut lalu dipasang kembali
    • Sekitar 20 detik kemudian, pesan boot kernel Linux mulai muncul, dan keseluruhan boot memakan sekitar 1 menit
    • Karena RAM hanya 8MB, sangat disarankan menjalankan swapon /swapfile sebagai perintah pertama
    • Aktivasi swap memerlukan puluhan detik, tetapi setelah itu lebih banyak program bisa dijalankan

File unduhan dan penggunaan

  • Unduhan utama adalah uMIPS.8PL.zip
  • Arsip itu berisi file yang diperlukan untuk membuat dan menjalankan papan
    • schematics: skematik
    • gerbers: file Gerber untuk pembuatan papan
    • srcs: source emulator dan bootloader
    • binaries/SD.img: image untuk ditulis ke kartu SD
    • BOOTLOADER.BIN: bootloader yang ditulis ke chip selama perakitan
    • FIRMWARE.BIN: image firmware pra-build
  • Setelah boot, shell default adalah sh, dan bash juga bisa dijalankan
  • Untuk menghindari kekurangan RAM, sebaiknya aktifkan swapfile yang disertakan dalam image dengan swapon /swapfile
  • Jika MCU dijalankan pada 120MHz, kecepatan CPU efektifnya sekitar 1.5MHz
  • Mengompilasi program C sederhana dengan gcc memerlukan beberapa menit, tetapi tetap berjalan
  • Sebagai contoh, generator Mandelbrot floating-point dan fixed-point disediakan dalam bentuk source dan biner
  • Tool yang terpasang mencakup vim, make, dan gcc, dan paket Debian tambahan dapat dimasukkan lewat partisi FAT16 bersama di kartu SD

1 komentar

 
GN⁺ 2025-04-06
Komentar Hacker News
  • Bagian yang mengatakan bahwa setelah memikirkan pin mana yang bisa digabungkan dengan tiga pin SDIO, muncul solusi memakai nCS RAM sebagai CLK kartu SD, CLK RAM sebagai CMD kartu SD, dan MOSI RAM sebagai DAT kartu SD, benar-benar merupakan hack yang keren
    Jika menimbang kemungkinan interaksi dengan tiap perangkat, penjelasan bahwa ini dapat berjalan aman juga meyakinkan, dan jelas layak masuk Hacker News

    • Kalimat “setelah dipikirkan cukup lama, solusinya menjadi jelas” juga sangat cocok jadi tulisan kaus
  • Selalu agak disayangkan melihat pendekatan memakai chip terpisah untuk terhubung ke USB menjadi pilihan default
    USB adalah protokol yang terlalu kompleks; melewati level dasar V-USB untuk menjalankan USB 1.1 berkecepatan rendah, umumnya tampak sulit tanpa hardware khusus dan stack software yang cukup besar
    Sebaliknya SPI luar biasa sederhana; hardware minimum yang dibutuhkan kira-kira hanya shift register yang bisa menerima clock dengan cukup cepat
    Saya merindukan masa ketika desktop dan laptop lama punya port serial/paralel yang terekspos ke luar sehingga komunikasi level rendah seperti ini bisa dilakukan
    Seandainya periferal sederhana memakai UART, I2C, dan SPI multidrop dalam jarak pendek dengan beberapa clock standar dan satu konektor, lalu perangkat berdata besar seperti monitor atau drive eksternal langsung beralih ke IEEE 802.3 Ethernet, mungkin kita hanya perlu mendukung link Ethernet tanpa harus mendukung USB dan Ethernet secara terpisah

    • Memang benar SPI itu sederhana, dan pada awalnya protokol ini dirancang agar dapat diimplementasikan dengan silikon sesedikit mungkin demi menghemat anggaran transistor
      SPI tidak memperhitungkan berbagai kemudahan yang disediakan USB seperti catu daya, hot-plug, penemuan perangkat, dan error bit
      Ada nilai bagi pengembang software untuk memahami idiom SPI, dan bagi perancang hardware untuk memahami cara SPI digunakan
      Biasanya SPI dipakai untuk mengisi register periferal, dan sifatnya berbeda dari komunikasi asinkron tingkat tinggi yang sering terlihat pada USB atau Ethernet serta lapisan abstraksi di atasnya
      Tidak ada standar universal untuk frame SPI, tetapi ada pola-pola idiomatis, dan itu sudah cukup untuk aplikasi yang tak terhitung jumlahnya
    • Ini terdengar seperti usulan mengganti USB PHY dengan konverter serial-ke-Ethernet dan Ethernet PHY
      Secara realistis, protokol sederhana seperti SPI dan I2C tidak cukup
      Keduanya tidak cepat, memakai sinyal single-ended sehingga sangat rentan terhadap noise, dan tidak memiliki koreksi kesalahan
      Protokol-protokol ini sangat cocok untuk penggunaan yang memang dituju, yaitu menghubungkan IC satu sama lain di atas PCB, tetapi jika port tanpa terminasi diekspos ke luar, sulit menjamin apa pun
      Pada PC modern pun protokol dan variasinya banyak dipakai, tetapi tetap sebagai bus internal
      Saya belum melihat spesifikasi USB secara rinci, tetapi masalah utama bit-banging kemungkinan besar adalah kecepatan yang dibutuhkan
      Mikrokontroler tidak cukup cepat untuk men-toggle pin sambil sekaligus mendekode protokol dan mengelola koreksi kesalahan, sehingga hardware khusus diperlukan
      Saat melakukan bit-banging I2C pun masalah yang sama bisa muncul
      Clock maksimum yang bisa didapat dari CPU 20MHz sekitar 250KHz, sedikit di atas separuh dari kecepatan maksimum umum 400KHz, dan versi 1MHz pada praktiknya tidak mungkin
      PHY ada karena menyerahkan protokol komunikasi ke hardware jauh lebih murah
      Kalau tidak, CPU harus dibuat jauh berlebihan untuk menyediakan sumber daya guna mengelola komunikasi secara manual; itulah sebabnya mikrokontroler modern menyertakan hardware untuk I2C, SPI, dan komunikasi serial
      Kesimpulannya, protokol serial sederhana seperti SPI, I2C, dan UART adalah pilihan yang sangat buruk untuk periferal eksternal
      Sulit berjalan pada kecepatan yang layak, dan tidak tahan terhadap kabel panjang serta noise
      RS-232 bisa dikecualikan karena bukan UART, tetapi dari sifat dan desain protokol-protokol ini, mereka tidak bisa dipakai dengan cara seperti itu; jika spesifikasinya diubah agar mendukungnya, pada akhirnya kita hanya akan menciptakan ulang USB
    • Di industri AV, meskipun hardware baru harganya lebih dari 10.000 dolar, RS-232 masih menjadi raja untuk sinyal kontrol antarperangkat
      Layar signage atau TV ruang rapat juga sering menyediakan RS-232 untuk kontrol yang lebih fleksibel daripada HDMI-CEC
      Sering kali bitrate di atas 9600bps tidak diperlukan, dan konektor yang paling umum adalah terminal sekrup 3 pin berisi Tx, Rx, dan GND
      Instalasi masa kini biasanya menyertakan setidaknya satu adaptor RS232-USB di suatu tempat, dan di ruangan besar RS232 di-bridge di atas Ethernet
      Ketika pertama masuk ke bidang ini saya cukup terkejut, tetapi jadi masuk akal jika mengingat banyak instalasi sudah berumur puluhan tahun dan komponennya diganti satu per satu
    • Artikelnya membahas panjang lebar chip 8 pin, tetapi melewatkan CH32V003 yang sangat populer
      Chip ini berada di kisaran 0,10 dolar, dengan 2KB RAM, 16KB Flash, 48MHz, dan berjalan pada 1 CPI
      CH570 baru juga berada di kisaran 0,10 dolar dalam SOIC8, tetapi memiliki 100MHz, 16KB RAM, 256KB Flash, USB, radio paket 2,4GHz, dan saya sudah memesan board pengembangnya
    • Ada banyak mikrokontroler yang bisa berfungsi sebagai perangkat USB, tetapi kali ini dikecualikan karena batasan paket
  • Untuk orang yang ingin membuat board sendiri, akan bagus jika ketebalan PCB yang diperlukan juga dicantumkan
    Kalau ingatan saya benar, sekitar 0,8mm, dan “konektor edge USB-C” membutuhkan ketebalan itu agar pas dengan plug

  • Ini tulisan yang bagus, tetapi saya penasaran apakah semuanya bisa jauh lebih sederhana jika persyaratan 8 pin dibuat sedikit lebih fleksibel
    Dengan beberapa pin tambahan saja, kompleksitas proyek mungkin akan jauh berkurang, sementara waktu menyolder hanya bertambah sangat sedikit

    • Kalau begitu, itu sama sekali bukan tantangan dan tidak menyenangkan
      Ada banyak chip yang jauh lebih cepat dengan USB bawaan
      Allwinner V3s juga bisa disolder tangan, memiliki RAM terintegrasi, dan dapat mem-boot Linux secara native dengan baik
      RP2350 juga pilihan yang bagus, dengan antarmuka QSPI RAM yang hebat lengkap dengan cache terintegrasi dan dukungan USB
  • Hampir seperti proyek dengan hanya 2 chip
    Salah satunya hanyalah IC USB-to-serial, dan kalau kartu SD tidak dihitung, lalu kartu SD ikut dimasukkan lagi, jadinya 3 chip
    Karena jumlah pin totalnya sangat sedikit, jadi ingin mencoba membuatnya dengan metode dead bug

    • Versi dead bug belum dibuat, jadi kalau ada yang membuatnya, itu akan menjadi contoh pertama
      Adaptor microSD-to-SD cukup berguna sebagai holder microSD yang bisa disolder
    • Di dalam kartu SD itu sendiri juga ada prosesor yang cukup kuat, kemungkinan besar ARM 32-bit
      Melakukan trik serupa dengan menargetkan itu juga sepertinya akan menjadi hack yang menarik
    • IC USB-to-serial bisa “tidak dihitung” kalau dipindahkan ke sisi kabel buatan orang lain, mirip seperti tidak menghitung microSD
  • Secara teknis ini proyek yang sangat keren, tetapi tampaknya sudah dibawa ke ekstrem sampai agak melenceng dari tujuan membuat kit komputer baru untuk pemula
    Bagi pemula, tidak banyak bedanya menyolder SOIC8 atau SOIC28
    Menurut saya SOIC28 sama mudah atau sulitnya dengan SOIC8
    Dengan memakai chip yang lebih besar, bisa ditambahkan suara minimal, keyboard, dan nantinya bahkan output monitor sungguhan ala VGA, sehingga bisa menjadi komputer yang jauh lebih berguna
    Tingkat kesulitan solder hampir tidak bertambah, sementara itu menjadi fondasi yang baik untuk dikembangkan oleh pengguna yang mulai tertarik

    • Benar
      Kalau ingin membuatnya ke arah seperti itu, silakan pakai kode saya
      Saya melakukannya karena batasan artifisial 8 pin terasa menarik
  • Muncul dorongan aneh untuk bahkan menghilangkan PCB dan membuatnya sebagai patung rangkaian

    • Kalau dibuat seperti itu, salah satu IC harus diberi tulisan “555” pada silkscreen
    • Akan bagus kalau dicoba
      Saya bukan seniman atau pematung, jadi tidak berani mencobanya
  • Sepertinya lucu kalau memakai SPI Flash 8-pin sebagai penyimpanan, bukan kartu SD

    • Sudah saya pertimbangkan, tetapi kalau begitu cara memasukkan dan mengeluarkan file menjadi sulit
  • Tertulis “saya alergi terhadap RISC-V karena alasan pribadi”; saya penasaran alasannya

    • Saya tidak suka instruction set-nya
      Saya tidak ingin memulai flame war, dan ini hanya pendapat pribadi, tetapi pendapat yang cukup kuat
      RISC-V secara historis dirancang cukup terlambat sehingga seharusnya bisa memanfaatkan banyak pengetahuan yang sudah ada, tetapi menurut saya hampir tidak memanfaatkannya
      Karena itu, berbagai ekstensi kini diusulkan untuk memperbaiki hal-hal yang seharusnya sudah benar sejak awal
      Seiring bertambahnya tambahan, setelah 10 tahun barulah perlahan mendekati bentuk yang masuk akal
      Saya juga tidak menerima alasan bahwa diperlukan proses belajar
      Informasi yang dibutuhkan sudah ada sejak awal, dan kesalahannya juga jelas bagi kebanyakan dari kita
      Sebagian ekstensi hanyalah plester untuk masalah desain mendasar
      Misalnya shadd2 adalah plester untuk menambal masalah tidak adanya mode pengalamatan yang tepat untuk akses array
      Jawaban umum untuk ini adalah menjanjikan fusion instruksi ajaib di dalam core, sesuatu yang sering dijanjikan tetapi tidak benar-benar disediakan
      Terutama pada prosesor murah yang tampaknya menjadi satu-satunya target RISC-V, hal itu makin tidak terjadi
      Tidak adanya instruksi ekstraksi dan penyisipan bitfield juga merupakan kesalahan amatir, sehingga ada ekstensi untuk memperbaikinya
      Namun kebutuhan akan fitur seperti itu semestinya sudah jelas sejak awal
      Instruksi untuk branch bersyarat berdasarkan bit tertentu di dalam register juga sering muncul, jadi itu fitur jelas yang seharusnya dipertimbangkan sejak awal
      Sedikit saja analisis terhadap software modern akan menunjukkannya
      Yang menjengkelkan adalah informasinya sudah ada
      Kita sudah tahu apa yang dilakukan software modern, tetapi semuanya diabaikan, dan hasilnya menurut saya kita mendapat MIPS-1 yang sedikit diperbarui
      Kini banyak ekstensi ditempelkan, sehingga fragmentasinya menjadi parah
      Kita bisa menargetkan sesuatu seperti RV23 yang merupakan hasil akhir yang cukup masuk akal, tetapi tidak ada hardware yang mengimplementasikannya; atau harus menargetkan denominator bersama terendah yang berjalan di mana-mana tetapi performanya buruk
      Saat mencoba memakai RISC-V untuk komputasi berperforma tinggi sungguhan, ada masalah desain yang lebih serius lagi, tetapi itu saya sisakan untuk rant berikutnya
      Instruction set lain yang dirancang pada periode serupa benar-benar memanfaatkan pengetahuan tentang seperti apa software modern, dan hasilnya terlihat: aarch64
  • Proyeknya sendiri juga sangat keren, tetapi halaman ini juga merupakan sumber yang bagus untuk mendapatkan informasi tentang mikrokontroler kecil
    Seri WLCSP memang tidak tercakup, tetapi halaman ini juga mengarah ke halaman emulator MIPS untuk ARM https://dmitry.gr/?r=05.Projects&proj=33.%20LinuxCard yang terlihat cukup menarik