Saya mengajar satu-satunya kursus arsitektur komputer di sebuah perguruan tinggi seni liberal. Kursus ini diperlukan untuk jurusan ilmu komputer mayor dan minor. Kami tidak memiliki teknik komputer, teknik elektro, kursus perangkat keras lainnya, dll. Tujuan utama saya dalam kursus adalah agar siswa memahami sepenuhnya sampai ke tingkat gerbang bagaimana komputer bekerja, yang saya percaya mereka pelajari terbaik melalui laboratorium perangkat keras dan bukan hanya melalui buku teks ( Organisasi dan Desain Komputeroleh Hennessy dan Patterson). Tujuan kedua saya adalah menggairahkan mereka tentang arsitektur komputer dan meningkatkan kegembiraan mereka tentang ilmu komputer. Mempersiapkan mereka secara langsung untuk industri bukanlah tujuan, meskipun memotivasi mereka untuk mempelajari lebih banyak arsitektur komputer. Para siswa umumnya tidak memiliki pengalaman membangun apa pun atau mengambil kursus praktikum tingkat perguruan tinggi. Biasanya, 10-15 siswa mengikuti kursus per semester.
Saya telah mengajar kursus ini sejak tahun 1998 dengan cara yang mirip dengan bagaimana saya diajarkan arsitektur komputer dan elektronik digital di akhir 1980-an di MIT: menggunakan chip DIP TTL pada papan tempat memotong roti yang bertenaga. Pada tugas lab perangkat keras pertama, siswa membangun penambah penuh. Sekitar setengah semester, mereka mulai membangun komputer sederhana dengan set instruksi 8-bit. Untuk mengurangi perkabelan, saya menyediakan PCB dengan beberapa barang elektronik (dua sandal jepit D, dua ALU LS 181 bit 4-bit yang disatukan untuk bertindak sebagai ALU 8-bit, dan buffer tri-state). Pada laboratorium pertama, mereka memperoleh sinyal kontrol (sangat sederhana) untuk dua format instruksi dan membangun sirkuit, memasukkan instruksi pada sakelar dan membaca hasil dari lampu. Pada laboratorium kedua, mereka menambahkan penghitung program (2 LS163s) dan EPROM (yangpertanyaan awal saya adalah tentang, sebelum beralih ke bagaimana saya harus mengajarkan arsitektur intro). Di lab terakhir, mereka menambahkan instruksi cabang bersyarat. Sementara para siswa menghabiskan cukup banyak waktu pengkabelan dan debugging, saya merasa di situlah banyak pembelajaran terjadi, dan siswa pergi dengan rasa prestasi yang nyata.
Orang-orang di forum ini telah mengatakan kepada saya, bahwa saya harus beralih ke FPGA, yang belum pernah saya gunakan sebelumnya. Saya seorang insinyur perangkat lunak, bukan insinyur komputer, dan sekarang telah keluar dari sekolah untuk sementara waktu, tetapi saya mampu belajar. Saya tidak akan bisa mendapatkan banyak uang ( mungkin beberapa ribu dolar) untuk mengganti pelatih digital kami yang ada. Kami memiliki penganalisa logika tunggal.
Mengingat tujuan dan kendala saya, apakah Anda EE merekomendasikan agar saya tetap pada pendekatan saya saat ini beralih ke yang didasarkan pada FPGA? Jika yang terakhir, dapatkah Anda memberi saya petunjuk tentang materi yang dapat digunakan untuk mendidik diri sendiri?
Seperti yang diminta, berikut ini tautan ke silabus dan tugas lab .
Tambahan: Ya, ini adalah kursus logika digital juga. Ketika saya sampai di perguruan tinggi saya, mahasiswa diminta untuk mengambil satu semester dari masing-masing arsitektur komputer dan logika digital, dan saya menggabungkannya menjadi satu semester. Tentu saja, itu pernyataan tentang masa lalu, bukan masa depan.
sumber
Jawaban:
Mengingat tujuan kelas, saya pikir pendekatan TTL baik-baik saja, dan saya mengatakan ini sebagai "orang FPGA". FPGA adalah lautan logika dan Anda dapat melakukan segala macam hal menyenangkan dengan mereka, tetapi hanya ada begitu banyak yang secara manusiawi dapat dilakukan dalam satu semester.
Melihat silabus Anda, kelas Anda adalah campuran dari desain logika dan program "struktur mesin" yang saya ambil dalam program sarjana. (Plus, ini untuk jurusan CS. Saya semua untuk jurusan CS harus menghadapi perangkat keras nyata - membiarkan mereka lolos dengan menulis kode sepertinya langkah mundur.) Pada tingkat pengantar ini, di mana Anda akan membahas bagaimana instruksi perakitan dirinci, saya melihat tidak ada manfaat nyata untuk memiliki siswa melakukan hal-hal dalam kode dibandingkan dengan tangan. Melakukan HDL berarti mempelajari HDL, mempelajari cara menulis HDL yang dapat disintesis , dan mempelajari IDE. Ini jauh lebih rumit secara konseptual dan abstrak. Plus Anda harus berurusan dengan masalah perangkat lunak.
Secara umum inti dari kursus yang menggunakan FPGA adalah berlatih membuat logika yang berguna - berguna untuk berbicara dengan peripheral, serial comms, RAM, generator video, dll. Ini adalah pengetahuan yang berharga untuk dimiliki, tetapi tampaknya sangat banyak yang keluar dari ruang lingkup kursus Anda. Kelas yang lebih maju dalam arsitektur komputer meminta siswa menerapkan CPU canggih dalam FPGA, tetapi sekali lagi, ini tampaknya di luar ruang lingkup program Anda.
Paling tidak saya akan mencurahkan kuliah untuk FPGA. Jalankan melalui beberapa demo dengan papan dev dan tunjukkan kepada mereka alur kerja. Karena Anda berada di Mills, mungkin Anda bisa menghubungi orang-orang di Berkeley yang menjalankan CS 150 / 152 dan pergi melihat bagaimana mereka melakukan hal-hal.
sumber
Saya sangat setuju dengan Photon. Ada banyak keuntungan menggunakan FPGA. Berikut adalah beberapa hal menarik untuk dipertimbangkan:
1) Platform yang mudah untuk mencoba desain gerbang dengan sangat cepat, tanpa berjam-jam atau berpotensi berhari-hari untuk memasang kabel. FPGA memungkinkan desain digital yang berpotensi sangat kompleks dengan mudah. (JAUH lebih banyak teori, kurang sibuk)
2) Bagian signifikan dari pekerjaan siswa dapat dilakukan dalam simulasi di luar lab.
3) Lingkungan perangkat lunak bebas (umumnya termasuk simulator).
4) Ada banyak platform FPGA yang relatif murah di sekitar. Harga akademik harus membantu. Sesuatu seperti Terasic DE0-Nano adalah $ 59 untuk satu kit lengkap (dan terlihat cukup bagus). $ 50-60 terlihat sebagai kisaran per-papan yang akan Anda lihat.
5) Ada banyak hal yang sangat keren untuk dilakukan dengan FPGA. Ada situs seperti OpenCores yang menyediakan ratusan modul prebuilt untuk digunakan dengan FPGA. Ada FPGA4Fun , yang memiliki banyak tutorial dan proyek. Untuk hiburan murni, FPGA Arcade didedikasikan untuk membangun game dengan FPGA. Tergantung pada apa yang Anda atur di sekitar papan FPGA, ini bisa membuat kelas yang benar-benar menyenangkan.
6) Beberapa papan memiliki kelas desain digital yang tampaknya sudah jadi untuk mereka: Pengantar Desain Digital (peringatan: unduhan besar) menggunakan papan Xilinx Spartan 3E yang agak lama. (Meskipun yang didasarkan pada ActiveHDL, saya pribadi lebih suka VHDL atau Verilog yang lebih standar) Vendor FPGA utama juga memiliki program universitas: Program Universitas Xilinx , Program Universitas Altera , Program Universitas Lattice .
7) Alur kerja lebih dekat dengan bagaimana pekerjaan desain profesional terjadi hari ini. Pengetahuan kerja dalam pengembangan FPGA adalah keterampilan yang langsung dapat dipasarkan.
sumber
Saya pikir bahwa saat ini jika Anda berurusan dengan hal-hal di tingkat gerbang, Anda tidak bekerja di bidang "arsitektur komputer", Anda benar-benar hanya melakukan elektronik digital dasar. Tetapi juga, Anda tidak bisa mengajarkan segala sesuatu yang perlu diketahui dari elektronik digital tingkat gerbang hingga algoritma caching, arsitektur komputasi paralel, SIMD, jaringan, dll, dll dalam satu semester.
Jadi itu benar-benar tergantung pada apa yang ingin Anda ajarkan. Jika Anda ingin fokus pada elektronik digital tingkat gerbang, maka bekerja dengan chip tingkat gerbang akan memberi siswa sesuatu untuk dikerjakan secara langsung dan memberi mereka pemahaman yang lebih kuat tentang materi itu. Tetapi jika Anda ingin mengajarkan arsitektur komputer, mereka mungkin perlu bekerja pada tingkat abstraksi yang jauh lebih tinggi daripada gerbang AND dan OR.
Paling tidak, Anda mungkin berhutang pada diri sendiri untuk mempelajari HDL dan menerapkan satu atau dua desain berbasis FPGA, sehingga Anda (sebagai pakar pendidikan di sini) dapat menilai bagaimana keterampilan itu akan sesuai dengan tujuan Anda bagi siswa Anda. Saya berharap bahwa jawaban lain akan memberikan banyak petunjuk untuk bahan rendah dan tanpa biaya yang akan membuat Anda mendapatkan kecepatan pada desain FPGA dalam waktu singkat. (Petunjuk: Xilinx dan Altera keduanya menawarkan alat desain dan simulator perangkat lunak gratis, bersama dengan banyak catatan aplikasi dan bahan pengajaran lainnya).
sumber
Salah satu manfaat menggunakan TTL adalah untuk sirkuit yang sangat dasar, rincian HDL akan menutupi sirkuit yang sebenarnya, dan sebagian besar siswa hanya akan menghabiskan sebagian besar waktu menulis dan belajar HDL. Saya pikir TTL untuk bagian pertama dan kemudian FPGA untuk bagian arsitektur akan lebih baik, karena sulit untuk benar-benar membuat sistem yang dapat diprogram dengan TTL.
sumber
Sepenuhnya menghargai pentingnya beberapa pengalaman dengan sirkuit fisik perakitan, saya pikir itu juga penting untuk menyadari bahwa Anda tidak dapat menutupi praktek komputasi modern tanpa beberapa tingkat sesuatu yang "terasa seperti" simulasi atau menyembunyikan terlalu banyak abstraksi, sehingga Yang terbaik yang dapat Anda lakukan adalah mencoba melakukan beberapa pekerjaan di setiap level sebelum menambahkan abstraksi yang cukup untuk membuat upaya tingkat kompleksitas berikutnya menjadi masuk akal. Kursus MIT yang Anda rujuk misalnya, pada satu titik mulai melakukan simulasi perangkat lunak mesin RISC 32-bit yang berjalan di atas chip & modul 8 bit mesin mikroprogram yang secara fisik "dibangun". Pada titik itu, saya berpendapat bahwa lebih efektif untuk hanya mengimplementasikan mesin seperti itu dalam FPGA (sesuatu yang saya curigai mungkin sudah mereka lakukan sejak itu).
Mengingat hal ini, godaan saya adalah mencoba memasukkan kedua fase chip & kabel sejak awal, dan fase FPGA kemudian dalam kursus. Karena Anda sudah memiliki kit papan tempat memotong roti, Anda bisa menggunakan laboratorium awal untuk itu, dan menggunakan papan FPGA atau mungkin modul FPGA yang dapat dipasang papan untuk laboratorium selanjutnya. Membangun mesin hybrid di mana FPGA tergantung pada beberapa sirkuit tempel yang mengimplementasikan bagian dari prosesor akan mungkin, tetapi akan terasa sangat buatan - hanya beralih teknologi sepenuhnya pada titik di mana kompleksitas melebihi satu potong papan tempat memotong roti mungkin paling realistis.
Anda harus dapat memperoleh papan FPGA yang berdiri sendiri yang ada dengan harga kurang dari $ 100 / ea dengan harga pendidikan.
Pilihan lain, bisa dengan membangun Anda sendiri sebagai bagian dari kelas, mungkin membangun antarmuka pemuatan serial FPGA sebagai bagian pertama dari proyek. Keuntungan yang baik dari hal ini adalah bahwa biayanya akan cukup rendah sehingga para siswa dapat menjaga papan mereka daripada harus menyerahkannya pada akhir semester, yang diharapkan akan menghasilkan minat dan kesadaran yang berkelanjutan di antara segelintir orang.
sumber
Saya pikir pendekatan yang tepat akan dimulai dengan membangun beberapa gerbang keluar dari relay, yang mudah dilihat dan dipahami tetapi jelas terlalu lambat dan haus daya untuk aplikasi modern. Kemudian tunjukkan bagaimana transistor dapat digunakan untuk melakukan hal yang sama lebih padat, lebih cepat, dan lebih efisien, dan gerbang terpaket [misalnya "quad nand"] dapat melakukannya dengan lebih baik lagi. Setelah Anda sampai pada titik itu, saya sarankan Anda menunjukkan cara membangun hal-hal seperti multiplexer dan kait dari gerbang, dan kemudian bagaimana struktur yang agak lebih besar dapat dibangun dari multiplex yang dikemas, kait, dll. Tidak ada yang akan pergi untuk membangun komputer saat ini dengan secara fisik menyatukan ribuan transistor terpisah, tetapi operasi internal komputer sangat mirip dengan transistor kecuali bahwa semuanya jauh lebih kecil.
Satu manfaat utama yang saya pikir akan dapatkan siswa dari instruksi semacam ini adalah pemahaman tentang mengapa banyak hal bekerja seperti yang mereka lakukan. Misalnya, jika seseorang "mensimulasikan" suatu set instruksi yang tidak perlu memiliki realisasi fisik praktis, tidak akan perlu memiliki instruksi "memuat memori" mengambil tiga siklus sementara sebagian besar instruksi lain mengambil satu. Beberapa hal dapat dipahami tanpa turun ke level transistor, tetapi beberapa tidak dapat (mis. Signifikansi input sinkron versus asinkron).
sumber