İçeriğe atla

NUMA

NUMA, Düzensiz Bellek Erişimi veya Düzensiz Bellek MimarisiNon-Uniform Memory Access veya Non-Uniform Memory Architecture” (NUMA) çok işlemcililerde bellek erişim zamanının belleğin işlemci üzerindeki yerine bağlı olduğu bir bilgisayar belleği tasarımıdır. NUMA altında bir işlemci kendi yerel belleğine yerel olmayan bellekten daha hızlı bir şekilde ulaşır, diğer bir ifadeyle, bir başka işlemcinin yerel belleğinden veya işlemciler arasında paylaşılan bellekten daha hızlı erişir.

NUMA mimarileri simetrik çoklu işleme (SMP) mimarilerinden başlayarak mantıksal bir ölçeklemeyi takip eder. Bu ürünlerin ticari gelişimi 1990’lı yıllarda Convex Computer (daha sonra HP oldu), SGI, Sequent ve Data General ile başladı. Bu şirketler tarafından geliştirilen teknikler çeşitli Unix benzeri işletim sisteminde olduğu gibi bir ölçüye kadar Windows NT ve Microsoft Windows’un ileri versiyonlarında görülmektedir.

Temel kavramlar

Modern CPU’lar bağlı oldukları ana bellekten önemli ölçüde daha hızlı çalışırlar. Yüksek hızlı hesaplamalar ve süper bilgisayarların ilk zamanlarında CPU genellikle bellekten daha yavaş çalışırdı. Bu durum her ikisinin performans çizgilerinin kesiştiği 1970'li yıllara kadar böyle devam etti. O tarihlerden bu yana CPU’lar her geçen gün daha da artan bir şekilde veriye doymuyor, bellek erişiminin tamamlanması için beklemek zorunda kalıyorlar. 1980'lerin ve 1990'ların süper bilgisayar tasarımları daha hızlı işlemciler yerine yüksek hızlı bellek erişimi sağlamak ve bilgisayarları büyük veri kümeleri üzerinde diğer sistemlerin erişemeyeceği hızlarda çalıştırmaya odaklanmıştı.

Modern bir bilgisayardan yüksek performans çıkartmanın anahtarı bellek erişim sayısını sınırlamaktan geçmektedir. Ticari işlemciler söz konusu olduğunda bunun anlamı gittikçe artan miktarda yüksek hızlı ön bellek belleği yerleştirmek ve “ön bellek kayıplarını” önleyebilmek için gittikçe artan karmaşıklıkta sofistike algoritmalar kullanmaktır. Fakat işletim sistemlerinin boyutlarındaki dramatik artış ve üzerlerinde koşan uygulamalar ön bellek işleme konusundaki bu gelişmeleri bir anlamda ikinci planda bırakmıştır. Çok işlemcili sistemler bu sorunu daha da beter hale getirmektedir. Bu yüzden artık bir sistemin birden fazla işlemcisi açlık çekmekte, çünkü her bir işlemci belleğe ayrı zamanlarda erişebilmektedir.

NUMA bu sorunu her bir işlemciye ayrı bir bellek atayarak çözmeye çalışmaktadır. Birden fazla işlemci aynı belleğe erişmeye çalıştığında oluşacak performans düşüşünden de kaçınılmasına çalışmaktadır. Yayılı veri ile ilgili sorunlar söz konusu olduğunda (sunucular ve benzeri uygulamalarda sık görülür), NUMA tek bir paylaşılan bellek üzerindeki performansı kabaca bir hesapla işlemci (veya ayrı bellek bankaları) sayısının bir faktörü kadar artırır.

Tabii ki bütün bunlar tek bir göreve indirgenerek sınırlandırılamaz, yani birden fazla işlemci aynı anda aynı verilere ihtiyaç duyuyor olabilir. NUMA sistemleri bu tür vakalarla başa çıkabilmek için verinin bankalar arasında hareketini sağlamak üzere ilave donanım ve yazılıma sahiptirler. Birden fazla işlemcinin aynı anda aynı belleğe erişmeye çalışması söz konusu bankalara bağlı işlemcilerin hızlarında düşüşlere neden olur. NUMA belirli herhangi bir zaman kesitinde sistemde koşan görevin tabiatına tam olarak uygun harekete yol açacağından sistemin tamamının hızında da bir artışa neden olacaktır.

Ön bellek uyumlu NUMA (ccNUMA)

Hemen hemen bütün CPU mimarileri bellek erişiminde referans lokallemesi kullanımı için ön bellek adı verilen, paylaşılmayan ve çok hızlı bir bellek parçası kullanır. Ön bellek eş evreliliği NUMA ile paylaşılan bellek üzerinde de devam ettirmeye çalışmak önemli ölçüde yük getirir.

Tasarlanması ve üretilmesi daha basit olmasına rağmen ön bellek uyumlu olmayan NUMA sistemleri, standart von Neuman mimarisi programlama modeli içerisinde programlanamayacak kadar karmaşık bir hale geldiler. Bunun sonucu olarak piyasada satılmakta olan bütün NUMA’lı bilgisayarlar ön bellek uyumunun sağlanabilmesi için özel amaçlı donanımlara sahiptir ve bu nedenle “ön bellek uyumlu NUMA” (cache-coherent NUMA) veya ccNUMA diye sınıflandırılırlar.

Bu durum tipik olarak, birden fazla ön bellek aynı bellek lokasyonunu depoladığında ön bellek kontrol birimleri arasında tutarlı bir bellek görüntüsünün sağlanabilmesi amacıyla işlemciler arası iletişim gerçekleştiğinde meydana gelir. Bu nedenle, birden fazla işlemci süratli çalışma ortamında aynı bellek alanına erişmeye çalıştığında ccNUMA kötü bir performans gösterir. NUMA’ya İşletim sistemi desteği sağlanarak bellek ve işlemcilerin NUMA’ya uygun olacak bir biçimde dağıtılması ve bu şekilde NUMA’ya uygun olmayacak erişimlerin engellenmesi, kilitlenmesi veya erişimlerin buna göre planlanması sağlanabilir.

Günümüzde mevcut ccNUMA sistemi uygulamaları AMD Opteron işlemci tabanlı çok işlemcili sistemlerdir. Daha önceki ccNUMA yaklaşımları Digital Equipment Corporation (DEC) şirketinin Alfa İşlemcisi EV7 tabanı üzerine kurulmuştu.

NUMA ile Grup hesaplamanın karşılaştırılması

NUMA çok sıkı çiftlenmiş bir çeşit grup hesaplama olarak görülebilir. NUMA donanımının mevcut olmadığı yerde bir grup mimarisine sanal bellek sayfalamanın ilavesi ile tamamen yazılım olarak NUMA yaratılması mümkündür. Buna rağmen yazılım tabanlı NUMA uygulamasında boğum noktaları arasındaki gecikme süresi muhtelif durumlarda donanım tabanlı NUMA uygulamalarından daha yüksektir.

İlgili Araştırma Makaleleri

MIPS, Microprocessor without Interlocked Pipeline Stages, MIPS teknolojileri adlı firma tarafından 1985 yılında geliştirilmiş indirgenmiş komut kümesi türü bir mikroişlemci mimarisidir.

<span class="mw-page-title-main">Opteron</span>

Opteron, AMD firmasının K8 kod adı çalışmalarını başlattığı x86-64 mimarisine sahip ilk sunucu hedefli işlemcisidir. İşlemci, AMD'nin daha önceleri iddialı olmadığı giriş ve orta seviyeli sunucu piyasasında söz sahibi olmasını sağladı. Intel x86-64'ün engellenemeyen yükselişine seyirci kalamadı ve aynı mimariye sahip işlemcilerini EMT-64 eki ile piyasaya sürdü.

<span class="mw-page-title-main">Merkezî işlem birimi</span> bir bilgisayar programının talimatlarını, talimatlar tarafından belirtilen temel aritmetik, mantıksal, kontrol ve giriş/çıkış (G/Ç) işlemlerini gerçekleştirerek yürüten ve diğer bileşenleri koordine eden bir bilgisayar içindeki elektro

Merkezî işlem birimi, dijital bilgisayarların veri işleyen ve yazılım komutlarını gerçekleştiren bölümüdür. Çalıştırılmakta olan yazılımın içinde bulunan komutları işler. Mikroişlemciler ise tek bir yonga içine yerleştirilmiş bir merkezî işlem birimidir. 1970'lerin ortasından itibaren gelişen mikroişlemciler ve bunların kullanımı, günümüzde MİB teriminin genel olarak mikroişlemciler yerine de kullanılması sonucunu doğurmuştur.

<span class="mw-page-title-main">Intel 80286</span>

Intel 80286 veya i286, 8086/8088'dan sonraki intel işlemcisidir.

Paralel hesaplama ya da Koşut hesaplama, aynı görevin, sonuçları daha hızlı elde etmek için çoklu işlemcilerde eş zamanlı olarak işletilmesidir. Bu fikir, problemlerin çözümünün ufak görev parçalarına bölünmesi ve bunların eş zamanlı olarak koordine edilmesine dayanır. Paralel hesaplama ile performans artar, büyük sorunlar daha az sürede çözülür ve bilimdeki gelişmeler paralel hesaplamaya gereksinim duyar.

<span class="mw-page-title-main">İş parçacığı</span>

İş parçacığı, bilgisayar biliminde, bir işin eş zamanlı olarak işlenen her bir bölümüdür. İş parçacığı ve işlem arasındaki fark bir işletim sisteminden diğerine değişmekle birlikte genel olarak iş parçacığının oluşturuluşu ve kaynakların paylaşılmasıdır. İşlemler, birçok iş parçacığı oluşturup sonlandırabilir, iş parçacıkları da ortak bellek kullanabilirler. Çoğu durumda iş parçacıkları işlemlerin içinde yer alır, onları oluştururlar. Çoklu iş parçacıkları paralel olarak pek çok bilgisayar sisteminde uygulanabilir. Tek işlemci kullanıldığında çok iş parçacıklı uygulama, zaman dilimlemesiyle gerçekleştirilir; tek işlemci, farklı iş parçacıkları arasında çok hızlı geçiş yapar ve bu durumda işlemler gerçekte olmasa da eş zamanlı çalışıyormuş gibi görünür. Çok işlemcili sistemlerde farklı iş parçacıkları, farklı işlemciler üzerinde eş zamanlı olarak çalışabilir.

<span class="mw-page-title-main">Pentium</span>

Pentium, Intel’den beşinci nesil x86 mimarisi bir mikroişlemcisidir. 486 serisinin ardılıydı ve ilk olarak 22 Mart 1993 tarihinde duyurulmuştu.

<span class="mw-page-title-main">PowerPC</span>

PowerPC, AIM olarak bilinen Apple-IBM-Motorola ittifakının 1991'de geliştirdiği bir RISC mikroişlemcisidir. Genel olarak kişisel bilgisayarlar içindir. PowerPC merkezi işlem birimleri (CPU) gömülü (embedded) ve yüksek performans işlemcileri olduğu için popüler olmuştur. PowerPC 1990'da AIM' in ve PReP'in temel taşı oldu, fakat mimari Apple'ın Macintosh'unun 1994–2006 modellerinde daha başarılı bulundu.

<span class="mw-page-title-main">Mikroişlemci</span> ana işlem biriminin fonksiyonlarını tek bir yarı iletken tümdevrede birleştiren programlanabilir sayısal elektronik bileşen

Mikroişlemci, işlemci olarak da bilinen, merkezî işlem biriminin (CPU) fonksiyonlarını tek bir yarı iletken tüm devrede (IC) birleştiren programlanabilir bir sayısal elektronik bileşendir.

<span class="mw-page-title-main">Bilgisayar mimarisi</span>

Bilgisayar mimarisi, en küçüğe ve en başarılıya ulaşmayı hedeflerken aynı zamanda maliyeti de göz önünde bulundurduğu için sanat ve bilimin ortak buluştuğu nokta olarak da tanımlanır. Bilgisayar Mimarisi, bilgisayar parçalarının iç yapıları ve aralarındaki haberleşme bağlantıları ile ilgilidir.

Çok çekirdekli işlemci, ikiden fazla işlemciden (çekirdek) oluşan bir hesaplama birimi. Bilgisayarlarda temel komut kümesi işlemlerini gerçekleştirir.

<span class="mw-page-title-main">İşlem (bilgisayar)</span>

Bilgisayar bilimlerinde işlem (process) terimi, belleğe yüklenmiş ve işlemcide (CPU) yürütülmekte olan bir program olarak tanımlanmaktadır. Uygulamalar diskte çalışmaz halde bulunurken ise program olarak tanımlanır. Bir program kendi başına pasif komut yığınıdır ve işlem ise bu komutların aktif olarak yürütülmesidir.

Bir hiper yönetici veya sanal makine monitörü (VMM), sanal makineleri oluşturan ve çalıştıran bilgisayar yazılımı, bellenim veya donanımdır. Bir hipervizörün bir veya daha fazla sanal makineyi çalıştırdığı bir bilgisayara ana makine adı verilir ve her sanal makineye konuk makinesi adı verilir. Hiper yönetici, konuk işletim sistemlerini sanal işletim platformuyla sunar ve konuk işletim sistemlerinin yürütülmesini yönetir. Çeşitli işletim sistemlerinin birden fazla örneği sanallaştırılmış donanım kaynaklarını paylaşabilir: örneğin, Linux, Windows ve macOS örneklerinin tümü tek bir fiziksel x86 makinede çalışabilir. Konuk işletim sistemleri aynı çekirdeğe sahip farklı Linux dağıtımları gibi kullanıcı alanında farklılık gösterebilse de, bu, tüm örneklerin tek bir çekirdeği paylaşması gereken işletim sistemi düzeyinde sanallaştırma ile çelişir.

<span class="mw-page-title-main">Hyper-V</span>

Hyper-V, Microsoft Hyper-V, Viridian kod adındaki ve önceleri Windows Sunucu Sanallaştırma olarak bilinen, x64 bilgisayarlar için hypervisor tabanlı bir sanallaştırma sistemidir. Birden fazla sunucu rolünü tek bir fiziksel ana makinede çalışan ayrı sanal makineler olarak birleştirerek sunucu donanımı yatırımlarını iyileştirmek için bir araç sağlar. Hyper-V ayrıca, Windows haricinde Linux gibi işletim sistemleri de dahil olmak üzere birden fazla işletim sistemini verimli bir şekilde tek bir sunucuda çalıştırmak ve 64-bit bilgi işlemin gücünden faydalanmak için de kullanılabilir.Windows Server 2008'in belirli x64 sürümleriyle birlikte Hyper-V'nin bir betası sevk edilmiş ve kesinleşmiş sürüm 26 Haziran 2008'de piyasaya çıkmıştır. Yeni çıkacak olan Windows Server 2012® Hyper-V® ile de birden fazla işletim sisteminin paralel olarak aynı sunucu üzerinde çalıştırılmasını sağlamaktadır.

<span class="mw-page-title-main">Önyükleme</span> CPUya ilk elektrik verildiğinde bilgisayarın çalışabilmesi için uygulamaya konulan işlemler bütünü ve çalışan uygulamalar

Bilgisayar biliminde önyükleme, bir donanım veya bir yazılım komutu ile elektrik verilen bilgisayarı başlatma işlemidir. Açıldıktan sonra, bir bilgisayarın merkezî işlem biriminin (CPU) ana belleğinde yazılım yoktur, bu nedenle bazı işlemlerin yürütülebilmesi için yazılımı belleğe yüklemesi gerekir. Bu, CPU'daki donanım veya bellenim veya bilgisayar sistemindeki ayrı bir işlemci tarafından yapılabilir. İşletim sistemi ve bazı uygulamalar elde başlatıldığında, önyükleme tamamlanır.

<span class="mw-page-title-main">İşlem yönetimi</span>

İşlem yönetimi günümüz işletim sistemlerinin önemli bir parçasıdır. İşletim sisteminin işlemlere yer alması, aralarında haberleşmeyi sağlaması onun önemli görevlerindendir. İşletim sistemi kaynakları işlemlere göre ayırmalı, işlemleri veri aktarımı ve paylaşımına uygun hale getirmeli, her işlemin kaynağını diğer işlemlerden korumalı ve işlemler arası senkronizyonu sağlamalıdır. Bunları yapabilmek için işletim sistemi her işlem için o işlemin mevkisini ve sahipibi tanımlayan ve işletim sistemini her veriği üzerinde kontrol uyguladığı bir veri yapısı sağlamalıdır.

<span class="mw-page-title-main">Önbellek tutarlılığı</span>

Ön bellek tutarlılığı, paylaşılan kaynağın yerel ön belleğinde kaydedilen verinin tutarlılığını ifade eder. Bir bilgisayar sistemindeki istemciler ortak bir bellek kaynağının ön belleğini kullandıklarında, tutarsız verilerle ilgili sorunlar ortaya çıkabilir. Bu, bilhassa, çoklu işleme yapan sistemlerdeki merkezi işlem birimi için geçerlidir.

<span class="mw-page-title-main">Gömülü sistem</span> Belli bir fonksiyonu yapmaya yönelik bilgisayar sistemi

Gömülü sistem, bilgisayarın kendisini kontrol eden cihaz tarafından içerildiği özel amaçlı bir sistemdir. Genel maksatlı, örneğin kişisel bilgisayar gibi bir bilgisayardan farklı olarak, gömülü bir sistem kendisi için önceden özel olarak tanımlanmış görevleri yerine getirir. Sistem belirli bir amaca yönelik olduğu için tasarım mühendisleri ürünün boyutunu ve maliyetini azaltarak sistemi uygunlaştırabilirler. Gömülü sistemler genellikle büyük miktarlarda üretildiği için maliyetin düşürülmesinden elde edilecek kazanç, milyonlarca ürünün katları olarak elde edilebilir.

Paylaşılan bellek birden çok sürecin veya aynı süreç içerisindeki iş parçacığın eş zamanlı olarak eriştikleri bellektir. Veri paylaşımı bu bellek üzerinden gerçekleşir. Genel olarak süreçler bellek üzerinde paylaşılmak üzere yer tahsis ederler. Daha sonra diğer süreçler de bu belleği kullanır.

Mach, Carnegie Mellon Üniversitesi'nde öncelikle dağıtık hesaplama ve paralel hesaplama bilgi işlem olmak üzere işletim sistemi araştırmalarını desteklemek için geliştirilen bir işletim sistemi çekirdeğidir. Mach bir mikrokernelin en eski örneklerinden biri olarak sıklıkla bahsedilir. Bununla birlikte, Mach'ın tüm versiyonları mikrokernel değildir. MacOS'un temel aldığı NextStep ve OpenStep, hepsi de daha önce bir mikro çekirdek olmayan Mach içeren XNU işletim sistemi çekirdeğini büyük bir bileşen olarak içerir. Mach türevleri, GNU Hurd ve Apple'ın işletim sistemleri macOS, iOS, tvOS ve watchOS'daki modern işletim sistemi çekirdeklerinin temelini oluşturmaktadır.