Tms320f28335 pipiline cycle hakkında

Başlatan apsis, 20 Mart 2019, 17:30:54

apsis

Merhabalar. Şu sıralar texas dspler ile uğraşmaktayım.
Asm kodlarının işlem sürelerini incelerken kimisinde 2 pipeline cycle kiminde 2 cycle kiminde 1 cycle gibi işlem süreleri yazıyor.
C28x'in çekirdek yapısını da inceledim mesela bir komutu 8 adımda işliyor.
Buradaki her adım 1 cycle olarak mı değerlendiriliyor yoksa 1 pipeline cycle olarak mı? Yoksa bu işlemin tümü yani bir komut işleme 1 cycle olarak mı değerlendiriliyor. Mesela NOP 1 cycle tutuyor.
Bu konuda biraz kafam karıştı. Yardımlarınızı bekliyorum.
Teşekkürler.
"Makineye Beyin" MEKATRONİK

devrecii

Pipeline , pipi değil  :D  :D 

Cycle cpu nun saati, pipeline ise cpunun komutu işlemek için kullandığı yoldur bildiğim.

apsis

@iboibo düzelttim 😁
Anlayamadım valla. Cpunun saati sonuçta komut işlemek için kullanılacak saat değil mi?
"Makineye Beyin" MEKATRONİK

devrecii

Doğru aslında, ikiside boru anlamına geliyor   :-\ 

Konuyu açıklamak için basit bir örnek veriyim iki sayıyı toplayacaksın diyelim , ama sayılar registerde değil de , ram de.

İşlemci 1 clock da rama ulaşacak 1 clock sayıyı alacak  1 clock toplayacak  1 clock rama tekrar gönderecek 4 clockta ancak toplama yaptı.

Mesela cekirdek 8bit ama 16bit toplama yapacak nasıl yapacak 8bit - 8bit + carry toplamsı yapacak 2 yada daha fazla cycle gerektiriyor.

Burada bu olaylar toplamına pipeline deniliyor. Cpunun kalitesini de gösterir bu.
 

apsis

Anladım. Buna benzer bir yorum yapmıştım kendi kendime. Arm bir komutu 3 adımda işliyor texas ise 8 adımda işliyor. Arm'ın bir pipeline 3cycle texasın ise 8cycle 1 pipeline yapıyor denilebilir mi?

Ama kafamı karıştıran şu; bazı komutlar 1 veya bir kaç cycle olarak bazılar 1 veya bir kaç cycle olarak yazıyor. Bahsettiğin duruma göre her komut en az 1 pipeline tutması gerekmiyor mu? Mesela 1 cycle yazan komutlar kod işleme aşamasında 1 adım ilerlemiş oluyor yani işlem aşamasını tam bitirememiş olarak görüyorum. Ya da bu komutlar 8 adındaki işlemin tamamını bitirmek zorunda değil gibi düşünüyorum.

Kodları ASMde yazacağımdan değil ama mimariyi kavramaya çalışıyorum.

Tüm bu durumlara göre arm için de verdiğim bilgileri karşılaştıracak olursak neden texas dsp kullanayım? Yada dsp işlemleri için neden texas gibi dspler kullanılıyor?

DSP with FPU olan M4 veya m7 kullansam hem ucuza gelecek hem daha performanslı olacak. Hatta m7 kullansam texasın içinden geçecek. Mesela 320f28379d (çift çekirdek) ile armın dsp komut setleri arasında ahım şahım fark yok. Texas vcu ve tmu şeklinde kompleks sayılar ve trigonometrik işlemler için ve FPU için çekirdek içerisine 3 ayrı modül koymuş.

Armda FPU haricinde diğer modüller yok ancak diğer modğllerdeki komutların bir çoğunu sağlıyor. (trigonometrik ve kompleks sayı işlemleri hariç) eksik olanları da arm hızlı komut işleme kabiliyetiyle tamamlayabilir.

Ha ama bu fbu, vcu ve tmu birimleri çekirdeği yormadan hesapları kendi içerisinde yapıyorsa işin rengi o zaman değişir.

3x3 bir matrisi eğer yanlış hesaplamadıysam arm 6, texas ise 13 cycle dan fazla tutuyor. Ha bir de texas bir çok dsp komutu arkasına 1 ile 4 cycle NOP koyuyor ve işlemin tamamlanması için gerekli iş.

Şu cycle işini tam çözebilirsem kavrayacağım.

Hatta ilerleyen zamanlarda texas da yazacağım programı M4 ve m7 de deneyip karşılaştırmasını yapacağım.
"Makineye Beyin" MEKATRONİK

devrecii

#5
apsis pipeline bir ölçü değeri değil , mikroişlemci komutları gerçekleştirirken izlediği yollar anlamındadır.

Mikroişlemciyi tasarlayanların yeteneğine bağlı , mesela bilgisayarda adam kod yazar 100satır da yapabilir  ama başka adam gelir 10 satırda işi bitirir,  cpu yu tasarlayan adamların yeteneğine kalmış, intel o yüzden intel .

Cpu 100mhz ise bir komutu 4cycle de hesaplıyorsa  saniyede 25milyon işlem yapacak demektir , tabi sadece bu değil komut isteme de saat tüketecek,  rama ulaşma vs,  yani en iyi ihtimal saniyede 10-15 milyon bu işlem yapabilir.

Trigonometri, log , pow  vs varsa çok güzel bir özellik ithiyaç varsa , çünkü yazılımla çok yavaş hesaplanır bunlar.  Cycle sayısından çok yapmak istediğin
şeye göre ihtiyaçları belirlemek ama bence en çok hız kazandırak şey kendi kodlarımızı optimize etmektir.


apsis

Pipeline'nın ne olduğunu biliyorum. Tek başına ölçüt değildir de. Ama ben pipeline cycle'dan bahsediyorum.
float point and instruction set dökümanından aldığım bir kaç ekran görüntüsü var. PIPELINE satırına bakarsan demek istediğimi anlarsın:









"Makineye Beyin" MEKATRONİK

apsis

#7
http://www.ti.com/lit/ug/sprueo2b/sprueo2b.pdf

Sayfa 23'de bilgi verilmiş ama anlayamadım.

DSP ve FPU olmayan komutlar single cycle veya N*cycle gibi değerlendiriliyor.

Ya da şu sonucu çıkarttım; VCU, TMU ve FPU komutlarıyla çalışırken işlemci içerisinde ayrı modüller olduğu için bir kaç iç döngü diyebileceğimiz (ki bunu pipeline olarak adlandırmışlar) ya da Normal bir döngüden(single cycle) isim olarak ayırmak için pipeline cycle kullanılmıştır. Belkide 1 pipeline cycle = 1 cycle demektir.

http://www.ti.com/lit/ug/spruhs1a/spruhs1a.pdf

Sayfa 19, 154 ve 383'de DSP ünitelerinin pipeline hakkında bilgi verilmiştir.

Benim buradan çıkarttığım sonuç bu.
"Makineye Beyin" MEKATRONİK

devrecii

apsis adamlar utandıklarından böyle yazmışlar abartmıyorum ...

"fpu pipeline" yazan yera bak işlemler sıra ile fect-decode-read-exe-write bir fpu işlemi yapılırken sırası ile bu işlemlerin yapılması gerekiyor. Kaç işlemci saati ?.

pdf yi tam inceleyemedim ama bir yerde yazıyordur 1 fpu işlemi "pipeline" kaç cpu saati tutuyor yada kaç nanosaniyedir yazıyordur biryerlerde , belkide arm ile aynıdır ?