internet pencereler Android

Ve iki farklı durumda ne olacağını düşünün. Aile bağlarının netleştirilmesi

* Her zaman güncel sorular, bir işlemci seçerken yanılmamak için nelere dikkat etmelisiniz.

Bu makaledeki amacımız, işlemci performansını ve diğer operasyonel özellikleri etkileyen tüm faktörleri anlatmaktır.

Elbette, işlemcinin bir bilgisayarın ana bilgi işlem birimi olduğu kimse için bir sır değil. Hatta diyebilirsiniz - bilgisayarın en önemli parçası.

Bilgisayarda meydana gelen hemen hemen tüm süreç ve görevlerin işlenmesiyle ilgilenen kişidir.

Video izlemek, müzik dinlemek, internette gezinmek, bellekte yazmak ve okumak, 3D ve video işlemek, oyunlar olsun. Ve daha fazlası.

Bu nedenle seçime C merkezi Pİşlemci çok dikkatli alınmalıdır. Güçlü bir ekran kartı ve seviyesine uymayan bir işlemci kurmaya karar vermiş olabilirsiniz. Bu durumda işlemci, ekran kartının çalışmasını yavaşlatacak olan potansiyelini ortaya çıkarmayacaktır. İşlemci tamamen yüklenecek ve kelimenin tam anlamıyla kaynayacak ve ekran kartı yeteneklerinin% 60-70'inde çalışarak sırasını bekleyecek.

Bu nedenle dengeli bir bilgisayar seçerken, olumsuzluk maliyetler işlemciyi ihmal et güçlü bir ekran kartı lehine. İşlemci gücü, video kartının potansiyelini ortaya çıkarmak için yeterli olmalıdır, aksi takdirde sadece boşa harcanır.

Intel'e karşı AMD

* sonsuza kadar yakalayın

şirket Intel, büyük insan kaynaklarına ve neredeyse tükenmez maliyeye sahip. Yarı iletken endüstrisindeki birçok yenilik ve yeni teknolojiler bu şirketten geliyor. İşlemciler ve gelişmeler Intel, ortalamada 1-1,5 mühendislerin gelişmelerinden yıllar önce AMD... Ama bildiğiniz gibi, en çok şeye sahip olma fırsatı için modern teknolojiler- ödemeniz gerek.

İşlemci Fiyatlandırma Politikası Intel, her ikisine de dayanır Çekirdek sayısı, önbellek miktarı ama aynı zamanda Mimarinin "tazeliği", döngü başına performanswatt,çip teknolojisi... Önbelleğin değeri, "teknik sürecin incelikleri" ve diğerleri önemli özellikler işlemci aşağıda tartışılacaktır. Ücretsiz frekans çarpanı gibi teknolojilere sahip olmak için ayrıca ek bir miktar ödemeniz gerekecektir.

Şirket AMDşirketin aksine Intel, işlemcilerinin son kullanıcı için kullanılabilirliği ve yetkin bir fiyatlandırma politikası için çaba göstermektedir.

bunu bile diyebilirsin AMD– « İnsanların markası". Fiyat etiketlerinde ihtiyacınız olanı çok cazip bir fiyata bulacaksınız. Genellikle görünümden bir yıl sonra yeni teknolojişirkette Intel, bir teknoloji analogu var AMD... En yüksek performansı kovalamıyorsanız ve fiyat etiketine gelişmiş teknolojilerin kullanılabilirliğinden daha fazla önem veriyorsanız, şirketin ürünleri AMD- sadece senin için.

Fiyat politikası AMD, daha çok çekirdek sayısına ve biraz - önbellek miktarına, mimari iyileştirmelerin varlığına bağlıdır. Bazı durumlarda, üçüncü seviye bir önbelleğe sahip olmak için biraz fazladan ödeme yapmanız gerekecektir ( fenomen 3 seviye önbelleğe sahiptir, atlon sadece sınırlı içerik, 2 seviye). Ancak bazen AMD hayranlarını şımartır engellemeyi kaldırma yeteneği daha ucuz işlemciler daha pahalı olanlara. Çekirdeklerin veya önbelleğin kilidini açabilirsiniz. Geliştirmek atlonönceki fenomen... Bu, modüler mimari ve bazı daha ucuz modellerin olmaması nedeniyle mümkündür. AMD sadece daha pahalı olanların bazı çip üzerindeki bloklarını devre dışı bırakır (programlı olarak).

çekirdekler- pratikte değişmeden kalır, yalnızca sayıları farklıdır (işlemciler için geçerlidir) 2006-2011 yıl). İşlemcilerinin modülerliği nedeniyle şirket, bazı bloklar kapatıldığında daha az üretken bir hattan bir işlemci haline gelen reddedilen çipleri satma konusunda mükemmel bir iş çıkarıyor.

Şirket, kod adı altında uzun yıllardır tamamen yeni bir mimari üzerinde çalışıyor. Buldozer, ancak giriş sırasında 2011 yıl, yeni işlemciler en iyi performansı göstermedi. AMD işletim sistemlerinde çift çekirdek ve "diğer çoklu iş parçacığı"nın mimari özelliklerini anlamadıkları için günah işlediler.

Şirket temsilcilerine göre, bu işlemcilerin tam performansını deneyimlemek için özel düzeltmeler ve yamalar beklenmeli. Ancak, başlangıçta 2012 yıl, şirket temsilcileri mimariyi desteklemek için güncellemenin yayınlanmasını erteledi Buldozer yılın ikinci yarısı için.

İşlemci frekansı, çekirdek sayısı, çoklu kullanım.

zamanlarda Pentium 4 ve ondan önce - CPU frekansı işlemci seçerken işlemci performansında ana faktördü.

Bu şaşırtıcı değil, çünkü işlemci mimarileri yüksek bir frekans elde etmek için özel olarak tasarlandı, bu özellikle işlemciye güçlü bir şekilde yansıdı. Pentium 4 mimari üzerine ağ patlaması... Mimaride kullanılan uzun boru hattı ile yüksek frekans etkili olmadı. Hatta Athlon XP Sıklık 2GHz performans açısından daha yüksekti. Pentium 4 C 2.4GHz... Yani saf pazarlamaydı. Bu hatadan sonra firma Intel hatalarımı anladım ve iyi tarafa döndü Frekans bileşeni üzerinde değil, saat döngüsü başına performans üzerinde çalışmaya başladım. mimariden ağ patlaması terk edilmek zorunda kaldı.

Ne Biz çok çekirdekli verir?

Frekanslı dört çekirdekli işlemci 2.4 GHz, çok iş parçacıklı uygulamalarda teorik olarak tek çekirdekli bir işlemcinin frekansa sahip yaklaşık eşdeğeri olacaktır. 9.6GHz veya frekansa sahip 2 çekirdekli bir işlemci 4,8 GHz... Ama bu sadece teoride. Pratikte ancak, iki soketli bir anakarttaki iki adet çift çekirdekli işlemci, aynı çalışma frekansında bir adet 4 çekirdekli işlemciden daha hızlı olacaktır. Veri yolu hızı ve bellek gecikmesi sınırlamaları belirgindir.

* aynı mimarilere ve önbellek miktarına tabidir

Çok çekirdekli, talimatları ve hesaplamaları parçalar halinde yürütmeyi mümkün kılar. Örneğin, üç aritmetik işlem gerçekleştirmeniz gerekir. İlk ikisi işlemci çekirdeklerinin her birinde yürütülür ve sonuçlar önbelleğe eklenir, burada bir sonraki eylem bunlar üzerinde herhangi bir boş çekirdek tarafından gerçekleştirilebilir. Sistem çok esnektir, ancak uygun optimizasyon olmadan çalışmayabilir. Bu nedenle, işletim sistemi ortamındaki işlemci mimarisi için çok çekirdekli için optimize etmek çok önemlidir.

"Sevilen" uygulamalar ve kullanmakçoklu kullanım: arşivciler, video oynatıcılar ve kodlayıcılar, antivirüsler, birleştirme programları, grafik düzenleyici , tarayıcılar, flaş.

Ayrıca, çoklu kullanım "severlerine", bu tür işletim sistemlerini şu şekilde başvurabilirsiniz: Windows 7 ve Windows Vista , hem de birçok işletim sistemiçekirdek tabanlı Linux sahipseniz, gözle görülür şekilde daha hızlı çalışır çok çekirdekli işlemci.

Çoğu oyunlar 2 çekirdekli bir işlemci için oldukça yeterli. yüksek frekans... Ancak şimdi, giderek daha fazla oyun yayınlanıyor, çoklu kullanım için "keskinleştirilmiş". En azından böyle al Kum havuzu gibi oyunlar GTA 4 veya Prototip, aşağıdaki frekansa sahip 2 çekirdekli bir işlemcide 2,6 GHz- kendinizi rahat hissetmiyorsunuz, kare hızı saniyede 30 karenin altına düşüyor. Bu durumda, bu tür olayların büyük olasılıkla nedeni, oyunların "zayıf" optimizasyonu, zaman eksikliği veya oyunları konsollardan konsollara aktaranların "dolaylı" elleridir. bilgisayar.

Oyunlar için yeni bir işlemci alırken artık 4 veya daha fazla çekirdeğe sahip işlemcilere dikkat etmelisiniz. Ama yine de ihmal etmeyin 2 nükleer işlemciler"üst kategoriden". Bazı oyunlarda bu işlemciler bazen çok çekirdekli işlemcilerden daha iyi hissettiriyor.

İşlemci önbelleği.

- Bu, işlemci çekirdekleri, RAM ve diğer veri yolları arasındaki ara verilerin işlendiği ve depolandığı işlemci kristalinin özel bir alanıdır.

Çok yüksek bir saat hızında çalışır (genellikle işlemcinin kendi frekansında), çok yüksek bir saat hızına sahiptir. verim ve işlemci çekirdekleri doğrudan onunla çalışır ( L1).

Onun yüzünden eksiklikler, işlemci zaman alıcı görevlerde boşta kalabilir ve işlenmek üzere önbelleğe yeni verilerin gelmesini bekleyebilir. Ayrıca önbellek hizmet eder Gerektiğinde gereksiz hesaplamalar yapılmadan ve işlemciyi bunlarla tekrar zaman kaybetmeye zorlamadan hızla geri yüklenebilen, sık tekrarlanan verilerin kayıtları.

Önbelleğin birleşik olması ve tüm çekirdeklerin ondan gelen verileri eşit olarak kullanabilmesi ile performans da eklenir. Bu, çok iş parçacıklı optimizasyon için ek fırsatlar sağlar.

Bu teknik artık 3. seviye önbellek... işlemciler Intel paylaşılan L2 önbelleğe sahip işlemciler vardı ( C2D E 7 ***,E8***), hangi sayesinde ortaya çıktı Bu taraftançoklu iş parçacığı performansını artırın.

İşlemciye hız aşırtırken, önbellek zayıf bir nokta haline gelebilir ve işlemcinin hatasız maksimum çalışma frekansından daha fazla hız aşırtmasını önleyebilir. Bununla birlikte, bunun iyi tarafı, hız aşırtmalı işlemci ile aynı frekansta çalışacak olmasıdır.

Genel olarak, daha fazla önbellek, Daha hızlıİŞLEMCİ. Hangi uygulamalarda?

Çok sayıda kayan nokta verisi, talimatı ve akışının kullanıldığı tüm uygulamalarda önbellek aktif olarak kullanılmaktadır. Önbelleği çok seviyorlar arşivciler, video kodlayıcılar, antivirüsler ve grafik düzenleyici vb.

uygun Büyük bir sayıönbellekler şunları içerir oyunlar... Özellikle stratejiler, otomatik simülasyonlar, RPG'ler, SandBox ve birçok küçük detayın, parçacığın, geometri öğelerinin, bilgi akışlarının ve fiziksel efektlerin olduğu tüm oyunlar.

Önbellek, 2 veya daha fazla ekran kartına sahip sistemlerin potansiyelini ortaya çıkarmada çok önemli bir rol oynar. Sonuçta, yükün bir kısmı, işlemci çekirdeklerinin hem birbirleriyle hem de birkaç video yongasının akışlarıyla çalışmak için etkileşimine düşüyor. Bu durumda önbelleğin organizasyonu önemlidir ve büyük hacimli L3 önbelleği çok faydalıdır.

Önbellek, her zaman korumalı olası hatalar (ECC), tespit edildiğinde düzeltilir. Bu çok önemlidir, çünkü işlem sırasında bellek önbelleğindeki küçük bir hata, tüm sistemin düşeceği devasa, sürekli bir hataya dönüşebilir.

Özel teknolojiler.

(hiper iş parçacığı, Ht)–

teknoloji ilk kez işlemcilerde uygulandı Pentium 4, ancak her zaman düzgün çalışmadı ve genellikle işlemciyi hızlandırmaktan çok yavaşlattı. Bunun nedeni, çok uzun bir boru hattı ve eksik bir şube tahmin sistemiydi. Şirket tarafından uygulanan Intel, o zaman bir analog dışında, teknolojinin henüz bir analogu yok mu? şirketin mühendislerinin uyguladıkları AMD mimaride Buldozer.

Sistemin ilkesi, her bir fiziksel çekirdek için bir iki hesaplamalı iş parçacığı bir yerine. Yani, 4 çekirdekli bir işlemciniz varsa Ht (çekirdek ben 7), o zaman sanal iş parçacığınız var 8 .

Performans kazancı, verilerin boru hattına zaten ortasından girebilmesi nedeniyle elde edilir ve mutlaka önce değil. Bu eylemi gerçekleştirebilecek herhangi bir işlemci birimi boştaysa, yürütme için bir görev alırlar. Performans kazancı, gerçek fiziksel çekirdeklerdekiyle aynı değil, karşılaştırılabilir (uygulama türüne bağlı olarak ~ %50-75). Bazı uygulamalarda nadiren olur, HT olumsuz etkiler performans üzerine. Bunun nedeni, bu teknoloji için uygulamaların zayıf optimizasyonu, "sanal" akışların olduğunun anlaşılamaması ve akışların eşit olarak yüklenmesi için sınırlayıcıların bulunmamasıdır.

TurboArtırmak En çok kullanılan işlemci çekirdeklerinin iş yüklerinin düzeyine göre çalışma sıklığını artıran çok kullanışlı bir teknolojidir. Uygulama 4 çekirdeğin tümünü nasıl kullanacağını bilmediğinde ve yalnızca bir veya iki tane yüklediğinde, çalışma frekansları artarken performansı kısmen telafi ettiğinde çok faydalıdır. Şirket için bu teknolojinin bir analogu AMD teknoloji mi Turbo Çekirdek.

, 3 bil! Talimatlar... İşlemciyi hızlandırmak için tasarlandı multimedya hesaplamalar (video, müzik, 2D / 3D grafikler vb.) ve ayrıca arşivleyiciler, görüntüler ve videolarla çalışma programları (bu programların talimatlarının desteğiyle) gibi programların çalışmalarını hızlandırır.

3bil! - oldukça eski teknoloji AMD içeren ek talimatlar multimedya içeriğinin işlenmesine ek olarak SSE ilk versiyon.

* Yani, tek duyarlıklı gerçek sayıların işlenmesini akış yeteneği.

En çok varlığı Yeni sürüm- büyük bir artı, işlemci uygun yazılım optimizasyonu ile belirli görevleri daha verimli bir şekilde gerçekleştirmeye başlar. işlemciler AMD benzer isimlere sahip, ancak biraz farklı.

* Örnek - SSE 4.1 (Intel) - SSE 4A (AMD).

Ayrıca, bu komut setleri aynı değildir. Bunlar, küçük farklılıkların olduğu analoglardır.

Cool'n'Quiet, Hızlı adım, SoğukÇekirdek, gelişmiş Yarım Durum (C1E) veT... D.

Bu teknolojiler, düşük yükte, çekirdek üzerindeki çarpanı ve voltajı azaltarak, önbelleğin bir kısmını devre dışı bırakarak vb. işlemci frekansını düşürür. Bu, işlemcinin çok daha az ısınmasını ve daha az güç tüketmesini ve daha az gürültü yapmasını sağlar. Güç gerekiyorsa, işlemci bir saniyede normal durumuna dönecektir. Üzerinde standart ayarlar bios neredeyse her zaman etkinleştirilir, istenirse, 3D oyunlarda geçiş yaparken olası "donmaları" azaltmak için devre dışı bırakılabilirler.

Bu teknolojilerin bazıları sistemdeki fanların hızını kontrol eder. Örneğin, işlemcinin artan ısı dağılımına ihtiyacı yoksa ve yüklenmezse işlemci fan hızı düşer ( AMD Cool'n'Quiet, Intel Hız Adımı).

Intel Sanallaştırma Teknolojisi ve AMD Sanallaştırma.

Bu donanım teknolojileri, performansta önemli bir kayıp olmadan birkaç işletim sistemini aynı anda çalıştırmak için özel programların kullanılmasına izin verir. Ayrıca, için kullanılır doğru iş sunucular, çünkü genellikle birden fazla işletim sistemi kuruludur.

Uygulamak Devre dışı bırakmak Biraz ve# uygulamak Biraz bilgisayarınızı virüs saldırılarından korumak için tasarlanmış teknoloji ve yazılım hataları sistemi çökertebilir arabellek taşması.

Intel 64 , AMD 64 , 64 T - bu teknoloji, işlemcinin hem 32 bit mimariye sahip bir işletim sisteminde hem de 64 bit mimariye sahip bir işletim sisteminde çalışmasına izin verir. sistem 64 bit- faydalar açısından, sıradan bir kullanıcı için, bu sistemde 3.25 GB'den fazla kullanılabilir olması farklıdır. rasgele erişim belleği... 32 bit sistemlerde b'yi kullanın Ö Sınırlı miktarda adreslenebilir bellek * nedeniyle daha büyük miktarda RAM mümkün değildir.

32 bit mimariye sahip çoğu uygulama, 64 bit işletim sistemine sahip bir sistemde çalıştırılabilir.

* 1985'te hiç kimse o zamanın standartlarına göre bu kadar devasa RAM hacimlerini düşünemezse ne yapabilirsiniz?

Bunlara ek olarak.

hakkında birkaç söz.

Bu noktaya çok dikkat etmekte fayda var. Teknik süreç ne kadar ince olursa, daha küçük işlemci enerji tüketir ve sonuç olarak daha az ısınır. Ve diğer şeylerin yanı sıra, hız aşırtma için daha yüksek bir güvenlik payına sahiptir.

Teknik süreç ne kadar ince olursa, bir çipe o kadar çok "sarılabilir" (sadece değil) ve işlemcinin yeteneklerini artırabilirsiniz. Aynı zamanda, daha düşük akım kayıpları ve çekirdek alandaki azalma nedeniyle ısı dağılımı ve güç tüketimi de orantılı olarak azalır. Yeni bir teknik süreçte aynı mimarinin her yeni nesliyle birlikte enerji tüketiminin de arttığına dair bir eğilim fark edebilirsiniz, ancak bu böyle değil. Sadece üreticiler, teknik süreçteki azalmayla orantılı olmayan transistör sayısındaki artış nedeniyle, daha yüksek performansa doğru ilerliyor ve önceki nesil işlemcilerin ısı yayma hattını aşıyor.

İşlemciye entegre edilmiştir.

Entegre bir video çekirdeğine ihtiyacınız yoksa, onunla bir işlemci satın almamalısınız. Yalnızca daha kötü ısı dağılımı, aşırı ısı (her zaman değil), daha kötü hız aşırtma potansiyeli (her zaman değil) ve fazla ödeme alırsınız.

Ek olarak, işlemcide yerleşik olan bu çekirdekler yalnızca işletim sistemini yüklemek, İnternette gezinmek ve video izlemek (ve o zaman bile herhangi bir kalitede değil) için uygundur.

Pazar trendleri hala değişiyor ve şuradan üretken bir işlemci satın alma fırsatı Intel video çekirdeği olmadan, gitgide daha az düşer. Gömülü bir video çekirdeğinin dayatılmasını zorlama politikası, işlemcilerle ortaya çıktı Intel kod adlı kumlu köprü, ana yeniliği aynı teknik sürece dayanan gömülü çekirdekti. Video çekirdeği bulunur ortaklaşa işlemcili bir kristalde ve önceki nesil işlemcilerdeki kadar basit değil Intel... Bunu kullanmayanlar için, işlemci için bir miktar fazla ödeme, ısıtma kaynağının ısı dağıtım kapağının merkezine göre yer değiştirmesi şeklinde dezavantajlar vardır. Ancak artıları da var. Devre dışı bırakılmış video çekirdeği, teknolojiyi kullanarak çok hızlı video kodlaması için kullanılabilir Hızlı Senkronizasyon bu teknolojiyi destekleyen özel yazılımlarla birleştirilmiştir. Gelecekte, Intel paralel bilgi işlem için gömülü video çekirdeğini kullanma ufkunu genişletmeyi vaat ediyor.

İşlemci soketleri. Platform ömrü.


Intel platformları için kaba bir politikaya sahiptir. Her birinin ömrü (işlemcilerin satışlarının başlangıcı ve bitişi için dönem), genellikle 1,5 - 2 yılı geçmez. Ayrıca şirketin paralel olarak gelişen birkaç platformu var.

Şirket AMD, tam tersi bir uyumluluk ilkesine sahiptir. Onun platformunda 3 AM, destekleyen tüm gelecek nesil işlemcilere uyacak DDR3... Platformdan çıkılsa bile AM 3+ ve daha sonra, her iki yeni işlemci de ayrı ayrı piyasaya sürülecek. 3 AM veya yeni işlemciler eski anakartlarla uyumlu olacak ve sadece işlemciyi değiştirerek (anakart, RAM vs. değiştirmeden) ve anakartı flashlayarak cüzdan için acısız bir yükseltme yapmak mümkün olacak. İşlemcide yerleşik farklı bir bellek denetleyicisi gerekli olacağından, tür değiştirilirken uyumsuzluk nüansları olabilir. Bu nedenle uyumluluk sınırlıdır ve tüm anakartlar tarafından desteklenmez. Ancak genel olarak, ekonomik bir kullanıcı veya platformu 2 yılda bir tamamen değiştirmeye alışkın olmayanlar için - işlemci üreticisinin seçimi açıktır - bu AMD.

İşlemciyi soğutmak.

Standart olarak, işlemci ile birlikte gelir KUTU- sadece göreviyle başa çıkacak yeni bir soğutucu. Dağılım alanı çok yüksek olmayan bir alüminyum parçasıdır. Isı borularına ve sabit kanatlara dayalı verimli soğutucular, yüksek verimli ısı dağılımı için tasarlanmıştır. Fandan gereksiz gürültü duymak istemiyorsanız, alternatif, daha verimli ısı borulu bir soğutucu veya kapalı devre veya açık devre sıvı soğutma sistemi satın almalısınız. Bu tür soğutma sistemleri ayrıca işlemciye hız aşırtma olanağı da verecektir.

Çözüm.

İşlemci performansını ve performansını etkileyen tüm önemli hususlar göz önünde bulundurulmuştur. Dikkat etmeniz gerekenleri tekrar edelim:

  • Üretici seçin
  • işlemci mimarisi
  • teknik süreç
  • CPU frekansı
  • İşlemci çekirdeği sayısı
  • İşlemci önbellek boyutu ve türü
  • Teknoloji ve talimat desteği
  • Kaliteli soğutma

Bu materyalin, beklentilerinizi karşılayan bir işlemci seçimini anlamanıza ve karar vermenize yardımcı olacağını umuyoruz.

saul 9 Eylül 2015 01:38

Çok iş parçacıklı bir oyun motoru mimarisini uygulama

  • Intel Blogu,
  • Oyun geliştirme,
  • paralel programlama,
  • Web sitesi geliştirme
  • Tercüme

Çok çekirdekli işlemcilerin ortaya çıkmasıyla paralel mimariye dayalı bir oyun motoru oluşturmak gerekli hale geldi. Sistemdeki tüm işlemcileri kullanmak - hem grafik işlemcisi (GPU) hem de merkezi işlemci (CPU) - yalnızca tek iş parçacıklı bir GPU motorundan çok daha fazla olasılık açar. Örneğin, daha fazla CPU çekirdeği kullanmak, görsel efektler Oyunda kullanılan fiziksel nesnelerin sayısını artırarak ve ayrıca gelişmiş yapay zekanın (AI) uygulanmasıyla karakterlerin daha gerçekçi davranışlarını elde ederek.
Oyun motorunun çok iş parçacıklı mimarisinin uygulanmasının özelliklerini ele alalım.

1. Giriş

1.1. genel bakış

Oyun motorunun çok iş parçacıklı mimarisi, platformdaki tüm işlemcilerin yeteneklerini maksimumda kullanmanıza olanak tanır. Mevcut tüm işlemcilerde çeşitli fonksiyonel blokların paralel yürütülmesini varsayar. Ancak, böyle bir planı uygulamak o kadar kolay değil. Bireysel öğeler oyun motorları genellikle birbirleriyle etkileşime girer, bu da aynı anda yürütüldüklerinde hatalara yol açabilir. Bu tür senaryoları işlemek için motor, olası kilitler hariç, veri senkronizasyonu için özel mekanizmalar sağlar. Aynı zamanda verileri senkronize etmek için yöntemler uygular, böylece yürütme süresini en aza indirir.

Sunulan materyalleri anlamak için modern yaratma yöntemlerinde bilgili olmanız gerekir. bilgisayar oyunları, oyun motorları için çoklu iş parçacığı desteği veya genel olarak uygulama performansını iyileştirmek için.

2. Paralel yürütme durumu

Eşzamanlılık durumu, çoklu kullanımda anahtar bir kavramdır. Sadece oyun motorunu, her biri kendi modunda çalışan ve pratik olarak motorun geri kalanıyla etkileşime girmeyen ayrı sistemlere bölerek, paralel hesaplamanın en yüksek verimini elde edebilir ve senkronizasyon için gereken süreyi azaltabiliriz. Tüm paylaşılan kaynakları hariç tutarak motorun tek tek parçalarını tamamen izole etmek mümkün değildir. Bununla birlikte, nesneler için konum veya yönlendirme verilerinin alınması gibi işlemler için, bireysel sistemler, paylaşılan kaynaklar yerine verilerin yerel kopyalarını kullanabilir. Bu, motorun farklı bölümlerinde veri bağımlılığını en aza indirmenize olanak tanır. Bireysel bir sistem tarafından paylaşılan verilerde yapılan değişiklikler, onları sıraya koyan durum yöneticisine bildirilir. Buna mesajlaşma modu denir. Bu mod görevlerin tamamlanmasının ardından motor sistemlerinin değişiklik bildirimleri aldığını ve buna göre dahili verilerini güncellediğini varsayar. Bu mekanizma, senkronizasyon süresini ve sistemlerin birbirine bağımlılığını önemli ölçüde azaltabilir.

2.1 Yürütme durumları

Yürütme durumu yöneticisinin verimli çalışması için, işlemleri belirli bir saatle senkronize etmeniz önerilir. Bu, tüm sistemlerin aynı anda çalışmasına izin verir. Bu durumda, saat hızının kare hızına karşılık gelmesi gerekmez. Ve saat döngülerinin süresi frekansa bağlı olmayabilir. Bir saat çevrimi, bir çerçeveyi iletmek için gereken süreye karşılık gelecek şekilde seçilebilir (boyutundan bağımsız olarak). Başka bir deyişle, kenelerin sıklığı veya süresi, devlet yöneticisinin özel uygulaması tarafından belirlenir. Şekil 1, tüm sistemlerin aynı saat döngüsünde bir işlemi tamamlamasını gerektirmeyen "serbest" adım adım çalışma modunu göstermektedir. Tüm sistemlerin işlemlerin tek bir saat döngüsünde yürütülmesini tamamladığı mod, "zor" adım modu olarak adlandırılır. Şekil 2'de şematik olarak gösterilmiştir.


Şekil 1. Serbest adım adım modunda yürütme durumu

2.1.1. Ücretsiz adım adım mod
Ücretsiz adım adım modda, tüm sistemler, hesaplamaların bir sonraki bölümünü tamamlamak için gereken önceden belirlenmiş bir süre boyunca sürekli olarak çalışır. Bununla birlikte, "serbest" adı tam anlamıyla alınmamalıdır: sistemler zaman içinde rastgele bir anda senkronize edilmez, yalnızca bir sonraki aşamayı tamamlamak için gereken saat döngüsü sayısını seçmede "özgür"dürler.
Genel olarak, bu modda, durum yöneticisine basit bir durum değişikliği bildirimi göndermek yeterli değildir. Güncellenen veriler de gönderilmelidir. Bunun nedeni, paylaşılan verileri değiştiren sistem çalışır durumdayken, bu verileri bekleyen başka bir sistem güncellemek üzere olabilir. Bu durumda, verilerin daha fazla kopyasının yapılması gerektiğinden daha fazla bellek gerekir. Bu nedenle, "özgür" rejim, tüm durumlar için evrensel bir çözüm olarak kabul edilemez.
2.1.2. Sert adım modu
Bu modda, tüm sistemlerdeki görevlerin yürütülmesi tek bir döngüde tamamlanır. Bu mekanizmanın uygulanması daha basittir ve bildirimle birlikte güncellenmiş verilerin aktarılmasını gerektirmez. Gerçekten de, gerekirse, bir sistem başka bir sistemden (elbette, çalıştırma döngüsünün sonunda) yeni değerler talep edebilir.
Zor modda, hesaplamaları farklı adımlar arasında dağıtarak sözde serbest adımlı bir çalışma modu uygulayabilirsiniz. Bu, özellikle, ilk saat döngüsünde ilk "ortak hedefin" hesaplandığı ve sonraki aşamalarda kademeli olarak rafine edildiği AI hesaplamaları için gerekli olabilir.


Şekil 2. Zor adım adım modunda yürütme durumu

2.2. Veri senkronizasyonu

Birden çok sistem tarafından paylaşılan verilerde yapılan değişiklikler, değişikliklerin çakışmasına neden olabilir. Bu durumda, mesajlaşma sisteminin doğru toplam değeri seçmek için bir algoritma sağlaması gerekir. Aşağıdaki kriterlere dayanan iki ana yaklaşım vardır.
  • Zaman: Son değer, yapılan son değişikliktir.
  • Öncelik: Toplam, en yüksek önceliğe sahip sistem tarafından yapılan değişikliktir. Sistemlerin önceliği aynı ise değişim zamanını da hesaba katabilirsiniz.
Tüm eski veriler (herhangi bir kriter için) basitçe üzerine yazılabilir veya bildirim kuyruğundan çıkarılabilir.
Toplam, değişikliklerin yapıldığı sıraya göre değişebileceğinden, toplam verilerin göreceli değerlerini kullanmak çok zor olabilir. Bu gibi durumlarda mutlak değerler kullanılmalıdır. Ardından, yerel verileri güncellerken sistemler eski değerleri yenileriyle değiştirebilir. En uygun çözüm, belirli duruma bağlı olarak mutlak veya bağıl değerleri seçmektir. Örneğin, değişikliklerin yapılma sırası önemli olduğundan konum ve yön gibi genel veriler mutlak olmalıdır. Parçacıklarla ilgili tüm bilgiler yalnızca içinde depolandığından, örneğin bir parçacık üretim sistemi için bağıl değerler kullanılabilir.

3. Motor

Motoru geliştirirken ana odak noktası, işlevselliğini daha da genişletmek için gereken esnekliktir. Bu, belirli kısıtlamalar altında (örneğin bellek) kullanım için optimize edecektir.
Motor kabaca iki kısma ayrılabilir: çerçeve ve yöneticiler. Çerçeve (bkz. bölüm 3.1), oyunun çalışma zamanında çoğaltılan kısımlarını içerir, yani bunlar birkaç durumda bulunur. Ayrıca ana oyun döngüsünün yürütülmesinde yer alan unsurları da içerir. Yöneticiler (bkz. bölüm 3.2), oyunun mantığını yürütmekten sorumlu olan Singleton nesneleridir.
Aşağıda oyun motorunun bir diyagramı bulunmaktadır.


Şekil 3. Motorun genel mimarisi

Lütfen işlevsel oyun modüllerinin veya sistemlerinin motorun parçası olmadığını unutmayın. Motor onları yalnızca bir araya getirerek bir bağlantı elemanı görevi görür. Bu modüler organizasyon, sistemleri gerektiği gibi yüklemeyi ve boşaltmayı mümkün kılar.

Motor ve sistemlerin etkileşimi, arayüzler kullanılarak gerçekleştirilir. Motora sistem işlevlerine ve sistemlere - motor yöneticilerine erişim sağlayacak şekilde uygulanırlar.
Ayrıntılı bir motor şeması Ek A, Motor Şeması'nda verilmiştir.

Hemen hemen tüm sistemler birbirinden bağımsızdır (bkz. Bölüm 2, "Eşzamanlı Yürütme Durumu"), yani diğer sistemlerin çalışmasını etkilemeden eylemleri paralel olarak gerçekleştirebilirler. Bununla birlikte, sistemlerin birbirleriyle etkileşime girmesi gerekeceğinden, herhangi bir veri değişikliği bazı zorluklara neden olacaktır. Sistemler arasında bilgi alışverişi aşağıdaki durumlarda gereklidir:

  • genel verilerdeki bir değişiklik hakkında başka bir sistemi bilgilendirmek (örneğin, nesnelerin konumu veya yönü);
  • bu sistem için mevcut olmayan işlevleri gerçekleştirmek için (örneğin, AI sistemi, bir ışın kesişim testi gerçekleştirmek için bir nesnenin geometrik veya fiziksel özelliklerini hesaplamak için sisteme döner).
İlk durumda, önceki bölümde açıklanan durum yöneticisi bilgi alışverişini kontrol etmek için kullanılabilir. (Devlet yöneticisi hakkında daha fazla bilgi için bkz. Bölüm 3.2.2, "Devlet yöneticisi".)
İkinci durumda, bir sistemin hizmetlerini diğerinin kullanımı için sağlayacak özel bir mekanizma uygulamak gerekir. Tam tanım bu mekanizma Bölüm 3.2.3 “Servis Yöneticisi”nde açıklanmıştır.

3.1. Çerçeve

Çerçeve, motorun tüm unsurlarını birleştirmek için kullanılır. Global olarak örneklenen yöneticiler hariç, motorun başlatıldığı yer burasıdır. Ayrıca sahne hakkında bilgi depolar. Daha fazla esneklik elde etmek için sahne, genel nesneleri içeren genel bir sahne olarak adlandırılır. Sahnenin çeşitli işlevsel kısımlarını birleştiren kaplardır. Ayrıntılar için bölüm 3.1.2'ye bakın.
Ana oyun döngüsü de çerçevede uygulanmaktadır. Şematik olarak aşağıdaki gibi gösterilebilir.


Şekil 4. Oyunun ana döngüsü

Motor pencereli bir ortamda çalışır, bu nedenle oyun döngüsündeki ilk adımın işletim sistemi pencerelerinden gelen bekleyen mesajları işlemesi gerekir. Bu yapılmazsa, motor işletim sistemi mesajlarına yanıt vermeyecektir. İkinci adımda, zamanlayıcı, görev yöneticisini kullanarak görevleri atar. Bu süreç aşağıda 3.1.1 bölümünde detaylandırılmıştır. Bundan sonra, durum yöneticisi (bkz. bölüm 3.2.2), çalışmasını etkileyebileceği motor sistemlerinde yapılan değişiklikler hakkında bilgi gönderir. Son adımda, yürütme durumuna bağlı olarak, çerçeve, örneğin bir sonraki sahneye geçmek için motorun sonlandırılıp sonlandırılmayacağını veya devam ettirileceğini belirler. Motorun durumuyla ilgili bilgiler, çevre yöneticisi tarafından saklanır. Daha fazla ayrıntı için bölüm 3.2.4'e bakın.

3.1.1. zamanlayıcı
Zamanlayıcı, belirli bir oranda bir yürütme referans saati üretir. Kıyaslama modu, bir sonraki işlemin bir öncekinin tamamlanmasından hemen sonra, döngünün bitmesini beklemeden başlamasını gerektiriyorsa, frekans sınırsız olabilir.
Bir saat sinyalinde, zamanlayıcı, sistemleri çalışma moduna geçirmek için görev yöneticisini kullanır. Serbest adımlama modunda (Bölüm 2.1.1), zamanlayıcı, görevi tamamlamak için kaç saat döngüsüne ihtiyaç duyacaklarını belirlemek için sistemleri yoklar. Anketin sonuçlarına dayanarak, planlayıcı hangi sistemlerin uygulamaya hazır olduğunu ve hangilerinin belirli bir zaman adımında çalışmalarını tamamlayacağını belirler. Bir sistemin yürütülmesi daha uzun sürerse, programlayıcı onay sayısını değiştirebilir. Kesin adım modunda (Bölüm 2.1.2), tüm sistemler aynı saat döngüsünde başlar ve biter, bu nedenle zamanlayıcı tüm sistemlerin yürütmeyi bitirmesini bekler.
3.1.2. Çok yönlü sahne ve nesneler
Genel sahne ve nesneler, diğer sistemlerde uygulanan işlevsellik için kaplardır. Yalnızca motorla etkileşime girmeleri amaçlanmıştır ve başka bir işlev gerçekleştirmezler. Ancak, diğer sistemlerde bulunan işlevlerden yararlanmak için genişletilebilirler. Bu, gevşek bağlantıya izin verir. Nitekim evrensel bir sahne ve nesneler, onlara bağlı olmaksızın diğer sistemlerin özelliklerini kullanabilir. Sistemlerin birbirine bağımlılığını ortadan kaldıran ve aynı anda çalışmalarını sağlayan bu özelliktir.
Aşağıdaki şema, evrensel bir sahnenin ve nesnenin bir uzantısını göstermektedir.


Şekil 5. Evrensel sahne ve nesnenin genişlemesi

Aşağıdaki örnekte uzantıların nasıl çalıştığına bakalım. Diyelim ki evrensel evrensel sahnenin uzantısı gerçekleştirildi, sahne grafik, fiziksel ve diğer özelliklerin kullanımı için genişletildi. Bu durumda, uzantının "grafik" kısmı ekranın başlatılmasından sorumlu olacak ve "fiziksel" kısmı, örneğin yerçekimi kuvveti gibi katı cisimler için fiziksel yasaların uygulanmasından sorumlu olacaktır. Sahneler nesneler içerir, bu nedenle genel bir sahne ayrıca birden çok genel nesne içerir. Genel nesneler ayrıca genişletilebilir veya grafiksel, fiziksel ve diğer özellikleri kullanacak şekilde genişletilebilir. Örneğin, ekranda bir nesnenin çizimi, grafik genişletme işlevleriyle ve katıların etkileşiminin hesaplanması - fiziksel olanlarla gerçekleştirilecektir.

Motor ve sistemlerin etkileşiminin ayrıntılı bir diyagramı Ek B, "Motor ve sistemlerin etkileşimi şeması"nda verilmiştir.
Genel sahnenin ve genel nesnenin, tüm uzantıların diğer uzantılar (yani diğer sistemler) tarafından yapılan değişikliklerden haberdar edilebilmesi için tüm "uzantılarını" eyalet yöneticisine kaydetmekten sorumlu olduğuna dikkat edilmelidir. Bir örnek, fiziksel uzantı tarafından yapılan konum ve yön değişikliklerinin bildirimlerini almak için kayıtlı bir grafik uzantıdır.
Sistem bileşenleriyle ilgili ayrıntılar için bkz. Bölüm 5.2, Sistem Bileşenleri.

3.2. Yöneticiler

Yöneticiler motorun çalışmasını kontrol eder. Bunlar Singleton nesneleridir, yani her tür yönetici yalnızca bir örnekte kullanılabilir. Bu gereklidir, çünkü yönetici kaynaklarının kopyalanması kaçınılmaz olarak fazlalığa yol açacak ve performansı olumsuz etkileyecektir. Ayrıca yöneticiler, tüm sistemler için ortak işlevleri uygulamaktan sorumludur.
3.2.1. Görev Yöneticisi
Görev yöneticisi, iş parçacığı havuzundaki sistem görevlerini yönetmekten sorumludur. Optimum n-katlı ölçeklemeyi sağlamak ve gereksiz iş parçacıklarının atanmasını önlemek, gereksiz işletim sistemi görev değiştirme ek yükünü ortadan kaldırmak için, iş parçacığı havuzu her işlemci için bir iş parçacığı oluşturur.

Zamanlayıcı, görev yöneticisine tamamlanması gereken görevlerin bir listesinin yanı sıra tamamlanması için hangi görevlerin bekleneceği hakkında bilgi sağlar. Bu verileri şuradan alır: farklı sistemler... Her sistem tamamlamak için yalnızca bir görev alır. Bu yönteme fonksiyonel ayrıştırma denir. Bununla birlikte, veri işleme için, bu tür her bir görev, isteğe bağlı sayıda alt göreve bölünebilir (veri ayrıştırma).
Aşağıda, dört çekirdekli bir sistem için iş parçacıkları arasında görevlerin dağıtılmasına ilişkin bir örnek verilmiştir.


Şekil 6. Görev yöneticisi tarafından kullanılan bir iş parçacığı havuzu örneği

Ana görevlere erişim için zamanlayıcı isteklerini işlemeye ek olarak, görev yöneticisi başlatma modunda çalışabilir. İşlem için gerekli yerel veri depolarını başlatabilmeleri için sistemleri her bir iş parçacığından sırayla yoklar.
Bir görev yöneticisini uygulamaya yönelik ipuçları, Ek D, Görevleri Uygulamaya Yönelik İpuçları'nda verilmiştir.

3.2.2. Devlet yöneticisi
Durum yöneticisi, mesajlaşma motorunun bir parçasıdır. Değişiklikleri izler ve bu değişikliklerden etkilenebilecek tüm sistemlere bildirim gönderir. Gereksiz bildirimlerin gönderilmemesi için eyalet yöneticisi, belirli bir durumda hangi sistemlerin bildirimde bulunacağı hakkında bilgi depolar. Bu mekanizma, Gözlemci modeli kullanılarak uygulanır (bkz. Ek C, Gözlemci (Tasarım Modeli)). Kısacası, verilen şablon Konudaki herhangi bir değişikliği izleyen bir "gözlemci"nin kullanımını içerirken, aralarında bir aracı rolü değişiklik denetleyicisi tarafından oynanır.

Mekanizma aşağıdaki gibi çalışır. 1. Gözlemci, değişiklik kontrolörüne (veya durum yöneticisine) değişiklikleri izlemek için hangi varlıkları istediğini söyler. 2. Konu, tüm değişikliklerini kontrolöre bildirir. 3. Çerçeveden gelen bir sinyalde, denetleyici gözlemciye konudaki değişiklikleri bildirir. 4. Gözlemci, deneğe güncellenmiş verileri alması için bir talep gönderir.

Serbest adım modunda (bkz. Bölüm 2.1.1), bu mekanizmanın uygulanması biraz daha karmaşık hale gelir. İlk olarak, güncellenen verilerin değişiklik bildirimi ile birlikte gönderilmesi gerekecektir. Bu modda, istek üzerine gönder uygulanamaz. Gerçekten de, talebin alınması sırasında değişikliklerden sorumlu sistem henüz yürütmeyi tamamlamamışsa, güncellenmiş verileri sağlayamaz. İkinci olarak, bir sistem bir saat döngüsünün sonunda değişiklikleri almaya henüz hazır değilse, durum yöneticisi, onu almak için kayıtlı tüm sistemler hazır olana kadar değiştirilen verileri tutmak zorunda kalacaktır.

Çerçeve bunun için iki durum yöneticisi sağlar: sahne düzeyinde ve nesne düzeyinde değişiklikleri işlemek için. Tipik olarak, sahneler ve nesnelerle ilgili mesajlar birbirinden bağımsızdır, bu nedenle iki ayrı yönetici kullanmak gereksiz verileri işleme ihtiyacını ortadan kaldırır. Ancak sahnenin bir nesnenin durumunu dikkate alması gerekiyorsa, değişiklikleri hakkında bildirim almak için onu kaydedebilirsiniz.

Gereksiz senkronizasyonu önlemek için durum yöneticisi, görev yöneticisi tarafından oluşturulan her iş parçacığı için ayrı bir değişiklik bildirimi kuyruğu oluşturur. Bu nedenle, kuyruğa erişirken herhangi bir senkronizasyon gerekmez. Bölüm 2.2, yürütmeden sonra kuyrukları birleştirmek için kullanılabilecek bir yöntemi açıklar.


Şekil 7. Genel bir nesneye yapılan dahili değişikliklerin bildirimi

Değişiklik bildirimlerinin sırayla gönderilmesi gerekmez. Onları paralel olarak göndermenin bir yolu var. Bir görevi gerçekleştirirken sistem tüm nesneleri ile çalışır. Örneğin, fiziksel nesneler birbirleriyle etkileşirken, fiziksel sistem onların hareketlerini, çarpışmaların hesaplanmasını, yeni etki eden kuvvetleri vb. kontrol eder. Bildirimleri alırken, sistem nesnesi sistemindeki diğer nesnelerle etkileşime girmez. İlişkili genel nesne uzantılarıyla etkileşime girer. Bu, genel nesnelerin artık birbirinden bağımsız olduğu ve aynı anda güncellenebileceği anlamına gelir. Bu yaklaşım, senkronizasyon işlemi sırasında dikkate alınması gereken uç durumları hariç tutmaz. Ancak, yalnızca sıralı olarak hareket edebileceğiniz göründüğünde paralel yürütme modunun kullanılmasına izin verir.

3.2.3. servis müdürü
Servis yöneticisi, sistemlere, aksi takdirde kullanılamayacakları diğer sistemlerdeki özelliklere erişim sağlar. İşlevlere doğrudan değil, arabirimler aracılığıyla erişildiğini anlamak önemlidir. Sistem arayüzleri hakkındaki bilgiler de servis yöneticisinde saklanır.
Sistemlerin birbirine bağımlılığını ortadan kaldırmak için her birinin yalnızca küçük bir hizmet kümesi vardır. Ayrıca, belirli bir hizmeti kullanma yeteneği, sistemin kendisi tarafından değil, hizmet yöneticisi tarafından belirlenir.


Şekil 8. Servis yöneticisi örneği

Servis yöneticisinin başka bir işlevi daha vardır. Sistemlerin diğer sistemlerin özelliklerine erişimini sağlar. Özellikler, mesajlaşma sisteminde iletilmeyen sisteme özel değerlerdir. Bu, bir grafik sistemindeki ekran çözünürlüğünün genişlemesi veya fiziksel bir sistemdeki yerçekiminin büyüklüğü olabilir. Servis yöneticisi bu verileri sistemlere sunar, ancak doğrudan kontrol etmez. Özellik değişikliklerini özel bir kuyruğa koyar ve yalnızca sıralı yürütmeden sonra yayınlar. Lütfen başka bir sistemin özelliklerine erişimin nadiren gerekli olduğunu ve kötüye kullanılmaması gerektiğini unutmayın. Örneğin, konsol penceresinden grafik sisteminde tel kafes modunu açmanız veya kapatmanız veya kullanıcı arayüzünden oynatıcının istediği gibi ekran çözünürlüğünü değiştirmeniz gerekebilir. Bu fırsat esas olarak çerçeveden çerçeveye değişmeyen parametreleri ayarlamak için kullanılır.

3.2.4. çevre yöneticisi
  • Ortam yöneticisi, motor çalışma zamanı ortamını sağlar. İşlevleri şartlı olarak aşağıdaki gruplara ayrılabilir.
  • Değişkenler: Motorun tüm parçaları tarafından kullanılan ortak değişkenlerin adları ve değerleri. Genellikle değişkenlerin değerleri, sahne yüklendiğinde veya belirli olduğunda belirlenir. özel ayarlar... Motor ve çeşitli sistemler bir istek göndererek bunlara erişebilir.
  • Yürütme: Bir sahnenin tamamlanması veya programın yürütülmesi gibi yürütme verileri. Bu parametreler hem sistemlerin kendisi hem de motor tarafından ayarlanabilir ve talep edilebilir.
3.2.5. Platform yöneticisi
Platform yöneticisi, işletim sistemi çağrıları için bir soyutlama uygular ve ayrıca basit soyutlamanın ötesinde ek işlevsellik sağlar. Bu yaklaşımın avantajı, tek bir çağrı içinde birkaç tipik işlevi kapsamasıdır. Yani, her arayan için ayrı ayrı uygulanmaları gerekmez, işletim sistemi çağrılarıyla ilgili ayrıntılarla aşırı yüklenirler.
Örnek olarak, bir sistem dinamik kitaplığı yüklemek için platform yöneticisini aramayı düşünün. Sadece sistemi yüklemekle kalmaz, aynı zamanda fonksiyon giriş noktalarını alır ve kütüphane başlatma fonksiyonunu çağırır. Yönetici ayrıca kitaplık tanımlayıcısını saklar ve motor tamamlandıktan sonra kaldırır.

Platform yöneticisi ayrıca, desteklenen SIMD talimatları gibi işlemci hakkında bilgi sağlamaktan ve işlemler için belirli bir çalışma modunu başlatmaktan sorumludur. Sistemler, sorgu oluşturmak için diğer işlevleri kullanamaz.

4. Arayüzler

Arayüzler, çerçeve, yöneticiler ve sistemler arasındaki iletişim araçlarıdır. Çerçeve ve yöneticiler motorun bir parçasıdır, bu nedenle birbirleriyle doğrudan etkileşim kurabilirler. Sistemler motora ait değildir. Ayrıca, hepsi farklı işlevler yerine getirir, bu da onlarla tek bir etkileşim yöntemi oluşturma ihtiyacına yol açar. Sistemler yöneticilerle doğrudan etkileşime giremediğinden, farklı bir erişim yolu sağlamaları gerekir. Ancak yöneticilerin tüm fonksiyonları sistemlere açık olmamalıdır. Bazıları yalnızca çerçeve için kullanılabilir.

Arayüzler, standart bir erişim yöntemini kullanmak için gereken bir dizi işlevi tanımlar. Bu, çerçevenin belirli sistemlerin uygulama ayrıntılarını bilme ihtiyacını ortadan kaldırır, çünkü bunlarla yalnızca belirli bir dizi çağrı aracılığıyla etkileşime girebilir.

4.1. Konu ve Gözlemci Arayüzleri

Konu ve gözlemci arayüzlerinin temel amacı, hangi gözlemcilere bildirim gönderileceğini kaydetmek ve ayrıca bu bildirimleri göndermektir. Gözlemci ile bağlantının kaydedilmesi ve kesilmesi, arayüzlerinin uygulanmasına dahil olan tüm konular için standart işlevlerdir.

4.2. Yönetici arayüzleri

Yöneticiler, Singleton nesneleri olmalarına rağmen, yalnızca çerçeveye doğrudan erişilebilir. Diğer sistemler, yöneticilere yalnızca genel işlevlerinin yalnızca bir kısmını temsil eden arabirimler aracılığıyla erişebilir. Başlatmadan sonra, arayüz, belirli yönetici işlevleriyle çalışmak için onu kullanan sisteme geçirilir.
Tüm yöneticiler için tek bir arayüz yoktur. Her birinin kendi ayrı arayüzü vardır.

4.3. Sistem arayüzleri

Çerçevenin sistemin bileşenlerine erişebilmesi için arayüzlere ihtiyacı vardır. Onlar olmadan, herkesin desteği yeni sistem motorun ayrı olarak uygulanması gerekir.
Her sistem dört bileşen içerir, bu nedenle dört arabirim olmalıdır. Yani: sistem, sahne, nesne ve görev. Detaylı Açıklama bkz. Bölüm 5, Sistemler. Arayüzler, bileşenlere erişmenin araçlarıdır. Sistem arayüzleri, sahneler oluşturmanıza ve silmenize izin verir. Sahne arayüzleri, sırayla, nesneler oluşturmanıza ve yok etmenize ve ayrıca sistemin ana görevi hakkında bilgi istemenize izin verir. Görev arabirimi, iş parçacığı havuzuna görevler ayarlarken esas olarak görev yöneticisi tarafından kullanılır.
Sistemin bir parçası olan sahne ve nesne, birbirleriyle ve evrensel sahne ve bağlı oldukları nesne ile etkileşime girmek zorunda olduklarından, bunların arayüzleri de özne ve gözlemcinin arayüzlerine dayalı olarak oluşturulur.

4.4. Arayüzleri değiştir

Bu arayüzler, sistemler arasında veri aktarımı için kullanılır. Belirli bir türde değişiklik yapan tüm sistemler böyle bir arabirim uygulamalıdır. Geometri bir örnektir. Geometri arayüzü, bir elemanın konumunu, yönünü ve ölçeğini belirlemek için yöntemler içerir. Geometride değişiklik yapan herhangi bir sistem, değiştirilen verilere erişmek için diğer sistemler hakkındaki bilgilerin gerekli olmaması için böyle bir arayüz uygulamalıdır.

5. Sistemler

Sistemler, oyun işlevselliğinin uygulanmasından sorumlu olan motorun parçasıdır. Onlar olmadan motorun bir anlam ifade etmeyeceği tüm temel görevleri yerine getirirler. Motor ve sistemler arasındaki etkileşim, arayüzler kullanılarak gerçekleştirilir (bkz. Bölüm 4.3, "Sistem Arayüzleri"). Bu, motoru çeşitli sistem türleri hakkında bilgi ile aşırı yüklememek için gereklidir. Arayüzler, motorun tüm uygulama ayrıntılarını dikkate alması gerekmediğinden yeni bir sistem eklemeyi çok daha kolay hale getirir.

5.1. Türler

Motor sistemleri kabaca aşağıdakilere karşılık gelen önceden tanımlanmış birkaç kategoriye ayrılabilir: standart bileşenler oyunlar. Örneğin: geometri, grafikler, fizik (katı çarpışma), ses, girdi işleme, AI ve animasyon.
Standart olmayan işlevlere sahip sistemler ayrı bir kategoriye girer. Belirli bir kategori için verileri değiştiren herhangi bir sistemin, motor bu tür bilgileri sağlamadığından, o kategorinin arayüzünün farkında olması gerektiğini anlamak önemlidir.

5.2. Sistem bileşenleri

Her sistem için birkaç bileşenin uygulanması gerekir. Bunlardan bazıları şunlardır: sistem, sahne, nesne ve görev. Bu bileşenlerin tümü, motorun farklı parçalarıyla etkileşim kurmak için kullanılır.
Aşağıdaki diyagram, çeşitli bileşenler arasındaki etkileşimleri göstermektedir.


Şekil 9. Sistem bileşenleri

Motor sistemleri arasındaki bağlantıların ayrıntılı bir diyagramı Ek B, "Motor ve sistemler arasındaki etkileşim şeması"nda verilmiştir.

5.2.1. sistem
“Sistem” bileşeni veya basitçe sistem, motorun çalışması sırasında pratikte değişmeyecek olan sistem kaynaklarının başlatılmasından sorumludur. Örneğin, grafik sistemi, nerede bulunduklarını belirlemek ve kaynağı kullanırken yüklemeyi hızlandırmak için kaynak adreslerini analiz eder. Ayrıca ekran çözünürlüğünü ayarlar.
Sistem, çerçeve için ana giriş noktasıdır. Kendisi hakkında (örneğin sistemin türü) ve ayrıca sahne oluşturma ve silme yöntemleri hakkında bilgi sağlar.
5.2.2. Faliyet alani, sahne
Sahne bileşeni veya sistem sahnesi, mevcut sahneyle ilişkili kaynakları yönetmekten sorumludur. Genel sahne, işlevselliklerinden yararlanarak işlevselliği genişletmek için sistem sahnelerini kullanır. Bir örnek, yeni bir oyun dünyası yaratmak için kullanılan ve sahneyi başlatırken, içindeki yerçekimi kuvvetlerini belirleyen fiziksel bir sahnedir.
Sahneler, nesneleri yaratma ve yok etme yöntemlerinin yanı sıra sahneyi işlemek için bir “görev” bileşeni ve ona erişmek için bir yöntem sağlar.
5.2.3. Bir obje
Nesne bileşeni veya sistem nesnesi sahneye aittir ve genellikle kullanıcının ekranda gördükleriyle ilişkilendirilir. Genel bir nesne, özelliklerini kendisininmiş gibi göstererek işlevselliği genişletmek için bir sistem nesnesi kullanır.
Bir örnek, bir tahta kirişi ekranda görüntülemek için genel bir nesnenin geometrik, grafik ve fiziksel uzantısıdır. Geometrik özellikler, nesnenin konumunu, yönünü ve ölçeğini içerecektir. Grafik sistemi, onu görüntülemek için özel bir ızgara kullanacaktır. Ve fiziksel sistem, diğer cisimlerle etkileşimleri ve hareket eden yerçekimi kuvvetlerini hesaplamak için ona katı bir cismin özelliklerini verecektir.

Belirli durumlarda, bir sistem nesnesinin, genel bir nesnede veya uzantılarından birinde yapılan değişiklikleri hesaba katması gerekir. Bu amaçla yapılan değişiklikleri takip edecek özel bir ilişki oluşturabilirsiniz.

5.2.4. Görev
Görev bileşeni veya sistem görevi, bir sahneyi işlemek için kullanılır. Görev, görev yöneticisinden sahneyi güncellemek için bir komut alır. Bu, sahne nesnelerinde sistem işlevlerini çalıştırmak için bir sinyaldir.
Bir görevin yürütülmesi alt görevlere bölünebilir ve bunları görev yöneticisini kullanarak daha da fazla sayıda iş parçacığına da dağıtabilir. Bu uygun yol motoru birden fazla işlemciye ölçeklendirme. Bu tekniğe veri ayrıştırma denir.
Sahne görevlerinin güncellenmesi sürecinde nesne değişiklikleriyle ilgili bilgiler durum yöneticisine iletilir. Eyalet yöneticisiyle ilgili ayrıntılar için bkz. bölüm 3.2.2.

6. Tüm bileşenlerin birleştirilmesi

Yukarıda açıklanan tüm unsurlar birbiriyle ilişkilidir ve bir bütünün parçasıdır. Motorun çalışması, aşağıdaki bölümlerde açıklanan kabaca birkaç aşamaya ayrılabilir.

6.1. başlatma aşaması

Motor, yöneticilerin ve çerçevenin başlatılmasıyla başlar.
  • Çerçeve, sahne yükleyiciyi çağırır.
  • Sahnenin hangi sistemleri kullanacağını belirledikten sonra yükleyici, uygun modülleri yüklemek için platform yöneticisini arar.
  • Platform yöneticisi uygun modülleri yükler ve bunları arayüz yöneticisine iletir, ardından onları yeni bir sistem oluşturmaya çağırır.
  • Modül, sistem arabirimini yükleyiciye uygulayan sistem örneğine bir işaretçi döndürür.
  • Servis yöneticisi, sistem modülünün sağladığı tüm servisleri kaydeder.


Şekil 10. Yöneticilerin ve motor sistemlerinin başlatılması

6.2. Sahne yükleme aşaması

Kontrol, sahneyi yükleyen yükleyiciye geri verilir.
  • Yükleyici genel bir sahne oluşturur. Sistem sahnelerini somutlaştırmak için, genel sahnenin işlevselliğini genişleterek sistem arayüzlerini çağırır.
  • Evrensel sahne, her sistem sahnesinin hangi verileri değiştirebileceğini ve hangi değişiklikleri alması gerektiğine ilişkin bildirimleri tanımlar.
  • Jenerik sahne, belirli değişiklikleri yapan ve bunlardan haberdar olmak isteyen sahneleri eşleştirerek, bu bilgileri eyalet yöneticisine iletir.
  • Yükleyici, sahnedeki her nesne için genel bir nesne oluşturur ve ardından hangi sistemlerin genel nesneyi genişleteceğini belirler. Sistem nesneleri arasındaki yazışma, sahneler için kullanılanla aynı şekilde belirlenir. Devlet yöneticisine de geçer.
  • Yükleyici, sistem nesnelerini somutlaştırmak için ortaya çıkan sahne arabirimlerini kullanır ve bunları genel nesneleri genişletmek için kullanır.
  • Zamanlayıcı, sahne arabirimlerini birincil görevleri için sorgular, böylece bu bilgiler çalışma zamanında görev yöneticisine iletilebilir.


Şekil 11. Evrensel sahne ve nesnenin başlatılması

6.3. Oyun Döngüsü Aşaması

  • Platform yöneticisi, mevcut platformun çalışması için gerekli olan pencere mesajlarını ve diğer öğeleri işlemek için kullanılır.
  • Ardından kontrol, çalışmaya devam etmek için saatin sonunu bekleyen zamanlayıcıya geçer.
  • Bir saat döngüsünün sonunda, ücretsiz adım adım modda, zamanlayıcı hangi görevlerin tamamlandığını kontrol eder. Tamamlanan tüm görevler (yani gerçekleştirilmeye hazır) görev yöneticisine aktarılır.
  • Zamanlayıcı, geçerli tikte hangi görevlerin tamamlanacağını belirler ve bunların tamamlanmasını bekler.
  • Zor adım modunda, bu işlemler her ölçü tekrarlanır. Zamanlayıcı, tüm görevleri yöneticiye gönderir ve tamamlanmasını bekler.
6.3.1. Görevi tamamlama
Kontrol, görev yöneticisine aktarılır.
  • Alınan tüm görevlerin bir kuyruğunu oluşturur, ardından ücretsiz iş parçacıkları göründüğünde yürütmeye başlar. (Görev yürütme süreci sistemlere göre farklılık gösterir. Sistemler yalnızca bir görevle çalışabilir veya aynı anda kuyruktan birkaç görevi işleyebilir, böylece paralel yürütme gerçekleştirir.)
  • Yürütme sırasında, görevler tüm sahneyle veya yalnızca belirli nesnelerle çalışarak dahili verilerini değiştirebilir.
  • Sistemler, genel verilerde (örn. konum veya oryantasyon) herhangi bir değişiklik olduğu konusunda bilgilendirilmelidir. Bu nedenle, görev yürütüldüğünde, sistem sahnesi veya nesnesi, herhangi bir değişikliği gözlemciye bildirir. Bu durumda, gözlemci aslında durum yöneticisinin bir parçası olan bir değişiklik denetleyicisi olarak hareket eder.
  • Değişiklik denetleyicisi, daha sonraki işlemler için bir değişiklik bildirimleri kuyruğu oluşturur. Verilen gözlemciyi etkilemeyen değişiklikleri yok sayar.
  • Belirli hizmetleri kullanmak için bir görev, hizmet yöneticisiyle iletişim kurar. Servis yöneticisi ayrıca mesajlaşma motorunda iletilmeye uygun olmayan diğer sistemlerin özelliklerini değiştirmenize de olanak tanır (örneğin, veri giriş sistemi ekran uzantısını değiştirir - grafik sisteminin bir özelliği).
  • Görevler ayrıca ortam değişkenlerini almak ve yürütme durumunu değiştirmek (yürütmeyi duraklatma, sonraki sahneye gitme vb.) için ortam yöneticisiyle iletişime geçebilir.


Şekil 12. Görev yöneticisi ve görevler

6.3.2. Veriler güncelleniyor
Mevcut tik için tüm görevleri tamamladıktan sonra, ana oyun döngüsü veri güncelleme aşamasını başlatmak için eyalet yöneticisini çağırır.
  • Eyalet yöneticisi, birikmiş bildirimleri göndermek için değişiklik kontrolörlerinin her birini sırayla çağırır. Kontrolör, her bir konu için hangi gözlemcilerin değişiklik bildirimleri göndereceğini kontrol eder.
  • Ardından istenen gözlemciyi arar ve ona değişiklik hakkında bilgi verir (bildirim ayrıca konu arayüzüne bir işaretçi içerir). Serbest adım modunda, gözlemci değişiklik kontrolöründen değiştirilmiş verileri alır, ancak sert adım modunda, bunu deneğin kendisinden talep etmelidir.
  • Tipik olarak, sistem nesnesi değişiklik bildirimlerini almakla ilgilenen gözlemciler, aynı genel nesneyle ilişkili diğer sistem nesneleridir. Bu, değişiklik yapma sürecini paralel olarak gerçekleştirilebilecek birkaç göreve ayırmanıza olanak tanır. Senkronizasyon sürecini basitleştirmek için ilgili tüm Genel Nesne uzantılarını tek bir görevde birleştirebilirsiniz.
6.3.3. İlerlemeyi kontrol et ve çık
Oyun döngüsündeki son adım, çalışma zamanının durumunu kontrol etmektir. Bu tür birkaç durum vardır: çalışıyor, duraklatıldı, sonraki sahne vb. "Çalışıyor" durumu seçilirse, döngünün sonraki yinelemesi başlayacaktır. "Çıkış" durumu, döngünün sonu, kaynakların serbest bırakılması ve uygulamadan çıkış anlamına gelir. Diğer durumlar, örneğin "duraklat", "sonraki sahne" vb.

7. Karar

Bu makalenin ana fikri, Bölüm 2, "Paralel Yürütme Durumu"nda özetlenmiştir. İşlevsel ayrıştırma ve veri ayrıştırma sayesinde, yalnızca motorun çoklu iş parçacığını uygulamak değil, aynı zamanda gelecekte daha da fazla sayıda çekirdeğe ölçeklenebilirliğini uygulamak mümkündür. Verilerinizi güncel tutarken senkronizasyon yükünü ortadan kaldırmak için mesajlaşmaya ek olarak durum yöneticilerini kullanın.

Gözlemci modeli, mesajlaşma motorunun bir işlevidir. Motor için uygulamanın en iyi yolunu seçmek için nasıl çalıştığını iyi anlamak önemlidir. Aslında, ortak verilerin senkronizasyonunu sağlayan farklı sistemler arasındaki etkileşim için bir mekanizmadır.

Görev yönetimi, yük dengelemede önemli bir rol oynar. Ek D, bir oyun motoru için etkili bir görev yöneticisi oluşturmaya yönelik ipuçları sağlar.

Gördüğünüz gibi, oyun motoru multithreading, iyi tanımlanmış bir yapı ve mesajlaşma mekanizması sayesinde mümkün. Mevcut ve gelecekteki işlemcilerin performansını önemli ölçüde artırabilir.

Ek A. Motor şeması

İşleme ana oyun döngüsünden başlatılır (bkz. Şekil 4, "Ana oyun döngüsü").


Ek B. Motor ve sistemler arasındaki etkileşim şeması


Ek C. Gözlemci (Tasarım Modeli)

Observer modeli, Object Oriented Design Techniques kitabında detaylı olarak anlatılmıştır. Tasarım Modelleri ", E. Gamma, R. Helm, R. Johnson, J. Vlissides (" Tasarım Modelleri: Yeniden Kullanılabilir Nesneye Yönelik Yazılım Öğeleri ", Gamma E., Helm R., Johnson R., Vlissides J.). Üzerinde ingilizce dili ilk kez 1995 yılında Addison-Wesley tarafından yayınlandı.

Bu modelin ana fikri şudur: Bazı unsurların diğer unsurlardaki değişikliklerden haberdar edilmesi gerekiyorsa, gerekli verileri bulmaya çalışarak olası tüm değişikliklerin listesine bakmak zorunda kalmazlar. Model, değişiklik bildirimlerini göndermek için kullanılan bir aktör ve bir gözlemcinin varlığını varsayar. Gözlemci, konuyla ilgili herhangi bir değişikliği izler. Değişiklik denetleyicisi, bu iki bileşen arasında bir aracı görevi görür. Aşağıdaki diyagram bu ilişkiyi göstermektedir.


Şekil 13. Gözlemci şablonu

Bu modeli kullanma süreci aşağıda açıklanmıştır.

  1. Değişiklik denetleyicisi, gözlemciyi ve haberdar olmak istediği konuyu kaydeder.
  2. Değişiklik denetleyicisi aslında bir gözlemcidir. Gözlemci yerine özneyle birlikte kendini kaydeder. Değişiklik denetleyicisi ayrıca kendi gözlemcileri ve bunlara kayıtlı denekler listesini de tutar.
  3. Bir varlık, değişikliklerinden haberdar olmak isteyen gözlemciler listesine bir gözlemci (yani değişiklik denetleyicisi) ekler. Bazen, gözlemcinin hangi değişikliklerle ilgilendiğini belirleyen değişiklik türü ayrıca belirtilir. Bu, değişiklik bildirimleri gönderme sürecini kolaylaştırmanıza olanak tanır.
  4. Veri veya durum değiştirilirken, özne bir geri arama mekanizması aracılığıyla gözlemciyi bilgilendirir ve değiştirilen türler hakkında bilgi iletir.
  5. Değişiklik denetleyicisi, değişiklikler hakkında bir bildirim kuyruğu oluşturur ve bunları nesnelere ve sistemlere dağıtmak için bir sinyal bekler.
  6. Dağıtım sırasında, değişiklik denetleyicisi gerçek gözlemcilerle konuşur.
  7. Gözlemciler, konudan değişen veriler veya durum hakkında bilgi talep eder (veya bunları bildirimlerle birlikte alır).
  8. Bir gözlemci silinmeden önce veya artık bir konu hakkında bilgilendirilmesi gerekmiyorsa, değişiklik denetleyicisinde o konuya olan aboneliği kaldırır.
Çok var Farklı yollar görev dağılımını uygular. Ancak, çalışan iş parçacığı sayısını mevcut platform mantıksal işlemcilerinin sayısına eşit tutmak en iyisidir. Görevleri belirli bir konuya bağlamamaya çalışın. Farklı sistemlerin görevlerinin yürütme süreleri her zaman çakışmaz. Bu, çalışan iş parçacıkları arasında eşit olmayan iş yükü dağılımına yol açabilir ve verimliliği etkileyebilir. Bu süreci kolaylaştırmak için aşağıdaki gibi görev yönetimi kitaplıklarını kullanın:

Çoklu kullanım teorisini ele aldıktan sonra, pratik bir örnek ele alalım - Pentium 4. Bu işlemcinin geliştirilme aşamasında olan Intel mühendisleri, program arayüzünde değişiklik yapmadan performansını artırmak için çalışmaya devam ettiler. En basit beş yol düşünüldü:
1. Saat frekansını artırın.
2. İki işlemciyi bir mikro devreye yerleştirme.
3. Yeni fonksiyonel blokların tanıtılması.
1. Konveyörün uzantısı.
2. Çoklu iş parçacığı kullanma.
Performansı artırmanın en belirgin yolu, diğer parametreleri değiştirmeden saat hızını artırmaktır. Kural olarak, sonraki her işlemci modeli bir öncekinden biraz daha yüksek saat hızına sahiptir. Ne yazık ki, saat hızında düz bir artışla, geliştiriciler iki sorunla karşı karşıya kalırlar: güç tüketiminde artış (bu, taşınabilir bilgisayarlar ve pille çalışan diğer bilgi işlem cihazları için önemlidir) ve aşırı ısınma (daha verimli ısı oluşturulmasını gerektirir) lavabolar).
İkinci yöntem - bir mikro devre üzerine iki işlemci yerleştirmek - nispeten basittir, ancak mikro devrenin kapladığı alanı ikiye katlamayı içerir. Her işlemciye kendi önbelleği verilirse, bir tabladaki yonga sayısı yarıya iner, ancak bu aynı zamanda üretim maliyetlerinin de iki katına çıkması anlamına gelir. Her iki işlemci için paylaşılan bir önbellek sağlayarak, ayak izinde önemli bir artış önlenir, ancak başka bir sorun ortaya çıkar - işlemci başına önbellek miktarı yarıya iner ve bu da performansı kaçınılmaz olarak etkiler. Ayrıca profesyonel sunucu uygulamaları birden çok işlemcinin kaynaklarını tam olarak kullanabilirken, sıradan masaüstü programlarında dahili paralellik çok daha az gelişmiştir.
Yeni fonksiyonel blokların tanıtılması da zor değil, ancak burada bir denge kurmak önemlidir. Mikro devre, konveyöre tüm bu blokları yükleyebilecek kadar hızlı komutlar veremezse, bir düzine ALU bloğunun anlamı nedir?
Artan sayıda basamağa sahip, görevleri daha küçük bölümlere ayırabilen ve bunları kısa sürelerde işleyebilen bir konveyör, bir yandan üretkenliği artırırken, diğer yandan yanlış tahmin edilen geçişlerin, önbellek eksikliklerinin, kesintilerin olumsuz sonuçlarını artırır. ve işlemcideki normal akış işleme komutlarını bozan diğer olaylar. Ek olarak, genişletilmiş boru hattının yeteneklerini tam olarak gerçekleştirmek için saat frekansını artırmak gerekir ve bu, bildiğimiz gibi, artan güç tüketimine ve ısı dağılımına yol açar.
Son olarak, çoklu iş parçacığı uygulayabilirsiniz. Bu teknolojinin avantajı, aksi takdirde boşta kalacak donanım kaynaklarını getirmek için ek bir program akışı sunmasıdır. Deneysel çalışmaların sonuçlarına dayanarak, Intel geliştiricileri, birçok uygulama için çoklu iş parçacığı uygularken yonga alanında %5'lik bir artışın %25'lik bir performans kazancı sağladığını buldu. Çoklu iş parçacığını destekleyen ilk Intel işlemcisi 2002 Xeon'du. Daha sonra, 3.06 GHz'den başlayarak, Pentium 4 hattına çoklu iş parçacığı eklendi.Intel, Pentium 4 hiper iş parçacığında çoklu iş parçacığı uygulamasını çağırıyor.
Hiper iş parçacığı oluşturmanın temel ilkesi, iki yazılım iş parçacığının (veya işlemlerin - işlemci, işlemler ve yazılım iş parçacıkları arasında ayrım yapmaz) aynı anda yürütülmesidir. İşletim sistemi hiper iş parçacığı kullanmayı düşünüyor Pentium işlemci 4, paylaşılan önbelleklere ve ana belleğe sahip çift işlemcili bir kompleks olarak. İşletim sistemi, her program iş parçacığı için ayrı ayrı zamanlama gerçekleştirir. Böylece iki uygulama aynı anda çalışabilir. Örneğin, posta programı mesaj gönderebilir veya alabilir arka fon kullanıcı etkileşimli uygulamayla etkileşime girerken - yani, arka plan programı ve kullanıcı programı, sistemde iki işlemci varmış gibi aynı anda çalışır.
Birden çok program iş parçacığı olarak çalıştırılabilen uygulama programları, her iki "sanal işlemciyi" de kullanabilir. Örneğin, video düzenleme programları genellikle kullanıcıların tüm karelere filtre uygulamasına izin verir. Bu filtreler, çerçevelerin parlaklığını, kontrastını, renk dengesini ve diğer özelliklerini ayarlar. Böyle bir durumda, program çift kareleri işlemek için bir sanal işlemci ve tek kareleri işlemek için başka bir sanal işlemci atayabilir. Bu durumda iki işlemci birbirinden tamamen bağımsız çalışacaktır.
Yazılım iş parçacıkları aynı donanım kaynaklarına eriştiği için bu iş parçacıklarının koordinasyonu gereklidir. Hyperthreading bağlamında Intel, kaynak paylaşımını yönetmek için dört faydalı strateji belirlemiştir: kaynak çoğaltma ve zor, eşik ve tam kaynak paylaşımı. Bu stratejilere bir göz atalım.
Kaynak çoğaltma ile başlayalım. Bildiğiniz gibi, program akışlarını düzenlemek amacıyla bazı kaynaklar çoğaltılır. Örneğin, her program iş parçacığı bireysel kontrol gerektirdiğinden, ikinci bir talimat sayacına ihtiyaç vardır. Ek olarak, mimari kayıtların (EAX, EBX, vb.) fiziksel kayıtlara eşlenmesi için ikinci bir tablonun girilmesi gerekir; Benzer şekilde, kesme denetleyicisi çoğaltılır, çünkü her bir iş parçacığı için kesme işleme ayrı ayrı yapılır.
Aşağıdaki teknik zor bölüm program akışları arasında kaynaklar (bölümlü kaynak paylaşımı). Örneğin, işlemci, boru hattının iki işlevsel aşaması arasında bir kuyruk sağlıyorsa, yuvaların yarısı iş parçacığı 1'e, diğer yarısı iş parçacığı 2'ye verilebilir. Kaynakların paylaşılması kolaydır, dengesizliğe yol açmaz ve program iş parçacıklarının birbirinden tam bağımsızlığını sağlar. Tüm kaynakların eksiksiz paylaşımı ile bir işlemci aslında ikiye dönüşür. Öte yandan, bir program iş parçacığının ikinci iş parçacığı için yararlı olabilecek kaynakları kullanmadığı, ancak erişim yetkisinin olmadığı bir durum ortaya çıkabilir. Sonuç olarak, aksi takdirde kullanılabilecek kaynaklar atıl durumda kalır.
Sabit paylaşımın tersi tam kaynak paylaşımıdır. Bu şemada, herhangi bir program iş parçacığı gerekli kaynaklara erişebilir ve bunlara erişim isteklerinin alındığı sırayla hizmet verilir. Öncelikle toplama ve çıkarma işlemlerinden oluşan hızlı bir akışın, çarpma ve bölme işlemlerini uygulayan yavaş bir akışla birlikte var olduğu bir durumu düşünün. Talimatlar, çarpma ve bölme işlemlerinden daha hızlı bellekten çağrılırsa, yavaş iş parçacığı içinde çağrılan ve ardışık düzende sıraya alınan talimatların sayısı giderek artacaktır. Sonunda, bu komutlar kuyruğu dolduracak, sonuç olarak, yer darlığı nedeniyle hızlı akış duracaktır. Eksiksiz kaynak paylaşımı, ortak kaynakların optimal olmayan kullanımı sorununu çözer, ancak bunların tüketiminde bir dengesizlik yaratır - bir iş parçacığı diğerini yavaşlatabilir veya durdurabilir.
Ara şema, eşik kaynak paylaşımı çerçevesinde uygulanmaktadır. Bu şemaya göre, herhangi bir program iş parçacığı dinamik olarak belirli (sınırlı) miktarda kaynak alabilir. Çoğaltılan kaynaklara uygulandığında, bu yaklaşım, kaynakların elde edilememesi nedeniyle program iş parçacıklarından biri için kesinti tehdidi olmaksızın esneklik sağlar. Örneğin, iş parçacıklarının her birinin komut kuyruğunun 3/4'ünden fazlasını işgal etmesini yasaklarsanız, yavaş bir iş parçacığının artan kaynak tüketimi, hızlı bir iş parçacığının yürütülmesini engellemeyecektir.
Pentium 4 hiper iş parçacığı modeli, farklı kaynak paylaşım stratejilerini birleştirir. Böylece, her bir strateji ile ilgili tüm problemler çözülmeye çalışılır. Çoğaltma, her iki program iş parçacığı tarafından sürekli olarak ihtiyaç duyulan kaynaklarla ilgili olarak uygulanır (özellikle talimat sayacı, kayıt eşleme tablosu ve kesme denetleyicisi ile ilgili olarak). Bu kaynakların çoğaltılması, mikro devrenin alanını sadece% 5 arttırır - katılıyorum, çoklu kullanım için oldukça makul bir ödeme. Tek bir iş parçacığı (örneğin, önbellek satırları) tarafından yakalanmalarının neredeyse imkansız olduğu bir ciltte bulunan kaynaklar dinamik olarak tahsis edilir. İşlem hattının çalışmasını kontrol eden kaynaklara erişim (özellikle sayısız kuyruğu) bölünmüştür - yuvaların yarısı her program iş parçacığına atanır. Pentium 4 Netburst mimarisinin ana boru hattı Şek. 8.7; bu çizimdeki beyaz ve gri alanlar, beyaz ve gri program akışları arasındaki kaynak tahsis mekanizmasını temsil eder.
Gördüğünüz gibi, bu çizimdeki tüm kuyruklar ayrılmıştır - her program dizisine yuvaların yarısı tahsis edilmiştir. Hiçbir iş parçacığı diğerinin çalışmasını kısıtlayamaz. Dağıtım ve ikame bloğu da bölünmüştür. Zamanlayıcı kaynakları dinamik olarak paylaşılır, ancak bazı eşiklere dayalıdır, bu nedenle hiçbir iş parçacığı kuyruktaki tüm yuvaları işgal edemez. Konveyörün diğer tüm aşamaları için tam bir ayırma gerçekleşir.
Ancak, çoklu kullanım o kadar basit değil. Bu ilerici tekniğin bile dezavantajları vardır. Katı kaynak paylaşımı önemli bir ek yük getirmez, ancak özellikle eşiklerle ilgili olarak dinamik bölümleme, çalışma zamanında kaynak tüketiminin izlenmesini gerektirir. Ek olarak, bazı durumlarda programlar çoklu iş parçacığı olmadan onunla olduğundan çok daha iyi performans gösterir. Örneğin, iki iş parçacığınız varsa, her birinin düzgün çalışması için önbelleğin 3/4'üne ihtiyaç duyduğunu varsayalım. Sırayla yürütülürlerse, her biri az sayıda önbellek kaçırmayla (bildiğiniz gibi, ek maliyetlerle ilişkili) yeterli verimlilik gösterir. Paralel yürütme durumunda, her birinde önemli ölçüde daha fazla önbellek kaybı olur ve sonuç, çoklu iş parçacığı olmadan olduğundan daha kötü olur.
RepPit 4'ün çoklu iş parçacığı mekanizması hakkında daha fazla bilgi bulunabilir.

Çoklu kullanım teorisini ele aldıktan sonra, pratik bir örnek ele alalım - Pentium 4. Bu işlemcinin geliştirilme aşamasında olan Intel mühendisleri, program arayüzünde değişiklik yapmadan performansını artırmak için çalışmaya devam ettiler. En basit beş yol düşünüldü:

Saat frekansını arttırmak;

İki işlemcinin bir mikro devreye yerleştirilmesi;

Yeni fonksiyonel blokların tanıtılması;

Konveyörün uzatılması;

Çoklu iş parçacığı kullanma.

Performansı artırmanın en belirgin yolu, diğer parametreleri değiştirmeden saat hızını artırmaktır. Kural olarak, sonraki her işlemci modeli bir öncekinden biraz daha yüksek saat hızına sahiptir. Ne yazık ki, saat hızında düz bir artışla, geliştiriciler iki sorunla karşı karşıya kalırlar: güç tüketiminde artış (bu, taşınabilir bilgisayarlar ve pille çalışan diğer bilgi işlem cihazları için önemlidir) ve aşırı ısınma (daha verimli ısı oluşturulmasını gerektirir) lavabolar).

İkinci yöntem - bir mikro devre üzerine iki işlemci yerleştirmek - nispeten basittir, ancak mikro devrenin kapladığı alanı ikiye katlamayı içerir. Her işlemciye kendi önbelleği verilirse, bir tabladaki yonga sayısı yarıya iner, ancak bu aynı zamanda üretim maliyetlerinin de iki katına çıkması anlamına gelir. Her iki işlemci için paylaşılan bir önbellek sağlayarak, ayak izinde önemli bir artış önlenir, ancak başka bir sorun ortaya çıkar - işlemci başına önbellek miktarı yarıya iner ve bu da performansı kaçınılmaz olarak etkiler. Ayrıca profesyonel sunucu uygulamaları birden çok işlemcinin kaynaklarını tam olarak kullanabilirken, sıradan masaüstü programlarında dahili paralellik çok daha az gelişmiştir.

Yeni fonksiyonel blokların tanıtılması da zor değil, ancak burada bir denge kurmak önemlidir. Mikro devre, konveyöre tüm bu blokları yükleyebilecek kadar hızlı komutlar veremezse, bir düzine ALU bloğunun anlamı nedir?

Artan sayıda basamağa sahip, görevleri daha küçük bölümlere ayırabilen ve bunları kısa sürelerde işleyebilen bir konveyör, bir yandan üretkenliği artırırken, diğer yandan yanlış tahmin edilen geçişlerin, önbellek eksikliklerinin, kesintilerin olumsuz sonuçlarını artırır. ve işlemcideki normal akış işleme komutlarını bozan diğer olaylar. Ek olarak, genişletilmiş boru hattının yeteneklerini tam olarak gerçekleştirmek için saat frekansını artırmak gerekir ve bu, bildiğimiz gibi, artan güç tüketimine ve ısı dağılımına yol açar.

Son olarak, çoklu iş parçacığı uygulayabilirsiniz. Bu teknolojinin avantajı, aksi takdirde boşta kalacak donanım kaynaklarını getirmek için ek bir program akışı sunmasıdır. Deneysel çalışmaların sonuçlarına dayanarak, Intel geliştiricileri, birçok uygulama için çoklu iş parçacığı uygularken yonga alanında %5'lik bir artışın %25'lik bir performans kazancı sağladığını buldu. Çoklu iş parçacığını destekleyen ilk Intel işlemcisi 2002 Heon'du. Daha sonra, 3.06 GHz'den başlayarak, Pentium 4 hattına çoklu iş parçacığı eklendi.Intel, Pentium 4 hiper iş parçacığında çoklu iş parçacığı uygulamasını çağırıyor.

Tanıtım. Bilgisayar teknolojisi hızla gelişiyor. Bilgi işlem cihazları daha güçlü, daha kompakt ve daha kullanışlı hale geliyor, ancak son zamanlarda cihazların performansını iyileştirmek büyük bir sorun haline geldi. 1965'te Gordon Moore (Intel'in kurucularından biri) "tümleşik bir devre çipine yerleştirilen transistörlerin sayısının her 24 ayda bir ikiye katlandığı" sonucuna vardı.

Çok işlemcili sistemler oluşturma alanındaki ilk gelişmeler 70'lerde başladı. Uzun bir süre boyunca, geleneksel tek çekirdekli işlemcilerin performansı, çip üzerindeki transistör sayısında eşzamanlı bir artışla birlikte saat frekansını artırarak (performansın% 80'ine kadar sadece saat frekansı tarafından belirlendi) arttı. Fiziğin temel yasaları bu süreci durdurdu: çipler aşırı ısınmaya başladı, teknolojik olan silikon atomlarının boyutuna yaklaşmaya başladı. Tüm bu faktörler şu gerçeği ortaya çıkarmıştır:

  • kaçak akımlar arttı, bunun sonucunda ısı üretimi ve güç tüketimi arttı.
  • işlemci bellekten çok daha "hızlı" hale geldi. RAM'e erişimdeki ve önbelleğe veri yüklemedeki gecikme nedeniyle performans düştü.
  • "von Neumann darboğazı" diye bir şey var. Bir program yürütülürken işlemci mimarisinin verimsizliği anlamına gelir.

Çok işlemcili sistemler (sorunu çözmenin yollarından biri olarak), pahalı ve çok işlemcili sistemlerin üretilmesi zor olduğu için yaygın olarak kullanılmadı. anakartlar... Buna dayanarak, verimlilik başka şekillerde arttı. Çoklu okuma kavramının etkili olduğu ortaya çıktı - birkaç komut akışının aynı anda işlenmesi.

Bir işlemcinin tek bir çekirdek üzerinde birden çok iş parçacığı yürütmesine olanak tanıyan Hyper-Threading Teknolojisi (HTT) veya Hyper-Threading Teknolojisi. Birçok uzmana göre, çok çekirdekli işlemcilerin oluşturulması için bir ön koşul haline gelen HTT'dir. Aynı anda birden çok iş parçacığı yürüten bir işlemciye iş parçacığı düzeyinde paralellik (TLP — iş parçacığı düzeyinde paralellik) denir.

Çok çekirdekli bir işlemcinin potansiyelini açığa çıkarmak için yürütülebilir bir program, her zaman elde edilemeyen tüm hesaplama çekirdeklerini kullanmalıdır. Yalnızca bir çekirdek kullanabilen eski sıralı programlar artık yeni nesil işlemcilerde daha hızlı çalışmayacak, bu nedenle programcılar yeni mikroişlemcilerin geliştirilmesine giderek daha fazla dahil oluyor.

1. Genel kavramlar

Mimari en geniş anlamıyla birçok unsurdan oluşan karmaşık bir sistemin tanımıdır.

Geliştirme sürecinde, yarı iletken yapılar (mikro devreler) gelişir, bu nedenle, yapı işlemcilerinin ilkeleri, bileşimlerine dahil edilen öğelerin sayısı, etkileşimlerinin düzenlenme şekli sürekli değişmektedir. Bu nedenle, aynı temel tasarım ilkelerine sahip CPU'lara genellikle aynı mimarinin işlemcileri denir. Ve bu ilkelerin kendilerine işlemci mimarisi (veya mikro mimari) denir.

Bir mikroişlemci (veya işlemci), bir bilgisayarın ana bileşenidir. Bilgileri işler, programları yürütür ve sistemdeki diğer cihazları kontrol eder. Programların ne kadar hızlı çalışacağı işlemcinin gücüne bağlıdır.

Çekirdek, herhangi bir mikroişlemcinin bel kemiğidir. Bir silikon çip üzerine yerleştirilmiş milyonlarca transistörden oluşur. Mikroişlemci, kayıt adı verilen özel hücrelere bölünmüştür. genel amaçlı(RON) İşlemcinin toplam işi, bellekten komutları ve verileri belirli bir sırayla almak ve yürütmekten ibarettir. Ek olarak, bilgisayarın hızını artırmak için mikroişlemci dahili bir önbellek ile donatılmıştır. Önbellek iç hafıza tampon olarak kullanılan işlemci (RAM ile iletişimde kesintilere karşı koruma sağlamak için).

IBM uyumlu PC'lerde kullanılan Intel işlemciler binden fazla talimata sahiptir ve genişletilmiş talimat setine sahip işlemciler olarak adlandırılır - CISC işlemcileri (CISC - Karmaşık Komut Seti Hesaplama).

1.1 Yüksek performanslı bilgi işlem. paralellik

Bilgisayar teknolojisinin gelişim hızının izlenmesi kolaydır: saniyede birkaç bin işlem performansına sahip ENIAC'tan (genel kullanım için ilk elektronik dijital bilgisayar) süper bilgisayar Tianhe-2'ye (saniyede 1000 trilyon kayan nokta işlemi) kadar. Bu, hesaplama hızının 60 yılda bir trilyon kat arttığı anlamına gelir. Yüksek performanslı bilgi işlem sistemlerinin oluşturulması, en zor bilimsel ve teknik sorunlardan biridir. Hesaplamaların hızı göz önüne alındığında teknik araçlar sadece birkaç milyon kat büyüdü, genel bilgi işlem hızı trilyonlarca kat arttı. Bu etki, hesaplamanın tüm aşamalarında paralelliğin kullanılması nedeniyle elde edilir. Paralel hesaplama, rasyonel bellek tahsisi, bilgi aktarımı için güvenilir yöntemler ve hesaplama süreçlerini koordine etmek için bir araştırma gerektirir.

1.2 Simetrik çoklu işlem

Simetrik Çoklu İşleme (kısaltılmış SMP) veya simetrik çoklu işlem, birden çok işlemcinin paylaşılan belleğe erişimi olduğu çok işlemcili sistemlerin özel bir mimarisidir. Bu, son zamanlarda oldukça yaygın olarak kullanılan çok yaygın bir mimaridir.

SMP kullanırken, bir bilgisayarda birkaç işlemci aynı anda çalışır ve her biri kendi göreviyle çalışır. Yüksek kaliteli bir işletim sistemine sahip bir SMP sistemi, görevleri işlemciler arasında rasyonel bir şekilde dağıtarak her birine eşit bir yük sağlar. Ancak, bellek erişimiyle ilgili bir sorun vardır, çünkü tek işlemcili sistemlerin bile bunu yapması nispeten uzun zaman alır. Böylece, SMP'de RAM'e erişim sırayla gerçekleşir: önce bir işlemci, sonra ikincisi.

Yukarıda sayılan özelliklerinden dolayı SMP sistemleri sadece bilimsel alanda, endüstride, işletmede ve son derece nadiren çalışma ofislerinde kullanılmaktadır. Donanım uygulamasının yüksek maliyetine ek olarak, bu tür sistemler, görevlerin çok iş parçacıklı yürütülmesini sağlayan çok pahalı ve yüksek kaliteli yazılımlar gerektirir. Düzenli programlar (oyunlar, metin editörleri) bu düzeyde bir paralellik sağlamadıkları için SMP sistemlerinde etkin bir şekilde çalışmayacaktır. Herhangi bir programı bir SMP sistemi için uyarlarsanız, tek işlemcili sistemlerde çalışmak son derece verimsiz hale gelir ve bu da aynı programın farklı sistemler için birkaç versiyonunu oluşturma ihtiyacına yol açar. Örneğin, çok işlemcili sistemleri destekleyen ABLETON LIVE programı (müzik oluşturmak ve Dj setleri hazırlamak için tasarlanmıştır) bir istisnadır. Çok işlemcili bir sistemde normal bir program çalıştırırsanız, yine de tek işlemcili bir sisteme göre biraz daha hızlı çalışacaktır. Bunun nedeni, başka bir boş işlemcide yürütülen donanım kesintisi (çekirdek tarafından işlenmesi için programı durdurma).

Bir SMP sistemi (paralel hesaplamaya dayalı diğer herhangi bir sistem gibi), bellek veriyolu bant genişliği gibi bir bellek parametresine artan gereksinimler getirir. Bu genellikle sistemdeki işlemci sayısını sınırlar (modern SMP sistemleri 16 işlemciye kadar verimli çalışır).

İşlemciler ortak belleğe sahip oldukları için akılcı kullanımına ve veri koordinasyonuna ihtiyaç vardır. Çok işlemcili bir sistemde, birden çok önbelleğin paylaşılan bir bellek kaynağı için çalıştığı ortaya çıktı. Önbellek tutarlılığı, paylaşılan bir kaynak için ayrı önbelleklerde depolanan verilerin bütünlüğünü sağlayan bir önbellek özelliğidir. Bu konsept- birkaç çekirdeğin paylaşılan belleğe erişebildiği bellek tutarlılığı kavramının özel bir durumu (modern çok çekirdekli sistemlerde her yerde bulunur). Bu kavramları genel hatlarıyla tanımlarsak, resim şu şekilde olacaktır: Aynı veri bloğu, verilerin farklı şekillerde işlendiği farklı önbelleklere yüklenebilir.

Herhangi bir veri değişikliği bildiriminin kullanılmaması bir hataya neden olacaktır. Önbellek tutarlılığı, bu tür çakışmaları çözmek ve önbelleklerde veri tutarlılığını korumak için tasarlanmıştır.

SMP sistemleri, Flynn bilgi işlem sistemleri sınıflandırmasının (Stanford Üniversitesi profesörü, Palyn Associates'in kurucu ortağı) MIMD'nin (çoklu talimatlı çoklu veri) bir alt grubudur. Bu sınıflandırmaya göre hemen hemen tüm paralel sistemler MIMD olarak sınıflandırılabilir.

Çok işlemcili sistemlerin türlere ayrılması, bellek kullanımı ilkesine göre bölünme temelinde gerçekleşir. Bu yaklaşım, aşağıdaki önemli türleri ayırt etmeyi mümkün kılmıştır.

çok işlemcili sistemler - çok işlemcili (paylaşılan paylaşılan belleğe sahip çok işlemcili sistemler) ve çok bilgisayarlı (ayrı belleğe sahip sistemler). Paralel hesaplamalarda kullanılan paylaşılan veriler senkronizasyon gerektirir. Veri senkronizasyonu görevi en önemli sorunlardan biridir ve çözümü çok işlemcili ve çok çekirdekli geliştirmede ve buna bağlı olarak gerekli yazılım mühendisler ve programcılar için bir önceliktir. Fiziksel olarak bellek ayrılarak veri paylaşımı yapılabilir. Bu yaklaşıma tek tip olmayan bellek erişimi (NUMA) denir.

Bu sistemler şunları içerir:

  • Veri sunumu için yalnızca bireysel işlemci önbelleklerinin kullanıldığı sistemler (yalnızca önbellek bellek mimarisi).
  • Farklı işlemciler için yerel önbelleklerin tutarlılığını sağlayan sistemler (önbellek uyumlu NUMA).
  • Donanım tabanlı önbellek tutarlılığı (önbellek uyumlu olmayan NUMA) olmadan bireysel işlemci belleğine paylaşılan erişime sahip sistemler.

Dağıtılmış paylaşılan bellek kullanılarak çok işlemcili sistemler oluşturma sorununun basitleştirilmesi sağlanır, ancak bu yöntem paralel programlamanın karmaşıklığında gözle görülür bir artışa yol açar.

1.3 Eşzamanlı çoklu kullanım

Simetrik çoklu işlemenin yukarıdaki dezavantajlarının tümüne dayanarak, performansı artırmak için başka yollar geliştirmek ve geliştirmek mantıklıdır. İşlemcideki her bir transistörün çalışmasını analiz ederseniz, çok fazla şeye dikkat edebilirsiniz. ilginç gerçek- hesaplama işlemlerinin çoğunu gerçekleştirirken, işlemcinin tüm bileşenleri dahil değildir (son araştırmalara göre, tüm transistörlerin yaklaşık %30'u). Bu nedenle, işlemci örneğin basit bir aritmetik işlem gerçekleştirirse, işlemcinin çoğu boştadır, bu nedenle diğer hesaplamalar için kullanılabilir. Dolayısıyla, işlemci şu anda gerçek işlemler yapıyorsa, boş kısma bir tamsayı aritmetik işlemi yüklenebilir. İşlemci üzerindeki yükü artırmak için, işlemcinin donanım mantığında çok fazla karmaşıklık gerektiren işlemlerin spekülatif (veya ileriye dönük) yürütülmesini oluşturabilirsiniz. Programda birbirinden bağımsız olarak yürütülebilecek iş parçacıklarını (komut dizilerini) önceden tanımlarsanız, bu, görevi önemli ölçüde basitleştirecektir (bu yöntem donanım düzeyinde kolayca uygulanır). Dean Tulsen'e (1955'te Washington Üniversitesi'nde geliştirilmiştir) ait olan bu fikir, eşzamanlı çoklu iş parçacığı olarak adlandırılır. Daha sonra Intel tarafından hyper threading adı altında geliştirildi. Böylece, birden çok iş parçacığı yürüten bir işlemci, işletim sistemi tarafından algılanır. Windows sistemiÇoklu işlemciler gibi. Bu teknolojinin kullanımı yine uygun bir yazılım seviyesi gerektirir. Çoklu kullanım teknolojisini kullanmanın maksimum etkisi yaklaşık %30'dur.

1.4 Çok çekirdekli

Çoklu iş parçacığı teknolojisi, çok çekirdekli bir yazılım uygulamasıdır. Performansta daha fazla artış, her zaman olduğu gibi, işlemcinin donanımında değişiklik gerektirir. Sistemlerin ve mimarilerin karmaşıklığı her zaman etkili değildir. Karşıt bir görüş var: “ustaca olan her şey basit!”. Gerçekten de, bir işlemcinin performansını artırmak için, saat frekansını artırmak, mantıksal ve donanım bileşenlerini karmaşık hale getirmek hiç de gerekli değildir, çünkü sadece mevcut teknolojiyi rasyonelleştirmek ve iyileştirmek yeterlidir. Bu yöntem çok faydalıdır - işlemcinin ısı yayılımını arttırma problemini çözmeye gerek yoktur, mikro devrelerin üretimi için yeni pahalı ekipmanların geliştirilmesi. Bu yaklaşım, çok çekirdekli teknoloji çerçevesinde uygulandı - tek bir kristal üzerinde birkaç hesaplama çekirdeğinin uygulanması. Orijinal işlemciyi alır ve performansı artırmanın çeşitli yöntemlerini uygularken performans kazanımlarını karşılaştırırsak, çok çekirdekli teknolojinin kullanımının en iyi seçenek olduğu açıktır.

Simetrik çok işlemcili ve çok çekirdekli mimarileri karşılaştırırsak, neredeyse aynı oldukları ortaya çıkacaktır. Çekirdek önbellek çok düzeyli olabilir (yerel ve paylaşılan ve RAM'den gelen veriler doğrudan L2 önbelleğine yüklenebilir). Üreticiler, çok çekirdekli işlemci mimarisinin dikkate alınan avantajlarına dayanarak buna odaklanır. bu teknoloji uygulanması oldukça ucuz ve evrensel olduğu ortaya çıktı, bu da onu geniş bir pazara getirmeyi mümkün kıldı. Ek olarak, bu mimari Moore Yasasında kendi ayarlamalarını yaptı: "Bir işlemcideki bilgi işlem çekirdeklerinin sayısı her 18 ayda bir ikiye katlanır."

Modern bilgisayar donanımı pazarına bakarsanız, dört ve sekiz çekirdekli işlemcilere sahip cihazların hakim olduğunu görebilirsiniz. Ayrıca işlemci üreticileri, yakında yüzlerce işlemci çekirdeğine sahip işlemcilerin piyasaya çıkacağını iddia ediyor. Daha önce birçok kez söylendiği gibi, çok çekirdekli bir mimarinin tüm potansiyeli ancak yüksek kaliteli yazılımlarla ortaya çıkar. Bu nedenle, bilgisayar donanımı ve yazılımının üretim alanı çok yakından ilişkilidir.