Symetrický multiprocesing (SMP, anglicky Symmetric multiprocessing) je v informatice označení pro druh víceprocesorových systémů, u kterých jsou všechny procesory v počítači rovnocenné (na rozdíl od asymetrického multiprocesingu, ASMP). Zvýšení počtu procesorů, které v počítači sdílí stejnou operační paměť, vede ke zvýšení výkonu počítače, i když ne lineárním způsobem, protože část výkonu je spotřebována na režii (zamykání datových struktur, řízení procesorů a jejich vzájemná komunikace).
Je-li procesorů v SMP systému mnoho, označujeme je jako masivně paralelní systémy (MPP, anglicky Massive Parallel Processing), u kterých je využívána NUMA architektura. Opakem víceprocesorových systémů jsou jednoprocesorové systémy (anglicky uniprocessor, zkratka UP).
Multiprocesing označuje víceprocesorový systém, ve kterém je na základní desce osazeno více procesorů, které mají společnou operační paměť. Symetrický multiprocesing je varianta víceprocesorového systému, který má všechny procesory na stejné úrovni (jak po hardwarové, tak po softwarové stránce (alternativou jsou asymetrické systémy, tzv. ASMP). Přístup ke společné paměti je přes vhodnou propojovací strukturu, která je řízena arbitrem. Maximální počet procesorů je dán při výrobě, avšak obvykle není nutné všechny do základní desky připojit. V současné době (2011) jsou běžně prodávány dvou, tří, čtyř, šesti i osmiprocesorové systémy. Méně často se vyskytují systémy s větším počtem procesorů – v případě desítek, stovek či tisíců je označujeme jako masivně paralelní (MPP). Při vyšších počtech procesorů se projevuje zvyšování režie komunikace mezi procesory a vyjednávání o přístupu do společné paměti. Některé systémy jsou proto typu NUMA, kde je paměť (i další prostředky) rozdělena mezi procesory předem, takže počet vyjednávání může být nižší.
Každý procesor je propojen s vlastní vyrovnávací pamětí (která může být rozdělena na vyrovnávací paměť určenou pro data a vyrovnávací paměť pro instrukce). Tato vyrovnávací paměť je napojena na interní sběrnici popř. přepínací síť zajišťující řízení přenosu dat mezi těmito paměťmi a pamětí operační. Na přepínací síť bývají taktéž zapojeny některá rychlá I/O zařízení (například grafický akcelerátor) či řadiče sběrnic (PCI). Blokové schéma architektury SMP je naznačeno na prvním obrázku vpravo.
Architektura SMP není nijak složitá, proto je také snadná a samozřejmě i levná její implementace. Potíže ale vznikají při připojení většího množství procesorů. Například už při čtyřech současně běžících procesorech se propojovací struktura stává úzkým hrdlem této architektury, protože i přes mnohdy velikou kapacitu vyrovnávacích pamětí (cache) nastávají kolize při přístupu do hlavní paměti, kdy na sebe jednotlivé procesory musí čekat (viz Amdahlův zákon na obrázku vpravo). Tento zákon mimo jiné ukazuje, do jaké míry může i malá sekvenčně prováděná část programu způsobit neefektivní využití většího množství procesorů.
Amdahlův zákon vyjádřen graficky na obrázku vpravo. Jak je z obrázku patrné, s rostoucím počtem procesorů (popř. procesorových jader) neroste výpočetní výkon celého počítače lineárně, protože určitou část úlohy není možné provádět paralelně (například se jedná o vstup či výstup dat, přístup ke sdílenému prostředku atd.). Při použití architektury SMP však může snaha o souběžný přístup k operační paměti způsobit průběh naznačený červenou křivkou – pro velké množství procesorů je nejvíce procesorového času „promrháno“ arbitráží společné sběrnice.
SMP má mnoho použití ve vědě, průmyslu a podnikání, které často používají vlastní-naprogramovaný software pro vícevláknové (multitasking) zpracování. Nicméně, většina spotřebního software, jako jsou textové procesory (MS Word, MS Excel) a počítačové hry nejsou psané takovým způsobem, aby byly schopné využívat výhody multiprocesorových systémů.[zdroj?] U her je to většinou proto, že psaní programu pro zvýšení výkonnosti na SMP systémech by mohlo produkovat ztrátu výkonu na jednoprocesorových systémech.[zdroj?] Multijádrové procesory jsou dnes běžně v nových počítačích a rovnováha mezi instalovanými jednojádrovými a vícejádrovými počítači může změnit přístup v nadcházejících letech.
Jednoprocesorové a SMP systémy vyžadují různé programovací metody k dosažení maximálního výkonu. Je tedy potřeba dvě různé verze téhož programu. U programů běžících na SMP systémech může dojít k zvýšení výkonu, i když byly napsány pro jednoprocesorové systémy. Důvodem jsou hardwarová přerušení, která obvykle pozastavují provádění programu, zatímco u vícejádrových jsou obsloužena druhým či dalším jádrem. Účinek ve většině aplikací (her) proto není ani tak nárůst výkonu, ale spíše lepší uživatelský dojmem (program běží plynuleji), protože jsou nižší latence z toho důvodu, že více úloh může být obsluhováno současně.
Non-Uniform Memory Access (NUMA) umožňuje zlepšit vlastnosti víceprocesorových systémů. Zavádí místo jednoduché lineární propojovací struktury složitější topologie (mřížka, krychle, hyperkrychle, torus nebo hypertorus). V uzlech této topologické sítě se nacházejí jednotlivé procesory (popř. procesorová jádra nebo jejich dvojice), operační paměť a další zařízení, mimo jiné i grafický akcelerátor či dokonce větší množství spolupracujících grafických akcelerátorů. V NUMA architektuře tak procesory mohou v ideálních podmínkách pracovat se svými vlastními prostředky (například pamětí) a nemusí s ostatními vyjednávat kvůli přístupu ke sdílenému prostředku. Pouze v případě, že procesor hodlá využívat prostředky patřící jinému procesoru, dojde k vyjednávání.
V tomto článku byl použit překlad textu z článku Symmetric multiprocessing na anglické Wikipedii.