Apa keuntungan menggunakan FPGA dibandingkan TTL dalam arsitektur komputer intro?

24

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.

Ellen Spertus
sumber
Bisakah Anda memposting atau menautkan ke kurikulum / silabus Anda?
Kevin Vermeer
Bolehkah saya menyarankan Anda mempertimbangkan pendekatan alternatif? Bagaimana dengan menggunakan mikrokontroler seperti Arduino di laboratorium Anda?
JonnyBoats
7
@ JonnyBoats: ... bagaimana itu cocok? Dia berbicara tentang membangun komputer dari gerbang perangkat keras.
darron
Untuk menjawab pertanyaan Anda - hampir tidak ada yang membangun gerbang perangkat keras, mereka membeli chip dengan gerbang yang sudah diimplementasikan. Dengan FPGA satu tidak membangun gerbang dalam perangkat keras, mereka mengaturnya dalam perangkat lunak.
JonnyBoats
1
@ JonnyBoats: FPGA sedang membangun desain digital dari gerbang perangkat keras (LUT menjadi gerbang yang dapat diprogram). Gerbang ada sebagai perangkat keras, dan desain Anda berfungsi secara fisik sepenuhnya. Dengan TTL Anda tidak "membangun gerbang" dengan standar itu juga ... mereka gerbang yang dibangun sebelumnya. Satu-satunya perbedaan adalah fungsi gerbang dapat diprogram, peruteannya dapat diprogram (tetapi masih bersifat fisik), dan ada banyak pesanan lebih banyak dari mereka. Saya masih tidak melihat bagaimana Arduino cocok dalam kursus desain logika digital sama sekali. (Kecuali Anda bermaksud agar dia mengubah tujuan kursus itu sendiri?)
darron

Jawaban:

16

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.

mng
sumber
Saya dapat mengatakan bahwa pada awal 90-an, CS150 pada dasarnya diajarkan cara OP menggambarkan tugasnya di MIT - sebagian besar gerbang 74xx, yang berpuncak pada pembangunan CPU 8-bit (atau 4-bit?) Yang sederhana. Kami memang memiliki proyek singkat menggunakan FPGA yang dirancang dalam alat tangkap skematis (tidak ada HDL). Sepertinya silabus saat ini sebagian besar berbasis HDL.
The Photon
Poin yang bagus bahwa kelas adalah campuran dari desain logika dan struktur mesin. Ketika saya menambahkan ke deskripsi pertanyaan, dulu ada dua kursus terpisah, yang saya gabungkan menjadi satu. Terima kasih banyak atas bantuan Anda. Saya akan meneliti FPGA dan setidaknya menambahkan kuliah tentang mereka. Di UCB, Dave Patterson menciptakan pendekatan baru untuk arsitektur intro yang jauh lebih tinggi. Saya mengawasinya tetapi tidak berencana untuk melakukan perubahan besar.
Ellen Spertus
Saya telah mempertimbangkan kompleksitas lingkungan FPGA dan mungkin saya tidak benar-benar tidak setuju bahwa mungkin terlalu banyak untuk kursus pengantar. Sepertinya memalukan untuk tidak mengajar dengan alur kerja modern. Saya bermain dengan TTL sendiri, dan baru setelah saya masuk ke FPGA saya mulai benar-benar mengerti bagaimana komputer (relatif sederhana) bekerja. Tugas kuliah terlihat lebih baik daripada apa yang harus saya kerjakan, jadi mungkin dia mendapatkan konsep yang lebih baik. Namun, dari perspektif chip logika TTL, prosesor "nyata" terlihat sangat jauh. Setelah FPGA, mungkin membuatnya.
darron
Dengan "cara kerja komputer" Maksud saya cara membangunnya, bukan konsep "jam dan jepit" yang kabur ... yang tentu saja cukup untuk TTL. (dan lagi, tugas kuliahnya sepertinya dapat mengajarkan ini dengan baik ... masalah saya adalah mengajarkan konsep-konsep tentang perangkat keras yang hampir tidak memiliki aplikasi nyata, alih-alih mengajar perangkat keras yang benar-benar digunakan)
darron
@dronon, TTL pada dasarnya sudah usang, tetapi secara konsep bersih - tidak ada bahasa atau IDE yang menyulitkan, hanya diagram dan kabel point-to-point. Itu menjadi berantakan ketika ukuran kata Anda naik, tetapi hal-hal 8-bit tidak terlalu buruk. Jika kelas melangkah lebih jauh, atau jika ada kelas lanjutan, FPGA akan masuk akal, tapi saya pikir itu akan menjadi komplikasi yang tidak perlu mengingat materi yang dibahas.
mng
6

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.

darron
sumber
Terima kasih banyak. Saya pasti akan mencoba ini. FWIW, jika saya memiliki laboratorium perangkat keras semester kedua, saya pasti akan melakukan FPGA atau Arduino dengan mereka.
Ellen Spertus
5

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).

Foton
sumber
Saya tidak setuju bahwa kelas apa adanya tidak mengajarkan arsitektur komputer. Para siswa belajar bagaimana menerapkan ISA, yang jelas merupakan bagian dari arsitektur komputer, dan saya juga mengajarkan tentang pipelining dan cache. Saya setuju bahwa ada lebih banyak arsitektur daripada apa yang saya ajarkan dalam satu kursus. Saya mengambil beberapa kursus arsitektur lainnya sebagai mahasiswa, telah melakukan penelitian akademik dan industri dalam arsitektur, dll. Saya menghargai dorongan untuk melihat HDL dan FPGA.
Ellen Spertus
5

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.

pengguna6887
sumber
+1 HDL menyembunyikan sirkuit. Ada beberapa cara berbeda untuk menulis multiplexor dalam HDL, dan sebagian besar dari mereka sangat sedikit atau tidak ada hubungannya dengan bagaimana gerbang diatur untuk membuat mux.
ajs410
Ini adalah titik kunci - terlalu mudah untuk menulis kode untuk FPGA tanpa benar-benar memahami pada tingkat dasar cara kerjanya. Sekarang, ada cara untuk menghindari hal ini, misalnya IDE Altera menyertakan mode entri skematik yang dapat membantu Anda berkonsentrasi pada desain tingkat gerbang, tetapi dengan tetap menggunakan ini, Anda juga akhirnya tidak benar-benar dapat mengeksploitasi kekuatan FPGA, jadi apakah akan ada sebenarnya ada gunanya beralih?
Jules
1

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.

Chris Stratton
sumber
Terima kasih banyak. Saya menyadari perubahan di MIT. Bahkan, saya memulai di institusi saya saat ini dengan kit lab lama 6.004 / 6.111 yang tidak lagi dibutuhkan oleh MIT. Murid-murid saya, bagaimanapun, bukan mahasiswa MIT dan tidak dapat menyerap banyak dalam satu semester, jadi saya harus selektif. (Sebenarnya, saya menemukan di MIT bahwa sebagian besar siswa tidak dapat menyerap sebanyak yang dilemparkan pada mereka juga, tapi itu diskusi lain.) Biaya lebih rendah dari papan FPGA jelas menarik.
Ellen Spertus
1

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).

supercat
sumber