FPGA CPU'lar, maksimum hız nasıl bulunur?


14

Sadece FPGA'lara giriyorum ve doğru anlarsam, mantık kapılarını kod kullanarak birbirine bağlıyorsunuz. Verilog'da bir CPU tasarlarsam, bazı mantık kapılarını birbirine bağlamalı ve çalışmalıdır, ancak DIY CPU'mun ne kadar hızlı çalışabileceğini nasıl bilebilirim? Bu neye bağlıdır?


12
@KingDuken Aklınızdaki CPU gibi bir şey tasarlamak için Verilog'a alternatifi merak ediyorum (sanırım VHDL değil :))?
Eugene Sh.

1
@KingDuken Yaşadığım sorun bu değil, zaten CPU'mu ve mimarisini breadboard üzerinde yaptım ve bir FPGA'ya taşımak istiyorum. Sorum şu: CPU'm için maksimum frekans saatinin ne olacağını nasıl hesaplayabilirim, ne sınırlar?

4
Google "statik zamanlama analizi"
Foton

14
@KingDuken İki CPU tasarlayan biri olarak, bu gerçekten zaman alıcı değil. Ne yaptığınızı biliyorsanız, 1-2 ay içinde çalışan bir işlemciniz olabilir.
user110971

2
@KingDuken Eğlenceli gerçek: Sun / Oracle, Verilog kaynak kodunu UltraSPARC T1 ve T2 işlemcilerine yayınladı. Birkaç şahsen gördüm ve hepsi çalıştı. FYI, hatta SPECint_rate2006 kazanmaya gittiler! : D Bu, Verilog veya diğer HDL'lerde CPU tasarlamanın ne kadar imkansız olduğunu açıkça göstermektedir. Kendimi bir hobi olarak birkaç kez yaptım ve gerçekten imkansız bir şey değil (bir kez her zamanki gibi grok
yaptıktan sonra

Yanıtlar:


29

Bir tasarımın hızı birkaç şeyle sınırlıdır. En büyük olasılıkla tasarımınızdaki kritik yol adı verilen kombinasyonel mantık yoluyla yayılma gecikmesi olacaktır . Hızlı bir FPGA kullanır ve HDL'nizi çok dikkatli yazarsanız, Virtex Ultrascale + gibi bir şeyde muhtemelen 700 MHz'e vurabilirsiniz. Bir alt uç FPGA'da, örneğin bir Spartan 6'da, makul bir rakam muhtemelen 250 MHz'e benzer. Bu, her yerde boru hattı gerektirir, bu nedenle durum bilgisi olan bileşenler (mantık düzeylerini en aza indirin), düşük fan çıkışları (mantık öğelerine yüklemeyi en aza indirin) ve tıkanmış sıçan yuvaları (verimli yönlendirme yolları) arasında mutlak minimum birleşik mantık miktarına sahip olursunuz.

Farklı FPGA'ların kumaş mantığı farklı zamanlama parametrelerine sahip olacaktır. Daha hızlı, daha pahalı FPGA'lar daha küçük gecikmelere sahip olacak ve sonuç olarak aynı tasarımla daha yüksek saat frekansları elde edebilir veya aynı frekansta daha az boru hattı ile daha karmaşık bir tasarım veya tasarım çalıştırabilir. Belirli bir işlem içindeki performans benzer olabilir - örneğin, Kintex Ultrascale ve Virtex Ultrascale aynı işlem üzerinde yapılır ve benzer hücre ve yönlendirme gecikmelerine sahiptir. Belirli bir tasarımın alet zincirinden geçmeden ve statik zamanlama analizinden zamanlama raporlarına bakmadan ne kadar hızlı olacağını söylemek mümkün değildir.

Maksimum saat hızını belirlemek için araç zinciri çalıştırmaları yaparken, araçların zamanlamaya dayalı olduğunu unutmayın: belirtilen zamanlama kısıtlamalarını karşılamaya çalışacaklardır. Herhangi bir zamanlama kısıtlaması belirtilmezse, araçlar tasarımı hız için optimize etmeye çalışmadığı için sonuç çok zayıf olabilir. Genellikle, ulaşılabilecek maksimum saat frekansının ne olduğunu bulmak için araçların farklı saat periyodu kısıtlamaları ile birkaç kez çalıştırılması gerekecektir.

Kritik yol sınır olmayacak şekilde tasarımınızı optimize edebiliyorsanız, saat üretimi ve dağıtımında (PLL'ler, DCM'ler, saat arabellekleri ve genel saat ağları) sınırlamalarla karşılaşırsınız. Bu sınırlar kısmen veri sayfalarında bulunabilir, ancak önemsiz olmayan bir tasarımla onlara yaklaşmak zordur. 500 MHz'de bir Virtex Ultrascale'de bir şeyler çalıştırdım, ancak bu, diğer bileşenlere tetikleme sinyalleri sağlamak için sadece birkaç sayaçtı.


22

Tasarımınızı hedef teknolojide (belirli bir FPGA) sentezler ve statik zamanlama analiz araçlarının size en düşük saat periyodunun ne olduğunu söylemesini sağlarsınız.

Ya da, ilk etapta tasarıma kısıtlamalar eklersiniz ve ardından araçlar karşılanıp karşılanmadığını size bildirir.


Kısıtlamaların karşılanmamasına ne sebep olur? Saat periyodunu ne sınırlar?

3
FPGA'nın hızına ve tasarımınızdaki FF'ler arasında ne kadar birleştirici mantık koyduğunuza bağlıdır.
Dave Tweed

9
@ appmaker1358, bir FPGA için veri sayfasını okumaya çalıştınız mı? Hız derecesi, veri sayfasında belirtilen en önemli parametrelerden biridir.
Foton

2
Hız, en uzun zamanlama yolu ile sınırlandırılacaktır, bu da mantık yoluyla en uzun yayılma gecikmesi ve iki durumsal eleman (flip flop, RAM, vb.) Arasındaki yönlendirme olacaktır. Farklı FPGA'ların farklı zamanlama parametreleri olacaktır ve bu nedenle bir tasarım farklı FPGA'larda farklı hızlara ulaşacaktır. FPGA'nın frekans sınırlı olsa da bazı bölümleri vardır - saat dağıtım bileşenleri ve PLL'lerin genellikle sınırları vardır, ancak önemsiz olmayan tasarımlarınkine yaklaşan HDL yazmak zordur.
alex.forencich

3
Ayrıca, her zaman zamanlama kısıtlamaları eklemeniz gerekir. Yerleşim ve yönlendirme, kısıtlamaları dikkate alır ve bunları karşılamaya çalışmak için çalışır. Herhangi bir kısıtlama eklemezseniz, araçlar çok fazla çabalamaz ve çok iyimser bir sayı elde edemezsiniz.
alex.forencich

13

CPU'nuzun çalışacağı hız, sentezlenen tasarımınızdaki en uzun flop-flop gecikmesine bağlı olacaktır. Flop-flop gecikmesi, saat-Q, yönlendirme, mantık / LUT ve flop kurulum süresini içerecektir. Bunlar bir araya getirildiğinde, zamanlama raporunuzun çıktısında yer ve rota aracıyla inceleyebileceğiniz zamanlamanızın kritik yolunu oluşturur.

Belirli bir süreçten en iyi şekilde yararlanmak için bu gecikmeyi en aza indiren mimarileri yapmaya adanmış tüm tasarım disiplinleri vardır - boru hattı, paralel yürütme, spekülatif yürütme vb. Bir FPGA'dan (veya bu konuda bir ASIC'den) son performans onsunu sıkmak, büyüleyici ve ilgili bir görevdir.

Bununla birlikte, FPGA tedarikçileri, parçaları için maksimum MHz hızına karşılık gelen farklı hız dereceleri verecektir. Örneğin -2 Xilinx Artix, kabaca konuşan '250 MHz' bir parçadır, ancak yüksek düzeyde boru hatlı tasarımlar için daha yüksek saat hızlarına sahiptir.

FPGA sentezi ve yer ve rota araçlarıyla etkileşim kurduğunuzda, tasarımınız için kısıtlamalar vermeniz gerekir . Bunlar, aletin elde etmeye çalıştığınız hedef flop-flop gecikmesini geciktirir. Quartus (Altera) ve Vivado (Xilinx) 'de bu kısıtlamalar, Synopsys Tasarım Kısıtlamaları anlamına gelen SDC adlı bir sözdizimi kullanır. SDC başlangıçta ASIC dünyasından geldi ve FPGA endüstrisi tarafından da benimsendi. SDC'yi tanıyın - istediğiniz sonuçları almanıza yardımcı olacaktır.

Altera ve Xilinx, SDC sözdiziminin ve diğer pek çok konunun nasıl kullanılacağı konusunda çevrimiçi topluluklara sahiptir.

Tüm bunlar, hızı önemsiyorsanız, Zynq gibi bir CPU sabit makrosu olan bir FPGA'yı düşünmelisiniz.


-2

CPU, küresel saatlerden daha hızlı çalışmaz, bu yüzden ne kadar hızlı çalışabileceği konusunda bir üst sınır oluşturur. Genellikle maksimum saat hızı hakkındaki bilgiler FGPA veri sayfalarında listelenir.

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.