Intro bilgisayar mimarisinde FPGA'ların TTL üzerinden kullanmanın avantajları nelerdir?


24

Bir ve tek bilgisayar mimarlığı dersini liberal bir sanat okulunda öğretiyorum. Elbette bilgisayar bilimi büyük ve küçük için gereklidir. Bilgisayar mühendisliği, elektrik mühendisliği, diğer donanım kursları, vb. Yok. Kursun temel amacı, öğrencilerin bir donanım laboratuarında en iyi öğrendiklerini düşündüğüm bilgisayarların nasıl çalıştığını, geçit seviyesine kadar inmelerini sağlamak. sadece bir ders kitabı aracılığıyla değil ( Bilgisayar Organizasyonu ve Tasarımı)Hennessy ve Patterson tarafından). İkincil hedefim, onları bilgisayar mimarisi hakkında heyecanlandırmak ve bilgisayar bilimi konusundaki heyecanlarını artırmak. Onları doğrudan endüstriye hazırlamak bir amaç değildir, ancak daha fazla bilgisayar mimarisi incelemesi için onları motive etmektir. Öğrenciler genellikle bir şey inşa etmek ya da üniversite düzeyinde bir laboratuar kursu almak için herhangi bir deneyime sahip olmamıştır. Tipik olarak, 10-15 öğrenci ders başına ders alır.

1998'den beri kursu 1980'lerin sonlarında MIT'de bilgisayar mimarisi ve dijital elektronik derslerine nasıl verildiğine benzer bir şekilde öğretmekteyim: güçlendirilmiş breadboardlarda DIP TTL yongaları kullanarak. İlk donanım laboratuarı ödevinde, öğrenciler tam bir toplayıcı oluştururlar. Sömestrın yarısına kadar, 8 bitlik bir talimat setiyle basit bir bilgisayar oluşturmaya başlarlar. Kablolamayı azaltmak için, bazı elektronik aksamları (iki adet D-flip-flop, iki adet 4-bit LS 181 ALU ile birlikte bir adet 8-bit ALU ve üç-durumlu bir tampon olarak çalışmak üzere bağlanmış) bir PCB sağlar. Bu laboratuvarların ilki, iki komut formatı için (çok basit) kontrol sinyallerini türetir ve devreleri kurar, anahtarlara talimatlar girer ve ışıkların sonuçlarını okur. Laboratuvarların ikincisine bir program sayacı (2 LS163s) ve bir EPROM (bunlarAsıl sorum , mimariye nasıl öğretmem gerektiği konusuna geçmeden önce) Son laboratuvarda, koşullu dallanma talimatı eklerler. Öğrenciler kablolama ve hata ayıklama konusunda oldukça fazla zaman harcarken, ben de öğrenmenin çoğunun gerçekleştiğini ve gerçek bir başarı duygusuyla ayrıldığını hissediyorum.

Bu forumdaki insanlar bana daha önce birlikte çalışmadığım FPGA'lara geçmem gerektiğini söyledi. Ben bir yazılım mühendisiyim, bir bilgisayar mühendisi değilim ve bir süredir okul dışında kalıyorum, ancak öğrenebiliyorum. Mevcut dijital eğitmenlerimizin yerine geçecek kadar para alamayacağım ( belki birkaç bin dolar). Tek bir mantık analizörümüz var.

Hedeflerim ve kısıtlarım göz önüne alındığında, EE'lerin, FPGA'lara dayanan şu anki yaklaşım yaklaşımıma bağlı kalmamı tavsiye eder misiniz? İkincisi ise, kendimi eğitmek için malzemeler hakkında bana herhangi bir işaretçi verebilir misiniz?

İstenildiği gibi işte ders programı ve laboratuar ödevleri için bir link .

Ek: Evet, aynı zamanda dijital bir mantık kursu. Üniversiteye gittiğimde, öğrencilerin her bir bilgisayar mimarisi ve dijital mantıktan bir sömestr almaları istendi ve onları bir sömestrde birleştirdim. Elbette, bu geçmişle ilgili bir ifadedir, gelecekle ilgili değil.


Müfredatınızı / müfredatınızı gönderebilir veya bağlayabilir misiniz?
Kevin Vermeer,

Alternatif bir yaklaşım düşünmenizi önerebilir miyim? Arduinos gibi mikrodenetleyicileri laboratuarınızda kullanmaya ne dersiniz?
JonnyBoats

7
@JonnyBoats: ... bu nasıl uyuyor? Donanım kapılarından bilgisayar yapmaktan bahsediyor.
darron

Sorunuzu yanıtlamak için - neredeyse hiç kimse donanım kapısı yapmaz, uygulanmış kapıları olan fişleri satın alırlar. FPGA'larda donanımda kapı kurulmaz, yazılımda kurulur.
JonnyBoats

1
@JonnyBoats: FPGA'lar donanım kapılarından (LUT'lar programlanabilir kapılardır) dijital tasarımlar yapıyorlar. Kapılar donanım olarak var ve tasarımınız tamamen fiziksel bir şekilde çalışıyor. TTL ile bu standartlara göre "bina kapıları" değilsinizdir ... önceden yapılmış kapılardır. Tek fark, geçit fonksiyonlarının programlanabilir olması, yönlendirme programlanabilir (ancak yine de fiziksel) ve bunların çoğundan daha fazla büyüklük sırası vardır. Bir Arduino'nun dijital mantık tasarımı derslerine nasıl sığdığını hala göremiyorum. (Kursun amacını değiştirmesini istemediğiniz sürece?)
darron

Yanıtlar:


16

Sınıfın hedefleri göz önüne alındığında, TTL yaklaşımının iyi olduğunu düşünüyorum ve bunu bir "FPGA adamı" olarak söylüyorum. FPGA'lar bir mantık denizidir ve onlarla her türlü eğlenceli şeyi yapabilirsiniz, ancak yalnızca bir sömestrede yapılabilecek çok insan var.

Müfredatınıza bakıldığında, sınıfınız, lisans derecesinde aldığım mantık tasarımı ve “makine yapıları” derslerinin bir karışımıdır. (Artı, bu CS uzmanları için. Ben hepimiz gerçek donanımlarla yüzleşmek zorunda olan CS uzmanları için - kod yazmadan kurtulmalarına izin vermek bir adım gibi gözüküyor.) Bu tanıtım düzeyinde, montaj talimatlarını nasıl uyguladığınıza iniyorsunuz. yıkıldıklarında, öğrencilerin kodları elle değiştirmelerini sağlamaktan gerçek bir fayda göremiyorum. HDL yapmak, HDL öğrenmek, sentezlenebilir HDL yazmayı öğrenmek ve IDE öğrenmek demektir. Bu çok daha kavramsal bir karmaşıklık ve soyutlamadır. Ayrıca, yazılım sorunları ile de uğraşmak zorundasınız.

Genel olarak FPGA kullanan bir kursun amacı faydalı olan mantık oluşturma pratiği yapmaktır - çevre birimleri, seri haberleşme, RAM, video üreteçleri vb. İle konuşmak için kullanışlıdır. Kursun kapsamı. Bilgisayar mimarisindeki daha ileri seviyedeki sınıflar, öğrencilerin FPGA'larda karmaşık CPU'lar kullanmasını sağlamıştır, ancak yine de bu, sizin kursunuzun kapsamı dışında kalmaktadır.

En azından FPGA'lara bir ders verecektim. Bir dev tahta ile birkaç demolar çalıştırın ve onlara iş akışını gösterin. Eğer Mills'te olduğuna göre, belki de CS çalıştırmak Berkeley'de millet temas olabilir 150 / 152 onlar şeyler görmek ve gidin.


90'lı yılların başında, CS150'ye temel olarak OP'nin MIT'deki (çoğunlukla 74xx kapıdaki) çalışmalarını anlattığı şekilde ve basit bir 8-bit (veya 4-bit?) CPU inşaatı ile sonuçlandığını söyleyebilirim. Şematik bir yakalama aracında (HDL olmadan) tasarlanan FPGA'ları kullanarak kısa bir projemiz vardı. Şu anki müfredat çoğunlukla HDL tabanlıdır.
Foton

Sınıfın mantık tasarımı ve makine yapılarının bir karışımı olduğu iyi bir nokta. Soru açıklamasına eklediğim gibi, bir araya getirdiğim iki ayrı ders vardı. Yardımlarınız için çok teşekkürler. FPGA'ları araştıracağım ve en azından onlara ders vereceğim. UCB'de Dave Patterson, intro mimarlığa çok daha yüksek seviyede yeni bir yaklaşım getirdi. Ona göz kulak oluyorum ama bu kadar büyük bir değişiklik yapmayı planlamıyorum.
Ellen Spertus

FPGA ortamlarının karmaşıklığını düşünüyordum ve belki de bir giriş dersi için çok fazla olabileceği konusunda hemfikir değilim. Modern iş akışlarıyla öğretmemek gerçek bir utanç gibi görünüyor. Kendi kendime TTL ile oynamıştım ve FPGA'lara girene kadar bilgisayarların (nispeten basit) nasıl çalıştığını gerçekten anlamaya başladım. Kurs, çalışmak zorunda olduğumdan daha iyi görünüyor, bu yüzden belki de kavramları daha iyi anlıyor. Ancak, TTL mantık yongaları açısından "gerçek" bir işlemci çok uzak görünüyor. FPGA'lardan sonra, bir tane yapmak düşünülebilir.
darron

"Bilgisayarlar nasıl çalışır" derken, aslında TTL için yeterli olan bulanık "saatler ve floplar" konseptini değil, onları nasıl kuracağımı kastediyorum. (ve yine, dersleri bu kadar iyi öğretebilir gibi görünüyor ... benim meselem, gerçekte kullanılan donanıma öğretmek yerine, neredeyse hiç gerçek olmayan bir donanıma ilişkin kavramları öğretmektir)
darron

@darron, TTL temelde modası geçmiş, ancak kavramsal olarak temiz - şeyleri karmaşıklaştıracak bir dil veya IDE yok, sadece diyagramlar ve noktadan noktaya kablolama. Kelime büyüklüğünüz arttığında ortalık kirlenir, ancak 8 bitlik işler fena değildir. Eğer sınıf daha da ileri giderse ya da bir takip sınıfı olsaydı, FPGA'lar mantıklı olurdu, ama kapsanan materyal verilen gereksiz bir komplikasyon olacağını düşünüyorum.
mng

6

Photon ile aynı fikirdeyim. FPGA kullanmanın birçok avantajı vardır. İşte dikkat etmeniz gereken birkaç ilginç nokta:

1) Bir kapı tasarımını çok hızlı bir şekilde denemek için saatlerce veya potansiyel olarak çalışma günleri gerektirmeden kolay platform. FPGA'ler potansiyel olarak oldukça karmaşık dijital tasarımlara oldukça kolay bir şekilde izin verir. (ÇOK daha fazla teori, daha az meşgul)

2) Öğrenci çalışmalarının önemli bölümleri laboratuar dışındaki simülasyonlarda yapılabilir.

3) Yazılım ortamı ücretsizdir (genellikle simülatör dahil).

4) Etrafında birçok nispeten ucuz FPGA platformu vardır. Akademik fiyatlandırma yardımcı olmalı. Terasic DE0-Nano gibi bir şey tam bir kit için 59 $ 'dır (ve oldukça iyi görünüyor). 50-60 dolar, bakıyor olacağınız pano başına değer olarak görünüyor.

5) FPGA'larla yapılacak çok güzel şeyler var. FPGA'larda kullanılmak üzere yüzlerce önceden oluşturulmuş modül sağlayan OpenCores gibi siteler bulunmaktadır. Birçok öğretici ve proje içeren FPGA4Fun var . Saf eğlence için, FPGA Arcade , FPGA'lı oyunlar üretmeye kendini adamıştır. FPGA panoları etrafında kurduğunuza bağlı olarak, bu gerçekten eğlenceli bir sınıf olabilir.

6) Bazı kartlar, görünüşte onlar için hazır dijital tasarım sınıflarına sahiptir : Biraz eski bir Xilinx Spartan 3E tabanlı kart kullanarak Dijital Tasarıma Giriş (uyarı: büyük indirme) . (Her ne kadar biri ActiveHDL'ye dayansa da, şahsen daha standart bir VHDL veya Verilog'u tercih ederim) Başlıca FPGA satıcılarının üniversite programları da vardır: Xilinx Üniversitesi Programı , Altera Üniversitesi Programı , Kafes Üniversitesi Programı .

7) İş akışı, profesyonel tasarım çalışmalarının bugünlerde nasıl gerçekleştiğine çok daha yakın. FPGA geliştirme çalışma bilgisi hemen pazarlanabilir bir beceridir.


Çok teşekkürler. Bunları kesinlikle deneyeceğim. FWIW, ikinci bir donanım laboratuarı dönemim olsaydı, kesinlikle onlarla FPGA veya Arduino yapardım.
Ellen Spertus

5

Bence bugünlerde kapı seviyesindeki şeylerle uğraşıyorsanız, "bilgisayar mimarisi" alanında çalışmıyorsanız, gerçekten sadece temel dijital elektroniği yapıyorsunuz. Ancak, aynı zamanda geçit seviyesi elektronik elektroniğinden önbellek algoritmalarına, paralel hesaplama mimarilerine, SIMD, ağ oluşturma, vb.

Bu yüzden gerçekten öğretmek istediğiniz şeye iniyor. Kapı seviyesindeki dijital elektroniklere odaklanmak istiyorsanız, kapı seviyesindeki çiplerle çalışmak, öğrencilere üzerinde çalışacakları bir şey verecek ve onlara bu materyali daha iyi anlamalarını sağlayacaktır. Ancak, bilgisayar mimarisini öğretmek istiyorsanız, muhtemelen VE ve VEYA kapılarından çok daha yüksek bir soyutlama seviyesinde çalışıyor olmaları gerekir.

En azından, muhtemelen bir HDL öğrenmeyi ve FPGA tabanlı bir tasarım ya da iki uygulama yapmayı kendinize borçlusunuz. Diğer yanıtların, FPGA tasarımını kısa sürede hızlandırmanıza yardımcı olacak düşük maliyetli ve ücretsiz malzemelere çok fazla puan vermesini bekliyorum. (İpucu: Xilinx ve Altera, tonlarca uygulama notu ve diğer öğretim materyalleri ile birlikte ücretsiz yazılım tasarım araçları ve simülatörleri sunar).


Sınıfın olduğu gibi bilgisayar mimarisini öğretmediğini kabul etmiyorum. Öğrenciler kesinlikle bilgisayar mimarisinin bir parçası olan bir ISA'nın nasıl uygulanacağını öğreniyorlar ve ben de boru hatları ve önbellekleri öğretiyorum. Mimaride, bir derste öğrettiğimden daha fazlası olduğuna katılıyorum. Öğrenci olarak başka birçok mimarlık dersi aldım, mimarlıkta akademik ve endüstri araştırması yaptım, vs.
Ellen Spertus

5

Yine de, TTL kullanmanın bir faydası, çok basit devreler için, HDL'nin detaylarının gerçek devreyi maskeleyeceği ve çoğu öğrencinin sadece çoğu zaman HDL'yi yazmak ve öğrenmek için harcayacağı olurdu. İlk önce TTL'nin, daha sonra mimarlık için FPGA'nın daha iyi olacağını düşünüyorum, çünkü TTL'lerle programlanabilir bir sistem yapmak zor.


+1 HDL devreyi gizler. HDL'lerde çoğullayıcı yazmanın birkaç farklı yolu vardır ve bunların çoğunun kapıların bir mux oluşturmak üzere nasıl düzenlendiğiyle ilgisi yoktur.
ajs410

Bu kilit nokta - FPGA için kodun aslında nasıl çalıştığını anlamadan kod yazması çok kolay. Şimdi, bundan kaçınmanın yolları var, örneğin Altera'nın IDE'si, kapı seviyesindeki tasarım üzerinde yoğunlaşmanıza yardımcı olacak şematik bir giriş modu içerir, ancak buna bağlı kalarak FPGA'ların gücünden de tam olarak yararlanamayabilirsiniz. aslında anahtarlamada herhangi bir nokta var mı?
Jules

1

Fiziksel devre montajı ile bazı uygulamalı deneyimlerin önemini tam olarak takdir ederek , simülasyon veya çok fazla soyutlamanın "hissettirdiği" bir seviyeye sahip olmadan modern bilgisayar uygulamalarını kapsamayacağınızı kabul etmenin önemli olduğunu düşünüyorum. Yapabileceğiniz en iyi şey, bir sonraki karmaşıklık seviyesini denemek için yeterli soyutlamayı eklemeden önce her seviyede bazı işler yapmaya çalışmaktır. Örneğin başvurduğunuz MIT kursu, bir noktada fiziksel olarak "inşa edilmiş" olan cips ve modüllerin 8 bitlik mikro programlı makinesinin üstünde çalışan 32 bitlik bir RISC makinesinin yazılım simülasyonu yapmaya başladı. Bu noktada, böyle bir makineyi sadece bir FPGA'ya uygulamanın daha etkili olacağını iddia ediyorum (muhtemelen o zamandan beri yaptıklarından şüphelendim).

Bunun ışığında, benim cazibem, hem cips hem de tel aşamasını daha erken ve daha sonra da bir FPGA fazını dahil etmeye çalışmak olacaktır. Breadboard kitlerine zaten sahip olduğunuzdan, ilk laboratuvarları bunun üzerinde tutabilir ve daha sonraki laboratuvarlar için bir FPGA kartı veya bir breadboardable FPGA modülü kullanabilirsiniz. FPGA'nın işlemcinin bir bölümünü uygulayan dıştan takma devrelere bağlı olduğu bir hibrit makine oluşturmak mümkün olabilir, ancak çok yapay bir his olurdu - sadece teknolojiyi tamamen karmaşıklığın en gerçekçi olabileceği noktada değiştirerek değiştirebiliyordum.

Eğitim fiyatlarında mevcut tek başına FPGA kartlarını 100 $ / ea'dan daha düşük bir fiyata sağlayabilmelisiniz.

Başka bir seçenek de, projenin bir parçası olarak bir FPGA seri yükleme arayüzü oluşturarak, sınıfın bir parçası olarak kendinizinkini oluşturmak olabilir. Bunun güzel bir avantajı, maliyetin düşük olması, öğrencilerin dönem sonunda teslim etmeleri yerine kurullarını tutabilecekleri ve bu da bir avuç arasında sürekli ilgi ve farkındalığa yol açacaklarıdır.


Çok teşekkürler. MIT'deki değişimin farkındaydım. Aslında şu anki kurumumda, MIT'nin ihtiyaç duymadığı eski 6.004 / 6.111 laboratuvar kitleriyle başladım. Bununla birlikte, öğrencilerim MIT öğrencisi değiller ve bir sömestr kadarını ememiyorlar, bu yüzden seçici olmalıyım. (Aslında, MIT'de çoğu öğrencinin kendilerine atılan kadarını absorbe edemediğini öğrendim, ancak bu başka bir tartışma.) FPGA kartlarının düşük maliyeti kesinlikle çekici.
Ellen Spertus

1

Bence doğru yaklaşım, rölelerden birkaç kapı açarak başlamak, bunun anlaşılması ve anlaşılması kolay olan ama açık ki çok yavaş ve modern uygulamalar için aç olan bir güç olacağını düşünüyorum. O zaman transistörlerin aynı şeyi daha kompakt, daha hızlı ve daha verimli yapmak için nasıl kullanılabileceğini gösterin ve paketlenmiş kapılar [örneğin "dörtlü ve"] bunu daha da iyi yapabilir. Bu noktaya ulaştığınızda, çoklayıcılar ve mandallar gibi bir şeylerin kapılardan nasıl oluşturulacağını ve daha sonra paketlenmiş çoklayıcılar, mandallar vb. Günümüzde sayısız binlerce ayrı transistörü birlikte fiziksel olarak lehimleyerek bir bilgisayar inşa etmek, ancak bir bilgisayarın içsel çalışması, her şeyin çok daha küçük olması dışında, transistörlerinkiyle çok benzer.

Öğrencilerin bu tür bir öğretimden alacağını düşündüğüm en büyük yararlardan biri, birçok şeyin neden olduğu gibi çalıştığını anlamaktır. Örneğin, herhangi biri pratik bir fiziksel gerçekleştirmeye ihtiyaç duymayan bir komut setini "taklit" etseydi, diğer çoğu komutun bir tanesini alırken bir "yükleme belleği" komutunun üç döngü almasına gerek kalmazdı. Bazı şeyler transistör seviyesine inmeden anlaşılabilir, ancak birkaçı olamaz (örneğin senkronize ve senkronize olmayan girişlerin önemi).

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.