Şimdi Ara

Dünyanın en hızlı erişimli cache algoritmasını yapmış olabilirim.

Bu Konudaki Kullanıcılar:
2 Misafir - 2 Masaüstü
5 sn
31
Cevap
5
Favori
2.573
Tıklama
Daha Fazla
İstatistik
  • Konu İstatistikleri Yükleniyor
13 oy
Öne Çıkar
Sayfa: 12
Sayfaya Git
Git
sonraki
Giriş
Mesaj
  • Çok izlekli uygulamalarda en az saniyede 1 milyon en çok 2.5 milyar get set işlemi yapabilirken, tek izlekte en az 50 milyon en çok 1 milyar işlem yapabiliyor. Ama cache hit oranı normal LRU 'ya göre yüzde birkaç daha düşük.


    github
    GitHub - tugrul512bit/LruClockCache: A low-latency LRU approximation cache in C++ using CLOCK second-chance algorithm. Multi level cache too. Up to 2.5 billion lookups per second.
    https://github.com/tugrul512bit/LruClockCache



    < Bu mesaj bu kişi tarafından değiştirildi Tugrul_512bit -- 12 Ekim 2021; 11:47:24 >
    < Bu ileti mobil sürüm kullanılarak atıldı >



  • Yahu şu forumda takılıyorsun insan biraz kodlama, biraz sistem mimarisi öğrenir be kardeşim. Hdd, ssd, ram, swap, L1, L2... bunların hepsi bellektir. Bunların kimisi kalıcı kimisi uçucu, kimisi hızlı kimisi yavaştır. Sistemde ram niye var? Hdd ram kadar hızlı olsaydı ram diye birşeye gerek kalmazdı. Ram L1 kadar hızlı olsaydı L1'e gerek kalmazdı. Swap dediğin şey niye var? Programın belleğe ihtiyacı varsa ve ram'de yeteri kadar alan yoksa ne olacak? Bunun için sistem mi kitlensin? Harddisk ten bir bölgeyi ayırırsın, burayı sanki ram miş gibi kullanırsın. Yavaş ama sistemin devamlılığını sağlıyor sonuçta, kitlenmekten iyidir.


    Gömülü sistemlerde kullanılan FRAM diye bişey var. Normal ram'e yakın bir hızda çalışıyor ama kalıcı bellek. Tek çeşit bellek hem flash hafıza, hem ram, hem de eeprom görevi görebiliyor.


    64 bit kaynak falan tüketmez. Adresler 4 yerine 8 byte olduğu için birazcık daha fazla belleğe ihtiyaç duyar o kadar. 32 ile 64 ün arası diye birşey olmaz. Sayısal devreler ikilik sayı sistemiyle çalışır onluk değil. İkilik sistemde 32 sayısı 5 bit ile, 64 sayısı 6 bit ile ifade edilir. Sen 50 bit işlemci yapacam dersen devreleri çok karmaşık hale getirmek durumunda kalırsın. Bellek kapasiteleri neden 1000-2000 diye gitmez de 1024-2048 diye gider?

  • Tam olarak ne işe yarıyor? Nerelerde kullanabiliriz?

  • L1, L2 içinde minimum değerlerle maksimum rekorlara ulaşılır burada sorun yok !


    asıl sorun büyük verileri işleye bilmek sanırım !

  • ProjectMan kullanıcısına yanıt

    Tek bilgisayara sığmayan büyük verileri işlemek için tabiki de redis gibi veya daha performanslı bir veri dağıtacak araç gerekir.


    < Bu ileti mobil sürüm kullanılarak atıldı >
  • EmuDev E kullanıcısına yanıt

    Hocam bu bir tampon bellek yani bazı yavaş ve tekrarlanan islemlerin ram bellekte tutulmasini sağlıyor.


    < Bu ileti mobil sürüm kullanılarak atıldı >
  • Tugrul_512bit kullanıcısına yanıt

    her şeyden önce iddialı olmanıza sevindim !


    benimde şöyle bir iddiam var !


    Real-Time Lossless data compression Histogram algorithm √λ≅X^Y∓Z ∦ λ∈[(ArgMax⇔>∀xω1)→(ArgMin⇔<∀xω9)]


    ama lakin olayın ileride


    The Billion Dollar Code | Official Trailer | Netflix


    bu senaryoya dönem ihtimali olduğu için kassan ne olur kastırsan ne olur !


    sizin şu an yaptığınız işlevsellik döngü hızlandırma anlamıyla belki bir teknolojik devrim olabilir.


    google dan bile daha hızlı sorgulama yapmaya veya yapay zekaların bellek erişiminde yeni bir dönem açılışı bile olabilir.


    çalışmalarınızı taktir ediyorum.

  • Tugrul_512bit kullanıcısına yanıt

    hdd i hep dijital verinin analog bir bantta saklanmış haliymiş gibi görmüşümdür.


    burada asıl teknoloji devrimi ram in yetmediği noktada oluşturulan


    swap denilen sistem molozlarından nasıl kurtulunması lazım


    32-bit 4gb ile sınırlı ve aslında özgürlük sınırların başladığı noktada başlar.


    ve şimdi 64-bit adreslemenin kullanıldığı bir alanda


    hacimselliğin 1000 de 1 bile olmayan kapasitelerde sisteme ram takılmakta


    histogramig algoritma ile gerçek zamanlı veri sıkıştırması mümkün


    bu konuda binlerde akademisyen doktora tezi yazmış


    ama hiç biri uygulama aşamasına geçememiş.


    mimari 64-bit ile 32-bit arası bir yerlere ayarlanırsa


    sistem gerçekten daha hızlı çalışabilir.


    64-bit çok fazla kaynak tüketiyor


    32-bit ise kapasite olarak kendini çok fazlasıyla sınırlıyor.


    burada anlatmak istediğim ana fikri buraya yazamıyorum


    ama doğru teknik düşünce ile o fikri fark edeceksin.


    zaten bu konuları anlayan adam sayısı çok az ve yok kadar az !




    < Bu mesaj bu kişi tarafından değiştirildi ProjectMan -- 13 Ekim 2021; 8:11:8 >
  • ProjectMan kullanıcısına yanıt

    Hocam onun için ekran kartlarının bellegini kullanan dizi de yapmıştım. RAM olarak sadece 4 GB bellek var, kartların 5GB belleğini kullanarak hdd kullanmadan 5GB boyunda bir dizi üzerinde hesap yapıyor. Adı VirtualMultiArray.




    < Bu mesaj bu kişi tarafından değiştirildi Tugrul_512bit -- 13 Ekim 2021; 10:29:19 >
    < Bu ileti mobil sürüm kullanılarak atıldı >
  • ProjectMan kullanıcısına yanıt

    Yahu şu forumda takılıyorsun insan biraz kodlama, biraz sistem mimarisi öğrenir be kardeşim. Hdd, ssd, ram, swap, L1, L2... bunların hepsi bellektir. Bunların kimisi kalıcı kimisi uçucu, kimisi hızlı kimisi yavaştır. Sistemde ram niye var? Hdd ram kadar hızlı olsaydı ram diye birşeye gerek kalmazdı. Ram L1 kadar hızlı olsaydı L1'e gerek kalmazdı. Swap dediğin şey niye var? Programın belleğe ihtiyacı varsa ve ram'de yeteri kadar alan yoksa ne olacak? Bunun için sistem mi kitlensin? Harddisk ten bir bölgeyi ayırırsın, burayı sanki ram miş gibi kullanırsın. Yavaş ama sistemin devamlılığını sağlıyor sonuçta, kitlenmekten iyidir.


    Gömülü sistemlerde kullanılan FRAM diye bişey var. Normal ram'e yakın bir hızda çalışıyor ama kalıcı bellek. Tek çeşit bellek hem flash hafıza, hem ram, hem de eeprom görevi görebiliyor.


    64 bit kaynak falan tüketmez. Adresler 4 yerine 8 byte olduğu için birazcık daha fazla belleğe ihtiyaç duyar o kadar. 32 ile 64 ün arası diye birşey olmaz. Sayısal devreler ikilik sayı sistemiyle çalışır onluk değil. İkilik sistemde 32 sayısı 5 bit ile, 64 sayısı 6 bit ile ifade edilir. Sen 50 bit işlemci yapacam dersen devreleri çok karmaşık hale getirmek durumunda kalırsın. Bellek kapasiteleri neden 1000-2000 diye gitmez de 1024-2048 diye gider?

  • Hocam yabancı forumlarda da paylaşın lütfen burda pek rağbet göreceğini sanmam. Elinize sağlık bu arada  

  • Veronicaa kullanıcısına yanıt

    Reddit, codeproject sitelerinde paylaştım hocam. Bir de minecraft programını cache ile çalıştırıp youtube videosu olarak yayınlamayı düşünüyorum ama coğu minecraft programı sınırlı dünyada tasarlanmış. Sınırsız dünyalısını bulup hdd ile görüntü çizme arasına biryere cache koyacağım.


    < Bu ileti mobil sürüm kullanılarak atıldı >
  • Tugrul_512bit kullanıcısına yanıt

    Kolay gelsin hocam  

  • Veronicaa kullanıcısına yanıt

    Sağol.


    < Bu ileti mobil sürüm kullanılarak atıldı >
  • EmuDev E kullanıcısına yanıt

    şu son 3 kısımı pek anlayamadım biraz daha açıklayıcı yazar mısın !?

  • ProjectMan kullanıcısına yanıt

    Kimse hız için 48bit tarzı bir mimari çıkarmaz bundan sonra uzun süre 64bit devam edecek gibi duruyor.(Geleceği var sonuçta) belki AVX komut setlerinde belirli gelişmeler olur o zaman dahada hızlanır işler...


    Mimari olarak değilde yazılımsal bir yaklaşım var 32bit ve 64bit arasında ve buda 32gb RAM kadar bir limite tekabül ediyor.32bit 4gb olmasından iyidir...


    https://www.baeldung.com/jvm-compressed-oops

  • ShadowWyvern S kullanıcısına yanıt

    şu an var olan 64-bit işlemciler ; fiziksel 64-bit değil, sanal 64-bit adresleme yapabiliyor

    fiziksel olarak ise 48-bit adresleme yapabiliyorlar mış !


    kaynak :

    stackoverflow.com/questions/6716946/why-do-x86-64-systems-have-only-a-48-bit-virtual-address-space


    64-bit, 32-bit adreslemelerin aşıldığı noktada iyi bir alternatif

    ama 64-bit büyük veriler noktasında hassas zamanlamalar anlamıyla

    32-bit e göre büyük zaman ve kaynak israf kaybına sebep olacaktır.

    bunu anca histogram anlamıyla real-time sıkıştırmalarla aşılabilinecek bir fonksiyon.




    < Bu mesaj bu kişi tarafından değiştirildi ProjectMan -- 14 Ekim 2021; 9:10:7 >
  • https://www.youtube.com/watch?v=KfGnLltyRH4


    gerçek zamanlı anlamda bir iş yapılacaksa cpu devrinin kapandığını söyleyebilirim bu videoda çok güzel örnekler var.


    Bu videodan ayrı olarak Tuğrul beyin GPGPU çalışmaları mevcut...



    Zamanında kendime sormuştum, OpenMP ve MPI 64çekirdeğe kadar erişebiliyor acaba bu işlemci için kodlanan yapılar ekran kartının içindeki çekirdeklerdede 1-2 yazılım değişiklikliği ile kullanılabilir mi?


    https://www.techpowerup.com/gpu-specs/radeon-rx-vega-11.c3593


    mesela üstteki benim ekran kartı 11compute unit içeriyor. 704/11=64 her compute unit başına 64 çekirdek düşüyor(thread olayı var tabi ek olarak).(nvidia için bu durum her sm için 128)


    Bu compute unit ler kullanılarak 11 birbirlerinden bağımsız bilginin işlenmesi mümkün mü?


    Örnek vermek gerekirse 1.set sadece ağaç çizerken 2.set sadece kaya çizecek (tamamiyle bağımsız şekilde) bu konuda beni aydınlatabilir misiniz Tuğrul bey teşekkürler... @Tugrul_512bit




    < Bu mesaj bu kişi tarafından değiştirildi ShadowWyvern -- 14 Ekim 2021; 11:29:43 >
  • Konu güzelmiş tartışmaya devam edin lütfen.

  • Bende kubernetes üzerine redis deploy edem adamlar cache'in enginini yazıyor yahu :D

  • ProjectMan kullanıcısına yanıt

    Anlamadığın yeri sor yardımcı olayım. 48 bit adresleme olayına da açıklık getirelim.


    İşlemci bellekten veri isteyeceği zaman verinin adresini adres hattına yazar. Buradan ram'e gider bu adres bilgisi. Bu hat işlemci pinleriyle bellek alt sistemi arasındaki fiziksel bağlantıdır. Diyelim sistem 4 gb bellek destekliyor. O halde işlemciden ram'e 32 pin üzerinden adres hattı çekmek yeterlidir. Bu pinlerin her birinden 1 bit adres bilgisi gider. 32 bit ile yazılabilecek en büyük sayı 4 milyar küsürdür (2^32), yani tam olarak bellek byte kapasitesi kadar. Buna 1 bit eklesek desteklenen bellek kapasitesi 2 katına çıkar. Eklenen her bit (pin) adresleme kapasitesini 2 katına çıkartır. 2^48 in ne kadar büyük bir sayı olduğunu sen hesapla. Bu kadar büyük kapasiteli bellek hiçbir yerde yok şuan. Ha diyelim ki 10 yıl sonra bu kapasitede bellek kullanılmaya başlandı. 64 bit işlemciler kolaylıkla 64 bit fiziksel adreslemeye genişletilebilir. Hatta bundan daha fazlası bile olabilir. Eski 8 bit işlemcilerin çoğu 16 bit adres hattına sahipti çünkü 256 byte adresleme yetmiyordu.

  • 
Sayfa: 12
Sayfaya Git
Git
sonraki
- x
Bildirim
mesajınız kopyalandı (ctrl+v) yapıştırmak istediğiniz yere yapıştırabilirsiniz.