Bilgisayarlarda saatler neden kullanılıyor?


22

Bildiğim kadarıyla, bir saat tüm mantık işlemlerini kontrol ediyor, ama aynı zamanda bilgisayarın hızını da sınırlıyor, çünkü kapıların bileşene bağlı olarak saatin düşükten yükseğe veya yüksekten düşüğe değişmesini beklemesi gerekiyor. Eğer bir saat dahil edilmediyse, kapılar komut verildiğinde olabildiğince hızlı bir şekilde değişecekti, bu neden bilgisayarların hızını arttırmıyor ve neden saatler kullanılıyor?


Doğru bir cevap için zamanınız yok, ama en temel seviyede, tüm dijital şeyler aynı davulcunun ritmine doğru yürüyor. Senkronize ve asenkronize arama.
Matt Young,

olası yinelenen bilgisayar ve makinelerde saat sinyalleri , (ve bu soru ... gerçek bir soru olarak kapatıldı)
amadeus

Dar görevler için analog bilgisayarlar dijital bilgisayarlardan daha hızlı olabilir.
Nick Alexeev

1
Bu yüzden saatin kaç olduğunu biliyorlar! (üzgünüm, karşı koyamadım)
Scott Seidman

Yanıtlar:


32

Bilgisayarlarda saatler, devrelerin tamamı senkronize olmayan sıralı mantık olmasalardı, basit sebeplerden dolayı kullanılır .

Senkron bir devrede, saat olarak adlandırılan bir elektronik osilatör, devredeki bütün hafıza elemanlarına dağıtılan, saat sinyali adı verilen tekrarlayan darbeler dizisini oluşturur.

Şimdi, bu tatmin edici ve verilmiş gibi görünmeyebilir, makul bir şekilde "neden bilgisayarlarda senkron devreler kullanılıyor?" ama bu da cevaplaması kolay bir soru :

Senkron mantığın en büyük avantajı sadeliğidir. Veri üzerinde işlem yapan mantık geçitleri, girdilerindeki değişikliklere cevap vermek için sınırlı bir süre gerektirir. Buna yayılma gecikmesi denir. Saat darbeleri arasındaki aralık, tüm mantık kapılarının değişikliklere cevap vermek için zamana sahip olması ve çıkışlarının, bir sonraki saat darbesi gerçekleşmeden önce, kararlı mantık değerlerine "yerleşmesi" için yeterince uzun olmalıdır. Bu koşul gerçekleştiği sürece (bazı diğer ayrıntıları göz ardı ederek) devrenin kararlı ve güvenilir olması garanti edilir. Bu, senkron bir devrenin maksimum çalışma hızını belirler.

Aktif bir araştırma alanı , asenkron hesaplamadır; çoğu devre değilse, asenkron ardışık mantıktır .


Eşzamansız ardışık mantık hakkındaki Wikipedia eseri kısadır; Tek bir saati olmayan, ancak devrelerin girişlerinin yarış koşullarına neden olmayacağını ya da en kötüsü, girişi yarış koşullarına sahip olamayacak herhangi bir devrenin çıkışlarının olmayacağını garanti edebilir. Kullanılmış.
supercat,

Bence KAR-65 adlı Jacek Karpiński tarafından inşa edilmiş, eşzamansız bir bilgisayar olduğuna dikkat etmek gerekir . Maalesef İngilizce hakkında hiçbir şey bulamıyorum.
Elmo

6

Bir hesaplama için bellekten bir ALU'ya gönderilen 8 bit bir tamsayıya sahip olduğunuzu ve (en azından bu örnek için) bellek devresinin ALU'nun gerektirmeden önce ve biraz farklı zamanlarda 8 veri hattındaki sinyalleri sağladığını düşünün.

Burada bir saat kullanımı, 8 veri hattının bir saat döngüsü için temsil edilen tamsayı için doğru değeri tutmasını ve ALU'nun aynı saat döngüsü içinde bu verileri "toplamasını" sağlayacaktır.

Bunun muhtemelen en iyi açıklama olmadığını fark ettim, esasen veri tutarlılığını garanti etmeden bir saat olmadan, hızdaki olası herhangi bir artışın değmeyeceğinden çok daha zor olacağını, bir sürü yarış koşulu sorunuyla karşılaşacağınızı fark ettim.


6

Bir aritmetik mantık birimi gibi bir devre, girdi olarak birkaç sayı alır ve çıkış olarak bir sayı üretir. Bir süre zarfında, çıktının tüm bitlerinin doğru son hallerine ulaşacağını garanti edebilir, ancak çıktı bitlerinin geçerli olması için gereken gerçek zamanın çeşitli faktörlere bağlı olarak büyük ölçüde değişebileceğini garanti eder.

"Geçerli" bir giriş ve "geçerli" bir çıkışa sahip bir ALU inşa etmek ve bir hesaplama yapılmadan önce "geçerli" girişin yeterli bir süre için düşük olmasını ve veri girişlerini içerdiğini belirtmek mümkün olacaktır. "geçerli" giriş yüksek olmadan önce istenen değerler, "geçerli" çıkış, aslında çıkış bitleri doğru olana kadar yükselmez. Böyle bir tasarım muhtemelen geleneksel bir ALU'dan yaklaşık iki kat daha fazla devre gerektirecektir [temel olarak her bitin "sıfır" olarak mı bilindiği veya bir "bilinen" olarak mı bilinmesi gerektiği; "geçerli" çıktısı, her çıktının durumu biliniyorsa gerçek olur].

İşleri daha kötü hale getirmek için, daha hızlı çalışabilecek bir CPU'nun bu bölümlerine izin vermek, yalnızca yavaş parçaların yetişmesi için her zaman beklemiyorlarsa yardımcı olacaktır. Bunun gerçekleşmesi için, makinenin hangi kısmının belirli bir zamanda "ileri" olduğuna karar vermenin mantığı olmalı ve buna göre bir hareket tarzı seçmelisiniz. Ne yazık ki, bu tür bir karar, elektroniklerin güvenilir bir şekilde yapması en zor kararlardan biridir. İlk önce iki olaydan hangisinin gerçekleştiğine güvenilir bir şekilde karar vermek, genellikle yalnızca herhangi bir "yakın çağrı" olmayacağını garanti edebiliyorsa kolaydır. Bir bellek düzenleyicinin işlem birimi # 1'den gelen bir isteği işlediğini ve birim # 1'in bundan sonra bekleyen başka bir isteği olduğunu varsayalım. Ünite # 2, # 1'deki ilk istek tamamlanmadan önce bir istek gönderirse, bellek ünitesi bunu işlemelidir; Aksi takdirde, # 1 numaralı birimden bir sonraki isteği yerine getirmelidir. Bu makul bir tasarıma benziyor, ancak şaşırtıcı bir şekilde sorunlu olduğu ortaya çıkıyor. Sorun şu ki, o andan önce gelen bir isteğin derhal işleneceği bir talep ve bundan sonra gelen bir talebin beklemesi gerekecekse, bir isteğin son tarihi geçip geçmeyeceğini belirlemek için gereken zamanın isteğin alındığı zaman ile son tarih arasındaki farkla kabaca ters orantılıdır. Bellek ünitesinin # 2'deki bir isteğin son tarihi bir femptosecond tarafından geçtiğini belirlemesi için gereken süre, ünite # 1'den ikinci bir talebe hizmet vermek için gereken süreyi büyük ölçüde aşabilir, ancak ünite servis veremez. hangisinin önce hizmet edeceğine karar verene kadar talepte bulunun.

Her şeyin ortak bir saatten geçmesi sadece bir işlemin çıktısının ne zaman geçerli olduğunu belirleme ihtiyacını ortadan kaldırmakla kalmaz, aynı zamanda "yakın çağrıları" zamanlamanın ortadan kaldırılmasını sağlar. Sistemdeki her şey bir 100Mhz saatte çalışırsa, saat kenarından 1ns'e kadar bir saate yanıt olarak hiçbir sinyal değişmez ve bir saat kenarına cevaben gerçekleşecek olan her şey 7ns içinde gerçekleşir, o zaman belirli bir saat kenarı en az 3ns tarafından "kazanacak" ve bir saat kenarı bitinceye kadar gerçekleşmeyecek her şey en az 1ns "kaybedecek". Bir sinyalin saatten önce veya sonra, "yakın" olmaması garanti edildiğinde değişip değişmeyeceğini belirlemek, isteğe bağlı zamanlanmış iki sinyalden hangisinin önce gerçekleşeceğini belirlemekten çok daha kolaydır.


4

Dijital sistemler senkron veya asenkron olabilir . Eşzamansız sistemlerde, çıktı, herhangi bir anda, çıktılarını değiştirmek için saate bağlı olan eşzamanlı sistemlerden farklı olarak değişebilir.

Çoğu dijital sistem senkronizedir (bazı asenkron parçalara sahip olsalar bile) çünkü proje ve hata analizi daha kolay yapılabilir, çünkü çıkışlar sadece saatle değişebilir.

Bunu hemen hemen kopyaladım Digital Systems: Principles and Applications, 10th edition by R. J. Tocci et al.


3

Senkronize bir sistem tasarlıyorsanız, hedef bir saat oranına sahip olursunuz ve bir hesap dönemi boyunca bir döngü boyunca tüm hesaplamaları tamamlamak için mantığı tasarlarsınız. Bu ayrıca düşük güç kaynağı voltajı, yüksek sıcaklık ve "yavaş" bir yonga gibi çeşitli koşullara izin vermek için bir güvenlik payı eklemeniz gerektiği anlamına gelir. Senkron yongalar, en uzun mantık yolunun (en yavaş hesaplama) tüm bu olumsuz koşullar altında zamanında biteceği şekilde tasarlanmıştır. Sonuç olarak, koşullar korkunç olmadığında, mantığın çalışmasını tamamladığı ve bir sonraki saatin sonucu kilitlediği zaman arasında çok daha fazla zaman / marjınız olur. Çünkü (genellikle) saat frekansınızı değiştiremezsiniz, bu hızı kaybedersiniz.

Orada olan I BOŞ kongre mantığı aşina olduğum örneğin biri var asenkron mantık paradigmalar, tamamen. Neler olduğunu tanımlamak için geniş darbeleri kullanarak, mantık devresi bir hesaplamanın ne zaman tamamlandığını belirleyebilir ve kendi "saat" sinyallerini etkin bir şekilde oluşturabilir. Bu, devrenin olabildiğince hızlı çalışmasını sağlar ve mütevazı bir güç ve EMI avantajları vardır. Ne yazık ki, asenkron doğaya tasarım yoğunluğu ve üst performans açısından bir ceza ödersiniz. Ayrıca, senkronize tasarım ve onaylama için yazılım araçları olgunlaşmışken, asenkron tasarımların tasarım ve onaylama işlemlerinin çoğu hala el ile yapılmakta, asenkron bir tasarımın tasarlanması ve oluşturulması için daha fazla çaba sarfedilmektedir.

Bu aynı zamanda, belirli bir uygulamanın zaman referansı olması için bazen bir saate ihtiyaç duyduğunuz vakasını tamamen ihmal eder . Örneğin, ses kartınız eşzamanlı olarak çalışamaz, çünkü ADC veya DAC'yi belirli, kesin bir örnekleme hızında güncellemesi gerekir, aksi halde ses bozulur.


1

Eğer bir saat dahil edilmediyse, kapılar komut verildiğinde olabildiğince hızlı bir şekilde değişecekti, bu neden bilgisayarların hızını arttırmıyor ve neden saatler kullanılıyor?

Basitçe söylemek gerekirse: Çünkü insanlar süper zeki varlıklar değildir ve milyar elementli devrelerin tasarımını mümkün kılmak için kısayollar almak zorundadırlar.

Makinemiz yükseldiğinde, saatten çok daha iyi bir şekilde kurtulabilir, işlem değişkenliğine rağmen üretilebilir bir saat devresi devre dışı bırakmak gibi kıpırdayan minutaların üstesinden gelebilir ve bazı hız kazanımlarından yararlanabilirsiniz.

Biraz genişletmek için: ayrık, öngörülebilir şeylerin rasyonel olarak analiz edilmesi ve tasarlanması kolaydır. Çok büyük bir avantaj olarak, kendi kendini düzeltirler (bu durumda zamanlama kendiliğinden düzelir). İlk önce dijital mantığı kullanmamızın nedeni budur. (Benzer şekilde, programlamada sık sık kayan nokta yerine tamsayılar, goto-spagetti yerine bilinen kontrol yapıları ve asla ne olacağından asla emin olamadığınız "esnek" diller yerine birkaç net kural içeren dilleri kullanıyoruz. kod çalışana kadar.)


Eşzamanlı mantığın tasarlanması daha kolay olsa da, 10MHz'lik bir saat kullanan bir bilgisayar genellikle, X olayının Y'den önce gerçekleşip gerçekleşmeyeceğini belirlemesi gereken herhangi bir yerde, olayların biri veya her ikisi de gecikmeli olacak şekilde tasarlanacaktır. Ana saat ile belirli bir ilişki kurabilmek için gerekliydi, böylece olaylar asla aynı anda gerçekleşmeyecek. Ayrıca, eşzamanlı eylem olasılığının mümkün olduğu birkaç durumda, sinyallerin birini veya her ikisini sabit bir saat ilişkisine zorlamak için iki veya üç döngü sabit bir gecikme eklemek kabul edilebilir.
Supercat,

Tasarım senkronize değilse, rastgele bir% 99 komutun 5ns,% 0.9'unun rastgele 10ns,% 0.09'un 30ns,% 0.009'unun 100ns,% 0.0009'unun 300ns,% 0.00009'unun 1us,% 0.000009'unun 3us, vb. sistemin bir zamanlama belirsizliğini çözmek için ne kadar zaman alacağı konusunda kesin bir garanti. Çoğu durumda, alt-optimal ancak öngörülebilir olan performans, ortalama olarak daha hızlı olan ancak bazen ciddi olan öngörülemeyen çeşitlemelere sahip olan performanstan daha iyidir.
Süperkat

@supercat 1) Bir eşzamanlı olayın hiç yaşanmadığı bir devre tasarlanamaz mı? (en azından girişler yeterince düzenliyse) 2) Eşzamanlı olayların gerçekleşmesi önemli olmadığı bir devre tasarlanamaz mı?
Aleksandr Dubinsky

İki olayın göreceli zamanlaması biliniyorsa, biri diğerini geciktirerek eşzamanlı olarak gerçekleşmelerini önleyebilir. Göreceli zamanlamaları ne kadar doğru bilinirse, o kadar az gecikme gerekli olacaktır. Göreceli zamanlama bilinmiyorsa, eşzamanlı olarak gerçekleşebilecek iki olayı ilk önce meydana gelen bir göstergeye göre çözmek mümkündür, ancak en kötü durum davranışını en aza indirmek için, en iyi durum davranışında bazı oldukça ciddi uzlaşmalar kabul edilmelidir. Saatsiz bir bilgisayarın çalışması için gerekli olan ödünler bir saat kullanmaktan daha kötü olurdu.
Süperkat
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.