Granularität (Systemarchitektur)
# Granularität (Systemarchitektur)

Granularität ist ein Begriff aus dem Bereich der parallelen Computer-Architekturen. Er bezeichnet die Anzahl der Untergliederungen eines Elementes, z. B. eines Speichers.

## Technische Eigenschaften

Betrachtet man die Granularität einer Architektur, unterscheidet man zwischen fein-, mittel- und grobgranular.
* Eine feingranulare Architektur ist in ihrer Arbeitsweise besonders klein und schnell bezüglich ihrer Abarbeitungszeit. Möchte man Prozesse auf dieser Architektur nun parallel ausführen, müssen nur wenige Daten zur Synchronisation, diese aber sehr häufig, unter den Prozessen ausgetauscht werden.
* Den Gegensatz dazu stellen grobgranulare Architekturen dar, deren Prozesse eine lange Ausführungszeit haben und damit nur wenige Daten zur Synchronisation austauschen müssen, da dieser überwiegend selbstständig arbeitet.
* Bei numerischen Problemen verwendet man oft den Begriff der mittleren Granularität, da deren Parallelität zwischen den oftmals nicht weiter parallelisierbaren Schleifendurchläufen in der Datenstruktur auftritt.
Grundsätzlich gilt Folgendes:
* Maschinenbefehlsebene (≤ 1 LOC)
* Blockebene (einige LOC)
* Prozedurebene (10–100 LOC)
* Threadebene (100–1000 LOC)
* Prozessebene (> 1000 LOC)
Von der Prozessebene bis zur Maschinenbefehlsebene steigt die nutzbare Parallelität.
Da bei feingranularen Prozessen bzw. Architekturen ein hohes Kommunikationsaufkommen zu erwarten ist, wird man diese meist als Shared-Memory-System realisieren, während man grobgranulare Architekturen in der Regel mittels Message-Passing umsetzt. In der Praxis bedeutet das, dass nur bei grobgranularen Architekturen eine hohe Parallelität erreicht werden kann, weil nur jene unabhängige Instruktionen besitzen.