Sambil melihat ke beberapa CPU yang dibuat khusus, saya perhatikan frekuensi di mana mereka beroperasi relatif rendah dibandingkan dengan CPU modern (dalam urutan beberapa MHz). Apakah ada alasan rekayasa elektronik untuk batasan itu, misalnya untuk papan tempat memotong roti? Jika ya, bagaimana cara menentukan frekuensi maks yang mungkin dicapai dengan desain Anda?
15
Jawaban:
Sebagian besar berkaitan dengan lamanya interkoneksi dan keterlambatan propagasi melalui gerbang. Jika kita mengurangi CPU pada esensinya, itu adalah mesin umpan balik. Sekelompok sirkuit logika kombinatorial menghitung beberapa fungsi boolean di atas kondisi mesin saat ini, dan fungsi-fungsi tersebut menentukan status baru, yang terkunci oleh sirkuit sekuensial ketika tepi jam baru tiba. Semua sirkuit kombinatorial memiliki penundaan. Periode jam tidak bisa lebih pendek dari waktu yang diperlukan untuk jalur paling lambat melalui gerbang ini untuk menghasilkan hasil yang stabil karena satu bit yang salah menghentikan pertunjukan.
Selanjutnya, logika sekuensial memiliki persyaratan waktu. Sebelum ujung jam tiba, ada beberapa waktu pengaturan minimum bahwa input harus stabil dan kemudian mereka harus stabil untuk beberapa waktu penahanan. Jika ini dilanggar, negara menjadi sampah.
Penundaan propagasi disebabkan oleh hal-hal seperti seberapa cepat kapasitansi parasit dapat mengisi daya, seberapa cepat arus dapat membangun dalam menghadapi induktansi dan seberapa cepat perangkat silikon dapat beralih. Misalnya, transistor bipolar dengan basis yang lebih kecil dapat beralih lebih cepat dari yang memiliki basis yang lebih besar, sehingga transistor kecil pada sebuah chip akan lebih cepat daripada yang terpisah.
Di jawaban sebelumnya yang saya hapus, saya menulis tentang efek saluran transmisi. Tetapi saya tidak menganggap bahwa efek ini bahkan tidak muncul pada kecepatan yang kita bicarakan karena, katakanlah, pada 10 Mhz, panjang gelombang masih sekitar 30 meter. Jadi pada skala papan sirkuit berukuran biasa, pulsa pada skala waktu beberapa megahertz masih mencapai semua bagian dari jaringan tembaga secara bersamaan.
Jadi, jika Anda membuat CPU dari komponen diskrit, Anda tidak akan mencapai komponen kecil dengan waktu switching yang cepat, dan kedekatan yang sama yang meminimalkan kapasitansi dan induktansi yang menyimpang.
Namun demikian, mesin komponen diskrit kuno pada 1960-an memang berjalan sedikit lebih cepat daripada mesin homebrew ini. Butuh beberapa waktu dan kelicikan untuk sampai ke sana. Sebagai contoh, IBM 360 Model 44 (1964) beroperasi pada 4 Mhz. Itu mungkin masih "kecepatan homebrew", tetapi CDC 7600 dirilis hanya beberapa tahun kemudian pada tahun 1969 melampaui 36 Mhz. Artikel Wikipedia http://en.wikipedia.org/wiki/CDC_7600 memberikan petunjuk tentang beberapa trik yang ditarik, misalnya:
"Seperti biasa, desain Cray juga berfokus pada pengemasan untuk mengurangi ukuran, memperpendek jalur sinyal, dan dengan demikian meningkatkan frekuensi operasi. ... Modul sirkuit sebenarnya terdiri dari hingga enam papan PC, masing-masing diisi dengan resistor subminiature, dioda , dan transistor. Keenam papan ditumpuk dan kemudian saling berhubungan di sepanjang tepinya, membuat modul yang sangat ringkas, tetapi pada dasarnya tidak dapat diperbaiki. "
Jadi CPU homebrew tidak perlu dibangun untuk potensi sebenarnya karena beberapa efek perancu berkaitan dengan kualitas dan tata letak build. Namun, siapa pun yang membangun CPU dari sirkuit terintegrasi individu dan komponen diskrit yang berjalan pada beberapa megahertz harus diberi tepuk tangan.
sumber
Sebagai seorang mantan siswa sekolah menengah yang membangun komputer untuk keperluan khusus dengan 7400 seri TTL, yang memenangkan beberapa penghargaan di ajang sains, saya mengamati hal-hal ini yang membuatnya tidak berlari secepat mungkin:
Kapasitansi liar di papan tempat memotong roti. Beberapa pF antara setiap pasangan konektor yang berdekatan. Batas waktu naik / turun nadi terbatas dan di beberapa tempat ditambahkan crosstalk. Ini mungkin faktor terbesar.
Variasi dari chip ambil-tas. (Adakah yang ingat Poly-Paks?) 74LSxx, 74Hxx, 74xx dengan penundaan propagasi yang berbeda dan karakteristik lainnya, membuatnya mustahil untuk membuat sinyal tetap sinkron pada kecepatan clock yang lebih tinggi dari beberapa MHz.
Keripik memori statis yang murah, sekali lagi dari tas jinjing atau sumber tidak berkualitas lainnya. Mereka tidak bisa membaca atau menulis dengan andal melebihi tingkat tertentu.
Instrumentasi pengujian saya terbatas pada generator sinyal homebrew, osiloskop bandwidth 5MHz, dan sirkuit digital sementara yang dilengkapi juri. Sulit untuk memeriksa integritas sinyal, waktu, amplitudo sinyal digital yang low-pass disaring menjadi bubur yang goyah.
Hari ini, akan sulit untuk menemukan ruang lingkup 5MHz kecuali ada pembeli barang antik. Keripik yang lebih baik dari semua jenis sama mudahnya didapat, bahkan dalam paket DIP spasi 0,1 ", kecuali saya belum melihat banyak cara meraih tas dalam waktu yang lama. Namun, papan tempat memotong roti tidak banyak berubah. Kapasitansi liar masih merupakan pembunuh kecepatan untuk setiap proyek digital kreatif edgy.
Menghindari papan tempat memotong roti dengan menggunakan PCB buatan sendiri adalah cara terbaik untuk menghindari kapasitansi liar, tetapi tentu saja membutuhkan lebih banyak usaha dan waktu.
sumber
Saya pikir alasan utamanya adalah bahwa ketika Anda meningkatkan frekuensi, impedansi koneksi papan tempat memotong roti Anda akan meningkat dan membatasi kecepatan akhir dari sirkuit Anda.
Setiap koneksi di papan tempat memotong roti Anda memiliki induktansi rendah, tetapi tidak nol. Ketika frekuensi Anda semakin tinggi dan lebih tinggi, Anda perlu mempertimbangkan efek-efek ini. Impedansi kabel dapat ditemukan oleh:
di mana L adalah induktansi kawat. Akhirnya, Z akan menjadi cukup tinggi sehingga arus tidak mengalir dan sirkuit Anda akan berhenti bekerja. Menemukan nilai numerik yang tepat untuk angka ini akan sangat rumit, terutama karena papan tempat memotong roti memiliki jejak di samping satu sama lain dan itu akan sedikit mengubah impedansi setiap kawat dari rumus ini. Jika Anda benar - benar menginginkan nomor (tidak tepat), Anda dapat mencoba di sini untuk menghitung induktansi (dan karenanya impedansi) dari kabel Anda. Jika Anda tahu arus terendah dari mana suatu bagian dapat beroperasi, Anda dapat menentukan frekuensi maksimum sebelum Anda mencapai batas itu.
sumber
Yang lain telah menjawab "mengapa". Berikut cara menentukan kecepatan maksimum.
sumber
Terlepas dari semua alasan kelistrikan yang membatasi kecepatan, ada juga satu alasan logis:
Anda tidak dapat membuang banyak sumber daya untuk membuat berbagai hal berjalan lebih cepat, seperti operasi pipelined dengan prediksi cabang, aritmatika lebih cepat dan yang lainnya. Cache juga tidak masuk akal jika tidak lebih cepat dari memori utama Anda.
sumber
Untuk mesin homebrew, ada dua faktor. Delay propagasi untuk chip yang Anda gunakan dan jumlah chip yang perlu Anda gunakan pada jalur terpanjang melalui desain CPU Anda.
Misalnya, 74HC574 (register 8 bit) memiliki penundaan propagasi maksimum sekitar 41ns (diambil dari datasheet-nya). Sekarang katakanlah jalur terpanjang melalui desain CPU Anda mengharuskannya melewati 8 chip yang berbeda. Tambahkan penundaan propagasi untuk masing-masing 8 dan mari kita bayangkan sampai 333ns. Dengan 1000ns sama dengan 1Mhz yang akan memberi Anda kecepatan maksimum 3Mhz.
Dalam praktiknya, Anda mungkin ingin membatasi diri pada sesuatu yang lebih lambat seperti 2MHz, untuk memastikan desain yang stabil. Bahkan jika Anda berpikir Anda hanya akan melewatkan waktu sekali per miliar siklus, maka Anda masih dalam kesulitan. 10 miliar dibagi 3 juta berarti Anda salah mengeksekusi sekali setiap 3.333 detik, yaitu sekitar sekali per jam. Merusak mesin Anda setiap jam tidak baik!
Untuk membuatnya lebih cepat, Anda dapat menggunakan chip lebih cepat dan / atau mengubah desain untuk mengurangi jumlah chip di jalur paling lambat. Tentang kecepatan homebrew tercepat yang Anda lihat adalah sekitar 4Mhz yang memberi Anda 250ns untuk menyelesaikan setiap siklus.
sumber