Çoğu ALU nasıl inşa edilir ve 'kendinizinkini oluşturmak' mümkün mü?


11

Gerçekten çok düşük seviyeli bilgisayarları öğrenmeye çalışıyorum. Çok sayıda homebrew sayfasına bakıyordum ve alınması oldukça fazla. Üniversitede elektronik mühendisliği dersleri aldım, ancak konuyla ilgili gerçekten derin bir derinliğe gitmedik (bilgisayar bilimi, yani çoğu aslında algoritmalar vb.).

Her neyse, çoğu ALU nasıl oluşturuldu / oluşturuldu ? Bunun bir bilgisayarın tek parçası olmadığını anlıyorum, ama yine de önemli bir parçası.

Ve sadece mantık kapılarını kullanarak (öğrenme amaçlı) kendi ALU'nuzu oluşturabilir misiniz? Bunun muhtemelen daha bilgili olanlara aptalca geldiğini anlıyorum, ama sadece anlamaya çalışıyorum. (Heck, basit bir toplayıcı bile düzgün bir proje olurdu.) Öyleyse, bu nasıl olurdu? Herhangi bir donanım örneği var mı? (Google'ın etrafına baktım, ancak bu tür şeyleri açıklayan adım adım bir kılavuzu olan hiçbir şey bulamıyorum).


1
Sen ilginizi çekebilir bu .
Dean

6
Bir CPU çip ekibinin içinden bahsetmişken, eğer bilgisayar ve CPU mimarisiyle ilgileniyorsanız, kanonik kitaplar "Bilgisayar Organizasyonu ve Tasarımı: Donanım / Yazılım Arayüzü" ve ardından "Bilgisayar Mimarisi: Nicel Bir Yaklaşım" dır. Bunlar sırasıyla "Patterson ve Hennessy" ve "Hennessy ve Patterson" olarak adlandırılmaktadır.
Ross Rogers

@Dean - Evet, renk kodlu teller sissies içindir! :-)
stevenvh

1994 yılında UT Austin'deki EE360M'deki dönem projemiz, XC3000-şeyli bir Xilinx demo kartı üzerine uygulanan, en üst değerini bir LED 7 segmentli ekrana taşıyan 16 seviyeli bir yığın olarak kullanılan, yığın tabanlı 4 bitlik bir ALU'dur. ve bir XC4000-gerçek ALU olan bir şey. Giriş ve işleminizi DIP anahtarlarında ayarlayın, bir düğmeye basın ve işte oraya gidin. XC4k'de 63 kHz ila 8 MHz arasında çeşitli frekanslara sahip dahili bir osilatör vardı ve sınıfımız kısmen tasarımımızın ne kadar hızlı gidip çalışabileceğine dayanıyordu.
Mike DeSimone

1
@Shubham: Minecraft'tan uzak durmam gerektiğini bildiğimi görünce ... Başka bir şey yapmam ... O_o
Mike DeSimone

Yanıtlar:


15

Onları tamamen temel mantık kapılarından inşa edebilirsiniz ve sonuç güzel bir sanat eseri olacaktır :-).

74xx mantık serisinde ayrıca, 74LS181 , 4 bitlik bir dilim ALU vardır , bu da işleri önemli ölçüde basitleştirir. Bit dilimi ALU'ları daha karmaşık ALU'lar oluşturmak için kullanıldı (okuma: daha uzun kelime uzunlukları), ancak daha yeni teknolojiler bu tür IC'leri geçersiz kıldı.
not: TTL (74xx), mantık kapıları için kullanılan tek bir teknolojidir. Artık nadiren kullanılır. Ardından Low-Power Schottky: 74LSxx, kesinlikle bir TTL biçimi de vardı. Günümüzde hepsi yüksek hızlı CMOS'a dayanan düzinelerce mantık ailesi var (74HCxx, 74HCTxx, 74ACxx, ...)

Bugünlerde bir ALU oluşturmak için uygun şekilde bir bunu yapmak olacaktır FPGA veya FPGA . Bu size çok sayıda kapı sağlar ve ALU'yu tasarlamak için kullandığınız HDL (Donanım Tanımlama Dili) , mantık kapılarıyla bağlantıların nasıl yapılacağını anlamaya çalışmaktan çok daha kolay ve daha az hataya açıktır . VHDL ve Verilog günün HDL'leri.

Bir ALU oluşturmak için alternatif bir yöntem (yine de mantık kapılarını kullanmamak), tek bir paralel EEPROM / Flash olacaktır . A ve B girişlerini ve işlemi giriş (adres) olarak kullanırsınız ve işlemin sonucunu çıktı (veri) olarak alırsınız. Yapmanız gereken tek şey ROM içeriğini derlemek, yani her adreste ilgili A, B ve operasyon girişleri için işlemin sonucunun ne olacağını yazmak zorundasınız. Kelime boyutu, bulabileceğiniz en büyük ROM boyutu ile sınırlı olacaktır.


5

Kendi ALU'nuzu oluşturabilirsiniz, ancak ayrı TTL yongaları olan eski bilgisayarlar bile bunun için bazı entegrasyon kullandı. Örneğin, 74x181 yongasına bakın. Bu, 4 bitlik bir ALU dilimi ve bazı TTL bilgisayarlarda, her 4 bit için bu yongalardan birini kullanarak tam ALU'yu uygulamak için kullanıldı.


Cahil sesler için üzgünüz, ancak TTL yongalarının Mantık kapılarından tam olarak farkı nedir? ve mantık kapılarından önce veya sonra TTL kullanıldı mı? ya da onlar mantık kapılarından yapılmış: karışık:

@Sauron - Cevabım için mantık aileleri üzerine bir not ekledim
stevenvh

5

Önce HDL dünyasına başlardım. Biraz verilog yazın, simüle etmek için verilator veya icarus verilog kullanın. Kodu, ayrık ve / veya kapılara benzemeyecek şekilde yazın, bu nedenle eğimli ise 74xx serisi parçalar (geri dönüştürülmüş?) Ve breadboard bir şey bulun. VEYA, 50 $ artı veya eksi CPLD ve FPGA panoları olabilir ve alu'nun çalıştığını görmek için dışarıdaki bir çeşit arayüzle gelenlerden birine koyabilirsiniz. HDL eğitiminin toplayıcı vb. Ancak donanıma götürmeden önce kullanımı ve görülmesi kolay bir ortamda yapabilirsiniz. Bugün insanların bunu nasıl yaptığı gibi, tasarlayın ve simüle edip dağıtın.


1
Kesinlikle. Önce simüle edin. O zaman donanıma ihtiyacınız varsa, bir FPGA en pratik olanıdır. Bu karmaşık bir şey için 74xx TTL'yi bağlamak, bir tasarım gerçekten düşünülene kadar ele alınmaması gereken büyük bir proje olacaktır.
Chris Stratton

5

Kitaplar için kesinlikle "Patterson ve Hennessy" kitaplarını ikinci olarak kullanıyorum (IIRC, 3 baskı olarak gizlenmiş 3 tane var, ama gerçekte tamamen farklı kitaplar. Eğer ciddi iseniz: hepsini alın.)

Temel ALU veya hatta CPU tasarımını denemek istiyorsanız: bir mantık simülatörü ile denemeye başlayın. Sınıflarımız için DigitalWorks'ü kullandık ama tavsiye etmem. Logisim ( http://sourceforge.net/projects/circuit/ ) umut vericidir. Ustalaşmanız gerekenler katmanlamadır: tam toplayıcı, seçici ve kapılardan kenar tetiklemeli bir flip flop gibi temel bloklar oluşturun, ardından bu yapı taşlarından CPU'ya kadar kayıt yapıları, ALU, sıralama mantığı oluşturun bellek ile. İnşa edilmesi o kadar da zor değil, bir PIC (14 bit çekirdekli) CPU'nun eşdeğerini söyleyelim, bir grup LED takın ve bir Kitt ekran gösterecek şekilde programlayın.

Bundan sonra 32 bit çekirdekli, GCC portunu yapmak, bir FPGA'da gerçekleştirmek ve üzerinde Linux çalıştırmak eğlenceli olacak. Ama ilk sen olmayacaksın ...


4

Bu hiç de aptalca bir soru değil. Vikipedi sayfası , 2 bitlik ALU için gösteriler böyle bir geçit düzey devresi. ALU IC'leri yaygın olarak 'dilimler' halinde mevcuttu - daha büyük veri yolu genişlikleri elde etmek için kademelendirebileceğiniz tipik olarak 4 bit (bkz. Bit dilimleme ).

Veri sayfası Teksas 74181 4-BitSlice ALU için de bir kapı seviyesi şemayı sahiptir.


4

CPU'ların hikayesi, paket başına artan miktardaki şeylerden biridir.

En eski CPU'lar her zaman birkaç röle veya vakum tüpünden üretilen seri ALU'ları kullanıyordu. Bu geleneği ilk satın alan 1947 Kasırga idi.

En eski transistörlü CPU'lar her şeyi ayrı transistörlerden oluşturdu.

Apollo Rehberlik Bilgisayarı (AGM), belki de entegre devrelerden üretilen ilk bilgisayar, bellek dışında sadece bir tür IC kullandı: 3 girişli NOR kapıları. ALU ve CPU'nun diğer tüm bölümleri tamamen çok sayıda NOR gate IC'den yapılmıştır. (Çok daha hızlı) Cray 1 ayrıca bellek dışında yalnızca bir çeşit IC kullandı: başka bir NOR kapısı.

İnsanlar bir yonga üzerinde daha fazla transistörün nasıl sıkıştırılacağını öğrendikçe, daha sonra CPU'lar bir ALU uygulamak için (nispeten) daha az yonga kullandı.

Bir ALU , NOR uygulamasından çok daha az yonga kullanılarak tamamen çoklayıcılardan ( "Çoklayıcılar: Mantık Tasarımının taktik Nuke'u" ) oluşturulabilir.

Dieter Mueller , iki 74181 yongadan daha fazla işlevselliğe sahip 8 bitlik bir ALU tasarımı yayınladı - 74181 sağa kayamaz - daha az yongadan oluşturuldu: 14 karmaşık TTL yonga: iki 74283 4 bitlik toplayıcı, bazıları 4: 1 mux ve bazı 2: 1 mux.

Tarihsel açıdan önemli birçok ticari bilgisayar gibi, birçok ev yapımı CPU da tek bir yongadaki ilk "tam" ALU olan 74181'in bazı sürümünü kullanır.

Bu CPU'ların birçoğu birkaç 74181 yonga ve birkaç 74182 yongadan 8 bitlik bir ALU veya 16 bit (veya her ikisi) oluşturdu - her 74181 sadece 4 bit genişliğindeki işlemleri yönetiyor. Homebrew makineleri genellikle işe yarayacak en basit şeyi kullanır - bir 74181'in bir sonrakinin taşınmasına beslenmesi ve bir dalgalanma taşıma toplayıcısı oluşturur. 74181 yongaları kullanan ticari makineler, toplama ve çıkarma işlemlerini önemli ölçüde daha hızlı yapmak için genellikle 74182 ileriye dönük bir taşıma jeneratörü kullanır.

Bugün ALU'ların çoğu, bir CPU'nun küçük bir kısmı, başka bir tür ASIC veya bir CPLD veya FPGA gibi bir çipin içinde gizlidir.

"Tek yongalı bilgisayarlar" kullanılabilir olduktan sonra bile, bazen öğrenme amacıyla bir GAL'den 74181 uyumlu bir ALU veya sadece daha basit mantık kapıları veya hatta tek tek transistörler veya röleler kullanarak bir ALU oluşturacaktır.

İnsanlar bunu yaptı, bu yüzden mümkün olmalı.

ALU tasarımını ve uygulamasını açıklayan adım adım bir kılavuz gerçekten iyi bir fikir gibi geliyor. Lütfen Mikroişlemci Tasarım wikibook'a, belki de "ALU" veya "Tel Sarma" bölümlerine bir tane yazmamıza yardımcı olun .



2

Tarihsel olarak, bazı ALU çalışmaları takdirlerle (evet, transistörler ve benzeri) ve bazıları kapılarla ve 4 bitlik 'dilim' yongaları ile çok şey yapıldı (TI'nin SN74181 erken biriydi ve Fairchild 29F01'in günü vardı).
Ancak BUGÜN, mantık denklemlerini bir geçit dizisi veya PLA mantık açıklama dilinde oluşturmak meselesidir. Seçilen herhangi bir küçük mantık birimini tasarımınıza yerleştirecek ticari olarak mevcut önceden oluşturulmuş modüller vardır, tek yapmanız gereken 'IP'yi (fikri mülkiyet) lisanslamaktır.


1
Dirençler dirençlere göre ucuz olduğunda, çok düşük transistör sayılarına sahip ALU'ların inşasına izin verebilecek bir dizi numara vardı (örneğin, aşama başına iki transistör kullanan bir tam toplayıcı). Bu tür devreler güce açtır ve çok hızlı değildir, ancak transistörler pahalı olduğunda önemli ölçüde maliyet tasarrufu sağlayabilirler.
supercat
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.