Homebrew CPU'lar için frekans sınırlaması


15

Bazı özel inşa edilmiş CPU'lara bakarken, çalıştıkları frekansların modern CPU'lara kıyasla (birkaç MHz sırasıyla) nispeten düşük olduğunu fark ettim. Bu sınırlamanın, örneğin breadboard'lar için bir elektronik mühendisliği nedeni var mı? Evetse, tasarımınızla elde etmek mümkün olan maksimum frekans nasıl belirlenir?


Gibi ... ev yapımı VLSI cips? Bunun bir maliyet sınırlaması olduğunu düşünürdüm. Milyonlarca dolarlık ekipmanın sağladığı hassasiyet evde çoğaltılamaz ve sonuç olarak yongaların daha yavaş çalışması gerekir.
Nate

4
@Nate, sanırım TTL'den üretilen homebrew çok yongalı CPU'lara atıfta bulunuyor. Örneğin: homebrewcpu.com
Alfred Centauri

@Değerlerimi daha spesifik olacak şekilde güncelledim.
Eugen

@AlfredCentauri - evet, haklısın;)
Eugen

Yanıtlar:


16

Çoğunlukla ara bağlantıların uzunlukları ve kapılardaki yayılma gecikmeleri ile ilgilidir. Bir CPU'yu özüne indirirsek, bir geri bildirim makinesidir. Bir grup kombinasyonel mantık devresi, makinenin mevcut durumu üzerinde bazı boole işlevlerini hesaplar ve bu işlevler, yeni bir saat kenarı geldiğinde sıralı devrelerle kilitlenen yeni durumu belirler. Kombinatoryal devrelerin hepsinde gecikmeler var. Saat periyodu, bu kapılardaki en yavaş yolun kararlı bir sonuç üretmesi için geçen süreden daha kısa olamaz, çünkü tek bir yanlış bit şovu durdurur.

Ayrıca, sıralı mantığın zamanlama gereksinimleri vardır. Saat kenarı gelmeden önce, girişlerin sabit olması ve daha sonra bir süre bekletilmeleri için sabit olmaları gereken minimum kurulum süresi vardır. Bunlar ihlal edilirse, devlet çöp olur.

Yayılma gecikmeleri, parazitik kapasitelerin ne kadar hızlı şarj edilebileceği, bir endüktans karşısında ne kadar hızlı akım oluşturabileceği ve silikon cihazların ne kadar hızlı değişebileceği gibi şeylerden kaynaklanır. Örneğin, daha küçük bir tabana sahip bir bipolar transistör, daha büyük bir tabana sahip olandan daha hızlı geçiş yapabilir, bu nedenle bir çip üzerindeki küçük bir transistör, ayrı olandan daha hızlı olacaktır.

Daha önce sildiğim bir cevapta iletim hattı etkileri hakkında yazdım. Ancak bu etkilerin bahsettiğimiz hızlarda bile resme girmediğini düşünmedim, çünkü 10 Mhz'de dalga boyu hala yaklaşık 30 metredir. Sıradan bir devre kartının ölçeğinde, birkaç megahertz zaman ölçeğinde darbeler hala bir bakır ağın tüm bölümlerine aynı anda ulaşır.

Yani, ayrı bileşenlerden bir CPU yaparsanız, hızlı anahtarlama süreleri ve aynı kapasiteyi ve endüktansları en aza indiren aynı yakınlığa sahip küçük bileşenleri elde edemezsiniz.

Bununla birlikte, 1960'lı yıllarda eski ayrık bileşenli makineler bu homebrew makinelerinden biraz daha hızlı çalışıyordu. Buraya gelmek biraz zaman aldı ve kurnazdı. Örneğin, IBM 360 Model 44 (1964) 4 Mhz'de çalışıyordu. Bu hala "homebrew hızı" olabilir, ancak birkaç yıl sonra 1969'da piyasaya sürülen CDC 7600 36 Mhz'i geçti. Wikipedia makalesi http://en.wikipedia.org/wiki/CDC_7600 , çekilen bazı hilelere bir ipucu verir, örneğin:

"Her zaman olduğu gibi, Cray'ın tasarımı da boyutu küçültmek, sinyal yollarını kısaltmak ve böylece çalışma frekansını arttırmak için ambalaja odaklandı. Altı pano istiflendi ve kenarları boyunca birbirine bağlandı, bu da çok kompakt, ancak temelde onarılamaz bir modül oluşturdu. "

Bu nedenle, homebrew CPU'ların, yapı kalitesi ve düzeniyle ilgili bazı karışıklık etkileri nedeniyle gerçek potansiyellerine sahip olması gerekmez. Yine de, birkaç megahertz'de çalışan bireysel entegre devrelerden ve ayrı bileşenlerden CPU üreten herkes alkışlanmalıdır.


Veri yolunun karmaşıklığına bağlı olarak, bir homebrew cihazının modern teknoloji ve geleneksel teknikleri kullanmakta zorlanmadan 20Mhz veya daha fazla saatte saat yapabilmesi gerektiğini düşünüyorum. Çoklu GHz değil, toplam bir eğim değil. Bununla birlikte, homebrew CPU'ların kullanıldığı çoğu durumda, sorun giderme kolaylığı hızdan daha önemlidir. Bu arada, orijinal Pong ™ marka arcade makinesinin ana saat kristali 14.3818Mhz idi, ancak oldukça erken ayrıldı; Sanırım hızın bir şey tarafından kapsanması tek şey oyun alanının merkez hattı.
supercat

1
Birçok homebrew CPU, mikrokodu saklamak için EPROM'ları kullanır, aynı zamanda karmaşık mantık ve / veya doğruluk tablolarını uygulamak için (birçoğunda bir veya daha fazla ROM'dan yapılmış bir ALU bile vardır). ROM'ların erişim hızı, makinenin en yüksek hızını önemli ölçüde sınırlayabilir, ancak popülerdir, çünkü önemli bir yeniden kablolama yapmadan işlemcinin hata ayıklamasını, yeniden kullanılmasını ve ayarlanmasını kolaylaştırırlar.
Alexios

15

Bilim fuarında biraz ödül kazanan 7400 serisi TTL ile özel amaçlı bir bilgisayar inşa eden eski bir lise öğrencisi olarak, mümkün olduğunca hızlı çalışmasını engelleyen şeyleri gözlemledim:

  • Breadboard'da başıboş kapasitans. Her bitişik konektör çifti arasında birkaç pF. Bu sınırlı darbe kenarı yükselme / düşme süreleri ve yerlerde karışma eklendi. Bu muhtemelen en büyük faktördü.

  • Kepçe poşeti çeşitleri. (Poly-Paks'ı hatırlayan var mı?) Farklı yayılma gecikmeleri ve diğer özelliklere sahip 74LSxx, 74Hxx, 74xx, birkaç MHz'den daha yüksek saat hızlarında sinyallerin senkronize kalmasını imkansız hale getirdi.

  • Cheapo statik bellek yongaları, yine bir tutma torbası veya başka bir kaliteli olmayan kaynaktan. Belli bir oranın ötesinde güvenilir bir şekilde okuyamıyor veya yazamıyorlardı.

  • Test enstrümantasyonum homebrew sinyal üreteçleri, 5MHz bant genişliği osiloskopu ve geçici jüriye bağlı dijital devre ile sınırlıydı. Düşük geçirgenlikli titrek lapa filtrelenmiş dijital sinyallerin genliğini, zamanlamasını, genliklerini kontrol etmek zor.

Bugün, antika bir alıcı olmadığı sürece 5MHz'lik bir kapsam bulmak zor olurdu. Her türlü daha iyi yongaların elde edilmesi de kolaydır, ancak 0.1 "aralıklı DIP paketlerinde bile, uzun zamandır kepçe torbası yolunda çok fazla şey görmedim. Kaçak kapasitans, herhangi bir sinirli yaratıcı dijital proje için hala bir hız katili.

Homebrew PCB kullanarak breadboard'lardan kaçınmak, başıboş kapasitansı önlemek için en iyi yoldur, ancak elbette daha fazla çaba ve zaman gerektirir.


4

Bence birincil neden, frekansı artırdıkça, breadboard bağlantılarınızın empedansının, devrenizin son hızını artıracağı ve sınırlayacağıdır.

Breadboard'unuzdaki her bağlantının düşük, ancak sıfır olmayan bir endüktansı vardır. Frekansınız yükseldikçe, bu etkileri dikkate almanız gerekir. Kabloların empedansı şu şekilde bulunabilir:

Bu formül

burada L, telin endüktansıdır. Sonunda, Z akım akmayacak kadar yüksek olacak ve devreniz çalışmayı durduracaktır. Bu sayı için kesin sayısal değeri bulmak çok karmaşık olacaktır, çünkü özellikle breadboard'ların yan yana izleri vardır ve bu her bir telin empedansını bu formülden biraz değiştirecektir. Eğer varsa gerçekten bir (kesin) numara istiyorum deneyebileceğiniz buradan da tellerin indüktans (ve dolayısıyla empedans) hesaplamak için. Bir parçanın çalışabileceği en düşük akımı biliyorsanız, bu sınıra ulaşmadan önce maksimum frekansı belirleyebilirsiniz.


Devrenin empedansı ve hızı arasındaki ilişkiyi açıklayabilir misiniz?
Eugen

Peki bu, Intel Core I7 gibi CPU'ların 2,5 GHz saat hızlarında çalıştığını ve breadboard'larda oluşturulan CPU'ların bu hıza ulaşamadığını nasıl açıklıyor? Başlangıçta CPU ve RAM çipleri arasındaki telin uzunluğu ile bir bağlantı olduğunu düşündüm.
Eugen

Fizik yasalarını reddetmek için değil, ama endüktansın gerçekten hızın ana sınırlayıcısı olduğunu düşünmüyorum. Daha sonra, benzer uzunluktaki benzer teller, homebrew radyolarda ve diğer projelerde çok daha yüksek frekanslarda kullanılır. Biri sadece empedansları, uzunlukları, düzenleri eşleştirme konusunda dikkatli olmak zorunda, yanlışlıkla kaplinlerden kaçının, vb.
DarenW

1
@DarenW: Kaçak endüktans ve kapasitans gerçekten problemlerdir. Bir radyo sisteminde, tipik olarak yalnızca önemsiz uzunlukta bir kablo vardır. Bir işlemci uygulamasında, aralığa bağlı olarak karşılıklı endüktans ile yüzlerce var. Frekansa bağlı etkileşimler karmaşıklık nedeniyle yönetilemez. Karakteristik empedans, zemin izlerinden uzaklık gibi bir breadboard üzerinde iyi kontrol edilmeyen şeylere bağlıdır.
Ben Voigt

1
Bence haklısın, sanırım muhtemelen sadece tepkiler olmalı. Kapasitans benzer sorunlara neden olur, ancak sert yükselen / düşen kenarlar ve durum değişiklikleri gibi şeyler için. Empedansı bulmak için denklemler benzerdir ve eğer sayısal bir cevap istiyorsa, bunlar muhtemelen benzer bir şekilde uygulanabilir.
Nate

3

Diğerleri "neden" diye cevap verdi. Maksimum hızı nasıl belirleyeceğiniz aşağıda açıklanmıştır.

  1. Her parmak arası terlik için, Q'nun saati olduğuna bakın.
  2. Flip-floptan sonraki flip flop'a kadar tüm kabloların kablo uzunluğunu toplam. Bu uzunluğu zamana çevirin. Tel ~ 2/3 ışık hızı
  3. Eşzamansız RAM de dahil olmak üzere tüm geçit gecikmelerini toplam.
  4. Bir sonraki flip-flopta kurulum zamanını alın.
  5. 1-4 ekleyin. Bu minimum saat sürenizdir. Frekans almak için ters çevirin.
  6. Saat çarpıklığını düşünün. Saat ilkinden önce ikinci ff'ye ulaşırsa, 1-4 ile eğri ekleyin.
  7. Saat birinciden önceki ikinci ff'ye ulaşırsa, minimum 1-3'ü hesaplayın. İkinci ff artı saatin çarpıklığının gerektirdiği tutma süresinden daha az olduğundan emin olun.

Hangi kablo uzunluğundan bahsediyorsunuz: güç kaynağından CPU çıkış pinlerine, CPU çıkış pinlerine RAM yongalarına kadar olan uzunluk ...? Ayrıca ilk adımda ne demek istediğinizi net değilim.
Eugen

2
@Eugen - Sanırım (benim uzmanlık alanım değil), iç yayılma gecikmesine atıfta bulunuyor - saatten kararlı bir çıktıya kadar geçen zaman.
UnconditionallyReinstateMonica

1

Hızı sınırlayan tüm elektriksel nedenlerin yanı sıra, mantıksal seviyede de bir tane var:

Şube tahmini ile boru hattı işlemi, daha hızlı aritmetik ve daha fazlası gibi şeylerin daha hızlı çalışmasını sağlamak için çok fazla kaynak atamazsınız. Önbellek, ana belleğinizden daha hızlı değilse çok mantıklı değildir.


1

Homebrew makineleri için bu iki faktöre bağlıdır. CPU tasarımınız boyunca kullandığınız yongaların yayılma gecikmesi ve en uzun yolda kullanmanız gereken yonga sayısı.

Örneğin, 74HC574 (8 bit yazmaç) maksimum yayılma gecikmesi yaklaşık 41ns'dir (veri sayfasından alınmıştır). Şimdi CPU tasarımınızdaki en uzun yolun 8 farklı yongadan geçmesini gerektirdiğini varsayalım. 8'in her biri için yayılma gecikmelerini toplayın ve bunun 333ns'ye geldiğini hayal edelim. 1000ns 1Mhz ile aynı olduğundan, maksimum 3Mhz hızı verecektir.

Pratikte, istikrarlı bir tasarım sağlamak için kendinizi 2Mhz gibi daha yavaş bir şeyle sınırlamak isteyebilirsiniz. Zamanlamayı yalnızca milyar döngüde bir kez özleyeceğinizi düşünseniz bile, o zaman hala başınız belada. 10 milyarın 3 milyona bölünmesi, 3,333 saniyede bir, yani saatte yaklaşık bir kez kaçırdığınız anlamına gelir. Makinenizi her saat çökmesi iyi değil!

Daha hızlı gitmek için daha hızlı yongalar kullanabilir ve / veya tasarımı en yavaş yoldaki yonga sayısını azaltmak için değiştirebilirsiniz. Gördüğünüz en hızlı homebrew hızı hakkında, her döngüyü tamamlamanız için 250ns sağlayan 4Mhz.

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.