Mengapa jam digunakan di komputer?

22

Seperti yang saya tahu, jam mengontrol semua operasi logika, tetapi juga membatasi kecepatan komputer karena gerbang harus menunggu jam berubah dari rendah ke tinggi atau tinggi ke rendah tergantung pada komponen. Jika tidak ada jam yang dimasukkan, gerbang akan berubah secepat yang mereka bisa setiap kali diberi perintah, jadi mengapa itu tidak meningkatkan kecepatan komputer dan mengapa jam digunakan?

skyler
sumber
Tidak punya waktu untuk jawaban yang tepat, tetapi pada tingkat yang paling dasar, jadi semua hal digital berbaris dengan ketukan drummer yang sama. Cari sinkron vs. asinkron.
Matt Young
kemungkinan duplikat sinyal jam di komputer dan mesin , (dan pertanyaan itu ditutup bukan pertanyaan nyata ...)
amadeus
Untuk rentang tugas yang sempit, komputer analog bisa lebih cepat dari komputer digital.
Nick Alexeev
1
Jadi mereka tahu jam berapa sekarang! (maaf, tidak bisa menahan)
Scott Seidman

Jawaban:

32

Jam digunakan dalam komputer untuk alasan sederhana bahwa sebagian besar atau tidak semua sirkuit adalah logika sekuensial sinkron .

Dalam sirkuit sinkron, osilator elektronik yang disebut jam menghasilkan urutan pulsa berulang yang disebut sinyal jam yang didistribusikan ke semua elemen memori di sirkuit.

Sekarang, yang mungkin tampak tidak memuaskan dan dikabulkan, Anda tentu akan bertanya "mengapa sirkuit sinkron digunakan di komputer?" tapi itu juga pertanyaan yang mudah dijawab :

Keuntungan utama dari logika sinkron adalah kesederhanaannya. Gerbang logika yang melakukan operasi pada data memerlukan waktu yang terbatas untuk menanggapi perubahan input mereka. Ini disebut penundaan propagasi. Interval antara pulsa clock harus cukup lama sehingga semua gerbang logika punya waktu untuk merespons perubahan dan outputnya "menetap" ke nilai logika stabil, sebelum pulsa clock berikutnya terjadi. Selama kondisi ini terpenuhi (mengabaikan detail tertentu lainnya) sirkuit dijamin stabil dan dapat diandalkan. Ini menentukan kecepatan operasi maksimum sirkuit sinkron.

Bidang penelitian yang aktif adalah komputasi asinkron di mana sebagian besar atau tidak semua sirkuit adalah logika sekuensial asinkron .

Alfred Centauri
sumber
Karya Wikipedia tentang logika sekuensial asinkron agak singkat; mungkin akan membantu untuk membedakan antara logika yang tidak memiliki satu jam tetapi dapat menjamin bahwa input sirkuit tidak akan menyebabkan kondisi balapan atau, paling buruk, bahwa output dari sirkuit apa pun yang inputnya mungkin memiliki kondisi balapan tidak akan bekas.
supercat
Saya pikir perlu dicatat bahwa ada komputer yang sepenuhnya tidak sinkron yang dibangun oleh Jacek Karpiński yang bernama KAR-65. Sayangnya saya tidak dapat menemukan apa pun dalam bahasa Inggris.
Elmo
6

Bayangkan Anda memiliki integer 8 bit yang dikirim dari memori ke ALU untuk perhitungan dan (setidaknya untuk contoh ini) bahwa rangkaian memori memberikan sinyal pada 8 jalur data sebelum ALU membutuhkannya dan pada waktu yang sedikit berbeda.

Penggunaan jam di sini akan memastikan bahwa 8 baris data memiliki nilai yang benar untuk bilangan bulat yang diwakili untuk satu siklus clock dan bahwa ALU akan "mengumpulkan" data tersebut dalam siklus clock yang sama.

Saya menyadari bahwa itu mungkin bukan deskripsi terbaik, pada dasarnya tanpa jam memastikan konsistensi data akan jauh lebih sulit daripada peningkatan kecepatan yang mungkin akan membuatnya layak, Anda akan mengalami banyak masalah kondisi balapan.


sumber
6

Sirkuit seperti unit logika aritmatika akan mengambil beberapa angka sebagai input dan menghasilkan angka sebagai ouptut. Ini dapat menjamin bahwa dalam beberapa periode waktu, semua bit output akan mencapai kondisi akhir yang benar, tetapi jumlah waktu aktual untuk bit output menjadi valid dapat sangat bervariasi berdasarkan berbagai faktor.

Dimungkinkan untuk membuat ALU dengan input "valid" dan output "valid", dan menentukan bahwa jika input "valid" rendah untuk jumlah waktu yang cukup sebelum perhitungan dilakukan, dan input data berisi nilai yang diinginkan sebelum input "valid" menjadi tinggi, output "valid" tidak akan tinggi sampai bit output sebenarnya benar. Desain seperti itu mungkin akan membutuhkan sekitar dua kali lebih banyak sirkuit daripada ALU konvensional [pada dasarnya itu harus melacak apakah setiap bit "diketahui" menjadi nol atau "dikenal" menjadi satu; outputnya "valid" akan menjadi benar setelah status setiap bit output diketahui].

Lebih buruk lagi, membiarkan bagian-bagian dari CPU yang akan mampu berjalan lebih cepat untuk melakukannya hanya akan membantu jika mereka tidak menunggu sepanjang waktu untuk bagian yang lebih lambat untuk mengejar ketinggalan. Untuk mewujudkannya, harus ada logika untuk memutuskan bagian mana dari mesin "di depan" pada saat tertentu, dan memilih tindakan berdasarkan itu. Sayangnya, keputusan semacam itu adalah salah satu yang paling sulit untuk dibuat secara elektronik. Memutuskan untuk memutuskan mana dari dua peristiwa yang terjadi terlebih dahulu umumnya mudah jika seseorang dapat menjamin bahwa tidak akan ada "panggilan dekat". Misalkan sequencer memori menangani permintaan dari unit pemrosesan # 1 dan unit # 1 memiliki permintaan lain yang tertunda setelah itu. Jika unit # 2 mengirimkan permintaan sebelum permintaan pertama dari # 1 selesai, unit memori harus mengatasinya; jika tidak, harus menangani permintaan berikutnya dari unit # 1. Itu akan tampak seperti desain yang masuk akal, tetapi ternyata menjadi sangat bermasalah. Masalahnya adalah bahwa jika ada saat tertentu sehingga permintaan diterima sebelum saat itu akan segera diproses, dan permintaan yang diterima setelah itu harus menunggu, jumlah waktu yang diperlukan untuk menentukan apakah permintaan yang melampaui batas waktu akan kira-kira berbanding terbalik dengan selisih antara waktu permintaan diterima dan batas waktu. Waktu yang diperlukan untuk unit memori untuk menentukan bahwa permintaan dari # 2 mengalahkan tenggat waktu satu femptosecond mungkin secara substansial melebihi jumlah waktu yang diperlukan untuk melayani permintaan kedua dari unit # 1, tetapi unit tidak dapat melayani baik permintaan sampai memutuskan mana yang akan diperbaiki terlebih dahulu.

Setelah semuanya menjalankan jam biasa tidak hanya menghilangkan kebutuhan untuk sirkuit untuk menentukan kapan output dari suatu perhitungan valid, itu juga memungkinkan waktu "panggilan dekat" untuk dihilangkan. Jika semua yang ada di sistem menggunakan clock 100Mhz, tidak ada sinyal yang berubah sebagai respons terhadap clock hingga 1ns setelah edge clock, dan semua yang akan terjadi sebagai respons terhadap edge clock terjadi dalam 7ns, maka semua yang akan terjadi sebelum jam clock edge tertentu akan "menang" oleh setidaknya 3ns, dan segala sesuatu yang tidak akan terjadi sampai setelah clock edge akan "kalah" oleh setidaknya 1ns. Menentukan apakah peluang sinyal sebelum atau setelah jam, ketika dijamin tidak akan "ditutup", jauh lebih mudah daripada menentukan yang mana dari dua sinyal yang diatur waktunya secara acak.

supercat
sumber
4

Sistem digital dapat berupa sinkron atau asinkron . Pada sistem asinkron, output dapat berubah setiap saat, berbeda dari sistem sinkron, yang bergantung pada jam untuk mengubah outputnya.

Sebagian besar sistem digital bersifat sinkron (walaupun mereka dapat memiliki beberapa bagian asinkron) karena proyek dan analisis cacat dapat dilakukan dengan lebih mudah, karena output hanya dapat berubah seiring waktu.

Saya sudah cukup banyak menyalin ini dari Digital Systems: Principles and Applications, 10th edition by R. J. Tocci et al.

gabrieljcs
sumber
3

Nah, jika Anda merancang sistem sinkron, Anda memiliki target laju jam, dan Anda merancang logika untuk menyelesaikan semua perhitungan selama satu siklus dalam satu periode jam. Ini juga berarti bahwa Anda perlu memasukkan margin keselamatan untuk memungkinkan berbagai kondisi, seperti tegangan catu daya rendah, suhu tinggi, dan chip "lambat". Chip sinkron dirancang sedemikian rupa sehingga jalur logika terpanjang (perhitungan paling lambat) akan selesai dalam waktu di bawah semua kondisi yang merugikan ini. Akibatnya, ketika kondisinya tidak buruk, Anda akan memiliki lebih banyak waktu / margin antara saat logika menyelesaikan operasinya dan jam berikutnya mengunci hasilnya. Karena Anda (biasanya) tidak dapat mengubah frekuensi jam Anda, Anda kehilangan kecepatan ini.

ada yang benar-benar paradigma logika asynchronous yang ada, misalnya satu yang aku akrab dengan adalah NULL konvensi logika. Dengan menggunakan garis lebar untuk menggambarkan apa yang terjadi, rangkaian logika dapat mengidentifikasi kapan perhitungan telah selesai, dan mampu secara efektif membuat sinyal "jam" sendiri. Ini memungkinkan sirkuit berjalan secepat mungkin, dan memiliki beberapa kekuatan sederhana dan manfaat EMI. Sayangnya, Anda membayar denda untuk sifat asinkron dalam hal kepadatan desain serta kinerja terbaik. Selain itu, walaupun perangkat lunak untuk desain dan validasi sinkron sudah matang, banyak desain dan validasi untuk desain asinkron masih manual, sehingga dibutuhkan upaya yang lebih besar untuk merancang dan membangun desain asinkron.

Ini juga sepenuhnya mengabaikan case yang kadang-kadang Anda memerlukan jam untuk aplikasi tertentu menjadi referensi waktu. Misalnya, kartu suara Anda tidak dapat beroperasi secara tidak sinkron karena perlu memperbarui ADC atau DAC pada laju sampel yang spesifik dan presisi atau audio akan terdistorsi.

W5VO
sumber
1

Jika tidak ada jam yang dimasukkan, gerbang akan berubah secepat yang mereka bisa setiap kali diberi perintah, jadi mengapa itu tidak meningkatkan kecepatan komputer dan mengapa jam digunakan?

Sederhananya: karena manusia bukanlah makhluk super-cerdas, dan harus mengambil jalan pintas untuk memungkinkan perancangan sirkuit miliar elemen.

Ketika alat berat kami naik, mereka mungkin sangat menghilangkan jam, mengatasi masalah kecil seperti membuat sirkuit yang lebih sedikit yang diproduksi di pabrik meskipun ada variasi proses, dan memanfaatkan beberapa peningkatan kecepatan.

Untuk sedikit berkembang: diskrit, hal-hal yang dapat diprediksi lebih mudah dianalisis dan disain secara rasional. Sebagai manfaat tambahan yang besar, mereka mengoreksi diri (dalam hal ini, waktunya mengoreksi diri). Inilah alasan kami menggunakan logika digital. (Demikian pula, dalam pemrograman, kita sering menggunakan integer alih-alih floating-point, struktur kontrol yang sudah dikenal alih-alih goto-spaghetti, dan bahasa dengan beberapa aturan yang jelas alih-alih bahasa yang sangat "fleksibel" di mana Anda tidak pernah yakin apa yang akan terjadi hingga kode berjalan.)

Aleksandr Dubinsky
sumber
Bahkan di luar fakta bahwa logika sinkron lebih mudah untuk dirancang, komputer yang menjalankan jam 10MHz umumnya akan dirancang sehingga di mana pun tempat itu harus menentukan apakah peristiwa X terjadi sebelum Y, satu atau kedua acara akan tertunda karena diperlukan untuk memiliki hubungan tertentu dengan jam master sehingga acara tidak akan pernah terjadi secara bersamaan. Lebih lanjut, dalam beberapa kasus di mana kemungkinan tindakan simultan mungkin dilakukan, akan dapat diterima untuk menambahkan penundaan tetap dua atau tiga siklus untuk memaksa satu atau kedua sinyal ke hubungan jam tetap.
supercat
Jika desainnya tidak sinkron, orang mungkin menemukan bahwa secara acak 99% dari instruksi mengambil 5ns, 0,9% mengambil 10ns secara acak, 0,09% mengambil 30ns, 0,009% 100ns, 0,0009% 300ns, 0,00009% 1us, 0,000009% 3us, dll tanpa jaminan tegas untuk berapa lama sistem mungkin diperlukan untuk menyelesaikan ambiguitas waktu. Dalam kebanyakan kasus, memiliki kinerja yang sub-optimal tetapi dapat diprediksi lebih baik daripada kinerja yang rata-rata lebih cepat tetapi memiliki variasi yang tidak terduga yang kadang-kadang parah.
supercat
@supercat 1) Tidak bisakah sirkuit dirancang di mana peristiwa simultan tidak pernah terjadi? (paling tidak jika inputnya cukup reguler) 2) Tidak bisakah sirkuit dirancang di tempat yang tidak masalah jika peristiwa simultan terjadi?
Aleksandr Dubinsky
Jika waktu relatif dari dua peristiwa diketahui, satu dapat mencegah mereka terjadi secara bersamaan dengan menunda satu atau yang lain. Semakin akurat waktu relatif mereka diketahui, semakin sedikit penundaan akan diperlukan. Jika waktu relatif tidak diketahui, mungkin untuk menyelesaikan dua peristiwa yang dapat terjadi secara bersamaan menjadi indikasi yang terjadi pertama kali, tetapi untuk meminimalkan perilaku terburuk, seseorang harus menerima beberapa kompromi yang cukup parah dalam perilaku terbaik. Kompromi yang diperlukan untuk komputer tanpa jam agar bisa bekerja akan lebih buruk daripada menggunakan jam.
supercat