CortexM3 Assembly

Başlatan muhittin_kaplan, 15 Aralık 2012, 00:30:20

muhittin_kaplan

#15
belkide yanlış biliyorum. Gerbay'a sormak gerek

pipe line ı montaj hattına benzetebiliriz. montaj hattı olmayan bir iş yerinde bir ürünün hazırlanması için geçen süre ile montaj hattı olan yerde farklı olur.
ürünün biri hatta yerleşip ilk işlemden sonra ikinci ürün yerleşebilir. aynı şey komutların işletilmesinde de aynıdır. 1. komut işlenmesi bitmeden pipe ın özelliğine göre belki kendisinden sonra gelen 6. komurt sıraya alınmıştır.
ama 5. ürün 1 ünüden bilgi bekliyorsa işler orada karışır :) (stall)

mesaj birleştirme:: 16 Aralık 2012, 00:27:17

Alıntı Yapbu clockla artmıyormu
hayır, belki bir clockla X komutunu ROM dan getiriyor, Y komutunu çözüyor, Z komutunu çalıştırıyor. (pipe line ın kapasitesi önemli)

speak48

işte o banda her clokta yeni bir ürün gelmiyormu yani her clokta band 1 adım ilerliyor.
ürünün işlemi ne zaman biterse bitsin.


dmips söle bişey oluyo
saatte bandta kaç ürün işlenmiş / band kaçkez hareket etmiş.

bu nasıl oluyorda 1 in üstünde oluyor?
merakım budur.



Klein

DMIPS (Dhrystone mips ) kavramını olarak CPU clock hızı gibi düşünmemek gerek. Bir çeşit performans testi sonucu gibi düşünebiliriz. Kayan noktalı işlem içermeyen , tam sayılar ile çalışan bir test yazılımından elde edilmesi beklenen bir sonuç.  İki tane aynı clock frekansında çalışan işlemci düşünün. İkisine de Dhrystone kreterlerine göre yazılmış bir test yazılımı atıyoruz. Bu işlemcilerin yaptığı işi referans değere göre ne kadar hızlı veya ne kadar yavaş yaptığına göre de DMIPS değeri alıyor.
Dhrystone kriterlerinin detaylarını sormayın bilmiyorum?

muhittin_kaplan


MC_Skywalker

pipline hakkında şöyle kısa bir not buldum

Alıntı Yap
Avantajları:
* Zaman tasarrufu sayesinde işlem hacmi artar.
* ALU tasarımı daha hızlıdır.

Dezavantajları :
* Dallanma işlemleri en büyük problemleridir. Dallanılacak yerin önceden bilinememesi performansı düşürür. Atlama komutu çalışmadan sonraki komutun ne olacağı bilinemez.
*ALU tasarımı daha karmaşıktır.
*Pipelined bir sistemin yönerge gecikmesi(latency), pipelined olmayana göre biraz daha fazladır. Bu da sisteme ekstra flip-floplar eklenmesinden kaynaklanır.
*Pipelined bir sistemin işlemci performansını ölçmek daha zordur ve performans daha değişkendir.


z

MIPS değeri daha anlaşılır. Gecikmesiz LED yakıp söndürmede ledin yanıp sönme frekansı bile hız açısından bir miktar fikir veriyor.

32 bit /16 bit bölme işlemini hazır bölme komutu kullanmadan kendiniz yazıp bu işlemin kac mikrosaniyede tamamlandığını tespit ederek değişik işlemcilerin performansını anlamanızda çok yardımı olur.

Aynı testi hazır carpma komutları kullanmadan 32*32 çarpma işlemiyle de deneyebilirsiniz.

DMIPS değeri bana hiç bir şey ifade etmiyor çünkü özel bir yazılım testi.
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

Klein

Bana da DMIPS daha anlamlı geliyor. Bir işlemci var ,  şu kadar mips hızım var diyor. Ama bakıyorsun çarpma için 20 saykıl harcıyor, komut seti kısıtlı olduğu için  bir iş için 10 tane komut kullanman gerekiyor ,vs.. vs..  Diğerine bakıyorsun hız daha düşük ama komut seti çok yetenekli , aritmetik işlemcisi çok iyi, hızı düşük olmasına rağmen aynı işi daha kısa sürede bitiriyor. Herkesin hemfikir olduğu kriterlere göre yapılmış test sonuçlarının karşılaştırma açısından daha anlamlı olduğunu düşünüyorum. 

muhittin_kaplan

Oranlardan Bahsedebilirmisiniz ? yani DMIPS in 1 olması 1  MIPS da, 1 komutun icrasının bitirdiği anlamına mı geliyor. TI nin bir benchmark test sonucu var orada DMIPS ile Whetstone teslerini işlemcilere göre sonuçları verilmişti.

Klein

Yok  tam olarak öyle değil. Detayları çok iyi bilmiyorum ama genel prensip şu.
Test programı saniyede kaç kez dönüyor buna bakılıyor.  Bu sayı bir sabite bölünüyor ( 1750 gibi bir değer var hatırımda. emin değilim) sonuç 1 ise 1 dmips.  Yani loopumuz saniyede 1750(rakam kesin değil) kez dönüyorsa, 1DMIPS oluyor. 2100 kez dönüyorsa 1.2DMIPS oluyor.

Genel prensip bu. Ama detayları çok iyi bilmediğim için referans kabul etmeyin.

muhittin_kaplan

bir döküman okurken denk geldi pipeline 3state miş.

yamak

#25
Bir de şunu eklemekte fayda var aslında pipeline ın kullanılma nedeni kapı gecikmesini azaltmak için.Yani pipeline kullanarak işlemci yapacağı işlere göre bölümlendirilmiş oluyo.Eğer pipeline kullanılmazsa single cycle lık bi işlemcide  mesela load komutu için toplamda 20 ns lik kapı gecikmesi oluyosa o halde benim işlemcimin hızı en fazla 50 mhz olur.Ama pipeline kullanarak bu yolu bölümlere ayırmış oluyorum.Kabaca 1 cycle da kullanılan kapı sayısı azalmış oluyo böylece ben daha yüksek hızlarda çalışabiliyorum.Tabi pipelinelar dolana kadar bir komutum atıyorum 4 kademe pipeline varsa 4 cycle da tamamlanmış oluyo.Ama pipelinelar dolduktan sonra işlemci seriye takıyo ve her cycle da bi komut tamamlanmış oluyo.Tabi pipeline dez avantajları var pipeline hazard lar oluştuğunda pipeline lar tekrar boşalmış oluyo bu durumda yine pipelinelar dolana kadar yine bi komutun işlenmesi için 4 cycle geçmesi gerekiyor.Bu sebeple; sanki işlemci her komutu tek cycle da işletiyomuş gibi ona göre gecikmeler yapıp kesin sonuçlar bekleme yanlış olur.

speak48

#26

pipelinenın kullanım sebebi;
işlemcini yapısına göre bir komutu x cyclede çalıştırtıyorsa
her clokta x ünitede sadece birinin çalışıp diğerlerinin onu beklemesinin önüne geçmektir.
işlemci bu boş durmasın işlesin.


mesaj birleştirme:: 17 Aralık 2012, 03:09:14

Alıntı yapılan: gerbay - 17 Aralık 2012, 00:46:49
bunu iki başlık altında incelemek gerekiyor, birincisi "superscalar" işlemciler açısından, ikincisi ise konu başlığı açısından

superscalar hım bu mimarileri daha önce incelemedim.
nolcak bu mimarilerin sonu her önüne gelen bin tane farklı model çıkarıyor.

bu pipeline intelde varmıydı.

z

Bu pipeline olayında kafamı kurcalayan bir durum var.

A,B,C CPU registerleri ve aşağıdaki satırlar da ardışıl makine kodlarımız olsun.

A=1
B=A+2
C=B+3

Pipeline mekanizması bu komutların işletiminde sekteye uğrarmı?
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

speak48

yanılıyor olabilirim.
pipelineda hata algılama var böyle bir kod hataya yol açıçaksa kod pipeline olarak işletilmiyor
önceki komutun işlemini yapması bekleniyor.
sonuçta kodu işler ama daha uzun sürede

z

Komutlar kesin işletiliyor da pipe line işlemi burada işe yarıyormu yaramıyormu ondan emin olamıyorum.
Bana e^st de diyebilirsiniz.   www.cncdesigner.com