- Debian Linux berhasil di-boot pada papan nyata yang hanya memakai Intel 4004 4-bit dari tahun 1971 sebagai CPU, memperlihatkan batas ekstrem mikroprosesor lama dan pelapisan perangkat lunak
- Linux tidak berjalan langsung di 4004, melainkan di-boot di atas emulator MIPS R3000/DECstation 2100 yang dibuat dengan assembly 4004; sebagian disk dan konsol disederhanakan dengan hypercall dan driver paravirtualisasi
- Karena batas ROM 4 KB, operasi 4-bit, tidak adanya operasi logika, call stack yang dangkal, serta pengalamatan khas RAM 4002, diperlukan berbagai jalan memutar seperti ROM banking, lookup table, status nibble, dan RAM virtual berbasis PSRAM
- Setelah optimisasi, estimasi waktu boot Linux pada 4004 nyata 740 KHz adalah 4,76 hari, dan papan yang dibuat di-overclock ke 790 KHz sehingga MIPS virtual berjalan sekitar 74,73 Hz
- Hasil akhirnya dirancang sebagai papan seni retro yang bisa digantung di dinding, dilengkapi VFD 40x2, 32 LED PC, kartu SD, SPI PSRAM, dan UART; source serta image disk dirilis dengan ketentuan penggunaan nonkomersial
Mem-boot Debian Linux di 4004 nyata
- Linux/4004 adalah proyek yang mem-boot Debian Linux pada papan nyata yang menggunakan Intel 4004 tahun 1971 sebagai satu-satunya CPU
- 4004 diperkenalkan sebagai mikroprosesor produksi komersial pertama di dunia, dan proyek ini menggunakan chip Intel 4004 asli dari era 1970-an
- Video demonstrasi diputar dengan kecepatan variabel per segmen untuk mengurangi kebosanan, sementara jam dan kalender di layar akurat
- Video lain yang sifatnya seperti versi asli dengan kecepatan pemutaran tetap juga disediakan secara terpisah
Mengapa 4004?
- Pada 2012, Linux dijalankan di mikrokontroler AVR 8-bit dan mencetak rekor “menjalankan Linux pada spesifikasi terendah”; setelah itu proyek LinuxCard yang lebih praktis juga dikerjakan
- Pada 2023, muncul upaya memperbarui rekor berbasis AVR serta proyek mem-boot Linux di MOS 6510, sehingga CPU dengan level yang lebih rendah menjadi target
- Untuk mundur lebih jauh daripada kandidat Intel 8080 dan 8008, Intel 4004 dari tahun 1971 dipilih
- Karena 4004 adalah chip 4-bit, ia dapat menetapkan patokan yang jelas lebih rendah daripada CPU 8-bit
Batasan Intel 4004
- 4004 bekerja dalam satuan 4-bit, sebagian besar instruksinya berukuran 1 byte dan dieksekusi dalam 8 siklus clock
- Sebagian instruksi 2 byte membutuhkan 16 siklus
- FIN adalah pengecualian: instruksi 1 byte tetapi memakan 16 siklus
- Set instruksinya tidak memiliki operasi logika seperti AND, OR, XOR, dan pada dasarnya berpusat pada ADD dan SUB
- Carry flag memiliki perilaku khas: pada input SUB ia bertindak seperti borrow, tetapi setelah SUB bertindak seperti not borrow; hal ini dikonfirmasi pada hardware nyata
- Register internalnya berjumlah 16 buah berukuran 4-bit, PC berukuran 12-bit, dan hardware return stack memiliki 4 tingkat
- Karena entri stack paling atas saat ini digunakan sebagai PC, kedalaman nesting fungsi nyata maksimal 3 tingkat
- Tidak ada interrupt, dan cara paling mirip untuk menangani event eksternal adalah mem-poll pin TEST dalam percabangan bersyarat
Struktur memori dan I/O
- 4004 tidak memproses sendiri instruksi memori secara langsung; chip yang terhubung ke bus seperti 4001/4002/4289/4265/4308 mendecode dan mengeksekusi instruksi tersebut
- 4001 adalah chip ROM dengan mask ROM 256 byte dan port I/O 4-bit; isi ROM dan konfigurasi port I/O ditetapkan saat produksi
- 4002 adalah chip RAM dengan DRAM 320-bit, sirkuit refresh, dan port khusus output 4-bit
- Satu RAM bank dapat terdiri dari 4 buah 4002
- Setiap RAM bank memiliki 256 nibble yang dapat dialamatkan langsung serta 64 status nibble yang diakses secara terpisah
- 4289 adalah controller ROM yang menggabungkan fungsi 4008 dan 4009, memungkinkan 4004 dihubungkan relatif mudah ke EEPROM/EPROM 5V
- Akses memori memerlukan prosedur bertahap seperti memilih bank, memuat alamat ke pasangan register, mengirim alamat ke bus dengan SRC, lalu menjalankan RDM/WRM
- Status nibble berguna untuk mengakses cepat data yang sering dipakai dan berkontribusi meningkatkan kecepatan emulator MIPS sekitar 30%
Persiapan papan pengembangan dan emulator
- Papan pengembangan untuk verifikasi awal terdiri dari clock generator 4201, CPU 4004, RAM 4002-1, ROM controller 4289, dan ATMEGA48 yang berperan sebagai ROM
- Daya dimulai dari 5V, lalu kutub positif isolated 5V-to-10V boost converter dihubungkan ke ground untuk membuat catu daya -10V yang dipasok ke chip MCS-04
- Program 4004 pertama adalah kode yang mengedipkan LED yang terhubung ke output pin 0 pada 4002, dan berjalan setelah batas arus dinaikkan
- Sebelum membuat papan nyata, dibuat emulator 4004 bernama u4004
- Emulator ini tidak hanya mengemulasikan core 4004, tetapi juga kartu SD virtual, SPI UART, VFD, susunan 4002, hingga LED PC
- Tujuannya adalah memverifikasi terlebih dahulu kondisi pin SPI dan perilaku peripheral yang sulit di-debug pada hardware nyata
Mengemulasikan MIPS, bukan menjalankan Linux langsung
- Linux tidak dapat dijalankan langsung di 4004
- Tidak ada compiler C untuk target 4004, dan karena batasan arsitekturnya, menaikkan kernel Linux secara langsung dinilai sulit
- Nesting call, ruang alamat ROM/RAM, dan batas operasi 4-bit menghalangi eksekusi langsung
- Sebagai gantinya, emulator MIPS R3000 ditulis di atas 4004, lalu Linux untuk DECstation 2100 di-boot di atasnya
- MIPS dipilih karena lebih mudah diemulasikan dalam ruang kode 4004 dibanding kandidat lain
- ARM memiliki banyak operand shift arbitrer
- RISC-V dinilai akan lambat karena cara pengalamatannya
- x86 bisa melampaui 4 KB hanya untuk decoding instruksi
- PPC terlalu kompleks
- Target awalnya adalah memasukkan seluruh emulator ke dalam ROM 4 KB yang pada dasarnya dapat dialamatkan oleh 4004
Jalan memutar dalam implementasi emulator MIPS
- Decoding instruksi MIPS saja sudah memakan ruang ROM yang cukup besar
- Dispatch table untuk 64 top-level opcode membutuhkan 128 byte
- Jika sub-table tambahan ikut dihitung, decoding utama membutuhkan 359 byte
- 32 register 32-bit milik MIPS berukuran 1024 bit, atau 256 nibble dari sudut pandang 4004, sehingga menghabiskan satu RAM bank
- MIPS TLB aslinya memiliki 64 entry, tetapi karena Linux tidak menuntut tepat 64, jumlahnya dikurangi menjadi 16 entry
- Jumlah entry TLB juga dirancang agar bisa dikonfigurasi menjadi 4, 8, 12, atau 16
- Karena 4004 tidak memiliki operasi logika, AND/OR/XOR/NOR diimplementasikan dengan penjumlahan, carry, shift, dan loop
- Belakangan, setelah ruang ROM bertambah, ini dioptimalkan dengan lookup table 256-entry
- Shift juga harus diimplementasikan hanya dengan instruksi rotasi via carry 1-bit milik 4004, lalu kemudian diperbaiki menjadi penyalinan per nibble dan bit shift maksimal 3 kali
- Penanganan register
$zeropada MIPS memanfaatkan sifat circular return stack milik 4004 untuk menghemat ruang ROM- Jika tujuan adalah
$zero, alih-alih return, eksekusi berpindah ke pemrosesan instruksi berikutnya, sehingga menghemat 3 byte dan 3 siklus per callsite
- Jika tujuan adalah
ROM banking dan peningkatan performa
- Karena ROM 4 KB saja tidak cukup untuk memuat kode yang menangani kartu SD, PSRAM, VFD, UART, dan lainnya, digunakan ROM 8 KB yang dibagi menjadi dua bank
- Pergantian ROM bank dikendalikan lewat output pin 4002, dan veneer ditempatkan untuk call/return antar-bank
- Setelah ruang ROM bertambah, optimisasi performa menjadi mungkin
- AND/OR/XOR masing-masing diimplementasikan dengan lookup table 256-entry
- Dengan lookup table perkalian nibble, multiplication menjadi 8 kali lebih cepat daripada implementasi bit demi bit sebelumnya
- Lookup table operasi logika memanfaatkan sifat JIN pada 4004 yang, ketika berada di akhir page ROM, melakukan jump dengan acuan page berikutnya
- Tabel multiplication diimplementasikan dengan kombinasi cara membaca data byte dari ROM memakai FIN dan penghindaran penanganan entry 0
Konfigurasi Perangkat Keras Akhir
- Papan akhir dirancang sebagai papan seni yang berfokus pada through-hole dengan nuansa tahun 1970-an
- Mencakup trace tebal bersudut siku-siku, tanpa via, lubang untuk digantung di dinding, dan perangkat tampilan VFD
- Komponen utamanya adalah sebagai berikut
- CPU 4004 atau 4040
- 4201 clock generator
- Chip RAM 4002
- 4289 ROM controller
- EEPROM
- 1–2 SPI PSRAM
- Slot kartu SD
- SC16IS741A SPI UART
- VFD 40x2
- 32 LED indikator PC
- SPI PSRAM digunakan sebagai RAM MIPS virtual
- PSRAM pertama harus minimal 4MB karena kernel perlu dimuat secara berurutan
- PSRAM kedua dapat dibiarkan kosong atau dipasang dengan ukuran bebas 128KB atau lebih
- VFD yang digunakan adalah Futaba M402SD10FJ, dan diinformasikan bahwa Noritake CU40025-UW6J kompatibel
- UART dipilih sebagai komponen surface-mount SC16IS741A karena keterbatasan flow control pada MAX3100, yang sebelumnya menjadi kandidat SPI UART through-hole
Daya dan Level Shifting
- Komponen MCS-04 menggunakan tegangan tidak biasa dari keluarga -15V dan inverted logic
- Secara sistem, lebih sederhana menganggapnya sebagai catu daya -10V dan +5V
- Papan menerima +5V melalui USB-C edge connector, serta menghasilkan +3.3V dan -10V
- +3.3V step-down regulator dibuat berbasis LM2574
- Catu daya -10V pada revisi pertama memakai MAX764, tetapi tidak mampu menyuplai arus yang cukup, sehingga diubah menjadi konfigurasi MAX774 dengan FET eksternal, diode besar, dan inductor besar
- Pada akhirnya, catu -10V menyuplai lebih dari 700mA dan ripple di bawah 200mV
- Level shifting untuk mengubah output 4002 ke domain 3.3V sulit dilakukan, dan diselesaikan dengan kombinasi 10K pulldown, resistor 2.7K, TVS clamp, dan pembagi tegangan resistor
Alat Debugging dan Cacat Nyata
- Karena 4004 tidak memiliki fitur debugging bawaan, bus MCS-04 ditangkap dalam waktu lama dengan Saleae Logic
- Sebuah MCS-04 bus decoder ditulis untuk menganalisis bus state, ROM address, nilai pembacaan ROM, disassembly, serta nilai baca/tulis RAM/I/O
- Decoder ini kemudian dikontribusikan ke Saleae dan masuk ke software Saleae umum
- Pada papan revisi 1.1, ada masalah karakter output yang sesekali rusak
- Misalnya
iterlihat sepertih, atauCsepertiB, seolah bit bawahnya hilang
- Misalnya
- Hasil analisis memastikan adanya cacat: selama
memcpy()kernel, bottom bit dari nibble tertentu pada chip 4002 yang menyimpan$t1teremulasi kadang turun dari 1 ke 0 - Setelah 4002 tersebut diganti, output teks kembali normal
Jalur Booting
- Firmware pertama-tama melakukan probe jumlah chip memori di RAM bank ketiga untuk mengetahui jumlah TLB entry
- Setelah itu firmware menginisialisasi VFD, UART, dan kartu SD
- Jika inisialisasi kartu SD gagal, firmware menampilkan
"Failed to init SD card. Halting here and now!" - String ini adalah satu-satunya string di seluruh firmware
- Jika inisialisasi kartu SD gagal, firmware menampilkan
- Firmware tidak memiliki ROM virtual; ia memuat sector pertama kartu SD ke
0x80000000di RAM lalu melompat ke sana - Loader 446 byte di sector pertama mencari partition bertipe
0xBBdi partition table, membacanya ke0x80001000, lalu melompat ke sana - Loader kedua berukuran sekitar 14KB dan ditulis dalam C
- Me-mount active partition sebagai FAT12/16/32
- Mem-parse
vmlinuxsebagai ELF, memuatnya ke RAM, lalu melompat ke entrypoint - Meneruskan machine type, magic value, RAM mapping, dan callback table untuk early console printing
Akses Disk dan Kartu SD
- Akses disk menggunakan driver disk paravirtual PVD yang sama dengan proyek LinuxCard
- Alih-alih mengemulasikan chip SII SCSI dan SCSI disk dalam assembly 4004, hypercall sector read/write bertindak seperti DMA dari sudut pandang MIPS virtual
- Total RAM pada papan Linux/4004 adalah 440 byte jika mencakup status nibble, atau 352 byte jika tidak
- MIPS register state dan TLB masing-masing mengambil porsi besar, sehingga tidak ada ruang untuk buffer sector SD 512 byte
- Data sector SD tidak disimpan di RAM 4004; data dibaca langsung ke PSRAM atau ditulis dari PSRAM ke SD menggunakan bus SPI terpisah milik kartu SD dan PSRAM
- Membaca atau menulis satu sector SD membutuhkan sedikit lebih dari sekitar 1 detik
- Persyaratan timing inisialisasi ACMD41 dalam spesifikasi SD tidak dapat dipenuhi dengan SPI bit-banging, tetapi kartu SD yang diuji tetap berhasil diinisialisasi pada 5KHz dan interval 200ms atau lebih
Kecepatan Eksekusi dan Hasil Optimasi
- Setelah kartu SD dan SPI PSRAM nyata diemulasikan, estimasi awal waktu booting pada 4004 740KHz adalah 8,9 hari
- Hasil optimasi utamanya adalah sebagai berikut
- Menjadi 8,4 hari dengan operasi logika dan multiplication lookup table
- 7,25 hari dengan membuka loop pengiriman/penerimaan nibble PSRAM
- 6,63 hari dengan specialized memory copy dan loop unrolling
- 6,50 hari dengan menghapus area penyimpanan instruksi saat ini dan liveness tracking
- 6,19 hari dengan perbaikan shift
- 6,01 hari dengan membuka loop pengiriman address PSRAM
- 5,33 hari dengan pengurangan konfigurasi Linux kernel, pengaturan dummy console 1x1, dan penggunaan tiny init
- 4,81 hari dengan menghapus dukungan block device 2TB atau lebih dan menonaktifkan fitur ext4
huge_files - 4,76 hari dengan fast path khusus instruction fetch
- Booting 4,76 hari setara dengan mesin MIPS sekitar 70Hz pada 4004 740KHz
- Papan yang dibuat menggunakan 4201 dalam mode divide-by-7 dan crystal 5.5296MHz, sehingga di-overclock ke 790KHz
- Instruction mix 4004 pada papan Linux/4004 adalah 8,8% instruksi 16-cycle dan 91,2% instruksi 8-cycle, dengan effective speed 90.640 instructions/s
- Virtual timer interrupt berjalan pada 16Hz, dan IRQ dikirim setiap 65.536 virtual instruction sehingga CPU virtual dikenali sebagai 1,05MHz
- Guest MIPS yang diemulasikan secara nyata berjalan sekitar 70Hz pada 740KHz dan sekitar 74,73Hz pada 790KHz
- Waktu diperpanjang 14.030 kali, sehingga 1 detik virtual setara dengan sekitar 3 jam 54 menit di dunia nyata
Konfigurasi Linux dan Pengalaman Penggunaan
- Linux kernel diperkecil menjadi sekitar 2,5MB dengan menghapus subsystem, filesystem, TCP/IP, dan konfigurasi lain yang tidak diperlukan
- Jika hanya memakai
init=/bin/sh, sistem berjalan tanpa session,$PATH,/proc,/sys, dan sebagainya, sehingga dibuat tiny init bernama/sbin/uMIPSinit- Me-mount
/procdan/sys - Mengatur hostname dan
$PATH - Menjalankan ulang
shsetiap kali proses tersebut keluar
- Me-mount
- Dengan RAM 4,5MB saja, misalnya chip 4MB + chip 512KB, sistem dapat boot hingga shell prompt tanpa swap
- Jika swap diaktifkan, kernel source dapat dibangun di perangkat itu sendiri
- Build kernel source diperkirakan akan memakan waktu bertahun-tahun
- Berkat ext4 journal, rencananya jika daya terputus, filesystem akan dipulihkan setelah reboot dan compilation dilanjutkan kembali
Tujuan sebagai Papan Seni
- Proyek ini sejak awal sebagian memiliki tujuan artistik
- Papan dirancang agar dapat digantung di dinding, dilengkapi VFD, layout PCB bergaya retro, dan LED PC
- Termasuk program untuk menggambar Mandelbrot set dalam text mode pada VFD dan serial port
- Versi floating point
/root/mandelbrotmembutuhkan Linux untuk mengemulasikan operasi floating-point, sehingga perlu sekitar 30 hari untuk menggambar gambar 13 baris x 40 kolom - Versi integer-only
/root/mandelbrot_nofpselesai dalam waktu kurang dari 9 jam
- Versi floating point
Biaya komponen dan reproduksibilitas
- Karena salah satu tujuan pentingnya adalah memungkinkan orang lain mereproduksinya, 4265 yang sulit didapat dihindari
- 4201 dipilih karena lebih sederhana daripada rangkaian clock alternatif, dan 4289 dipilih karena lebih mudah didapat daripada kombinasi 4008+4009
- Board dirancang agar 4040 juga bisa dipasang sebagai pengganti 4004, dan fitur tambahan 4040 tidak digunakan sehingga kompatibilitas dengan 4004 tetap terjaga
- Chip 4002 untuk TLB dapat dipasang hanya 1, 2, 3, atau 4 buah, masing-masing untuk digunakan sebagai TLB 4, 8, 12, atau 16 entry
- Jika jumlah entry TLB sedikit, performa menurun
- Bank tersebut juga menangani 16 bit high dari LED PC display, sehingga jika hanya sebagian yang dipasang, sebagian LED tidak akan berfungsi
- Komponen era 1970-an mahal
- 4004 sekitar $250
- 4040 sekitar $60
- 4201 sekitar $50
- 4002-1 sekitar $7
- 4002-2 sekitar $25
- 4289 sekitar $70
- Komponen modern relatif murah, dan meski SPI VFD mungkin sulit didapat, ada contoh mendapatkannya di eBay seharga $15
- Konfigurasi tanpa memasang VFD dan hanya berinteraksi lewat serial port juga didukung
Proses pembuatan video
- Adegan booting sebenarnya dibuat menjadi video dengan memotret selama sekitar 9 hari
- Jika foto 1920x1080 diambil setiap 2 detik, akan dihasilkan sekitar 1,76GB per jam, dan perekaman 9 hari menjadi sekitar 379GB serta sekitar 388 ribu file
- Perangkat Android mengalami masalah hang atau overheating selama perekaman lama, dan iPhone SE3 stabil untuk perekaman itu sendiri, tetapi bermasalah dengan ruang penyimpanan dan offload foto
- Pada akhirnya, seluruh proses direkam terus-menerus menggunakan iPhone 12 Pro Max 512GB, lalu setelah di-mount di Linux dengan ifuse, sekitar 400 ribu file disalin dengan
cp -Rvfselama lebih dari 10 jam - Video final dibuat dengan perintah-perintah ffmpeg, dan bagian yang membosankan diproses dengan kecepatan putar variabel
- Kecepatan pemutaran bervariasi dari 5FPS, yaitu 10x realtime, hingga 960FPS, yaitu 1920x realtime
- Versi terpisah tanpa editing adalah capture 0,5FPS dan playback 60FPS, sehingga kecepatannya 120x realtime
Materi publik dan lisensi
- Disk image untuk kartu SD disediakan sebagai unduhan terpisah
- Main download mencakup hal-hal berikut
- MCS-04 bus analyzer untuk software Saleae
- Source emulator i4004 DECstation 2100
- Source MIPS MBR dan second-stage bootloader
- Kernel config dan version info
- Source emulator u4004 untuk board Linux/4004
- Lisensinya gratis untuk penggunaan nonkomersial, dan penggunaan komersial memerlukan lisensi terpisah
- Untuk penggunaan apa pun, pembuat asli harus diberi credit dalam source maupun binary form
2 komentar
Penulis artikel aslinya ternyata orang yang kali ini sampai diseret turun dari panggung di DEF CON gara-gara urusan badge itu. Saya tidak akan memihak siapa pun, tetapi kemampuannya benar-benar luar biasa.
Komentar Hacker News
Wah, saya dulu mengira NetBSD modern terasa lambat di m68030 15MHz, bus memori 16-bit, dan RAM 10MB, tapi ini benar-benar gila
Ini menunjukkan dengan jelas bahwa pada akhir 80-an hingga awal 90-an, ketika komputer mulai memiliki penyimpanan permanen, ruang alamat terbuka, dan MMU, kita pada dasarnya sudah mencapai komputasi modern
Komputer Amiga 3000 atau i80486 juga bisa menjalankan hal yang sama seperti komputer modern; sekarang memang berjalan jauh lebih cepat atau punya hal seperti GPU yang dulu belum ada, tetapi secara fungsional tidak banyak berbeda
Bagus melihat Dmitry menunjukkan seberapa longgar kata fungsional bisa didefinisikan
Langkah dikirim bolak-balik lewat pos sungguhan, dan satu partai bisa memakan waktu berbulan-bulan atau bertahun-tahun
Saat balasan tiba, Anda bisa saja sudah lupa strategi awalnya, sehingga menambahkan tingkat kesulitan lain pada catur; proyek ini pada dasarnya adalah Linux korespondensi
Saat output perintah keluar, Anda bisa saja sudah lupa kenapa menjalankan perintah itu
Bukan akhir 80-an hingga awal 90-an; sebenarnya sekitar akhir 1960-an pun sudah memungkinkan
Sepertinya mem-port Linux ke IBM Model 67 [1] juga mungkin, dan karena GCC sudah bisa menargetkan set instruksinya, mungkin malah mudah
MMU-nya juga memadai, dan batasan core memory cepat maksimal 2MB memang ketat, tetapi kira-kira sekelas dengan mesin 68030 itu, hanya sedikit lebih lambat
Virtualisasi penuh serta batas memori dan I/O yang ditegakkan hardware juga ditemukan sejak awal, tetapi fitur seperti ini butuh waktu untuk turun ke minicomputer dan microcomputer, dan jauh lebih lama lagi sampai software populer memanfaatkannya
[1] https://en.wikipedia.org/wiki/IBM_System/360_Model_67
Sistem Turing-complete apa pun bisa menjalankan apa saja, dan meski bisa sangat lambat, tetap bisa dijalankan
Jika ada cukup waktu, ChatGPT pun bisa berjalan di 4004
Mirip seperti menempelkan mobil pada sebuah roda, lalu roda itu mendapat tiga roda tambahan
Badge peserta Hackaday Supercon 2002 (https://hackaday.com/2022/10/12/the-2022-supercon-badge-is-a...) mengimplementasikan CPU 4-bit virtual dan panel kontrol untuk memasukkan instruksi langsung serta menjalankan/menjalankan per langkah
Di panel kontrol ada layar yang bisa menampilkan satu halaman memori bit demi bit, jadi sangat menyenangkan mengimplementasikan game tembak-tembakan luar angkasa di atasnya
Menarik juga membandingkan arsitektur Voya4 dengan 4004; ada kompromi yang serupa, tetapi Voya4 punya keuntungan dari pengalaman 50 tahun desain set instruksi CPU
Namun pendekatan dimitygr tidak akan berhasil di badge itu, karena memori dan RAM semuanya tertanam di dalam PIC24 yang menjalankan emulator CPU
Sebagai catatan, CPU 4-bit masih dibuat dan dipakai. Banyak remote inframerah produksi massal diprogram dengan MCU 4-bit. Datasheet-nya bisa dilihat di https://www.emmicroelectronic.com/sites/default/files/produc...
Saat ditanya apakah sesuatu bisa dijalankan di mesin yang performanya kurang, saya sering memberi contoh AVR, dan sekarang ada contoh baru untuk ditautkan
Melihat frekuensi dan konsumsi dayanya, saya jadi penasaran seberapa banyak RF yang dipancarkannya, dan apakah bisa dideteksi serta didekode di waterfall SDR
Saya masih membacanya, tetapi sampai titik ini saya melihat kata “soubroutine”, tampaknya salah ketik
Wah, proyek ini pasti tidak murah. Ini berkat para kolektor eBay
Dan ini mungkin satu-satunya situasi ketika saya akan memilih LCD ketimbang VFD
Kalau menjalankan kompilasi bertahun-tahun, rasanya VFD-nya akan kacau karena burn-in saat selesai
Sayangnya, staf universitas sepertinya tidak terlalu banyak membaca HN
Wah, hebat sekali
Dari bit PC yang tinggi, terlihat apa yang sedang berjalan sekarang
P.S.: Meski begitu, ini masih lebih cepat daripada memuat kernel dari ISO virtual lewat IPMI buruk milik server di seberang internet ;D
nmpadavmlinux, Anda bisa dengan mudah memetakannya ke fungsi kernelSetelah masuk ke user space, binary utama (jauh di bawah 0x01000000) dan shared library (dimuat di alamat tinggi sekitar 0x77000000) juga bisa dibedakan
Booting maupun eksekusinya luar biasa lambat dan menyakitkan
Ini tulisan yang benar-benar menarik
Saya pernah membaca sedikit tentang 4004, jadi saya tahu itu chip yang aneh, tetapi tingkat kerumitannya melampaui bayangan
Sekarang saya jadi ingin melihat seberapa bagus CPU yang bisa dibuat dengan jumlah transistor yang sama
Jumlahnya tidak jauh lebih sedikit dibanding 6502, dan kalau 8-bit, pemrogramannya tampaknya akan jauh lebih mudah
Perekaman videonya memakan waktu 9 hari, dan butuh 4 jam untuk setiap 1 detik emulasi
Dan saya juga penasaran kenapa memakai Windows 95
Untuk video, diperlukan laptop dengan port serial sungguhan, bukan USB
Laptop ini memenuhi syarat dan harganya 20 dolar di eBay
Secara pribadi, Windows 2000 adalah Windows yang paling cantik, jadi saya menginstalnya untuk video demo
Benar-benar keren
Saya berharap pengetahuan saya bertambah sampai bisa memahami sebagian besar proyek ini, tetapi untuk saat ini kemampuan ilmu komputer saya yang terbatas membuatnya terlalu sulit
Meski begitu, sorotan yang bisa saya pahami sepenuhnya adalah “Section 14.b & 14.c - Getting the data...”
Ternyata cukup dengan hanya 400 ribu file, sekitar 275 foto per hari selama 4 tahun
Sungguh aneh hidup di zaman ketika performa pemrosesan, penyimpanan, dan jaringan begitu melimpah, tetapi aplikasi sinkronisasi media yang tampaknya paling banyak dipakai tetap macet atau lambat saat menyinkronkan, AirDrop gagal, dan bahkan tidak ada fungsi UI ‘pilih semua’ :)
Untuk hal seperti ini, perlu ada semacam Hadiah Nobel
Bisa juga ditambahkan kategori penghargaan untuk penerapan ilmu komputer yang aneh dan tidak biasa
Di bagian “Why MIPS?” disebutkan bahwa “sebagian pasti lambat karena mode pengalamatan yang buruk (RISCV)”; apa masalahnya dengan mode pengalamatan RISC-V?
Pada sebagian instruksi RISC-V, bit nilai segera tidak disimpan secara berurutan
Pada instruksi MIPS, bit nilai untuk penjumlahan segera, pemuatan konstanta, percabangan, dan sebagainya selalu disimpan berurutan
Di RISC-V, bit-bitnya kadang diacak
Misalnya pada percabangan tanpa syarat, bit offset tujuan disimpan dalam urutan bit 19, bits 9-0, bit 10, bits 18-11
Di perangkat keras, cukup menghubungkan kabel dengan benar sehingga biaya penyusunan ulang praktis tidak ada, tetapi di perangkat lunak diperlukan banyak manipulasi bit untuk meluruskannya
Alasan RISC-V melakukan ini adalah untuk menyederhanakan desain perangkat keras