<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>https://wiki-de.moshellshocker.dns64.de/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=2.207.99.208</id>
	<title>Wikipedia (Deutsch) – Lokale Kopie - Benutzerbeiträge [de]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki-de.moshellshocker.dns64.de/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=2.207.99.208"/>
	<link rel="alternate" type="text/html" href="https://wiki-de.moshellshocker.dns64.de/index.php/Spezial:Beitr%C3%A4ge/2.207.99.208"/>
	<updated>2026-06-08T09:34:57Z</updated>
	<subtitle>Benutzerbeiträge</subtitle>
	<generator>MediaWiki 1.43.8</generator>
	<entry>
		<id>https://wiki-de.moshellshocker.dns64.de/index.php?title=Multiplizierer_(Digitaltechnik)&amp;diff=1284980</id>
		<title>Multiplizierer (Digitaltechnik)</title>
		<link rel="alternate" type="text/html" href="https://wiki-de.moshellshocker.dns64.de/index.php?title=Multiplizierer_(Digitaltechnik)&amp;diff=1284980"/>
		<updated>2024-11-27T18:53:31Z</updated>

		<summary type="html">&lt;p&gt;2.207.99.208: /* Festkommamultiplizierer */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Ein &#039;&#039;&#039;Multiplizierer&#039;&#039;&#039; ist in der [[Digitaltechnik]] eine [[elektrische Schaltung]], die aus zwei oder mehr digitalen Zahlen mit der mathematischen Operation der [[Multiplikation]] das [[Produkt (Mathematik)|Produkt]] ermittelt. Der Multiplizierer ist bei [[Hauptprozessor|Prozessoren]] Teil der [[arithmetisch-logische Einheit|arithmetisch-logischen Einheit]] (ALU) und kommt dort als [[Multiply-Accumulate|Multiplikationsakkumulator]] (MAC) vor, kann aber in programmierbaren digitalen Schaltungen wie [[FPGA]]s auch als eine eigenständige Funktionseinheit realisiert werden.&lt;br /&gt;
&lt;br /&gt;
Neben der [[Addition]], welche in digitalen Schaltungen mit geringerem schaltungstechnischem Aufwand in Form von [[Addierwerk]]en realisiert ist, ist eine schnelle, hardwarebasierende Multiplikation insbesondere im Bereich der [[Digitale Signalverarbeitung|digitalen Signalverarbeitung]] wesentlich. Anwendungsgebiete des Multiplizierers liegen daher bei der Signalverarbeitung wie der [[Bildverarbeitung]] oder im Bereich [[Digitalfilter|digitaler Filter]]. Er findet aber auch Anwendung in der digitalen [[Regelungstechnik]]. Einer der ersten Einsatzbereiche waren [[Digitaler Signalprozessor|digitale Signalprozessoren]] (DSP).&lt;br /&gt;
&lt;br /&gt;
== Arten ==&lt;br /&gt;
[[Datei:Multiply.png|mini|hochkant=2|Multiplizierer 16x16=32 bit]]&lt;br /&gt;
&lt;br /&gt;
Multiplizierer werden aufgrund der verarbeiteten Zahlenformate unterschieden:&lt;br /&gt;
* [[Festkommazahl|Festkomma-Multiplizierer]] multiplizieren Festkommazahlen.&lt;br /&gt;
* [[Gleitkommaarithmetik|Gleitkomma-Multiplizierer]] multiplizieren Gleitkommazahlen.&lt;br /&gt;
Der Aufwand ist im Wesentlichen durch die Anzahl der zu multiplizierenden Bits (steigt quadratisch) bestimmt. Gleitkomma-Multiplizierer benötigen noch etwas zusätzliche Logik:&lt;br /&gt;
* Einen Addierer für die Exponenten, der parallel arbeiten kann&lt;br /&gt;
* Ein XOR-Gatter für das Vorzeichen&lt;br /&gt;
* Behandlung des Verlusts des MSB (höchste Bit, most significant bit) nach der Multiplikation: Dekrement und Verschiebung.&lt;br /&gt;
* Behandlung für NANs und INFs am Eingang bzw. bei Überlauf- und Unterlauf.&lt;br /&gt;
Bei Verwendung von parallelen Multiplizieren in modernen CPUs und Grafikkarten liegt der Hauptaufwand (double: ca. 97 Prozent, float: ca. 92 Prozent) im Multipliziernetzwerk.&lt;br /&gt;
&lt;br /&gt;
=== Festkommamultiplizierer ===&lt;br /&gt;
[[Datei:4bit multiplizierer.png|mini|hochkant=2|Paralleler Multiplizierer für 4&amp;amp;nbsp;Bit.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;s_i&amp;lt;/math&amp;gt; = Summanden&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;c_i&amp;lt;/math&amp;gt; = Carry-Output&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;m_0&amp;lt;/math&amp;gt; = Input Enable &amp;lt;math&amp;gt;b_i&amp;lt;/math&amp;gt;]]&lt;br /&gt;
Die [[Dualsystem|binäre]] Multiplikation verläuft analog zum dezimalen System und kann in digitalen Schaltungen als eine Abfolge von Additionen und Schieboperationen realisiert werden. In nebenstehender Schaltung ist ein vorzeichenloser, paralleler Multiplizierer (MAC) für zwei je vier Bit breite Zahlen &#039;&#039;X&#039;&#039; und &#039;&#039;Y&#039;&#039; und dem Summanden &#039;&#039;K&#039;&#039; mit Volladdierern dargestellt. Die acht Ausgabebits &#039;&#039;P&#039;&#039; werden in der [[Kombinatorische Logik|kombinatorischen Logik]] mit folgender Gleichung gebildet:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;P = X \cdot Y + K&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Der Vorgang der Multiplikation gestaltet sich dabei nach folgendem Schema, die vier Eingangsbits &#039;&#039;K&#039;&#039; sind der Einfachheit wegen auf 0 gesetzt:&lt;br /&gt;
&lt;br /&gt;
       1011   (&#039;&#039;X&#039;&#039;, entspricht dezimal der Zahl 11)&lt;br /&gt;
     · 1110   (&#039;&#039;Y&#039;&#039;, entspricht dezimal der Zahl 14)&lt;br /&gt;
     ------&lt;br /&gt;
  +    0000   (1011 · 0)&lt;br /&gt;
  +   1011    (1011 · 1, um eine Stelle nach links verschoben)&lt;br /&gt;
  +  1011     (1011 · 1, um zwei Stellen nach links verschoben)&lt;br /&gt;
  + 1011      (1011 · 1, um drei Stellen nach links verschoben)&lt;br /&gt;
  ---------&lt;br /&gt;
   10011010   (&#039;&#039;P&#039;&#039;, entspricht dezimal 154)&lt;br /&gt;
&lt;br /&gt;
Dieser einfache Multiplizierer lässt sich aus einzelnen [[Volladdierer]]n und die Schiebeoperation durch direkte Verschaltung realisieren. Die binären Stellen des Produktes &#039;&#039;P&#039;&#039; sind gleich der Summe der Stellen der beiden Faktoren &#039;&#039;X&#039;&#039; und &#039;&#039;Y&#039;&#039;. Ein in der Position fixer Kommapunkt wird generell nicht schaltungstechnisch abgebildet, sondern die Position des Kommapunktes im Produkt ergibt sich aus der Summe der Stellen nach dem Komma der beiden Eingangsfaktoren. Im obigen Beispiel ist bei beiden Faktoren die Stellenanzahl hinter dem Komma null, wodurch auch im Produkt der Kommapunkt rechts der letzten Stelle zu liegen kommt.&lt;br /&gt;
&lt;br /&gt;
Bei vorzeichenbehafteten Zahlen, welche in digitalen Schaltungen meistens als [[Zweierkomplement]] dargestellt sind, ist eine entsprechende schaltungstechnische Erweiterung des Multiplizierers nötig. Die vorzeichenrichtige Multiplikation von zwei je vierstelligen binären Zahlen gestaltet sich nach folgendem Schema, wobei zu beachten ist, dass die letzte Zeile aufgrund des negativen Faktors subtrahiert werden muss:&lt;br /&gt;
&lt;br /&gt;
        1001   (entspricht dezimal der Zahl -7)&lt;br /&gt;
      · 1101   (entspricht dezimal der Zahl -3)&lt;br /&gt;
      ------&lt;br /&gt;
  + 11111001   (1001 · 1, mit Vorzeichenerweiterung)&lt;br /&gt;
  + 0000000    (1001 · 0, um eine Stelle nach links verschoben und mit Vorzeichenerweiterung)&lt;br /&gt;
  + 111001     (1001 · 1, um zwei Stellen nach links verschoben und mit Vorzeichenerweiterung)&lt;br /&gt;
  - 11001      (1001 · 1, um drei Stellen nach links verschoben und mit Vorzeichenerweiterung)&lt;br /&gt;
  ----------&lt;br /&gt;
    00010101   (entspricht dezimal +21)&lt;br /&gt;
&lt;br /&gt;
Schaltungstechnisch kann die Subtraktion in der letzten Zeile durch erweiterte Volladdierer realisiert werden, welche neben der Addition auch die Subtraktion beherrschen.&lt;br /&gt;
&lt;br /&gt;
Der Parallelmultiplizierer, bei dem die Rechengeschwindigkeit nur von der maximalen [[Gatterlaufzeit]] abhängt, ist allerdings für größere Bitbreiten aufwendig zu realisieren. Ein anderes Verfahren ist der serielle Multiplizierer, bei welchem zu Lasten des Durchsatzes mit geringerem Hardwareaufwand pro Takt ein Bit (eine Stelle) des Ergebnisses berechnet wird. Des Weiteren existieren Verfahren, welche auf Tabellen mit bereits vorab berechneten Werten (engl. &#039;&#039;Look-Up-Tables&#039;&#039;) basieren. Es existieren auch effiziente Algorithmen, mit denen sich schnelle Multiplizierer mit moderatem schaltungstechnischen Aufwand realisieren lassen. Beispiele hierfür sind der [[Dadda-Tree-Multiplizierer]], der [[Wallace-Tree-Multiplizierer]] und der [[Booth-Algorithmus]].&lt;br /&gt;
&lt;br /&gt;
=== Gleitkommamultiplizierer ===&lt;br /&gt;
Eine beliebige [[Gleitkommazahl]] &#039;&#039;x&#039;&#039; wird aus dem [[Vorzeichenbit]] &#039;&#039;s&#039;&#039; (±1), der [[Mantisse]] &#039;&#039;m&#039;&#039; und einem [[Exponent (Mathematik)|Exponenten]] &#039;&#039;e&#039;&#039;, mit einer willkürlich gewählten und fixen Basis &#039;&#039;b&#039;&#039;, gebildet:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;x = s \cdot m \cdot b^e&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bei der in der Computertechnik üblichen Norm [[IEEE 754]] zur Darstellung von Gleitkommazahlen wird mit einer Basis &#039;&#039;b&#039;&#039;&amp;amp;nbsp;=&amp;amp;nbsp;2 und je nach benötigter Auflösung verschieden breiten Mantissen und Exponenten gearbeitet. &lt;br /&gt;
&lt;br /&gt;
Die Multiplikation zweier Gleitkommazahlen lässt sich immer auf eine Multiplikation der beiden Mantissen und eine Addition der beiden Exponenten mit Festkommaarithmetik zurückführen. Die Addition und Multiplikation kann aus Geschwindigkeitsgründen parallel mit getrennten Schaltungsteilen erfolgen. &lt;br /&gt;
Die einzelnen Schritte&lt;br /&gt;
* Aufspalten der Faktoren in Vorzeichen, Exponenten und Mantissen. Die führende 1 bei normalisierten Mantissen (Exponent &amp;gt; 1) und die führende Null bei denormalisierter Mantisse (Mantisse = 0) sind hinzuzufügen.&lt;br /&gt;
Die folgenden Schritte können parallel ausgeführt werden:&lt;br /&gt;
* Multiplikation der Mantissen: M = M&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt; × M&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt;&lt;br /&gt;
* Addition der Exponenten: E = E&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt; + E&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt; − Bias&lt;br /&gt;
* Xor-Verknüpfung der Vorzeichen: S = S&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt; + S&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt;&lt;br /&gt;
Nun folgt:&lt;br /&gt;
* Bestimmung des MSBs, die 0 sind. Im Fall von normalisierten Faktoren kann dies 0 oder 1 sein, im Fall von denormalisierten Faktoren sind größerer Zahlen möglich (double bis 106): L&lt;br /&gt;
Fallunterscheidung:&lt;br /&gt;
* Falls E&amp;amp;nbsp;−&amp;amp;nbsp;L&amp;amp;nbsp;≤&amp;amp;nbsp;−24 bzw. −53, ist das Ergebnis Null. Das Vorzeichen bleibt aber erhalten.&lt;br /&gt;
* Falls E&amp;amp;nbsp;−&amp;amp;nbsp;L&amp;amp;nbsp;≤&amp;amp;nbsp;0 ist, ist das Ergebnis eine denormalisierte Zahl.&lt;br /&gt;
* Falls 0&amp;amp;nbsp;&amp;lt;&amp;amp;nbsp;E&amp;amp;nbsp;−&amp;amp;nbsp;L&amp;amp;nbsp;&amp;lt;&amp;amp;nbsp;MaxBias ist, ist das Ergebnis eine normalisierte Zahl.&lt;br /&gt;
* Falls MaxBias&amp;amp;nbsp;≤&amp;amp;nbsp;E&amp;amp;nbsp;−&amp;amp;nbsp;L ist, ist das Ergebnis unendlich.&lt;br /&gt;
Zusätzlich existieren bei Gleitkommamultiplizierern noch Steuerlogiken, welche das korrekte [[Vorzeichen (Zahl)|Vorzeichen]] des Ergebnisses bilden und bestimmte Sonderfälle des IEEE-754-Gleitkommaformates, wie „Keine Zahl“ (&#039;&#039;NaN&#039;&#039;, engl. für &#039;&#039;Not-A-Number&#039;&#039;), behandeln.&lt;br /&gt;
&lt;br /&gt;
== Hardwarerealisierung und zeitliches Verhalten ==&lt;br /&gt;
Alle Logikbauelemente besitzen eine Signallaufzeit. Mit zunehmender Bitbreite des Multiplizierers nimmt die Anzahl der Logikbauelemente, die parallel und/oder in Reihe geschaltet sind, zu. Mit zunehmender Anzahl von Logikbauelementen steigt die gesamte Signallaufzeit des Multiplizierers.&lt;br /&gt;
&lt;br /&gt;
== Literatur ==&lt;br /&gt;
* {{Literatur&lt;br /&gt;
 |Autor = Jean-Michel Muller&lt;br /&gt;
 |Titel = Elementary functions - Algorithms and Implementation&lt;br /&gt;
 |Verlag = Birkhäuser  |Jahr = 2006 |Auflage = 2 | Ort = Lyon |ISBN = 0-8176-4372-9&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Weblinks ==&lt;br /&gt;
* {{Webarchiv | url=http://www.andraka.com/multipli.htm | wayback=20141023233409| text=Multiplication in FPGAs }} Schaltungstechnische Varianten, auf Englisch.&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Digitale Schaltungstechnik]]&lt;br /&gt;
[[Kategorie:Computerarithmetik]]&lt;/div&gt;</summary>
		<author><name>2.207.99.208</name></author>
	</entry>
</feed>