In-Memory-Computing: Synthese und Optimierung 3031228782, 9783031228780, 9783031228797

Dieses Buch beschreibt einen umfassenden Ansatz für die Synthese und Optimierung von Logic-in-Memory-Computing-Hardware

114 65 6MB

German Pages 127 Year 2023

Report DMCA / Copyright

DOWNLOAD PDF FILE

Table of contents :
Danksagung
Inhaltsverzeichnis
Abbildungsverzeichnis
Tabellenverzeichnis
Kapitel 1: Einführung
1.1 Überblick
1.2 Gliederung
Kapitel 2: Hintergrund
2.1 RRAM-Technologie
2.2 Logic-in-Memory mit RRAM
2.2.1 Material Implication
2.2.2 Resistiver Majoritätsoperation
2.2.3 Memristor-Aided Logik
2.3 Logische Darstellungen
2.3.1 Binäre Entscheidungsdiagramme
2.3.2 Homogene logische Darstellungen
2.4 Evolutionäre Mehrzieloptimierung
2.4.1 Mehrzieloptimierung
2.4.2 Evolutionäre Algorithmen
Kapitel 3: BDD-Optimierung und Approximation: Ein multikriterieller Ansatz
3.1 Verwandte Arbeiten
3.2 Multi-Objektive BDD-Optimierung
3.2.1 Merkmale des Algorithmus
3.2.1.1 Variation Operatoren
3.2.1.2 Priorität
3.2.2 Experimentelle Ergebnisse
3.3 Approximate BDD-Optimierung
3.3.1 Grundlegende Konzepte
3.3.2 Anforderungen an den Algorithmus
3.3.3 Merkmale des Algorithmus
3.3.3.1 Priorisierte ε-Preferred
3.3.3.2 Auswahl von ε
3.3.3.3 Evolutionärer Zyklus und Operatoren
3.3.4 Experimentelle Ergebnisse
3.3.5 Bewertung der ε-Einstellungsmethoden
3.4 Zusammenfassung
Kapitel 4: Synthese für Logic-in-Memory-Computing mit RRAM
4.1 Verwandte Arbeiten
4.2 In-Memory-Computing-Entwurf mit RRAM
4.2.1 BDD-basierte Synthese
4.2.1.1 Memristive Realisierung für MUX
4.2.1.2 Entwurfsmethodik
4.2.1.3 Optimierung
4.2.1.4 Bewertung und Vergleich
4.2.2 AIG-basierte Synthese
4.2.2.1 Memristive Realisierung für AND/NAND-Gatter
4.2.2.2 Entwurfsmethodik
4.2.2.3 Optimierung
4.2.2.4 Bewertung und Vergleich
4.2.3 MIG-basierte Synthese
4.2.3.1 Memristive Realisierung für Majoritätsgatter
4.2.3.2 Entwurfsmethodik
4.2.3.3 Optimierung
4.2.3.4 Bewertung und Vergleich
4.2.4 Diskussion über Design-Präferenzen
4.3 Crossbar-Implementierung für den vorgeschlagenen Synthese-Ansatz
4.3.1 MAJ-basierte Implementierung
4.3.2 IMP-basierte Implementierung
4.3.3 Diskussion
4.4 Zusammenfassung
Kapitel 5: Kompilierung und Schreibausgleich für programmierbare Logik-in-Memory- Architekturen
5.1 Verwandte Arbeiten
5.2 Der PLiM-Compiler
5.2.1 Motivation
5.2.2 MIG Umschreiben
5.2.3 Kompilierung
5.2.3.1 Auswahl der KandidatInnen
5.2.3.2 Knotenpunkt-Übersetzung
5.2.3.3 Operand B auswählen
5.2.3.4 Ziel wählen Z
5.2.3.5 Operand A auswählen
5.2.4 Experimentelle Ergebnisse
5.3 Schreibvorgänge in Logic-in-Memory Computing
5.4 Ausdauerbewusste Kompilierung von PLiM
5.4.1 Direktes Verschleißausgleichsverfahren für PLiM
5.4.2 Ausdauerbewusstes MIG-Rewriting
5.4.3 Ausdauerbewusste Knotenauswahl
5.4.4 Experimentelle Ergebnisse
5.5 Zusammenfassung
Kapitel 6: Schlussfolgerungen
Literatur
Recommend Papers

In-Memory-Computing: Synthese und Optimierung
 3031228782, 9783031228780, 9783031228797

  • 0 0 0
  • Like this paper and download? You can publish your own PDF file online for free in a few minutes! Sign Up
File loading please wait...
Citation preview

Saeideh Shirinzadeh Rolf Drechsler

In-MemoryComputing Synthese und Optimierung

In-Memory-Computing

Saeideh Shirinzadeh • Rolf Drechsler

In-Memory-Computing Synthese und Optimierung

Saeideh Shirinzadeh Universität Bremen und DFKI GmbH Bremen, Deutschland

Rolf Drechsler Universität Bremen und DFKI GmbH Bremen, Deutschland

Dieses Buch ist eine Übersetzung des Originals in Englisch „In-Memory Computing“ von Shirinzadeh, Saeideh, publiziert durch Springer Nature Switzerland AG im Jahr 2020. Die Übersetzung erfolgte mit Hilfe von künstlicher Intelligenz (maschinelle Übersetzung durch den Dienst DeepL.com). Eine anschließende Überarbeitung im Satzbetrieb erfolgte vor allem in inhaltlicher Hinsicht, so dass sich das Buch stilistisch anders lesen wird als eine herkömmliche Übersetzung. Springer Nature arbeitet kontinuierlich an der Weiterentwicklung von Werkzeugen für die Produktion von Büchern und an den damit verbundenen Technologien zur Unterstützung der Autoren. ISBN 978-3-031-22878-0    ISBN 978-3-031-22879-7 (eBook) https://doi.org/10.1007/978-3-031-22879-7 Die Deutsche Nationalbibliothek verzeichnet diese Publikation in der Deutschen Nationalbibliografie; detaillierte bibliografische Daten sind im Internet über http://dnb.d-nb.de abrufbar. Springer Vieweg © Der/die Herausgeber bzw. der/die Autor(en), exklusiv lizenziert an Springer Nature Switzerland AG 2023 Das Werk einschließlich aller seiner Teile ist urheberrechtlich geschützt. Jede Verwertung, die nicht ausdrücklich vom Urheberrechtsgesetz zugelassen ist, bedarf der vorherigen Zustimmung des Verlags. Das gilt insbesondere für Vervielfältigungen, Bearbeitungen, Übersetzungen, Mikroverfilmungen und die Einspeicherung und Verarbeitung in elektronischen Systemen. Die Wiedergabe von allgemein beschreibenden Bezeichnungen, Marken, Unternehmensnamen etc. in diesem Werk bedeutet nicht, dass diese frei durch jedermann benutzt werden dürfen. Die Berechtigung zur Benutzung unterliegt, auch ohne gesonderten Hinweis hierzu, den Regeln des Markenrechts. Die Rechte des jeweiligen Zeicheninhabers sind zu beachten. Der Verlag, die Autoren und die Herausgeber gehen davon aus, dass die Angaben und Informationen in diesem Werk zum Zeitpunkt der Veröffentlichung vollständig und korrekt sind. Weder der Verlag, noch die Autoren oder die Herausgeber übernehmen, ausdrücklich oder implizit, Gewähr für den Inhalt des Werkes, etwaige Fehler oder Äußerungen. Der Verlag bleibt im Hinblick auf geografische Zuordnungen und Gebietsbezeichnungen in veröffentlichten Karten und Institutionsadressen neutral. Planung/Lektorat: Axel Garbers Springer Vieweg ist ein Imprint der eingetragenen Gesellschaft Springer Nature Switzerland AG und ist ein Teil von Springer Nature. Die Anschrift der Gesellschaft ist: Gewerbestrasse 11, 6330 Cham, Switzerland

Danksagung

Unser besonderer Dank gilt all jenen, die zu den in diesem Buch enthaltenen Ergebnissen beigetragen haben. Unser besonderer Dank gilt Mathias Soeken für seinen unschätzbaren Zeitaufwand und seine brillanten Ideen, die für dieses Buch von großer Bedeutung waren. Wir möchten auch Pierre-Emmanuel Gaillardon für seine Beiträge danken, die uns geholfen haben, dieses Buch zu verbessern. Dank geht auch an Giovanni De Micheli und Daniel Große für ihr hilfreiches Feedback und die anregenden Diskussionen. Wir möchten uns bei allen Kolleginnen und Kollegen der Arbeitgruppe Rechnerarchitektur an der Universität Bremen für ihre Unterstützung bedanken. Bremen, Deutschland Januar 2019

Saeideh Shirinzadeh und Rolf Drechsler

V

Inhaltsverzeichnis

1

Einführung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .   1 1.1 Überblick��������������������������������������������������������������������������������������������   3 1.2 Gliederung������������������������������������������������������������������������������������������   4

2

Hintergrund. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .   7 2.1 RRAM-Technologie����������������������������������������������������������������������������   7 2.2 Logic-in-Memory mit RRAM������������������������������������������������������������  11 2.2.1 Material Implication ��������������������������������������������������������������� 11 2.2.2 Resistiver Majoritätsoperation������������������������������������������������  11 2.2.3 Memristor-Aided Logik����������������������������������������������������������  12 2.3 Logische Darstellungen����������������������������������������������������������������������  14 2.3.1 Binäre Entscheidungsdiagramme�������������������������������������������  14 2.3.2 Homogene logische Darstellungen ����������������������������������������  16 2.4 Evolutionäre Mehrzieloptimierung ����������������������������������������������������  17 2.4.1 Mehrzieloptimierung��������������������������������������������������������������  17 2.4.2 Evolutionäre Algorithmen������������������������������������������������������  18

3

 DD-Optimierung und Approximation: Ein multikriterieller B Ansatz . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  21 3.1 Verwandte Arbeiten����������������������������������������������������������������������������  21 3.2 Multi-Objektive BDD-Optimierung ��������������������������������������������������  24 3.2.1 Merkmale des Algorithmus����������������������������������������������������  24 3.2.2 Experimentelle Ergebnisse������������������������������������������������������  28 3.3 Approximate BDD-Optimierung��������������������������������������������������������  35 3.3.1 Grundlegende Konzepte����������������������������������������������������������  35 3.3.2 Anforderungen an den Algorithmus���������������������������������������  36 3.3.3 Merkmale des Algorithmus����������������������������������������������������  38 3.3.4 Experimentelle Ergebnisse������������������������������������������������������  43 3.3.5 Bewertung der ε-Einstellungsmethoden ��������������������������������  46 3.4 Zusammenfassung������������������������������������������������������������������������������  46

VII

VIII

Inhaltsverzeichnis

4

 ynthese für Logic-in-Memory-Computing mit RRAM. . . . . . . . . . . . .  49 S 4.1 Verwandte Arbeiten����������������������������������������������������������������������������  49 4.2 In-Memory-Computing-Entwurf mit RRAM ������������������������������������  51 4.2.1 BDD-basierte Synthese����������������������������������������������������������  52 4.2.2 AIG-basierte Synthese������������������������������������������������������������  60 4.2.3 MIG-basierte Synthese�����������������������������������������������������������  64 4.2.4 Diskussion über Design-Präferenzen��������������������������������������  75 4.3 Crossbar-Implementierung für den vorgeschlagenen Synthese-Ansatz����������������������������������������������������������������������������������  78 4.3.1 MAJ-basierte Implementierung����������������������������������������������  80 4.3.2 IMP-basierte Implementierung ����������������������������������������������  82 4.3.3 Diskussion������������������������������������������������������������������������������  83 4.4 Zusammenfassung������������������������������������������������������������������������������  84

5

 ompilierung und Schreibausgleich für programmierbare K Logik-in-Memory- Architekturen. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  87 5.1 Verwandte Arbeiten����������������������������������������������������������������������������  87 5.2 Der PLiM-Compiler����������������������������������������������������������������������������  89 5.2.1 Motivation������������������������������������������������������������������������������  89 5.2.2 MIG Umschreiben������������������������������������������������������������������  92 5.2.3 Kompilierung��������������������������������������������������������������������������  93 5.2.4 Experimentelle Ergebnisse������������������������������������������������������  99 5.3 Schreibvorgänge in Logic-in-Memory Computing����������������������������  99 5.4 Ausdauerbewusste Kompilierung von PLiM�������������������������������������� 101 5.4.1 Direktes Verschleißausgleichsverfahren für PLiM ���������������� 101 5.4.2 Ausdauerbewusstes MIG-Rewriting �������������������������������������� 103 5.4.3 Ausdauerbewusste Knotenauswahl���������������������������������������� 104 5.4.4 Experimentelle Ergebnisse������������������������������������������������������ 106 5.5 Zusammenfassung������������������������������������������������������������������������������ 110

6

Schlussfolgerungen. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113

Literatur�������������������������������������������������������������������������������������������������������������� 115

Abbildungsverzeichnis

Abb. 1.1 Von-Neumann- vs. In-Memory-Computerarchitektur������������������������   2 Abb. 1.2 Entwurfsablauf für den vorgeschlagenen angepassten Syntheseansatz������������������������������������������������������������������������������������   4 Abb. 2.1 Aufbau eines RRAM-Bausteins: (a) Niederohmiger Zustand (ein), (b) Hochohmiger Zustand (aus). (c) Symbol eines RRAM-Bausteins��������������������������������������������������������������������������������   8 Abb. 2.2 Beziehung zwischen grundlegenden passiven Schaltungselementen, abgeleitet aus der Dualität [19] ����������������������   9 Abb. 2.3 (a) Schematische Darstellung der in [87] vorgeschlagenen TiO2 Speichereinheit. (b) RRAM als Widerstand im ein- und ausgeschalteten Zustand [87]��������������������������������������������������������������  10 Abb. 2.4 IMP-Betrieb. (a) Implementierung von IMP mit RRAM-Bausteinen. (b) Wahrheitstabelle für IMP ( q¢ ¬ p IMPq = p + q ) [12]��������������������������������������������������������������������  11 Abb. 2.5 Die inhärente Majoritätsoperation in einem RRAM-Baustein, dargestellt durch (a) eine Wahrheitstabelle und (b) eine endliche Zustandsmaschine [35] ����������������������������������������������������������������������  12 Abb. 2.6 (a) MAGIC-NOR-Gatter mit 2 Eingängen. (b) MAGIC-NOR-Gatter mit N Eingängen [50]��������������������������������  13 Abb. 2.7 Logische Darstellungen für eine Beispielfunktion mit drei Eingangsvariablen. (a) BDD, (b) AIG, und (c) MIG��������������������������  14 Abb. 2.8 Anfängliche BDD-Darstellungen mit und ohne komplementäre Kanten für die Funktion f = (x1 ⊕ x2) ∨ (x3 ⊕ x4), unter Verwendung einer aufsteigenden Variablenordnung. (a) BDD nur mit regulären Kanten. (b) BDD mit regulären und komplementären Kanten����������  15 Abb. 2.9 Zwei BDD-­Darstellungen für die Funktion x1 x2 x3 Ú x1 x2 x4 Ú x1 x2 x3 x4 Ú x1 x2 x3 x4 mit unterschiedlicher Reihenfolge der Variablen; (a) optimiertes BDD in Bezug auf die Anzahl der Knoten, (b) optimiertes BDD in Bezug auf die Anzahl der Ein-Pfade��������������������������������������������������������������������������  15 IX

X

Abbildungsverzeichnis

Abb. 2.10 Umwandlung von AIG- und OIG-Darstellungen in MIG durch Hinzufügen dritter konstanter Eingänge. (a) Ein UND-Gatter, das in ein Majoritätsgatter umgewandelt wird. (b) Umwandlung eines ODER-Gatters in ein Majoritätsgatter ��������������������������������������  17 Abb. 2.11 Allgemeiner Ablauf für einen evolutionären Algorithmus [100] mit alphabetisch kodierten Lösungen mit einer Länge von vier��������  19 Abb. 3.1 Sifting [65] Technik zur variablen Neuordnung von BDDs [29]��������  22 Abb. 3.2 Vergleich verschiedener ε-Auswahlverfahren������������������������������������  47 Abb. 4.1 Die Realisierung eines IMP-basierten MUX unter Verwendung von RRAM-Bausteinen [16] ��������������������������������������������������������������  52 Abb. 4.2 Kostenmetriken des RRAM-basierten In-Memory-Computing für ein beliebiges BDD, (a) vor der Optimierung (initial), #R = 12, #S = 28, und (b) nach der Optimierung (optimiert), #R = 11, #S = 27����������������������������������������������������������������������������������  56 Abb. 4.3 Anwendung einer Erweiterung von Ω. IR→L zur Verringerung der zusätzlichen RRAMs und Schritte, die durch Komplementkanten verursacht werden����������������������������������������������  70 Abb. 4.4 Vergleich der Syntheseergebnisse nach logischen Darstellungen für RRAM-basiertes In-Memory-Computing, (a) die durchschnittliche Anzahl der RRAM-­Bausteine, (b) die durchschnittliche Anzahl der Berechnungsschritte����������������������������  78 Abb. 4.5 MIG, das ein Drei-Bit-XOR-Gatter darstellt��������������������������������������  78 Abb. 4.6 Crossbar-­Implementierung für den vorgestellten Syntheseansatz für Logic-in-Memory-­Computing, (a) Standard-­Crossbar-­Architektur, (b) Upper-Bound-Crossbar für MAJ-basierte und (c) IMP-basierte Implementierungen für die in Abb. 4.5 dargestellte MIG��������������������������������������������������������  79 Abb. 4.7 Auswahl von RRAM-Bausteinen für Crossbar-Berechnungen zur Vermeidung von Berechnungsinterferenzen bei der MAJ -basierten Implementierung, (a) Durchführung konkurrierender Berechnungen an verschiedenen Spalten, (b) diagonale Berechnung, (c) Beibehaltung zuvor gespeicherter Bausteine ����������  84 Abb. 5.1 (a) Die PLiM-Architektur [35]. (b) Eine einzelne Speicherbank eines resistiven Crossbar-Arrays, auf der eine PLiMImplementierung ausgeführt wird������������������������������������������������������  88 Abb. 5.2 Verringerung der Anzahl der Anweisungen und RRAMBausteine nach (a) MIG-­Umschreibung, (b) nach Knotenauswahl und Übersetzung ��������������������������������������������������������������������������������  90 Abb. 5.3 Verringerung der Anzahl der RRAM-Bausteine für PLiMImplementierungen durch Auswahl des Kandidaten mit (a) mehr freisetzenden Kindern und (b) kleinerem Fanout-­LevelIndex ��������������������������������������������������������������������������������������������������  94

Abbildungsverzeichnis

XI

Abb. 5.4 Auswahl des zweiten Operanden einer mit B bezeichneten Anweisung������������������������������������������������������������������������������������������  95 Abb. 5.5 Auswahl des dritten Operanden oder des Ziels eines mit Z bezeichneten Befehls��������������������������������������������������������������������������  97 Abb. 5.6 Beispiel für ein MIG, das anfällig für unausgewogene Schreibvorgänge ist, die durch die Flächen- und Latenzberücksichtigung des PLiMs verursacht werden��������������������� 101 Abb. 5.7 Beispiel für ein MIG, das anfällig für unausgewogene Schreibvorgänge ist, weil es Knoten mit langer Speicherdauer besitzt�������������������������������������������������������������������������������������������������� 104

Tabellenverzeichnis

Tab. 3.1 Deskriptive Statistiken für MOB��������������������������������������������������������  29 Tab. 3.2 Vergleich der Ergebnisse mit Priorität auf die Anzahl der Knoten mit bestehenden Knotenminimierungsansätzen��������������������  31 Tab. 3.3 Vergleich der Ergebnisse mit Priorität auf die Anzahl der Ein-Pfade mit bestehenden Ein-Pfade-Minimierungsansätzen����������  32 Tab. 3.4 Vergleich von Knoten-Ein-Phade-Produkten (NOPs)������������������������  34 Tab. 3.5 Experimentelle Auswertung und Vergleich von approximierten BDDs mit ursprünglich geordneten und neu geordneten BDDs durch Sifting [65]��������������������������������������������������������������������������������  44 Tab. 4.1 Die Kostenmetriken der logischen Repräsentationen für RRAM-basiertes In-Memory-Computing������������������������������������������  55 Tab. 4.2 Vergleich der Ergebnisse des BDD-basierten Syntheseansatzes durch allgemeine und priorisierte MOB mit Chakraborti et al. [16] ������������������������������������������������������������������������  58 Tab. 4.3 Ergebnisse der AIG-basierten Synthese mit Fläche- und Tiefen-Minimierung nach ABC [5]����������������������������������������������������  62 Tab. 4.4 Vergleich der Ergebnisse der vorgeschlagenen AIG-basierten Synthese mit Bürger et al. [15] ����������������������������������������������������������  63 Tab. 4.5 Ergebnisse des MIG-basierten Syntheseansatzes durch die drei vorgeschlagenen MIG-Optimierungsalgorithmen������������������������������  73 Tab. 4.6 Vergleich der Ergebnisse des MIG-basierten Syntheseansatzes mit MIG-Algorithmen zur Flächen- und Tiefenminimierung basierend auf [1] ��������������������������������������������������������������������������������  76 Tab. 5.1 Experimentelle Auswertung für den PLiM-Compiler������������������������  98 Tab. 5.2 Experimentelle Bewertung der vorgeschlagenen ausdauersensiblen Techniken�������������������������������������������������������������� 107 Tab. 5.3 Anzahl der Anweisungen und RRAM-Bausteine, die für eine ausdauergerechte Kompilierung von PLiM erforderlich sind������������ 108 Tab. 5.4 Ergebnisse der vollständigen Ausdauerbetrachtung mit maximaler Schreibstrategie für Schreibwerte von 10, 20, 50 und 100 ���������������� 109 XIII

Kapitel 1

Einführung

Die heutigen Computerarchitekturen sind hauptsächlich nach dem Modell aufgebaut, das der ungarisch-amerikanische Mathematiker John von Neumann in seinem ersten Entwurf eines Berichts über den EDVAC [59] vorschlug. Die abstrakte von-Neumann-Architektur besteht aus einer Zentraleinheit (Central Processing Unit, CPU), die aus Steuer- und Recheneinheiten besteht, einem Hauptspeicher, auch Primärspeicher genannt, in dem Daten und Befehle gespeichert werden, einem externen Speicher, d.  h. einem Sekundärspeicher, der im Gegensatz zum Hauptspeicher keinen direkten Zugriff auf die CPU hat, Ein-/Ausgabegeräten und Bussen zur Übertragung von Daten, Adressen und Befehlen zwischen CPU und Hauptspeicher. Unter den verschiedenen Speicherkomponenten, die die in den heutigen Computerarchitekturen verwendete Speicherhierarchie bereitstellt, bezeichnen wir die üblicherweise verwendete Festplatte als Sekundärspeicher und den Arbeitsspeicher (Random-Access Memory, RAM) als Primärspeicher, den sogenannten Speicher. Aufgrund ihres hohen Preises ist der Festplattenspeicher in einem typischen Computer wesentlich größer als der Arbeitsspeicher. Daher ist es kostspielig, große Mengen an RAM als einzigen Speicherplatz bereitzustellen und die Festplatte nur für die dauerhafte Archivierung zu verwenden. Bei der Verarbeitung von Daten, die das Speichervolumen des Arbeitsspeichers übersteigen, lässt sich daher die Verwendung der Festplatte nicht vermeiden. Allerdings beträgt die Zugriffszeit auf die auf der Festplatte gespeicherten Informationen mindestens das 20-fache der vom RAM benötigten Zeit. Diese Latenzzeit, die durch die Kommunikation zwischen Speicher und Prozessor verursacht wird, schränkt die Gesamtleistung der CPU ein, da sie nicht mit einer höheren Geschwindigkeit arbeiten kann als die erforderliche Wartezeit für den Abruf der Daten, die als memory bottleneck bezeichnet wird. Der memory Bottleneck ist heutzutage das Haupthindernis für die Weiterentwicklung von Computersystemen. Das Aufkommen von Anwendungen wie Internet of Things (IoT) und Big Data hat die Aufmerksamkeit darauf gelenkt, das Speicherproblem zu lindern, da riesige Datenmengen in Echtzeit verarbeitet und

© Der/die Autor(en), exklusiv lizenziert an Springer Nature Switzerland AG 2023 S. Shirinzadeh, R. Drechsler, In-Memory-Computing, https://doi.org/10.1007/978-3-031-22879-7_1

1

1 Einführung

2

abgerufen werden müssen. Unter diesen Bedingungen kann eine weitere Optimierung der bestehenden Speicherhierarchie keine Lösung mehr sein, vielmehr ist ein revolutionärer Ansatz erforderlich. In-Memory-Computing, das durch fortschrittliche nichtflüchtige Speichertechnologien ermöglicht wird, ist ein vielversprechender Kandidat, der die Kommunikation zwischen Speicher und Prozessor abschafft, indem er sie zusammenführt. Resistiver RAM (RRAM) ist eine vielversprechende nichtflüchtige Technologie, die Daten in Form von elektrischem Widerstand speichert. Der Widerstandszustand des Bausteins kann zwischen zwei niedrigen und hohen Zuständen umgeschaltet werden, die Binärwerte darstellen. Dies ermöglicht die Ausführung logischer Operationen und damit die Verarbeitung von Informationen im Speicher. Neben der resistiven Schaltfähigkeit besitzt RRAM interessante Eigenschaften wie Null-­Standby-­Stromverbracuh, hohe Skalierbarkeit, niedrige Lese-/ Schreiblatenzen und Kompatibilität mit der CMOS-Technologie (Complementary Metal Oxide Semiconductor) [36, 93, 95, 98]. Diese Merkmale ermöglichen hybride CMOS-RRAM-Strukturen mit hoher Dichte zur Realisierung digitaler Logik-­in-­Memory-Schaltungen und -Systeme. RRAM-Crossbar-Array-Architekturen können so programmiert werden, dass sie beliebige logische Funktionen berechnen, die in aktuellen Computerprozessoren ausgeführt werden. Da die Berechnungen innerhalb der RRAM-Bausteine durchgeführt werden, wird der Speicher automatisch mit dem Ergebnis aktualisiert, ohne zusätzliche Latenzzeiten für die Übertragung und das Schreiben der Informationen, die bei klassischen von-Neumann-Architekturen, bei denen Speicher und Prozessor getrennt sind, unvermeidlich sind (siehe Abb. 1.1). Die logische Berechnungsfähigkeit in RRAM-Bausteinen kann auch auf eigenständige programmierbare Hardwares übertragen werden. Solche In-Memory Schaltkreise und Systeme sind vorteilhaft für die derzeitigen siliziumbasierten Hardwares, die mit der CMOS-Technologie hergestellt werden und deren Leistung durch die kontinuierliche Verkleinerung der minimalen physikalischen Merkmale, die sich den atomistischen und Quantengrenzen nähern, beeinträchtigt wird. Da die CMOS-Ära aufgrund der immer kleiner werdenden Technologiegrößen zu Ende geht [38], hat die Notwendigkeit, zu vielversprechenden Post-CMOS-Technologien überzugehen, dazu geführt, dass die Forschung diesen Bereichen große Aufmerksamkeit widmet. Traditionelle Architektur von Neumann

Speicherung

Berechnung

In-Memory-Architektur Integration von Speicherung und Datenverarbeitung

Berechnung und Speicherung

Abb. 1.1  Von-Neumann- vs. In-Memory-Computerarchitektur

1.1 Überblick

3

Nach den obigen Ausführungen besteht die Notwendigkeit, die Lücke zwischen dem traditionellen Syntheseablauf und den spezifischen Anforderungen der Synthese mit RRAM-Bausteinen zu schließen. In diesem Zusammenhang zielt dieses Buch darauf ab, einen umfassenden und automatisierten Entwurfsablauf für In-­ Memory-­Computing bereitzustellen. Die vorgestellten Beiträge ermöglichen die Synthese hocheffizienter programmierbarer Logik-In-Memory-Hardware und Architekturen.

1.1 Überblick In diesem Buch wird die Synthese für In-Memory-Computing aus zwei verschiedenen Blickwinkeln untersucht, d. h. (1) auf der Grundlage eines angepassten An­satzes auf Gatterebene, der Logikdarstellungen verwendet, und (2) eines Anweisungsbasierte Ansatzes für die effiziente Manipulation, Kompilierung und Ausführung von Programmen auf einer Logik-in-Memory-Computerarchitektur [72, 78]. Der angepasste Ansatz schlägt Entwurfsmethoden und Optimierungsalgorithmen für jede Darstellung im Hinblick auf Fläche und Latenzzeit bei der Realisierung vor. Der Anweisungsbasierte Ansatz schlägt einen automatischen Compiler zur Ausführung von Anweisungen auf einer Logik-in-Memory-Computerarchitektur vor. Der vorgeschlagene Ansatz optimiert die Programme im Hinblick auf die Latenzzeit und die Anzahl der benötigten Bausteine. Durch die Anwendung von Abnutzungsausgleichstechniken wird auch das Problem der Schreibausdauer angegangen. Der vorgeschlagene angepasste Ansatz zielt darauf ab, die Lücke zwischen dem traditionellen Logiksynthese und den technologiespezifischen Anforderungen für die Synthese von In-Memory-Computing-Schaltungen mit resistiven Bauelementen zu schließen. Zu diesem Zweck verwendet der angepasste Syntheseansatz die bekannten logischen Darstellungen wie Binary Decision Diagram (BDD) (z.  B. in [23]), And-Inverter Graph (AIG) [48] und den Majority-Inverter Graph (MIG) [1]. Der Ansatz umfasst drei Stufen: (1) die Suche nach effizienten Realisierungen mit RRAM-Bausteinen für die logisch Basis-Operationen jeder Darstellung, (2) dann die Definition der Entwurfsmethodik zur Abbildung der Darstellungen auf ein RRAM-Array, (3) und schließlich die Optimierung der Darstellungen im Hinblick auf die Anzahl der RRAM-Bausteine und der durch die Entwurfsmethodik bestimmten Operationen (siehe Abb. 1.2). Die Beiträge zum angepasste Syntheseansatz umfassen viele effektive heuristische Algorithmen zur Optimierung der oben genannten logischen Repräsentationen im Hinblick auf verschiedene Kostenmetriken. Diese Algorithmen können auch für die klassische Logiksynthese und andere Anwendungen mit BDDs, AIGs und MIGs von Nutzen sein. Mit Hilfe des anweisungsbasierten Ansatzes automatisieren und optimieren wir eine Logic-in-Memory-Computing-Architektur, die aus standardmäßigen memristiven Arrays besteht. Das Ziel ist es, von einer Beschreibung auf Gatterebene auszugehen und diese effizient durch MIGs darzustellen. Anschließend wird das Ziel-­ MIG optimiert und in verständliche Befehle für den Logic-in-Memory-Computer

4 Abb. 1.2 Entwurfsablauf für den vorgeschlagenen angepassten Syntheseansatz

1 Einführung

Optimierung und Kartierung

Entwurfsmethodik

Realisierung von logischen

übersetzt. Die kompilierten Programme enthalten die geplante Liste von Befehlen, d. h. Lese- und Schreibvorgänge oder mit anderen Worten Berechnungen, die durch Anlegen geeigneter Spannungspegel an bestimmte Wortleitungen und Bitleitungen des RRAM-Arrays ausgeführt werden können. Darüber hinaus befassen wir uns mit dem Problem der geringeren Schreibausdauer von RRAM-Bausteinen und schlagen Verschleißausgleichsverfahren vor, um die Lebensdauer der Architektur zu erhöhen.

1.2 Gliederung Dieses Buch besteht aus sechs Kapiteln, einschließlich des vorliegenden Einführungskapitels. In Kap. 2 wird der erforderliche Hintergrund dargestellt. Dazu gehören kurze Einführungen in die RRAM-Technologie und ihre Eigenschaften, die verwendeten logischen Darstellungen und das Grundkonzept der evolutionären Berechnung, die für die Optimierung von BDDs verwendet werden. In den Kap. 3, 4 und  5 werden die wichtigsten technischen Inhalte des Buches vorgestellt, die im Folgenden kurz beschrieben werden. • Es werden Optimierungsalgorithmen für BDDs für den angepassten Syntheseansatz vorgeschlagen. Diese Algorithmen werden in Kap. 3 vorgestellt und ermöglichen eine multikriterielle BDD-Optimierung. Die vorgeschlagenen Algorithmen erlauben die Anwendung von Präferenzen und können auf eine Vielzahl von Anwendungen angewendet werden, die BDDs nutzen. Die experimentellen Ergebnisse zeigen, dass eine beträchtliche Effizienz im Vergleich zu den modernsten BDD-Optimierungstechniken erreicht wurde. Das Kapitel ermöglicht auch eine BDD-Approximation. Die Approximation wurde in die Optimierung inte­ griert und ermöglicht einen viel höheren Gewinn bei geringen Kosten für Ungenauigkeit, was für fehlerresistente Anwendungen geeignet ist. • In Kap. 4 wird der angepasste Syntheseansatz vorgestellt. Dieser umfasst drei Entwurfsansätze, die auf den Eigenschaften von BDDs, AIGs und MIGs basieren, die die booleschen Zielfunktionen darstellen. Das Kapitel enthält auch mehrere MIG-Optimierungsalgorithmen im Hinblick auf verschiedene Kriterien,

1.2 Gliederung

5

während die Optimierung von AIGs direkt durch Umschreibalgorithmen durchgeführt wurde, die in ein anderes Logiksynthesetool von ABC [5] eingebettet sind. Das Kapitel zeigt die Design-Präferenzen in Bezug auf Latenz und Fläche der resultierenden Implementierungen, die durch die Verwendung von drei verschiedenen logischen Darstellungen und zwei Grundoperationen in RRAM-­ Bausteinen ermöglicht werden. Auch Implementierungsprobleme bei memristiven Crossbar-Arrays werden in diesem Kapitel anhand von Beispielen ausführlich diskutiert. • Kap. 5 behandelt die anweisungsorientierte Synthesemethode für eine programmierbare Logik-in-Speicher-Computerarchitektur. Das Kapitel enthält drei Hauptbeiträge, nämlich die erstmals durchgeführte automatische Kompilierung der Logik-in-Speicher-Programme anhand einer Beschreibung auf Gatterebene, die Optimierung der resultierenden Programme im Hinblick auf die Anzahl der erforderlichen RRAM-Bausteine und die Länge der Anweisungssequenzen sowie das Wear-Leveling der Speicher-Arrays durch Anwendung von Techniken zum Ausgleich der Schreibvorgänge auf ganze -Bausteine, die sowohl bei der Kompilierung als auch bei der Ausführung berücksichtigt werden. Die in diesem Kapitel vorgestellten experimentellen Ergebnisse zeigen erhebliche Verbesserungen im Vergleich zu den naiven Implementierungen. Die in Kap. 5 vorgestellten Beiträge führten zu den folgenden Veröffentlichungen. Dieses Buch wird in Kap. 6 abgeschlossen.

Kapitel 2

Hintergrund

Dieses Kapitel zielt darauf ab, dieses Buch in sich geschlossen zu halten, indem es kurze Einführungen in die grundlegenden Konzepte bietet, die für die folgenden Kapitel erforderlich sind. Das Kapitel umfasst vier einführende Abschnitte. Im ersten Abschnitt werden die RRAM-Technologie und ihre grundlegenden Eigenschaften vorgestellt. Darauf folgt ein Abschnitt, in dem die derzeitigen grundlegenden logischen Operationen erörtert werden, die in RRAM-Bausteinen ausgeführt werden können. In diesem Buch wird eine kundenspezifische Synthese auf der Grundlage von logischen Darstellungen durchgeführt, die in Abschn. 2.3 vorgestellt werden. Da die Optimierung für eine der logischen Repräsentationen durch einen multikriteriellen Ansatz unter Verwendung evolutionärer Heuristiken erfolgt, werden in Abschn.  2.4 die Grundlagen und der allgemeine Ablauf solcher Optimierungsalgorithmen erläutert.

2.1 RRAM-Technologie Die Schaltfähigkeit eines Oxidisolators, der von zwei Metallelektroden umgeben ist, ist seit den 1960er-Jahren bekannt, wurde aber erst nach mehreren Jahrzehnten interessant, als praktikable Gerätestrukturen vorgeschlagen wurden. Heutzutage gibt es eine Vielzahl von Bauelementen mit zwei Anschlüssen, die auf der Widerstandsschalteigenschaft basieren und verschiedene Materialien verwenden. Diese Bauelemente besitzen resistive Schalteigenschaften zwischen zwei hohen und niedrigen Widerstandswerten und sind unter verschiedenen Akronymen wie OxRAM, ReRAM und RRAM bekannt [94]. Eine RRAM-Zelle ist ein Baustein mit zwei Anschlüssen, das aus einem Metalloxid besteht, das von zwei Metallelektroden umschlossen wird. RRAM funktioniert im Grunde wie ein elektrischer Widerstand, dessen Innenwiderstand zwei stabile niedrige und hohe Werte zuweist, die die binären Werte 1 bzw. 0 bezeichnen.

© Der/die Autor(en), exklusiv lizenziert an Springer Nature Switzerland AG 2023 S. Shirinzadeh, R. Drechsler, In-Memory-Computing, https://doi.org/10.1007/978-3-031-22879-7_2

7

2 Hintergrund

8

Obere Elektrode

Obere Elektrode

ON Metall oxid

AUS

Metall oxid

Untere Elektrode (Metall)

(a)

Obere Elektrode

Untere Elektrode

(b)

Untere Elektrode

(c)

Abb.  2.1  Aufbau eines RRAM-Bausteins: (a) Niederohmiger Zustand (ein), (b) Hochohmiger Zustand (aus). (c) Symbol eines RRAM-Bausteins

Die Umschaltung zwischen den beiden Zuständen ist durch Anlegen geeigneter Spannungen an das Gerät möglich, die zur Ausführung logischer Operationen in RRAM-Bauteilen genutzt werden können. RRAM-Bausteine sind nicht flüchtig, da sie ihren Widerstandszustand beibehalten, bis er durch eine Vorspannung mit der erforderlichen Polarität und angemessenen Amplitude geändert wird. Abb. 2.1 zeigt die Struktur eines RRAM-Bausteins in seinen zwei verschiedenen Widerstandszuständen, die einem Ein- und einem Ausschalter entsprechen. Wie die Abbildung zeigt, ist das Bauelement eingeschaltet, wenn es sich in einem niederohmigen Zustand befindet, oder anders ausgedrückt, die elektrische Leitfähigkeit ist hoch, was auf die Dotierstoffkonzentration zwischen den Elektroden zurückzuführen ist. Die hohe Skalierbarkeit von RRAM-Bauelementen [94] ermöglicht die Implementierung von extrem dichten resistiven Speicherarrays [44]. Solche Architekturen mit memristiven Bauelementen sind von großem Interesse für ihre möglichen Anwendungen in der Entwicklung nichtflüchtiger Speicher [40, 56], digitaler und analoger programmierbarer Systeme [18, 34, 61] und neuromorpher Rechenstrukturen [86]. Darüber hinaus ermöglicht die resistive Schalteigenschaft in RRAM-­ Bauelementen auch fortschrittliche Computerarchitekturen, die sich von klassischen von-Neumann-Architekturen unterscheiden, indem sie rechenfähige Speicher bereitstellen [35, 51]. RRAM-Bausteine haben auch die Aufmerksamkeit auf die Theorie der Memristoren gelenkt, die von Chua 1971 vorgeschlagen wurde [19]. Chua leitete aus den symmetrischen Gleichungen zwischen den drei bekannten Elementen Widerstand, Kondensator und Induktor ein viertes grundlegendes passives Schaltungselement ab (siehe Abb. 2.2). Das neue Element wurde Memristor genannt, eine Abkürzung für Memory und Resistor. In [20] wurden RRAM-Bausteine als physikalische Implementierung für Memristoren vorgeschlagen. Obwohl einige Forscher aufgrund des fehlenden magnetischen Flusses Unterschiede zwischen einem Memristor und einem RRAM-Bauelement geltend machten [92], haben beide Bauelemente die Eigenschaft des resistiven Schaltens gemeinsam [20, 87, 94]. Da verschiedene RRAM-Bauelemente bereits hergestellt wurden und ihre Funktionalität bewiesen ist, ziehen wir es hier vor, den Begriff RRAM-Bauelement zu verwenden. ­Außerdem

2.1 RRAM-Technologie

dq = Cdv v

q

dv = Rdi

dφ = Mdq

Abb. 2.2 Beziehung zwischen grundlegenden passiven Schaltungselementen, abgeleitet aus der Dualität [19]

9

i

dφ = Ldi

φ

wird in diesem Buch der Begriff RRAM-Bauteil mit den Begriffen resistives und memristives Bauteil oder Schalter synonym verwendet. Der Memristor stellt eine nichtlineare Beziehung zwischen elektrischer Ladung und magnetischem Fluss dar [19], wie in Abb. 2.2 gezeigt. Diese Definition wird später auf zeitinvariante memristive Bauelemente erweitert, die auch ohne magnetische Ladung durch Strom gesteuert werden, so dass

dx / dt = f ( x,i ) v ( t ) = R ( x,i ) .i ( t ) .



Im Jahr 2008 stellten die HP-Labors ein Gerät her, von dem behauptet wurde, es sei der fehlende Memristor [87]. Das HP-Gerät bestand aus TiO2, das auf einer Seite mit Sauerstofflöchern dotiert war (TiO2–x) und zwischen zwei Platinelektroden eingebettet war. Der dotierte Bereich hat einen geringeren spezifischen Widerstand als der undotierte Bereich. Durch Anlegen einer Spannung geeigneter Polarität und Größe an die Vorrichtung kann der dotierte Bereich ausgedehnt oder zusammengezogen werden, was zu einer Änderung des Widerstands führt. Wenn die Spannung weggenommen wird, bleiben die Zustände der Sauerstoffträger unverändert, so dass sich das Bauelement seinen letzten Widerstandswert merken kann. Neben TiO2 wurden auch verschiedene andere Materialien für die Herstellung von memristiven Bauelementen verwendet [80]. Für die Analyse von RRAM-basierten Schaltungen wurden verschiedene Schaltungsmodelle für die memristiven Bauelemente vorgeschlagen. Dies ermöglicht es dem Entwickler, die Schaltungen mit Standard-Schaltungssimulationswerkzeugen zu simulieren und ihre Leistung zu analysieren. Zu den bisher vorgeschlagenen Simulationsmodellen gehören das lineare Ionendriftmodell [87], das Threshold Adaptive Memristor Model (TEAM) [49] und das Voltage Threshold Adaptive Memristor Model (VTEAM) [52]. Eines der ersten vorgeschlagenen RRAM-Modelle ist das lineare Ionendriftmodell, das auf der vereinfachten Darstellung des HP-Memristive-Bauelements beruht (siehe Abb. 2.3). In diesem Modell wird das memristive Bauelement als eine Kombination aus zwei in Reihe geschalteten variablen Widerständen betrachtet, von denen einer dem dotierten Bereich und der andere dem undotierten Bereich entspricht. Die Breite des dotierten Bereichs w wird als Zustandsvariable bezeichnet und

2 Hintergrund

10

Ron V Roff

− +

W Gekippt

Ungekürzt Ron W=D Roff W=D

D

(a)

(b)

Abb.  2.3 (a) Schematische Darstellung der in [87] vorgeschlagenen TiO2 Speichereinheit. (b) RRAM als Widerstand im ein- und ausgeschalteten Zustand [87]

b­ estimmt die Leitfähigkeit des Memristors. Die folgenden Gleichungen beschreiben die Drift-Diffusions-Geschwindigkeit und die zeitlich variierende Spannung in diesem Modell:





dw m v Ron i ( t ) = dt D æ w (t ) æ w (t ) v (t ) = ç Roff Ron + çç 1 ç D D è è

öö ÷÷ ÷÷ i ( t ) øø

wobei D die Breite des memristiven Bauelements, μv die durchschnittliche Ionenbeweglichkeit des TiO2 Bereichs und w(t) die Dicke des dotierten Bereichs in Abhängigkeit von der Zeit t, auch Zustandsvariable genannt, ist. Ron ist der Widerstand, wenn die Breite des dotierten Bereichs w(t) D ist, und Roff ist der Widerstand, wenn w(t) 0 ist. Der gesamte Memwiderstand des Bauelements ist gegeben durch:



æ m R ö M ( q ) = Roff ç 1 - v 2on q ( t ) ÷ D è ø

wobei v(t), i(t) und q(t) jeweils die Spannung, den Strom und die Gesamtladung bezeichnen, die zum Zeitpunkt t durch das Gerät fließen. Um die Grenzen des Modells zu überwinden, wenn sich w den Grenzen des Bauelements nähert, und auch um Nichtlinearitäten in der Ionendrift einzuführen, wurden verschiedene Fensterfunktionen vorgeschlagen, wie in [45] und [8]. Es gibt auch andere Memristor-Modelle wie TEAM [49] und VTEAM [52], die das nichtlineare Verhalten der Ionendrift-Phänomene auf genauere Weise direkt einbeziehen. Diese Modelle sind jedoch rechenintensiver.

2.2 Logic-in-Memory mit RRAM

11

2.2 Logic-in-Memory mit RRAM In diesem Abschnitt wird erläutert, wie drei grundlegende Operationen in einem RRAM-Baustein ausgeführt werden können, die als Grundlage für den Entwurf von logischen Schaltungen auf RRAM-Basis dienen.

2.2.1 Material Implication Die Material Implication (IMP), d. h. q ¢ ¬ p IMPq = p + q , und die FALSE- Operation, d.  h. die Zuweisung des Ausgangs zur 0, reichen aus, um jede boolesche Funktion auszudrücken [12]. Abb. 2.4 zeigt die Implementierung eines IMP Gatters, das in [12] vorgeschlagen wurde. P und Q bezeichnen zwei ohmsche Bauelemente, die mit einem Lastwiderstand RG verbunden sind. Drei Spannungspegel VSET, VCOND und VCLEAR werden an die Bauelemente angelegt, um die Operationen IMP und FALSE auszuführen, indem zwischen niederohmigen (logisch 1) und hochohmigen (logisch 0) Zuständen gewechselt wird. Die Operation FALSE kann durch Anlegen von VCLEAR an einen RRAM-Baustein durchgeführt werden. Ein RRAM-Baustein kann auch auf 1 geschaltet werden, indem an seinen Spannungstreiber eine Spannung angelegt wird, die größer als ein Schwellenwert VSET ist. Um IMP auszuführen, werden zwei Spannungspegel VSET und VCOND gleichzeitig an die Schalter P und Q angelegt. Der Betrag von VCOND ist kleiner als der erforderliche Schwellenwert, um den Zustand des Schalters zu ändern. Das Zusammenspiel von VSET und VCOND kann jedoch IMP entsprechend den aktuellen Zuständen der Schalter ausführen, so dass der Schalter Q auf 1 gesetzt wird, wenn p = 0 ist, und er seinen aktuellen Zustand beibehält, wenn p = 1 ist [12].

2.2.2 Resistiver Majoritätsoperation RRAM ist ein Bauelement mit zwei Anschlüssen, dessen Innenwiderstand R zwischen zwei logischen Zuständen 0 und 1 umgeschaltet werden kann, die hohe bzw. niedrige Widerstandswerte bezeichnen. Bezeichnet man den oberen und unteren Anschluss mit P und Q, so kann der Speicher mit einer negativen oder positiven Abb. 2.4  IMP-Betrieb. (a) Implementierung von IMP mit RRAM-Bausteinen. (b) Wahrheitstabelle für IMP ( q¢ ¬ p IMPq = p + q )[12]

VCOND P

VSET Q

RG

(a)

p 0 0 1 1

q 0 1 0 1

q 1 1 0 1

(b)

2 Hintergrund

12 P

P R Q

P QRR

P QRR

0 0 1 1

0 0 1 1

0 1 0 1

0 0 0 0

0 0 1 0

R =P Q

0 1 0 1

1 1 1 1

1 0 1 1

Q

R=0 P

Q

P

Q

R=1

R = P +Q

Q

(a)

P

(b)

Abb. 2.5  Die inhärente Majoritätsoperation in einem RRAM-Baustein, dargestellt durch (a) eine Wahrheitstabelle und (b) eine endliche Zustandsmaschine [35]

Spannung VPQ je nach Polarität des Bausteins geschaltet werden. Die Wahrheitstabellen in Abb. 2.5 zeigen, wie sich der nächste Zustand des Schalters (R' ) aus dem Zusammenspiel der Werte von P, Q und dem aktuellen Zustand (R) ergibt. Das in Abb.  2.5 beschriebene eingebaute resistive Majoritätsfunktion kann formal wie folgt ausgedrückt werden [35]: R ¢ = RM3 ( P,Q,R ) . = ( P × Q ) × R + ( P + Q ) × R



= P × R + Q × R + P ×Q × R = P × R + Q × R + P ×Q × R + P ×Q × R = P × R + Q × R + P ×Q = M ( P,Q,R )



Die oben beschriebene Operation wird mit RM3 bezeichnet, mit RM3 ( x,y,z ) = M ( x,y ,z ) [35] als resistive Majoritätsoperation mit drei Eingängen. Nach RM3 ist der nächste Zustand eines Widerstandsschalters gleich dem Ergebnis eines eingebauten Majoritätsgatters, wenn eine der drei Variablen x, y und z bereits vorgeladen ist und die Variable, die dem logischen Zustand der unteren Elektrode entspricht, invertiert ist. In diesem Buch verwenden wir MAJ als weiteres Akronym für die RM3-­ Operation im Vergleich zu IMP, während RM3 dort verwendet wird, wo es die einzige Operation ist, d. h. in Kap. 5.

2.2.3 Memristor-Aided Logik MAGIC ist die Abkürzung für Memristor Aided Logic [50], eine Stateful Logische Operation, bei der die Widerstandswerte die logischen Zustände darstellen. Im Gegensatz zu IMP werden bei MAGIC die Eingangs- und Ausgangswerte in

2.2 Logic-in-Memory mit RRAM

13

v­ erschiedenen RRAM-Bausteinen gespeichert. Eine MAGIC-Gate-Operation erfordert zwei Schritte. Im ersten Schritt wird das Ausgangsgerät auf einen bekannten logischen Zustand (entweder 0 oder 1) initialisiert. Bei nicht invertierenden Gattern wie UND und ODER wird das Ausgangsgerät auf 0 initialisiert, während bei invertierenden Gattern wie NICHT, NOR und NAND die Initialisierung das Gerät auf 1 setzt. Im zweiten Schritt wird eine geeignete Spannung V0 an die RRAM-­ Eingangsgeräte angelegt. Die Spannung am Ausgangsbaustein hängt vom logischen Zustand der Eingangs- und Ausgangsschalter ab [50]. Alle grundlegenden Gatter (NOT, AND, OR, NOR, NAND) können in RRAM-Bausteinen mit Hilfe der MAGIC-Operation ausgeführt werden. Obwohl alle Gatter nur mit MAGIC implementiert werden können, können nur NOR- und NOT-Gatter aufgrund des Verbindungsmusters zwischen Eingangs- und Ausgangsgeräten auf RRAM-Arrays abgebildet werden. Andere Gatter können nur als eigenständige Logik verwendet werden. Daher werden für die Synthese größerer boolescher Funktionen auf RRAM-Crossbar-Arrays, d. h. Arrays aus horizontalen und vertikalen Nanodrähten, bei denen die RRAM-Bauelemente an den Verbindungsstellen hergestellt werden, die Funktionen zunächst in Form von NOR- und NOT-Gattern dargestellt. Dann werden verschiedene Mapping-Methoden [89, 90] verwendet, um die Gatter auf die Crossbars abzubilden. Abb. 2.6 zeigt MAGIC-NOR-Gatter mit zwei und N Eingangsvariablen. Die Implementierung für beide Fälle erfolgt auf die gleiche Weise und erfordert zwei Rechenschritte. Das Verfahren ähnelt dem oben für den allgemeinen Fall der MAGIC-­ basierten Berechnung von Logikgattern beschriebenen. Im ersten Schritt wird das Ausgangsbauelement auf 1 gesetzt. Wenn in diesem Fall alle Eingangsvariablen gleich 0 sind (hochohmiger Zustand), ist die am Ausgangsbauelement abfallende Spannung geringer als der erforderliche Schwellenwert, um den Widerstandszustand zu ändern, und daher bleibt der Ausgang 1. Bei anderen Eingangskombinationen, d. h. wenn mindestens eine der Eingangsvariablen gleich 1 ist (niederohmiger Zustand), ist der Spannungsanteil an der Ausgangsvorrichtung größer als der erforderliche Schwellenwert und kann daher den Ausgang auf 0 schalten.

in1 in1

aus aus in2

...

in2

...

V0 V0

inN (a)

(b)

Abb.  2.6 (a) MAGIC-NOR-Gatter mit 2 Eingängen. (b) MAGIC-NOR-Gatter mit N Eingängen [50]

2 Hintergrund

14

2.3 Logische Darstellungen In diesem Abschnitt werden die logischen Darstellungen vorgestellt, die in diesem Buch verwendet werden. Zu diesen Darstellungen gehören das Binäre Entscheidungsdiagramm (BDD), der Und-Inverter-Graph (AIG) und der Majorität-­ Inverter-­Graph (MIG).1 Abb. 2.7 zeigt alle drei vorgenannten Darstellungen für eine boolesche Funktion mit drei Eingangsvariablen. Alle Graphen haben drei Knoten und drei Ebenen, d. h. Partitionen mit gleichem Abstand oder gleicher Rechenlatenz von der Wurzelfunktion f. Die Anzahl der Knoten und Ebenen, auch bekannt als Größe und Tiefe, werden als wichtige Merkmale einer Darstellung angesehen, da sie den Fläche bzw. die Latenz der resultierenden Schaltungen bestimmen. Insbesondere die Latenzzeit der resultierenden Schaltungen ist für die In-Memory Datenverarbeitung von großer Bedeutung. Daher ist die Optimierung der logischen Darstellungen im Hinblick auf die Anzahl der Ebenen der Graphen sehr wichtig. In diesem Abschnitt werden die Merkmale der drei erwähnten Darstellungen erörtert, während ihre Optimierung in den Kap. 3 und 4 ausführlich behandelt wird.

2.3.1 Binäre Entscheidungsdiagramme Binäre Entscheidungsdiagramme (BDD) können eine kompakte Graphendarstellung für die meisten praktisch relevanten booleschen Funktionen liefern. Für eine beliebige Funktion f(x) wird die BDD-Darstellung aus der Shannon-Zerlegung abgeleitet f = xi f xi Å xi f xi [70]. Die rekursive Anwendung dieser Zerlegung ermöglicht die Aufteilung der Funktion in viele kleinere Unterfunktionen. Der H ­ auptgrund f f

f

x1 x2

0 x1

x1

x3

x2 1 (a)

x1

x3 (b)

0 x2 x 1 0 x3 (c)

Abb. 2.7  Logische Darstellungen für eine Beispielfunktion mit drei Eingangsvariablen. (a) BDD, (b) AIG, und (c) MIG  Binary Decision Diagram (BDD), And-Inverter Graph (AIG) und Majority-Inverter Graph (MIG).

1

2.3 Logische Darstellungen

15

für die Kompaktheit von BDDs ist, dass solche Funktionen oft gemeinsame Unterfunktionen haben, wobei für eine gegebene Funktion f(x1, x2,…, xn) ihre Unterfunktionen f(0, x2,…, xn) und f(1, x2,…, xn) sowie deren Unterfunktionen sind usw. Eine Funktion f(x1,…, xn) wird als bead bezeichnet, wenn sie von ihrer ersten Variablen abhängt, oder anders gesagt, wenn ihre Wahrheitstabellen-Darstellung nicht die Form αα für eine beliebige Bitfolge α der Länge 2n–1 hat [47]. Die Knoten eines BDD für eine boolesche Funktion f sind alle Unterfunktionen von f, die beads sind. Die Größe eines BDD kann durch komplementäre Kanten weiter reduziert werden, so dass eine Unterfunktion und ihr Komplement durch denselben Knoten dargestellt werden können [13] (siehe Abb. 2.8). Es lässt sich leicht erkennen, dass sich die Menge der Unterfunktionen ändert, wenn die Reihenfolge der Eingabevariablen geändert wird. In der Tat hat die Reihenfolge der Variablen in einem BDD einen erheblichen Einfluss auf die Anzahl der Knoten und Pfade in einem BDD. Ein Beispiel dafür ist die Funktion

x1 x2 x3 Ú x1 x2 x4 Ú x1 x2 x3 x4 Ú x1 x2 x3 x4

aus [32] und in Abb. 2.9 dargestellt, hat ihre minimale Anzahl von Knoten, N = 5, für die variable Ordnung x4 < x3 < x3 < x1. Die minimale Anzahl von Ein-Pfaden, die die Funktion zu Eins auswerten, d. h. alle Pfade vom Start-Eckpunkt zum 1-­Terminal, Abb. 2.8 Anfängliche BDD-Darstellungen mit und ohne komplementäre Kanten für die Funktion f = (x1 ⊕ x2) ∨ (x3 ⊕ x4), unter Verwendung einer aufsteigenden Variablenordnung. (a) BDD nur mit regulären Kanten. (b) BDD mit regulären und komplementären Kanten

f

f

x1

x1

x2

x2

x2

x3

x3

x4

x4

x4

0

1

1

(a)

Abb. 2.9  Zwei BDD-­ Darstellungen für die Funktion x1 x2 x3 Ú x1 x2 x4 Ú x1 x2 x3 x4 Ú x1 x2 x3 x4 mit unterschiedlicher Reihenfolge der Variablen; (a) optimiertes BDD in Bezug auf die Anzahl der Knoten, (b) optimiertes BDD in Bezug auf die Anzahl der Ein-Pfade

x2

(b)

4 3

2 3

2

1 4

1 4

1

4 3

1

1

(a)

(b)

16

2 Hintergrund

die eine gerade Anzahl von komplementierten Kanten haben (einschließlich des Komplements des Start-Eckpunkts), P = 4, erhält man für die variable Ordnung x2 < x1 < x4 < x3. In diesem Buch betrachten wir anfängliche BDD-Darstellungen vor der Optimierung mit einer festen aufsteigenden Variablenreihenfolge x1 < x2 < ⋯ < xn, wobei n die Anzahl der Eingabevariablen ist, z. B. in Abb. 2.8, n = 4 und daher die Reihenfolge x1 < x2 < x3 < x4. Die Verbesserung der Variablenreihenfolge, um ein BDD mit höchstens N Knoten zu finden, ist bekanntermaßen NP-komplett [10] und es wurden mehrere Heuristiken vorgeschlagen, die im nächsten Kapitel beschrieben werden.

2.3.2 Homogene logische Darstellungen In dieser Arbeit verwenden wir Und-Inverter-Graphen (AIGs) [48] und Majorität-­ Inverter-­Graphen (MIGs) [1] als homogene logische Darstellung. Jeder Knoten in den Graphen repräsentiert eine logische Operation, x  ⋅ y (Konjunktion) im Fall von AIGs und M(x, y, z) = x ⋅ y + x ⋅ z + y ⋅ z (Mehrheit von drei) im Fall von MIGs. Inverter werden durch komplementäre Kanten dargestellt; reguläre Kanten stehen für nicht komplementäre Eingaben. Homogene logische Darstellungen ermöglichen aufgrund ihrer regelmäßigen Struktur effiziente und einfachere Algorithmen – für die logischen Operationen ist keine Fallunterscheidung erforderlich. Folglich sind solche logischen Darstellungen die wichtigste Datenstruktur in modernen Logiksynthesetools. MIG [1] bietet eine hohe Flexibilität bei der Tiefenoptimierung, d.  h. bei der Verringerung der Anzahl der Ebenen des Graphen, und ermöglicht daher den Entwurf von Hochgeschwindigkeits-Logikschaltungen und FPGA-Implementierungen [2]. Im Vergleich zu den bekannten Datenstrukturen BDDs und AIGs haben MIGs experimentell bessere Ergebnisse bei der Optimierung von Logikschaltungen gezeigt, insbesondere bei der Ausbreitungsverzögerung [1]. In [35] wurde gezeigt, dass MIGs sehr gut für die Logiksynthese von RRAM-basierten Schaltungen geeignet sind, da sie die intrinsische resistive Majoritätsoperation in RRAM-­ ­ Bauelementen effizient ausführen können, die durch RM3 angezeigt wird (siehe ­Abschn. 2.2.2). Dies ermöglicht ein effizienteres In-Memory-Computing unter Ausnutzung eines Majoritätsorientierten Paradigmas. MIGs können boolesche Funktionen effizient darstellen, was durch die Ausdruckskraft des Majoritätsoperators M(a, b, c) = a ⋅ b + a ⋅ c + b ⋅ c = (a + b) ⋅ (a + c) ⋅ (b + c) ermöglicht wird. Ein Majoritätsoperator kann so konfiguriert werden, dass er sich wie ein herkömmlicher Konjunktions- (UND) oder Disjunktionsoperator (ODER) verhält. Wie in Abb. 2.10 gezeigt, wird im Fall eines Majoritätsoperators mit drei Eingängen durch die Festlegung eines Eingangs auf 0 ein UND und durch die Festlegung eines Eingangs auf 1 ein ODER realisiert. Als Folge der UND/ODER-Verknüpfung durch den Majoritätsoperator sind herkömmliche Und-Oder-­Inverter-­ Graphen (AOIGs)2 ein Spezialfall von MIGs, und MIGs können leicht aus AOIGs  And-Or-Inverter Graphs.

2

2.4 Evolutionäre Mehrzieloptimierung

17 x . y = M (x; y; 0)

x + y = M ( x; y; 1)

f

x

f

y

x

1

f

y

x

(a)

f

y

x

0

y

(b)

Abb. 2.10  Umwandlung von AIG- und OIG-Darstellungen in MIG durch Hinzufügen dritter konstanter Eingänge. (a) Ein UND-Gatter, das in ein Majoritätsgatter umgewandelt wird. (b) Umwandlung eines ODER-Gatters in ein Majoritätsgatter

abgeleitet werden [1, 83]. Dementsprechend sind MIGs mindestens so kompakt wie AOIGs. Eine noch kleinere MIG-Darstellung kann jedoch erreicht werden, wenn die Majoritätsfunktionalität vollständig ausgenutzt wird, d. h. mit nicht konstanten Eingaben [3].

2.4 Evolutionäre Mehrzieloptimierung Evolutionäre Algorithmen (EAs) wurden in diesem Buch verwendet, um synthetisierte Schaltkreise auf der Grundlage von BDDs im Hinblick auf verschiedene Entwurfskriterien zu optimieren, vor allem auf Fläche und Latenz. Daher wird in diesem Abschnitt die evolutionäre Mehrzieloptimierung erläutert, indem zunächst ein Mehrzieloptimierungsproblem formell definiert und dann der allgemeine Rahmen der evolutionären Algorithmen beschrieben wird.

2.4.1 Mehrzieloptimierung Die Mehrzieloptimierung ist das Problem der Entscheidungsfindung nach mehreren Kriterien, das sich mit mathematischen Optimierungsproblemen befasst, bei denen mehr als eine Zielfunktion gleichzeitig optimiert werden muss. Solche Probleme können in allen Bereichen der Wissenschaft auftreten, z. B. in den Bereichen Ingenieurwesen, Wirtschaft und Logistik, was zu einem wachsenden Bedarf an effizienten und zuverlässigen Mehrziel-Optimierungsmethoden geführt hat. Diese Aufgabe ist eine Herausforderung, da die Mehrzieloptimierung nicht nur eine einzige optimale Lösung liefert, sondern eine Reihe von Lösungen, die verschiedene Kompromisse zwischen konkurrierenden Kriterien darstellen. Die Kenntnis einer solchen Lösungsmenge hilft dem Entscheidungsträger, die beste Kompromisslösung zu wählen. Auf diese Weise kann bei hochdimensionalen Entwurfsproblemen der große Entwurfsraum drastisch auf eine Reihe optimaler Kompromisse reduziert werden.

2 Hintergrund

18

Ein beliebiges Optimierungsproblem mit m Zielen kann wie folgt definiert ­werden min f ( x ) = ( f1 ( x ) , f2 ( x ) ,¼, fm ( x ) ) , T





wobei die Lösung x = (x1, x2,…, xn)T als Entscheidungsvektor aus dem Entscheidungsraum Ω ⊆ ℝn beschrieben wird, und f :Ω → Λ eine Menge von m Zielfunktionen ist, die eine bestimmte Lösung bewertet, indem sie sie auf den Zielraum Λ ⊆ ℝm abbildet. Wenn x, y ∈ Ω sind, kann die Pareto-Dominanz, bezeichnet mit ≺, wie folgt definiert werden



x ≺ y :Û $j Î {1,2,¼,m} : f j ( x ) < f j ( y ) Ù "i ¹ j :

fi ( x ) £ fi ( y ) .



Nach der obigen Definition ist eine optimale Lösung, auch nicht-dominiert genannt, eine Lösung, die von keiner anderen Lösung dominiert wird. Die Menge der optimalen Lösungen ist die sogenannte Pareto-Menge, die mit ω ⊆ Ω bezeichnet wird. Sie muss die folgende Eigenschaft erfüllen

"p Î w : Óq Î W : q ≺ p.

Die Pareto-Front λ ist definiert als das Bild der Pareto-Menge im Zielraum, d. h. λ = f(ω) ⊆ Λ. Das Ziel eines Multi-Objective Evolutionary Algorithm (MOEA) ist es, eine gut konvergierende Menge von Lösungen für die Pareto-Menge zu finden. Das Endergebnis eines MOEA ist eine Menge nicht-dominierter Lösungen, die so genannte Pareto-Mengen-Approximation.

2.4.2 Evolutionäre Algorithmen Evolutionäre Algorithmen (EAs) sind eine Klasse probabilistischer Optimierungsmethoden, die den Prozess der natürlichen Evolution simulieren [100]. Es sei darauf hingewiesen, dass sich der Begriff EA in diesem Buch nicht auf andere Klassen der evolutionären Berechnung wie evolutionäre Strategie oder evolutionäre Programmierung bezieht. Das Konzept der EA ist eng mit dem des Genetischen Algorithmus (GA) verwandt und weitgehend identisch, so dass beide Begriffe in diesem Buch synonym verwendet werden. Für ein gegebenes Mehrzielproblem arbeiten EAs mit einer Menge möglicher Lösungen, die als Population bezeichnet wird, wobei jede Lösung in der Population als Individuum bezeichnet wird, ähnlich den Begriffen, die zur Beschreibung ­natürlicher Evolutionsphänomene verwendet werden. In ähnlicher Weise wird jede Iteration eines EA als eine Generation bezeichnet.

2.4 Evolutionäre Mehrzieloptimierung

19

Die Größe der Population und die Anzahl der Generationen sind zwei wichtige Parameter eines EA. Je größer die Population und je mehr Generationen, desto größer ist die Chance, konvergente und vielfältige Lösungen zu erreichen, d. h. eine bessere Schätzung der Pareto-Front unter Berücksichtigung beider Aspekte, der Qualität der Lösungen und der Vielfalt der Kompromisse, die sie bieten. Wenige Individuen in der Population und eine geringe Anzahl von Generationen schränken die Richtung der Evolution ein, was zu einer unausgereiften Konvergenz führt. Daher werden die Populationsgröße und die Anzahl der Generationen auf der Grundlage des verfügbaren Speichers und der Zeit sowie der Komplexität des Problems bestimmt. Zusammenfassend lässt sich sagen, dass ein EA eine Lösungspopulation iterativ weiterentwickelt, indem er aus vielversprechenden Lösungen, die als Eltern verwendet werden, Nachkommen erzeugt. Jeder Zyklus endet mit der Auswahl der besseren Lösungen, die in der nächsten Generation durch eine Überlebensstrategie verwendet werden. Der Algorithmus endet nach einer bestimmten Anzahl von Generationen oder wenn die gefundenen Lösungen die geforderten Eigenschaften erfüllen. Der allgemeine Ablauf eines evolutionären Zyklus ist in Abb. 2.11 dargestellt. In der ersten Generation wird eine Population nach dem Zufallsprinzip oder ggf. anhand einer Reihe von zuvor bekannten Lösungen erzeugt. Dann wird jedes Individuum in der Population auf der Grundlage seiner Qualitäten im Zielraum bewertet, d. h. es werden Zielfunktionen zugewiesen. Mit den Metriken, die die Qualität der Lösungen beschreiben, können sie mit Fitnesswerten markiert werden, die ihre ­vergleichbare Qualität innerhalb der Population bestimmen. Dieser Schritt ist in Abb. 2.11 durch die Fitnessbewertung dargestellt. Die Mating-Auswahl wählt dann die Eltern aus, aus denen die Nachkommen entstehen. Dies geschieht auf eine probabilistische Weise. Die binäre Turnierselektion ist ein Ansatz, der häufig für die Auswahl der Paaren verwendet wird. Beim Turnierselektion werden zwei Indivi-

abcd

= 1 Lösung

Umweltau swahl

adfc

aced

cf ed

Paarung swahlr

Fitnessbe wertung

Fitness = 19

abed b adbc

Mutation

ab de

Rekombination

Abb. 2.11  Allgemeiner Ablauf für einen evolutionären Algorithmus [100] mit alphabetisch kodierten Lösungen mit einer Länge von vier

20

2 Hintergrund

duen nach dem Zufallsprinzip ausgewählt, und dasjenige mit dem besseren Fitnesswert wird als Elternteil ausgewählt. Dieses Verfahren wird so lange fortgesetzt, bis die erforderliche Anzahl von Elternteilen ausgewählt ist. Nach der Auswahl der werden die Eltern rekombiniert, um einen Nachkommen zu erzeugen. Der am häufigsten verwendete Rekombinationsoperator bei EAs ist das binäre Crossover, bei dem zwei Elternteile zufällig ausgewählt und an einem oder mehreren Punkten getrennt werden. Anschließend werden die Nachkommen durch den Austausch verschiedener Segmente der beiden Elternteile erzeugt. Abb.  2.11 zeigt zum Beispiel die Rekombination der Eltern cfed und abde, die in der Mitte gebrochen werden. Dann wird ein Kind abed gebildet, indem die ersten Hälfte des zweiten Elternteils mit der zweiten Hälfte des ersten zusammengefügt wird. Kompliziertere Crossover-Operatoren lassen sich durch die Verwendung von drei oder mehr Elternteilen, d. h. nicht-binäre Crossover, oder durch mehrere Bruchstellen erzielen. Die Crossover-Wahrscheinlichkeit ist ein wichtiger Parameter für einen EA. Diese Wahrscheinlichkeit gibt den Prozentsatz der Population an, auf den die Crossover-Operatoren angewendet werden. Ohne Crossover, d.  h. mit einer Crossover-­Wahrscheinlichkeit von 0 %, ist die Nachkommenschaft eine vollständige Kopie der Eltern, während eine Crossover-Wahrscheinlichkeit von 100 % bedeutet, dass die gesamte Nachkommenschaft durch Crossover entstanden ist. In der Regel wird die Crossover-Wahrscheinlichkeit auf einen hohen Wert gesetzt, in der Hoffnung, dass die Eltern der aktuellen Generation vielversprechendere Lösungen hervorbringen können. Die durch Crossover erzeugten Nachkommen werden durch Mutation weiter variiert. Der Mutationsoperator dient dazu, Individuen zufällig leicht zu verändern. Der Zweck der Mutation ist es, eine höhere Diversität zu gewährleisten und lokale Minima zu umgehen. Wie Abb. 2.11 zeigt, wird ein Individuum, das alphabetisch als adfc kodiert ist, mutiert, indem der dritte Buchstabe f in b geändert wird. Bei einer binär kodierten Lösung, d. h. einer Bitkette, könnte die Mutation darin bestehen, dass ein Bit an einer zufälligen Position invertiert wird. In ähnlicher Weise können verschiedene Mutationsoperatoren für unterschiedlich kodierte Lösungspopulationen definiert werden. Die Mutationswahrscheinlichkeit gibt an, wie oft ein Individuum mutiert ist. 1 Diese Wahrscheinlichkeit wird normalerweise auf gesetzt, wobei n die Länge n des Vektors ist, der eine Lösung beschreibt. Dies bedeutet, dass beispielsweise bei einer binär kodierten Lösung nur ein einziges Bit an einer zufälligen Stelle dem Mutationsoperator unterworfen wird. Nach Anwendung der Mutationsoperatoren ist die Nachkommenschaft fertig und kann durch Selektion verwendet werden, um die Population der nächsten Generation in der letzten Phase des Zyklus zu bilden. Um sicherzustellen, dass die vielversprechenden Lösungen der aktuellen Generation nicht eliminiert werden, wurde das Konzept des Elitismus vorgeschlagen. Ein nicht-elitistes EA wählt die nächste Generation nur aus den Nachkommen aus, während ein elitistes EA die Umweltauswahl deterministisch auf die Vereinigung der Eltern- und Nachkommenmengen anwendet und die besten Lösungen als Population der nächsten Generation behält.

Kapitel 3

BDD-Optimierung und Approximation: Ein multikriterieller Ansatz

3.1 Verwandte Arbeiten Binäre Entscheidungsdiagramme (Binary Decision Diagrams, BDDs) werden in VLSI-CAD in großem Umfang für die Synthese und Verifikation eingesetzt [29]. Auch die Künstliche Intelligenz (KI) profitiert von BDDs, z. B. bei der Software-­ Modellprüfung [30], bei Anwendungen mit spärlichem Speicherplatz [43] und zur Verbesserung von Suchmethoden [31]. BDD-Optimierungstechniken zielen darauf ab, eine optimale Anordnung der Variablen zu finden, die zu einem BDD mit minimalen Kosten führt, was bei den meisten Anwendungen, die BDDs verwenden, hauptsächlich die Anzahl der Knoten, die sogenannte BDD-Größe, ist. Viele VLSI-CAD-Anwendungen bilden BDDs direkt auf die Zielschaltungen ab und daher führt ein kleineres BDD zu einer kleineren Chipfläche [26, 29]. Auch die Anzahl der Ein-Pfade, d. h. der Pfade, die die Funktion zu wahr auswerten, ist in mehreren Anwendungen von Bedeutung. Beispielsweise kann bei der formalen Verifikation mit Hilfe von SAT-Lösungen die Anzahl der erforderlichen Schritte zur Lösung eines SAT-Problems anhand der Anzahl der Pfade in BDDs gemessen werden [64]. In der logischen Synthese hat sich gezeigt, dass eine Verringerung der Anzahl der Pfade die Minimierung der Disjoint-­ Sum-­of-Product-Darstellungen verbessert, die direkt aus BDDs extrahiert werden können [58, 97]. Neben der Optimierung ermöglicht die Approximation als ein aufkommendes Rechenparadigma eine weitere Minimierung von BDDs auf Kosten der Ungenauigkeit für Anwendungen, bei denen kleine Abweichungen toleriert werden können. Es gibt mehrere Ansätze zur exakten Größenminimierung, die garantieren, dass das minimale BDD gefunden wird [28, 33, 42]. Dennoch ist die hohe Komplexität der exakten Methoden ein Grund dafür, dass heuristische Methoden von größerem Interesse sind. Sifting [65] ist ein bekannter Algorithmus zur Minimie-

© Der/die Autor(en), exklusiv lizenziert an Springer Nature Switzerland AG 2023 S. Shirinzadeh, R. Drechsler, In-Memory-Computing, https://doi.org/10.1007/978-3-031-22879-7_3

21

3  BDD-Optimierung und Approximation: Ein multikriterieller Ansatz

22

xi a

xj c

A

xj a

xi b xj d

B

C

xi b

A

B

C

Abb. 3.1  Sifting [65] Technik zur variablen Neuordnung von BDDs [29]

rung von Knoten, der auf einem Hill-Climbing-Verfahren basiert. Die Technik basiert auf einer Regel, die zwei benachbarte Variablen in einem BDD vertauscht, ohne die Funktion zu verändern (siehe Abb. 3.1). Sifting nutzt diese Eigenschaft, indem es jede Variable in der Reihenfolge der Variablen nach unten und oben verschiebt. Die BDD-Größe, die sich aus der Neuordnung jeder Variablen ergibt, wird während dieses Vorgangs aufgezeichnet. Anschließend wird die Variable zurückgeschoben und an der Position fixiert, an der das BDD mit der geringsten Anzahl von Knoten gefunden wurde. Die durch Sifting erzielten Ergebnisse können weit vom Optimum entfernt sein, wenn die Anzahl der Eingaben steigt. Mit anderen heuristischen ­Ansätzen wie Simulated Annealing (SA) [11] und Evolutionären Algorithmen (EAs) [24, 73] zur Minimierung der BDD-Knoten kann die Anzahl der Knoten bei großen Schaltkreisen sogar auf die Hälfte der durch Sifting erzielten Werte sinken. Da in diesem Kapitel die Verwendung von EAs für die BDD-Optimierung im Detail erläutert wird, wird der Rahmen von SA hier kurz erklärt. SA beginnt mit der Generierung einer zufälligen Variablenanordnung und wertet dann das resultierende BDD aus, indem es die Anzahl seiner Knotenpunkte zählt. Bevor ein Abbruchkriterium erfüllt ist, wird eine benachbarte Anordnung anstelle der aktuellen Variablenpermutation akzeptiert, wenn sie zu einem BDD mit einer geringeren Anzahl von Knoten führt. Andernfalls kann die neue Variablenanordnung auf probabilistische Weise akzeptiert werden. SA erlaubt es nämlich, eine Variablenanordnung mit einer bestimmten Wahrscheinlichkeit zu akzeptieren, um den Algorithmus in die Lage zu versetzen, einem lokalen Minimum zu entkommen. Die meisten BDD-Optimierungsansätze basieren auf der Minimierung von Knoten. Es hat sich jedoch gezeigt, dass die Anzahl der BDD-Pfade in einigen Anwendungen, wie z. B. der SAT-Lösung oder der Synthese, ebenfalls wichtig ist [29]. Modified Sifting (MS) [32] ist eine BDD-Optimierungsmethode, die darauf abzielt, die Anzahl der Ein-Pfade zu minimieren. Der Rahmen von MS ist derselbe wie der von Sifting, wobei das Ziel auf die Anzahl der Ein-Pfade festgelegt ist. Ähnlich wie Sifting untersucht MS nur einige wenige Möglichkeiten des gesamten Suchraums, was es im Vergleich zu simulationsbasierten Methoden wie SA und EA schneller macht. Folglich können die von MS gefundenen BDDs

3.1  Verwandte Arbeiten

23

eine erheblich höhere Anzahl von Ein-Pfaden aufweisen als das Optimum, wenn die Anzahl der Variablen steigt. In [39] wurde ein evolutionärer Algorithmus zur BDD-Pfadminimierung vorgeschlagen, der mit EA bezeichnet wurde. EA hat eine bessere Leistung als MS aus den gleichen Gründen wie oben erwähnt. EA wendet die Roulette-Wheel-Mating-­Auswahl an, um eine Nachkommenschaft mit einer Kardinalität von der Hälfte der aktuellen Population zu erzeugen. In jeder Iteration wird nach dem Einsatz von Variationsoperatoren ein Nachkomme erzeugt und dann die neue Population durch Kombination des Nachkommen mit der besten Hälfte der Individuen der aktuellen Population erstellt. Alle oben erläuterten BDD-Optimierungstechniken optimieren BDDs im Hinblick auf eine der Kostenmetriken. Ein in [57] vorgestellter Ansatz verwendet ­Sifting und MS unabhängig voneinander, um einen BDD-Kandidaten mit einem Kompromiss zwischen der Anzahl der Knoten und der Ein-Pfade zu finden, ohne einen multikriteriellen Rahmen zu verwenden. Der Algorithmus speichert einfach die Anzahl der Knoten und Ein-Pfade, die von beiden Methoden zurückgegeben werden. Danach prüft ein Vergleichsoperator die von den beiden Methoden ermittelten Knotenzahlen. Wenn sie gleich sind, wird das optimierte BDD durch das von MS gefundene BDD charakterisiert, da es möglicherweise eine geringere Anzahl von Ein-Pfaden aufweist. Andernfalls wird das gleiche Szenario bei gleicher Anzahl von Ein-Pfaden wiederholt, aber diesmal wird das mit Sifting gefundene BDD ausgewählt, da die Anzahl der Knoten voraussichtlich geringer ist. Wenn beide Ziele in den von zwei Methoden gefundenen BDDs unterschiedlich sind, muss der Benutzer manuell zwischen den resultierenden BDDs wählen. Der einzige Vorteil dieses Ansatzes im Vergleich zu Sifting und MS ist die Möglichkeit, ein BDD mit einem niedrigeren Ziel zu bevorzugen, wenn das andere Ziel in beiden Optionen identisch ist. Neben der heuristischen Optimierung kann auch die Approximation von BDDs in Betracht gezogen werden, um weitere Vorteile bei fehlerresistenten Anwendungen zu erzielen. Approximative Berechnungen sind ein neuer Ansatz, der durch Lockerung der strengen Anforderungen eine höhere Effizienz bei gleichzeitigem Qualitätsverlust bietet. Eine Vielzahl moderner Anwendungen wie Medienverarbeitung, Erkennung und Data Mining tolerieren akzeptable Fehlerraten, die von approximativen Rechenschaltungen und -systemen ausgenutzt werden können, um die Zeit- oder Energiekosten zu senken [37]. In [71] wurde ein Ansatz für die approximative Synthese von mehrstufigen Logikschaltungen vorgeschlagen, der die Schaltungsfläche für eine bestimmte Fehlerschwelle minimiert. Ein weiterer Ansatz wurde in [91] vorgeschlagen, der eine systematische Methodik zur Formulierung des Problems der approximativen Berechnung und dessen Abbildung auf ein äquivalentes traditionelles Syntheseproblem einführt. Da sich die Approximation zu einem aufkommenden Rechenparadigma entwickelt, um die intrinsische Fehlerresistenz in vielen modernen Anwendungen auszunutzen, steigt der Bedarf an Entwurfsmethoden für die Approximationsberechnung. In [82] wurde diese Anforderung für Anwendungen, die BDDs verwenden, durch die Einführung eines Minimierungsansatzes für approximatives Rechnen

24

3  BDD-Optimierung und Approximation: Ein multikriterieller Ansatz

berücksichtigt. In der Arbeit werden Approximationsoperatoren für die Eliminierung einer Anzahl von Knoten in BDDs sowie mehrere Algorithmen zur Berechnung verschiedener Fehlermetriken vorgeschlagen. In dieser Arbeit haben wir dieselben Algorithmen verwendet, die in [82] für die Berechnung der Fehlerrate und des Worst-­Case-­Fehlers vorgeschlagen wurden.

3.2 Multi-Objektive BDD-Optimierung 3.2.1 Merkmale des Algorithmus Der vorgeschlagene Ansatz zur Minimierung von BDDs mit mehreren Zielen [73] ist ein auf nicht-dominanter Sortierung basierender Algorithmus, der strukturell dem NSGA-II [22] ähnelt und über Variationsoperatoren verfügt, die speziell zur Vermeidung ungültiger Variablenpermutationen entwickelt wurden. NSGA-II hat sich bei Problemen mit zwei oder drei Zielen als sehr leistungsfähig erwiesen. Als Pareto-Dominanz-Algorithmus ist er jedoch nicht in der Lage, eine Rangfolge der Lösungen zu erstellen, wenn viele Ziele vorhanden sind. Da die BDD-Optimierung in diesem Kapitel als ein Zwei-Ziel-Problem charakterisiert wird, wäre NSGA-II ausreichend und sinnvoller als die Zahlung hoher Strafen bei der Verwendung von Optimierungsansätzen mit vielen Zielen, z. B. [88]. Das von NSGA-II verwendete Verhältnis für die Einstufung einer Population wird im Folgenden kurz erläutert. Gemäß der nicht-dominierten Sortierung sollten alle Individuen einer Dominanzstufe zugeordnet werden, die ihren Gesamtfitnesswerten entspricht, die für die Einstufung der Population verwendet werden. Um alle Mitglieder der ersten nicht-dominierten Front zu finden, sollte jedes Individuum mit jedem anderen Individuum in der Population verglichen werden, um festzustellen, ob es nicht-dominant ist. Dieses Verfahren kann durch ein schnelles nicht-­dominantes Sortierschema abgeschlossen werden, um alle Dominanzstufen zu finden. Die schnelle nicht-dominierte Sortierung verringert die Rechenkomplexität, indem die Anzahl der Individuen gezählt wird, die jedes Individuum in der Population dominieren oder von ihm dominiert werden. Um eine gut verteilte optimale Menge zu erhalten, wird neben dem Rang der Nicht-Dominanz auch die Dichte der Individuen im Auswahlprozess berücksichtigt. Die Dichteschätzungsmetrik, die so genannte Crowding Distance, wird berechnet, um zwischen Individuen zu unterscheiden, die zur selben nicht-dominierten Front gehören. So wird zwischen zwei Individuen mit unterschiedlichen nicht-dominanten Rängen das Individuum mit dem niedrigeren Rang bevorzugt. Andernfalls wird bei gleichen Rängen das Individuum mit dem größeren Wert der Crowding Distance bevorzugt.

3.2  Multi-Objektive BDD-Optimierung

25

Algorithmus 1: Rahmen der allgemeinen MOB

Der allgemeine Rahmen des MOB-Algorithmus ist in Algorithmus 1 beschrieben. Zunächst wird eine zufällige Elternpopulation P0 mit der Größe N initialisiert. Jedes Individuum der Population wird durch eine Permutation der Variablenindizes des BDD charakterisiert. Der Population werden objektive Werte zugewiesen, indem die Anzahl der Knoten, bezeichnet mit N, und der Ein-Pfade, bezeichnet mit P, gezählt wird. Die Schritte 6–18 werden so lange wiederholt, bis das Stoppkriterium erfüllt ist. Nach der Anwendung vom Turnierselektion, Rekombinations- und Mutationsoperatoren wird in Schritt 6 eine Nachkommenschaft Qt mit der gleichen Größe wie die Elternpopulation erstellt. Um Elitismus zu gewährleisten, wird Qt mit der aktuellen Population Pt kombiniert, was zu einer neuen Population Rt führt. In Schritt 9 wird eine nicht-dominierte Sortierung angewandt, um Rt in verschiedene Nicht-Dominationsstufen (F1, F2, usw.) zu klassifizieren. Danach werden Individuen zu Pt+1 hinzugefügt, beginnend mit der ersten nicht-dominierten Front F1. Dieses Verfahren wird fortgesetzt, um die Population Pt+1 mit nachfolgenden nicht-­ dominierten Fronten zu füllen, bis ihre Größe kleiner ist als die freien verfügbaren Slots in Pt+1 (Schritt 17), formal ausgedrückt als

Pt 1  Pt 1  Fi 1:  N  | Pt 1 |  .



Andernfalls werden die am wenigsten bedrängten Individuen in der aktuellen Front Fi ausgewählt, nachdem die Front nach dem Crowding Distance sortiert wurde.

26

3  BDD-Optimierung und Approximation: Ein multikriterieller Ansatz

3.2.1.1 Variation Operatoren In diesem Abschnitt werden die verwendeten Variationsoperatoren vorgestellt. Die Nachkommenpopulation wird durch Rekombinations- und Mutationsoperatoren ­erzeugt. Die Rekombination umfasst spezielle Crossover-Operatoren, die Auslassungen und Duplikationen in den Variablenindizes vermeiden. Die verwendeten Crossover-­Operatoren stellen sicher, dass die Permutationen gültig bleiben. In dem vorgeschlagenen BDD-Optimierungsalgorithmus werden drei Crossover-­Operatoren verwendet, nämlich Partially Matched Crossover, Inversion und Reproduktion. Partially matched crossover (PMX) [60] wird durch die zufällige Auswahl von zwei Kreuzungspunkten durchgeführt, die zwei Elternteile in drei Abschnitte teilen. Zwei Kinder werden durch Kombination von Abschnitten aus beiden Elternteilen erzeugt, wobei jeder zuvor verwendete Variablenindex durch einen neuen ersetzt wird, um gültige Permutationen zu gewährleisten. Die in [39] vorgestellte Inversion zerlegt jedes Elternteil in drei Abschnitte, indem zwei zufällige Positionen gewählt werden. Dann wird aus jedem Elternteil ein Kind erzeugt, indem die Reihenfolge der Indizes in einem zufällig gewählten Teil umgekehrt wird. Der zuletzt eingesetzte Crossover-Operator kopiert nur jedes Elternteil ohne genetische Veränderung. Das bedeutet, dass die erzeugten Kinder mit ihren Eltern identisch sind. Nach der Rekombination werden drei Mutationsoperatoren, die alle in [39] beschrieben sind, so eingesetzt, dass einer von ihnen ein Kind entsprechend den vorgegebenen Wahrscheinlichkeiten beeinflussen kann. Der erste Operator tauscht zwei Zufallsvariablen-Indizes des Individuums aus. Der zweite Operator wendet die erste Mutationstechnik zweimal auf dieselbe Permutation an. Beim dritten Mutationsoperator wird eine Position zufällig ausgewählt und ihr Inhalt mit einem benachbarten Index ausgetauscht. 3.2.1.2 Priorität In vielen realen Anwendungen sind ein oder mehrere Ziele von größerer Bedeutung. Bei solchen Optimierungsproblemen ist es zwar wünschenswert, alle Ziele zu minimieren, aber es ist vorzuziehen, dass Ziele mit höheren Prioritäten nicht benachteiligt werden, um die weniger wichtigen Kriterien zu verbessern. Daher ist der vorgeschlagene MOB-Optimierungsansatz mit der Fähigkeit ausgestattet, Prioritäten zu handhaben, um die Anforderungen spezifischer Anwendungen zu erfüllen. Bei der formalen Verifikation ist beispielsweise die Anzahl der Knoten wichtiger als die Anzahl der Ein-Pfade. Andererseits wird die Anzahl der Pfade als ein einflussreiches Ziel bei der Lösung von SAT-Problemen angesehen. Zur Modellierung von Prioritäten in einem multikriteriellen Optimierungsproblem wurden verschiedene Techniken entwickelt. Die gewichtete Summe ist eine weit verbreitete klassische Methode, die in der Lage ist, objektive Prioritäten zu behandeln. Sie skaliert die Menge der Ziele in einen Fitnesswert, indem sie jedes Ziel mit einem vom Benutzer angegebenen Gewicht multipliziert. Für eine Lösung x ∈ Ω ist die Fitnessfunktion f(x) gegeben durch

3.2  Multi-Objektive BDD-Optimierung

27 m



f  x   wi .xi . i 1



Es ist offensichtlich, dass größere Koeffizienten, die mit ωi bezeichnet werden, höhere objektive Prioritäten im Fitnesswert darstellen. Ein anderer Ansatz, die sogenanntePriorität Preferred, wird in [68] vorgeschlagen. Er beinhaltet eine lexikografische Ordnung der Ziele mit Preferred Verhältnis, das eine Verfeinerung der Pareto-Dominanz ist [25]. In dieser Arbeit wird das in [68] erläuterte Modell an die Nicht-Dominanz anstelle der Preferred angepasst. Sei p = {p1, p2, …, pm} ein Prioritätsvektor, der die den Zielen zugewiesenen Prioritäten für ein m-Ziel-Problem bestimmt. Jede Komponente pi, i ∈{1, 2, …, m} kann Werte aus der Menge {1, 2, …, n}, n ≤ m annehmen (n ist gleich m, falls alle Ziele unterschiedliche Prioritäten haben). Bei einem Minimierungsproblem gehen wir davon aus, dass ein kleinerer Wert von pi bedeutet, dass das Ziel i eine höhere Priorität hat. Bei zwei Lösungen x, y ∈ Ω, wobei x∣j und y∣j Untervektoren von x und y darstellen, die nur Zielfunktionen mit der Priorität j enthalten, ist Prioritätsdominanz definiert als x  p y : j  1, 2, , n : x j  y  j



k  j : y k  x k .



Inoffizieller ausgedrückt, verwendet das oben definierte Verhältnis die Pareto-­ Dominanz, um Zielfunktionen mit gleichen Prioritäten zu vergleichen. Mit anderen Worten: x dominiert y, wenn es einen Untervektor von Zielfunktionen mit identischer Priorität in x gibt, der den entsprechenden Untervektor in y dominiert, und wenn gleichzeitig x|j von keinem Untervektor mit einem höheren Prioritätswert als j in y dominiert wird. Prioritätsdominanz lässt sich bei dem BDD-Optimierungsproblem mit zwei Zielen einfacher definieren. In diesem Fall besteht der Prioritätsvektor aus zwei Werten, d. h. 1 für das Ziel mit der höheren Bedeutung und 2 für das andere Ziel. Der Prioritätsuntervektor für jedes Individuum ist gleich der entsprechenden Zielfunktion, die die Anzahl der Knoten oder Ein-Pfade darstellt. Das Verfahren zum Vergleich von Individuen gemäß einem gegebenen Prioritätsvektor wird in Algorithmus 2 beschrieben. In den Schritten 6–13 wird ein Individuum x mit y auf der Grundlage der Prioritätsdominanz verglichen. Zu diesem Zweck wird das Verhältnis Dominanz auf die entsprechenden Zielfunktionen mit hoher Priorität in x und y angewandt. Wenn diese Werte unterschiedlich sind, dominiert x natürlich die Priorität von y. Andernfalls wird das andere Ziel zur Unterscheidung zwischen den Individuen herangezogen. Um die Nicht-Dominanz-Front für jedes Individuum zu bestimmen, werden parallel zu den Vergleichen auch zwei Entitäten berechnet. Sx steht für die Menge der Lösungen, die von Individuum x dominiert werden, und nx ist die Anzahl der Individuen, die x dominieren. Anschließend können diese Entitäten für eine schnelle Sortierung nach Nicht-Dominanz verwendet werden, wie in [22] beschrieben.

28

3  BDD-Optimierung und Approximation: Ein multikriterieller Ansatz

Algorithmus 2: Priorität-Dominanz

3.2.2 Experimentelle Ergebnisse Um die Leistung von MOB zu bewerten und es mit anderen diskutierten bestehenden Ansätzen zu vergleichen, werden mehrere Experimente mit einem Benchmark-­ Set durchgeführt, das 25 boolesche Funktionen enthält. Die Funktionen stammen aus den Benchmark-Sets ISCAS89 [14] und LGSynth91 [96] mit einer Bandbreite von 7 bis 54 Eingabevariablen. MOB wurde unabhängig für jede Funktion 30 Mal ausgeführt. In allen Experimenten wird die Populationsgröße auf 100 gesetzt und der Algorithmus endet nach 1000 Iterationen. Ähnlich wie bei EA werden die Wahrscheinlichkeiten der Crossover-Operatoren auf 0,98, 0,01 bzw. 0,01 für PMX, Inversion und Reproduktion festgelegt. Drei Mutationsoperatoren haben eine Gesamtwahrscheinlichkeit von 1∕n, wobei n die Anzahl der Variablen des BDDs ist. Das CUDD-Paket [85] wird für die BDD-Darstellung und den Vergleich der Ergebnisse mit Knotenminimierungsansätzen verwendet. Um die Leistung des allgemeinen MOB-Algorithmus, d.  h. ohne Priorität, zu bewerten, wurden statistische Untersuchungen an den endgültigen Populationen für alle 30 Läufe jeder Benchmark-Funktion durchgeführt. Die vollständige Statistik mit den Durchschnittswerten, den kleinsten und den größten Beobachtungen der Ergebnisse, ist in Tab. 3.1 dargestellt. Es ist erwähnenswert, dass für eine Funktion mit vier oder mehr Variablen nicht unbedingt ein BDD mit minimalen Knoten- und Pfadwerten existiert [32]. Daher können die von MOB erreichten Werte für Knoten

Benchmark s1196 s1238 s1488 s208 s27 s298 s344 s382 s386 s400 s444 s510 s526 s641 s713 s820 s832 alu4 Clip misex1 sao2 t481 cordic misex3 seq AVG

#I/O 32/31 32/31 14/25 18/9 7/4 17/20 24/26 24/27 13/3 24/27 24/27 25/13 24/27 54/42 54/42 23/24 23/24 14/8 9/5 8/7 10/4 16/1 23/2 14/14 41/35

Min N 611 627 373 50 10 74 104 121 109 121 119 146 116 461 435 221 220 564 75 35 81 21 43 480 1208 257

Tab. 3.1  Deskriptive Statistiken für MOB

P 2581 2518 352 53 16 70 330 230 57 230 230 153 157 1512 1523 146 146 1372 214 34 97 841 9440 1973 1766 1041,64

Mittlere N 677,37 707,34 396,17 59,52 10 74,51 104,73 138,73 114,16 142.147 134,95 149,49 128,74 533,51 527,23 224,94 224,75 573,19 75 35,4 84,43 21,94 49,41 545,74 1275,76 280,36 2922,21 2827,9 365,45 62,67 16 73,4 331,45 255,82 64,89 252,05 261,88 166,78 164,15 1594,76 1647,11 157,13 158,37 1428,55 214 35,24 102,15 903,31 2.026.062 2120,83 1901,32 1531,52

P

Median N 675 679 402 60 10 74 104 136 113 135 132 150 129 527 517 224 225 572 75 35 85 21 47 536 1270 277,32 2857 2806 357 61 16 74 330 247,5 65 247 258 159 161 1593 1627 151 152 1372 214 36 102 841 25.797 2056 1883 1738,5

P

Max N 1014 1057 464 63 10 77 110 208 133 188 188 156 147 604 631 240 235 644 75 37 96 32 82 751 1461 348,12 P 4333 4479 517 202 16 74 346 332 82 332 340 183 197 1793 1936 180 179 1599 214 36 111 1009 34.393 3046 2301 2329,2

3.2  Multi-Objektive BDD-Optimierung 29

30

3  BDD-Optimierung und Approximation: Ein multikriterieller Ansatz

und Ein-Pfade das tatsächliche Optimum für eines oder beide Ziele oder sogar für keines von ihnen darstellen. In der Tat sollten die in Tab. 3.1 dargestellten Ergebnisse einen guten Kompromiss zwischen den Zielen darstellen, ohne dass Knoten oder Ein-Wege-Werte Priorität haben. Um die deskriptive Statistik der Ergebnisse der allgemeinen Zwei-Ziel-MOB zu analysieren, nehmen wir das für jedes Ziel gefundene Minimum als Metrik für die grobe Schätzung des optimalen Wertes. Die in Tab. 3.1 dargestellten Statistiken der Anzahl der Knoten (N) und der Ein-Pfade (P) zeigen, dass die durch Mittelwert und Median dargestellten Durchschnittswerte näher am Minimum der Anzahl der Knoten und Pfade liegen als die in den gesamten Durchläufen gefundenen Maximalwerte. Zum Beispiel sind für die Funktion s1196 die Mittelwerte für die Anzahl der Knoten und der Ein-Pfade nur 10,86 % bzw. 13,22 % größer als ihre Minimalwerte. Die schlechtesten Werte für die Anzahl der Knoten und der Ein-Pfade liegen um 70,37  % bzw. 67,88  % über den für die entsprechenden Ziele gefundenen ­Mindestwerten. Diese Eigenschaft in den ersten drei Statistiken ist besonders offensichtlich für die Funktionen, die zu größeren BDDs in Größe und Anzahl der Pfade führen. Betrachtet man die Auswirkung der maximalen Anzahl von Knoten und Ein-Pfaden auf die Verschlechterung ihrer Durchschnittswerte, spiegelt die obige Diskussion die Tatsache wider, dass die endgültigen Populationen im Vergleich zu den besten jemals gefundenen Werten von hoher Qualität sind. Im Allgemeinen liegen die Anzahl der Knoten und Pfade der von MOB gefundenen BDDs meist über den Werten, die ein optimales BDD ausdrücken, was auf die Qualität der Ergebnisse hinweist. Wie bereits erwähnt, stellt die Anzahl der Knoten oder Ein-Pfad-BDDs, die sich aus dem allgemeinen MOB-Algorithmus ergeben, nicht unbedingt den optimalen Wert für jedes Ziel dar. Stattdessen ist das minimale BDD, entweder in der Anzahl der Knoten oder der Pfade, für eine Methode mit einem einzigen Ziel zugänglich. Um einen fairen Vergleich anzustellen, werden daher die Ergebnisse von MOB mit Priorität auf die Anzahl der Knoten bzw. Ein-Pfade mit den vorgestellten Knotenbzw. Pfadminimierungsverfahren verglichen. Zu diesem Zweck werden die BDDs, die in allen 30 Durchläufen die kleinsten Werte für das bevorzugte Ziel aufweisen, als Ergebnisse der priorisierten MOBs ausgewählt, die in den Tab. 3.2 und 3.3 dargestellt sind. In Tab.  3.2 werden die BDDs, die durch die in Abschn.  3.1 besprochenen Knotenminimierungsverfahren Sifting und SA gefunden wurden, mit den optimalen BDDs verglichen, die durch MOB mit Priorität auf der Anzahl der Knoten erhalten wurden. Die in Tab. 3.1 besprochenen Sifting- und SA-Verfahren gefundenen BDDs werden mit den optimalen BDDs verglichen, die durch MOB mit Priorität auf der Anzahl der Knoten gefunden wurden. Aus der Tabelle lässt sich leicht ableiten, dass die Anzahl der BDD-Knoten, die von Sifting für die 25 Benchmark-Schaltungen gefunden wurden, bis auf wenige Fälle weit von den Werten entfernt sind, die von den beiden anderen Verfahren ermittelt wurden. Allerdings erhält Sifting für einige Funktionen eine geringere Anzahl von EinPfad-Knoten als die verglichenen Methoden, was eine unbeabsichtigte Folge der geringeren Fähigkeit ist, die minimierten BDDs zu finden. Andererseits zeigt SA

3.2  Multi-Objektive BDD-Optimierung

31

Tab.  3.2  Vergleich der Ergebnisse mit Priorität auf die Anzahl der Knoten mit bestehenden Knotenminimierungsansätzen Benchmark s1196 s1238 s1488 s208 s27 s298 s344 s382 s386 s400 s444 s510 s526 s641 s713 s820 s832 alu4 Clip misex1 sao2 t481 cordic misex3 seq AVG

Sifting [65] N P 642 3511 642 3511 391 551 61 79 10 17 78 73 104 330 121 315 123 70 121 315 161 447 165 206 141 368 629 2164 629 2164 258 184 258 184 804 2876 87 326 35 39 86 97 21 1009 43 38.482 602 2654 2163 62.587 333 4902,36

SA [11] N 600 600 369 41 10 74 104 119 110 119 119 148 113 408 408 221 221 564 75 35 81 21 43 478 1193 250,96

P 4079 4079 582 1867 17 74 330 332 65 332 332 192 207 2883 2883 180 180 1430 275 39 130 1009 38.482 3485 2265 2629,16

MOB N 599 599 373 41 10 74 104 119 110 121 119 146 115 385 389 221 221 564 75 35 81 21 42 478 1193 249,4

P 3907 3909 407 1867 16 74 330 332 58 292 332 181 189 2671 2617 177 151 1430 214 36 111 841 27.329 3408 2259 2129,12

eine hohe Leistung, indem es für die meisten Funktionen BDDs mit der minimalen Anzahl von Knoten findet. Betrachtet man alle in Tab. 3.2 gezeigten Ergebnisse, so zeigt MOB mit Priorität auf die Anzahl der Knoten eine deutlich höhere Qualität als die anderen beiden Methoden in Bezug auf beide Metriken. Der Durchschnitt der Ergebnisse für den gesamten Benchmark-Satz, die mit MOB erzielt wurden, zeigt eine Verringerung der Anzahl der Knoten um 2090 und 39 im Vergleich zu Sifting und SA.  Darüber hinaus findet MOB mit Priorität auf die Anzahl der Knoten BDDs mit einer deutlich geringeren Anzahl von Einpfaden für die Mehrzahl der Benchmark-Funktionen. Um einen genaueren Vergleich anzustellen, ist die durchschnittliche Anzahl der Ein-Pfade in MOB um 97,36 % bzw. 19,02 % geringer als die entsprechenden Werte in Sifting und SA. In der Tat findet MOB mit Priorität auf die Anzahl der Knoten bessere minimierte BDDs als die bekannten Knotenminimierungsverfahren und erreicht darüber hinaus eine große Reduzierung der Anzahl der Ein-Pfade.

32

3  BDD-Optimierung und Approximation: Ein multikriterieller Ansatz

Tab.  3.3  Vergleich der Ergebnisse mit Priorität auf die Anzahl der Ein-Pfade mit bestehenden Ein-Pfade-Minimierungsansätzen Benchmark s1196 s1238 s1488 s208 s27 s298 s344 s382 s386 s400 s444 s510 s526 s641 s713 s820 s832 alu4 Clip misex1 sao2 t481 cordic misex3 seq AVG

MS [32] N 1523 1523 500 62 13 91 104 152 158 152 154 184 153 768 768 310 310 621 127 42 102 35 49 946 1398 409,8

P 2874 1874 369 53 16 70 330 238 61 238 243 170 162 1700 1700 155 155 1545 262 34 99 1009 30.093 2303 1841 1903,76

EA [39] N 1142 1105 410 62 11 88 104 188 121 190 188 159 138 911 1458 250 249 597 75 37 100 50 171 727 1499 401,2

P 2508 2508 352 53 16 70 330 230 57 230 230 153 156 1444 1447 146 146 1372 214 34 97 841 8332 1976 1744 987,36

MOB N 1087 1064 408 62 10 76 104 188 113 188 188 155 138 611 616 230 230 572 75 36 86 21 73 577 1391 331,96

P 2509 2509 352 53 16 70 330 230 57 230 230 153 157 1447 1452 146 146 1372 214 34 97 841 9440 1973 1744 1032,08

Da die Anzahl der Knoten in diesem Experiment von größerer Bedeutung ist, ist das Finden von BDDs mit minimaler Größe das Hauptziel von MOB mit Priorität auf die Anzahl der Knoten. Nichtsdestotrotz gibt es drei Funktionen, für die MOB die BDD-Darstellungen mit der minimalen Anzahl von Knoten, die durch SA erhalten wurden, nicht finden kann. Für die Funktionen s1488, s400 und s526 haben die von MOB gefundenen BDDs insgesamt 8 Knoten mehr als die drei von SA ermittelten BDDs. Andererseits zeigt der Durchschnitt der Anzahl der Ein-Pfade für die genannten Funktionen einen Rückgang um 233 im Vergleich zur Gesamtzahl der Ein-Pfade in den entsprechenden BDDs, die mit SA gefunden wurden. In Anbetracht der Tatsache, dass es sich bei MOB mit Priorität auf die Anzahl der Knoten um einen Mehrzielalgorithmus handelt, ist das Finden von BDDs mit einem geringen Anstieg der Knotenanzahl als fairer Preis für die Reduzierung der Anzahl der Pfade akzeptabel.

3.2  Multi-Objektive BDD-Optimierung

33

Tab. 3.3 zeigt den Vergleich der von MOB erzielten Ergebnisse mit der Anzahl der von MS und EA gefundenen Ein-Pfade mit BDDs. Es ist deutlich zu erkennen, dass die mit MS erzielten Ergebnisse von EA und MOB dominiert werden. Daher wird im Folgenden die Qualität der von EA und MOB optimierten BDDs verglichen. Aus der Tabelle geht hervor, dass MOB für die meisten Benchmark-­ Schaltungen die minimale Anzahl von Ein-Pfaden gefunden hat, die auch von EA gefunden wurden. Für einige wenige Funktionen haben die von MOB ermittelten BDDs jedoch eine höhere Anzahl von Ein-Pfaden als die entsprechenden BDDs von EA. Für die Funktionen s1196, s1238, s641 und s713 zeigen die von MOB gefundenen BDDs nur eine geringe Zunahme der Anzahl der Ein-Pfade, während die Anzahl der Knoten erheblich gesenkt wird. Nur bei der Funktion cordic gibt es einen großen Unterschied zwischen der Anzahl der von EA und MOB ermittelten Ein-Pfade. Das BDD, das Cordic repräsentiert und von MOB gefunden wurde, ist um 13 % größer als das BDD von EA, was die Anzahl der Ein-Pfade betrifft. Es ist auch erwähnenswert, dass die Anzahl der Knoten in dem von MOB gefundenen BDD für die Funktion cordic auf weniger als die Hälfte der Knoten in dem von EA gefundenen BDD reduziert ist. Obwohl es MOB fast nicht gelungen ist, das minimale BDD in Bezug auf das wichtige Ziel für Cordic zu finden, hat es diesen Misserfolg durch eine angemessene Reduzierung des anderen Ziels kompensiert. Für die Funktion misex3 hat MOB sogar ein BDD gefunden, das im Vergleich zu dem von EA ermittelten BDD deutlich kleiner ist und eine geringere Anzahl von Ein-Pfaden aufweist. Die Gesamtzahl der mit MOB erzielten Ein-Pfade entspricht fast der Hälfte der mit MS erzielten Ein-Pfade, wobei die Anzahl der Knoten um 18,99 % reduziert wurde. Im Vergleich zu EA zeigt MOB einen Anstieg von 4,52 % in der Anzahl der Ein-Pfade, was hauptsächlich auf das Ergebnis von cordic zurückzuführen ist. Außerdem hat MOB im Vergleich zu EA 17,26 % weniger BDD-Knoten für den gesamten Benchmark-Satz. Obwohl sich die Ergebnisse von MOB bei der Anzahl der Ein-Pfade im Vergleich zu EA leicht verschlechtert haben, hat MOB die Anzahl der BDD-Knoten merklich verringert. Im Allgemeinen kann man sagen, dass MOB mit Priorität auf die Anzahl der Ein-Pfade im Vergleich zu bestehenden Knotenminimierungsverfahren eine hohe Leistung in Bezug auf beide Ziele zeigt. Um eine gründliche Bewertung der experimentellen Ergebnisse zu erhalten, wird die Multiplikation der Anzahl von Knoten und Ein-Pfaden als Metrik für die Qualität von BDDs betrachtet. In der Tat bedeutet ein niedrigeres Knoten-Ein-Phade-­ Produkt (NOP)1 einen besseren Kompromiss zwischen beiden Optimierungskriterien. Die Werte der NOPs, die mit allen MOB-Typen und den anderen Methoden erzielt wurden, sind in Tab. 3.4 dargestellt. Aus der Tabelle geht hervor, dass die allgemeine MOB ohne Priorität den geringsten Durchschnittswert aller NOP-Werte unter allen anderen Ansätzen erreicht hat, was ihre hohe Leistungsfähigkeit als Mehrzielverfahren zeigt. Der Durchschnitt der NOP-Werte der allgemeinen MOB sinkt auf 92,78 %, 27,02 %, 43,84 % und 32,28 % der entsprechenden Werte in Sif-

 Nodes-One-Paths

1

Benchmark s1196 s1238 s1488 s208 s27 s298 s344 s382 s386 s400 s444 s510 s526 s641 s713 s820 s832 alu4 Clip misex1 sao2 t481 cordic misex3 seq AVG

Sifting [65] 2.254.062 2.254.062 215.441 4819 170 5694 34.320 38.115 8610 38.115 71.967 33.990 51.888 1.361.156 1.361.156 48.246 48.246 2.312.304 28.362 1365 8342 21.189 1.654.726 1.597.708 135.375.681 5.953.189.36

SA [11] 2.447.400 2.447.400 217.341 76.547 170 5476 34.320 39.508 7150 39.508 39.508 28.416 23.391 1.176.264 1.176.264 39.780 39.780 806.520 20.625 1365 10.530 21.189 1.654.726 1.665.830 2.702.145 588.846.12

MS [32] 4.377.102 4.377.102 184.500 3286 208 6370 34.320 36.176 9638 36.176 37.422 31.280 24.786 1.305.600 1.305.600 48.050 48.050 959.445 33.274 1428 10.098 35.315 1.474.557 2.178.638 2.573.718 765.285.56

EA [39] 2.864.136 2.771.340 144.320 3286 176 6160 34.320 43.240 6897 43.700 43.240 24.327 21.528 1.315.484 2.109.726 36.500 36.354 819.084 16.050 1258 9700 42.050 1.424.772 1.436.552 2.614.256 634.692.24

Tab. 3.4  Vergleich von Knoten-Ein-Phade-Produkten (NOPs) MOB Mit Priorität für Ein-­Phade-­Wege 2.727.283 2.669.576 143.616 3286 160 5320 34.320 43.240 6441 43.240 43.240 23.715 21.666 884.117 894.432 33.580 33.580 784.784 16.050 1224 8342 17.661 689.120 1.138.421 2.425.904 505.923.96 Mit Priorität für Knotenpunkte 2.340.293 2.341.491 151.811 76.547 160 5476 34.320 39.508 6380 35.332 39.508 26.426 21.735 1.028.335 1.018.013 39.117 33.371 806.520 16.050 1260 8991 17.661 1.147.818 1.629.024 2.694.987 503.018.24

Allgemein 1.906.860 1.889.888 142.065 3286 160 5476 34.320 33.082 6380 32.562 33.082 23.562 20.640 806.837 802.382 33.222 32.928 784.784 16.050 1260 8342 17.661 686.774 1.116.951 2.305.520 429.762.96

34 3  BDD-Optimierung und Approximation: Ein multikriterieller Ansatz

3.3  Approximate BDD-Optimierung

35

ting, SA, MS bzw. EA.  Darüber hinaus haben auch die beiden anderen MOB-­ Versionen deutlich niedrigere NOP-Durchschnittswerte als die Knoten- oder Pfadminimierungsmethoden. Mit anderen Worten, die prioritätsbasierten MOB-Typen finden einen guten Kompromiss, der in der Regel das minimale BDD in Bezug auf das Ziel von höherer Wichtigkeit ist und gleichzeitig den Wert des anderen Ziels reduziert. Um die Auswirkung der Priorität auf die MOB zu bewerten, werden die Durchschnittswerte der Ergebnisse mit Priorität für Knoten und Ein-Pfade mit den Durchschnittswerten der Knoten und Ein-Pfade verglichen, die mit der allgemeinen MOB erzielt wurden. Die Integration der in den Tab. 3.1, 3.2 und 3.3 dargestellten Ergebnisse zeigt, dass die MOB nach Anwendung der Priorität auf die Anzahl der Knoten und Ein-Pfade 10,06 % und 40,63 % weniger BDD-Knoten und Ein-Pfade als die allgemeine MOB erzielt hat. Da die Anzahl der Ein-Pfade über einen größeren Bereich als die der Knoten verteilt ist, zeigen die Ergebnisse der MOB mit Priorität für die Anzahl der Ein-Pfade ein höheres BDD-Abstraktionsniveau in Bezug auf die Ein-Pfade. Im Allgemeinen hat die Einbeziehung der Priorität in die MOB die Leistung des Algorithmus in Bezug auf das vom Benutzer bevorzugte Ziel verbessert und gleichzeitig die günstigen Mehrzieleigenschaften bewahrt.

3.3 Approximate BDD-Optimierung 3.3.1 Grundlegende Konzepte Die approximative BDD-Optimierung zielt darauf ab, ein BDD, das eine gegebene boolesche Funktion f repräsentiert, zu minimieren, indem es durch eine boolesche Funktion f approximiert wird und eine gegebene Schwelle auf der Grundlage einer Fehlermetrik beachtet wird. Das zugehörige exakte Entscheidungsproblem wird als Approximate BDD Minimization (ABM, [82]) bezeichnet und fragt für eine gegebene Funktion f, eine Fehlermetrik e, einen Schwellenwert t und eine Größenbeschränkung b, ob es eine Funktion fˆ gibt, die e f , fˆ ≤ t und B fˆ ≤ b entspricht.

(

)

( )

In diesem Kapitel betrachten wir den häufig verwendeten Worst-Case-Fehler und die Error-Rate als Fehlermetriken e. Der Worst-Case-Fehler



(

)

{

(

)

}

= wc f , fˆ max int ( f ( x ) ) − int fˆ ( x ) ∀x ∈ n ,

(3.1)

wobei ‚int‘ die ganzzahlige Darstellung eines Bitvektors wiedergibt, ist die maximale Differenz zwischen dem ungefähren Ausgabewert und einer korrekten Version für alle möglichen Eingaben. Diese Metrik wird in der Literatur manchmal auch als Fehlersignifikanz bezeichnet. Die Error-Rate

36



3  BDD-Optimierung und Approximation: Ein multikriterieller Ansatz

(

)

er f , fˆ =

∑  f ( x ) ≠ fˆ ( x ) 

x∈n

2n



(3.2)

ist das Verhältnis der Fehler, die beim Ausgangswert infolge der Approximation beobachtet werden, zur Gesamtzahl der Eingangskombinationen. Das Produkt aus Error-Rate und Gesamtzahl der Eingabekombinationen entspricht der Hamming-­ Distanz, wenn sie auf Funktionen mit einer Ausgabe angewendet wird. Die ersten beiden Metriken berücksichtigen die ganzzahlige Darstellung der Funktionswerte anstelle der binären Darstellung. Dies ist nützlich, da in den meisten Anwendungen eine Änderung in den höherwertigen Bits eine viel größere Auswirkung hat als Änderungen in den niederwertigen Bits. Um ein BDD zu approximieren, verwenden wir die Operatoren, die mit dem APPLY-Algorithmus [65] effizient implementiert werden können. Diese Operatoren sollten (1) die Funktion ändern und (2) die Größe des BDDs reduzieren. Die Funktionsänderung sollte im besten Fall nicht zu drastisch sein, d. h. die Auswirkung auf die Fehlermetrik wird klein gehalten. In diesem Kapitel verwenden wir die Ko-Faktorisierung für eine Variable xi, d. h.

fˆ ← f xi

order

fˆ ← f xi ,



(3.3)

als einfachster Operator, allerdings mit ganz erheblichen Auswirkungen auf die Fehlermetrik. Ein komplexerer Algorithmus ist das sogenannte „Heavy Branch Subsetting“ [63], das wir teilweise auf die Ebene von xi und alle niedrigeren Ebenen (in Richtung der Terminals) anwenden, die mit  f xi  und  f xi  bezeichnet werden und als Auf- und Abrunden bezeichnet werden. Für jeden Knoten, der auf der Ebene xi oder darunter erscheint (mit anderen Worten für jeden Knoten mit der Bezeichnung xj mit j ≥ i), wird das leichtere Kind, d. h. das Kind mit der kleineren ONMenge, durch einen Endknoten ersetzt. Der Endknoten ist ⊥ (falsch) beim Abrunden und ⊤ (wahr) beim Aufrunden.

3.3.2 Anforderungen an den Algorithmus Die approximative BDD-Optimierung stellt im Vergleich zu einem typischen Mehrziel-­Optimierungsproblem einige spezifische Anforderungen, die erfüllt werden sollten. Das einfachste Modell für die approximative Mehrziel-BDD-­ Optimierung unter Berücksichtigung der beiden in Abschn.  3.3.1 beschriebenen Fehlermetriken ist ein Drei-Ziel-Problem, bei dem das erste Ziel auf die BDDGröße festgelegt ist. Bei diesem Modell muss möglicherweise das Auftreten nicht vergleichbarer Lösungen durch Hinzufügen von Dichtedaten vermieden werden, da es drei Ziele gibt. Das Modell ist auch keine echte Projektion des Problems, da es den Hauptzweck der approximativen BDD-Berechnung ignoriert, nämlich die Su-

3.3  Approximate BDD-Optimierung

37

che nach dem BDD mit minimaler Größe. Außerdem garantiert es nicht, dass die Gültigkeit der approximierten BDDs erhalten bleibt. In diesem Abschnitt werden kurz die möglichen Lösungen für ein spezifisches problemorientiertes Modell für die Mehrzieloptimierung zur BDD-Approximation vorgestellt. Bei der näherungsweisen Berechnung nehmen wir einige Kosten in Form von Fehlern in Kauf, um ein kleineres BDD zu finden, das bei der ausschließlichen Verwendung von Techniken zur Anordnung von Variablen möglicherweise nicht existiert. Daher kann die Fehlermetrik nicht als so wichtig angesehen werden wie die Anzahl der BDD-Knoten. Dies bedeutet, dass der Optimierungsalgorithmus in der Lage sein sollte, eine höhere Priorität des ersten Kriteriums zu handhaben. Ein umfassenderes Prioritätsschema, das verschiedene Prioritätsszenarien für alle Ziele zulässt, könnte auch für einige boolesche Funktionen von Interesse sein, wenn ein oder zwei der Fehlermetriken die Genauigkeit und Gültigkeit der Approximation stark beeinflussen. Bei einem BDD, das einen Addierer darstellt, könnte beispielsweise ein hoher Wert der Error-Rate toleriert werden, wenn die ganzzahligen Werte der realen und der approximierten Funktion selbst bei einer großen Anzahl von Zuweisungen geringfügig voneinander abweichen. Ein hoher Wert des Worst-­Case-­ Fehlers kann hingegen eine fehlgeschlagene Approximation bedeuten, da er zeigt, dass die Ausgabe der approximierten Funktion für mindestens eine Eingangszuweisung nicht akzeptabel ist. Neben der obigen Diskussion über die Priorität der Ziele sollte der Algorithmus auch gewährleisten, dass die endgültigen Lösungen gültige BDDs gemäß den vom Benutzer festgelegten Standards darstellen. Daher sollte für jede Fehlermetrik ein Schwellenwert festgelegt werden. Es ist erwähnenswert, dass es ausreicht, die Fehlerschwellenwerte zu erfüllen. Vielmehr sollte der Algorithmus sicherstellen, dass die minimale BDD-Größe nicht um den Preis verloren geht, zu dem kleinere Fehlerwerte als erforderlich gefunden werden. Dies wurde bereits berücksichtigt, indem der Größe der BDDs eine höhere Priorität eingeräumt wurde. Allerdings bedarf die Festlegung der Schwellenwerte noch weiterer Überlegungen. Die Werte der durch die Approximation verursachten Fehler hängen stark von den Eigenschaften der durch BDDs dargestellten Funktionen ab. Es ist für einen Benutzer fast unmöglich, das Verhalten einer Funktion bei der Approximation vorherzusehen [82]. Bei einigen Funktionen kann eine kleine Operation auf dem zu approximierenden BDD zu dramatischen Ungenauigkeiten führen, ohne dass sich die Größe merklich verbessert, während bei anderen Funktionen ein hoher Gewinn bei geringen Fehlerkosten erzielt werden kann. In diesem Fall führt die approximative BDD-Optimierung möglicherweise nicht zu den bestmöglichen Fehlerwerten. Wenn die Fehlerbeschränkungen zu locker gesetzt sind, wird der Prozess abgebrochen, ohne die bestmöglichen Fehlerwerte zu finden. Andererseits können strenge Beschränkungen nur wenige Individuen in der Population zulassen, die einen kleinen Prozentsatz des gesamten Suchraums abdecken. Dies kann die Evolutionsrichtung einschränken und verhindern, so dass man minimale BDDs erhält. Daher kann ein geeignetes adaptives Fehlerbeschränkungsschema, das vom Verhalten der zu approximierenden Funktion abhängt, für die Qualität der Ergebnisse von großer Bedeutung sein.

38

3  BDD-Optimierung und Approximation: Ein multikriterieller Ansatz

Nach der obigen Diskussion über die Anforderungen an die Mehrziel-BDD-­ Approximation müssen wir ein geeignetes Verhältnis zur Unterscheidung der Lösungen für dieses Problem in Betracht ziehen. Diese diskriminierende Beziehung wird die strenge Pareto-Dominanz-Relation ersetzen, die für den Algorithmus in Abschn. 3.2.1 verwendet wurde, um die oben genannten problemspezifischen Anforderungen zu erfüllen und das Auswahlverfahren zu beschleunigen, da es von den durch die Approximation ermöglichten groben Vergleichen profitiert [76, 79].

3.3.3 Merkmale des Algorithmus In diesem Abschnitt wird zunächst das priorisierte ε-Preferred Verhältnis erläutert, welches zum Vergleich von Lösungen verwendet wird. Anschließend wird der vorgeschlagene Mehrzielalgorithmus für das Problem der approximativen BDD-­ Optimierung vorgestellt. 3.3.3.1 Priorisierte ε-Preferred Wie bereits erwähnt, ist das strenge Verhältnis der Pareto-Dominanz für die approximative BDD-Optimierung nicht erforderlich. In diesem Fall sind wir nur daran interessiert, BDDs mit kleineren Größen zu finden und die Fehlermetriken spielen keine Rolle, solange sie die Schwellenwerte nicht erfüllen. Um die für diesen Zweck geeignete Rangordnungsmethode zu finden, wird hier zunächst die in [25] vorgeschlagene so genannte Preferred Relation eingeführt. Preferred ist eine Verfeinerung der Pareto-Dominanz, die die Anzahl der Zielfunktionen zur Unterscheidung von Lösungen berücksichtigt. Für i und j ∈{1, 2, …, m} ist die Relation Preferred definiert als

x  preferred y : i : f i  x   f i  y    j : f j  y   f j  x  .



(3.4)

Inoffiziell bedeutet die obige Gleichung, dass die Lösung x der Lösung y vorgezogen wird, wenn die Anzahl der Zielfunktionen von x, die kleiner sind als die entsprechenden Werte von y, größer ist als die Anzahl der Zielfunktionen von y, die kleiner sind als die gleichen Komponenten von x. DasVerhältnis Preferred ist nicht transitiv und kann daher keine partielle Ordnung sein. Folglich können Konzepte wie nicht-dominierende Ebenen im Sinne der Pareto-Dominanz [22], bei denen jede Lösung in einer Ebene alle Lösungen dominiert, die zu den Ebenen mit höheren Fitnesswerten gehören, nicht für Preferred definiert werden. Bei einer Population, die auf der Grundlage von Vorzugslösungen verglichen wird, können die Lösungen paarweise vergleichbar sein [25]. Um dies zu verdeutlichen, geben wir ein Beispiel. Nehmen wir an, f(x) = (8, 7, 1), f(y) = (1, 9, 6) und f(z) = (7, 0, 9) seien Lösungen, die im Zielraum abgebildet sind. Gemäß der

3.3  Approximate BDD-Optimierung

39

Relation Preferred wird x gegenüber y und y gegenüber z bevorzugt. Bei einer transitiven Relation könnte man schlussfolgern, dass x dieselbe Beziehung zu z hat, während hier die Lösung z gegenüber x bevorzugt wird. Tatsächlich beschreiben die Lösungen x, y und z einen Zyklus im Vergleich zueinander. Lösungen, die sich innerhalb eines Zyklus befinden, werden als unvergleichbar bezeichnet und sind gleichrangig. Zur Sortierung der Lösungen auf der Grundlage von Vorzugslösungen wird die Population in sogenannte Satisfiability Classes (SCs, [25]) unterteilt. Jede SC repräsentiert den Fitnesswert für eine Menge von Lösungen, die nach dem oben erläuterten Konzept nicht vergleichbar sind. Lösungen von SCs, die durch kleinere Werte gekennzeichnet sind, werden bei der Auswahl gegenüber Lösungen von SCs mit größeren Indizes bevorzugt. Aufgrund der Nicht-­ Transitivität des Verhältnisses Preferred werden jedoch nicht unbedingt alle Lösungen, die zu einem SC gehören, gegenüber den gesamten Lösungen mit größeren SC-Indizes bevorzugt. So können beispielsweise zwei Lösungen x und y in zwei aufeinanderfolgenden SCs unvergleichbar sein, aber x wird in einen besseren SC eingestuft, da es auch unvergleichbar mit einer anderen Lösung z ist, die gegenüber y bevorzugt wird. In [88] wurde die Relation ε-preferred vorgeschlagen, um preferred für viele objektive Optimierungsprobleme robuster zu machen. ε-preferred fügt den Parameter ε hinzu, um die Qualität der endgültigen Lösungen zu verbessern, indem für jede Dimension Grenzen festgelegt werden. Vergleicht man zwei Zielvektoren f(x) = (1, 1, 100) und f(y) = (5, 5, 5) auf der Grundlage von preferred, so wird Lösung x besser eingestuft, obwohl sie vom Benutzer wegen des hohen Werts von 100 in einer Dimension möglicherweise nicht als effizient erkannt wird. Dieses Problem wird durch die Festlegung von Höchstwerten εi, i ∈{1, …, m} für jedes Optimierungsziel angegangen. Unter Verwendung von ε-preferred müssen wir zunächst zwei gegebene Lösungen x, y ∈ Ω auf der Grundlage der Anzahl der Verletzungen von ε durch jede Lösung vergleichen. Unter der Annahme, dass i, j ∈{1, …, m}, ist eine Beziehung ε-exceed definiert als

{

}

x  e- exceed y : ⇔ i : f i ( x ) < f i ( y ) ∧ f i ( x ) − f i ( y ) > ei >

{j: f

j

( x) > f j ( y ) ∧

}

f j ( x) − f j ( x) > ej .

(3.5)

Gemäß der obigen Gleichung die Lösung x ε-exceeds y, wenn die Anzahl der Überschreitungen von ε durch x in jeder Dimension kleiner ist als die gleiche Anzahl für y. ε-exceed bedeutet dasselbe wie ε-preferred, wenn die Lösungen unterschiedliche ε-exceeds aufweisen. Andernfalls ist preferred erforderlich, um zwischen den Lösungen zu unterscheiden. Unter Verwendung von ε-exceed wird die vollständige Definition von ε-preferred formal wie folgt ausgedrückt x  ε -preferred y :⇔

x  ε -exceed y ∨ ( y ε -exceed x ∧ x  preferred y ) .

(3.6)

40

3  BDD-Optimierung und Approximation: Ein multikriterieller Ansatz

Wie in Abschn. 3.3.2 besprochen, ist das Hauptziel der BDD-Approximation die Minimierung der Größe, was die Priorität zu einer unbestreitbaren Anforderung macht. Die Berücksichtigung von Zielprioritäten mit Preferred Verhältnis wurde in [67] eingeführt. Das Modell beinhaltet eine lexikographische Ordnung der Ziele in Bezug auf einen benutzerdefinierten Prioritätsvektor. Um die Anforderungen des approximativen BDD-Optimierungsproblems zu erfüllen, verwenden wir das in [27] vorgeschlagene priorisierte ε-preferred Verhältnis. Priorisiertes ε-preferred Verhältnis, bezeichnet mit ≺prio-ε-pref, nutzt dasselbe Modell wie in [67] und ist in der Lage, verschiedene Prioritätsstufen für alle Optimierungsziele zu verarbeiten. Sei p = {p1, p2, …, pm} ein Prioritätsvektor, der die Prioritäten bestimmt, die einem m-objektiven Problem zugewiesen sind. Jede Komponente pi, i ∈{1, 2, …, m} kann Werte aus der Menge {1, 2, …, n}, n ≤ m, annehmen, wobei n gleich m ist, falls alle Ziele unterschiedliche Prioritäten haben. Bei einem Minimierungsproblem nehmen wir an, dass ein kleinerer Wert von pi bedeutet, dass das Ziel i eine höhere Priorität hat. Bei zwei Lösungen x, y ∈ Ω, x|j und y|j stellen Untervektoren von x und y dar, die nur Zielfunktionen mit der Priorität j enthalten, ist das priorisierte ε-­preferred definiert als x  prio-ε -pref y : ⇔ ∃ j ∈ {1, 2, …,n} :

x j  ε -preferred y ∧ ∀k < j : y k ε -preferred x . j

k

(3.7)

Das oben definierte Verhältnis verwendet ε-preferred, um Untervektoren von Zielfunktionen mit gleichen Prioritäten zu vergleichen. x ist gegenüber y ­ε-preferred, wenn es einen Untervektor von Zielfunktionen in x mit dem Prioritätswert j gibt, der gegenüber dem entsprechenden Untervektor in y auf Basis ε-preferred bevorzugt ist und gleichzeitig x| j von keinem Untervektor mit einer höheren Priorität als j in y bevorzugt ist. Der vorgeschlagene Mehrzielalgorithmus verwendet das Verhältnis priorisierte ε-preferred, da es die Anforderungen des Problems der approximativen BDD-­ Optimierung erfüllt, d. h. die höhere Bedeutung der Größe und die Einhaltung benutzerdefinierter Schwellenwerte für die Fehlermetriken. 3.3.3.2 Auswahl von ε Um sicherzustellen, dass ungültige Lösungen entfernt werden, sollten sie am Ende der Population eingestuft werden und in den nächsten Generationen nicht überleben. Allerdings gelingt es diesem Ansatz nicht, die Population bei einer großen Anzahl ungültiger Lösungen, die durch niedrige Fehlerschwellen verursacht werden, richtig zu sortieren. ε kann für die schwierige Aufgabe der Schwellenwertfestlegung bei der BDD-Approximation sehr effektiv sein. In der Tat erfordert die Fehlerabschätzung ein hohes Maß an Fachwissen. Für viele boolesche Funktionen gibt es möglicherweise keine Lösung, die einen kleinen Schwellenwert erfüllt, und bei

3.3  Approximate BDD-Optimierung

41

einem hohen Schwellenwert kann die Suche dazu führen, dass Lösungen mit niedrigen Fehlerwerten übersehen werden. Die Verwendung von ε ermöglicht es, große Schwellenwerte festzulegen, um sicherzustellen, dass der Algorithmus nicht bei der Suche nach unvergleichbaren ungültigen Lösungen stecken bleibt. Gleichzeitig wird die Suche unter Berücksichtigung von Grenzwerten für jede Fehlermetrik auf gewünschte Fehlerwerte ausgerichtet. Der Wert von ε spielt für das priorisierte Optimierungsziel, d. h. die BDD-Größe, keine Rolle. Wie bereits erläutert, werden die priorisierte ε-preferred Vergleiche auf der Grundlage des Verhältnisses ε-preferred in Untervektoren der Zielfunktion mit gleichen Prioritäten durchgeführt, beginnend mit dem wichtigsten Kriterium. Es ist klar, dass der Vergleich von Lösungen für eine einzige Zielfunktion ≺ε-preferred ­genauso funktioniert wie die Pareto-Dominanz. In der Tat kann x|1 ≺ε-preferred y|1 hier nur bedeuten, dass die BDD-Größe der Lösung x kleiner ist als die gleiche Metrik in y, was die Problemanforderung der Größenminimierung erfüllt. Daher können wir ε1 einfach auf einen beliebigen Wert wie Null setzen. Die ε-Werte für jede der beiden Fehlermetriken können manuell auf einen Bruchteil ihrer Schwellenwerte eingestellt werden. Nichtsdestotrotz kann ein automatisches adaptives ε-Auswahlverfahren die Leistung des Algorithmus beeinflussen. In [27] wurde vorgeschlagen, die Mittelwerte der Zielfunktionen als ε-Werte für jedes Optimierungskriterium festzulegen. Hier wird ein adaptives Verfahren vorgeschlagen, das auf der Standardnormalverteilung derjenigen Fehlerwerte der Ausgangspopulation beruht, die die Schwellenwerte erfüllen. Das εi, i ∈{2, 3} bei jeder Generation ist gleich N(μi, σi2), wobei μi und σi jeweils der Mittelwert und die Standardabweichung der Menge der gültigen ith Fehlerwerte sind. Wenn es keinen gültigen Fehlerwert für die Dimension i gibt, was in den ersten Generationen wahrscheinlich ist, wird εi auf den manuellen Standardwert gesetzt. Bei Verwendung der vorgeschlagenen adaptiven ε-Auswahlmethode sind die ε-Werte in den ersten Generationen mit hoher Wahrscheinlichkeit größer, da die Zielfunktionen weit über den Zielraum verteilt sind. Mit zunehmender Anzahl von Generationen nehmen die ε-Werte ab, da sich die Population weiterentwickelt, was zu einer Konzentration der Zielfunktionen auf kleinere Werte führt. Auf diese Weise wird in den ersten Generationen eine größere Vielfalt geboten, während die Konvergenz in den letzten Generationen tendenziell einen größeren Einfluss hat. 3.3.3.3 Evolutionärer Zyklus und Operatoren Der vorgeschlagene Ansatz minimiert BDDs, indem er sowohl eine Neuordnung der Variablen als auch eine Annäherung durchführt. Zu diesem Zweck wurde ein elitärer genetischer Algorithmus eingesetzt, dessen allgemeiner Rahmen auf dem in Abschn.  3.2.1 vorgestellten MOB-Algorithmus basiert, aber anstelle der Pareto-­ Dominanz das priorisierte ε-preferred Verhältnis ausnutzt, um die kleinsten approximierten BDDs mit gültigen Fehlerwerten zu finden.

42

3  BDD-Optimierung und Approximation: Ein multikriterieller Ansatz

Die durch den vorgeschlagenen Algorithmus approximierten BDDs werden durch eine variable Anordnung und einen Approximationsvektor repräsentiert. Jedes Individuum innerhalb der Population hat also zwei Teile, die unabhängig voneinander initialisiert werden. Der eine Teil bezeichnet das exakte BDD durch eine Permutation der Eingangsvariablen der booleschen Funktion und der andere ist ein Vektor, der aus Paaren besteht, die die Approximationsoperatoren und die BDD-­ Ebenen Indizes bezeichnen, auf die jeder Operator angewendet werden soll. Die Länge des Approximationsvektors wird durch die maximal zulässige Anzahl von Approximationsoperatoren bestimmt, die als Option für die Initialisierung der Population definiert ist. Der Approximationsvektor in jedem Ausgangsindividuum kann eine zufällig generierte Anzahl von Approximationsoperatoren zwischen eins und diesem Maximalwert enthalten. Nach der Initialisierung wird die Population ausgewertet. Zunächst werden die exakten BDDs entsprechend der Variablenreihenfolge erstellt. Danach werden die Approximationsvektoren auf die entsprechenden BDDs angewendet, um die approximierten BDDs zu erstellen. Anschließend werden die Zielfunktionen, d.  h. die Größe und die Fehlerwerte der approximierten BDDs, für jedes Individuum der Population festgelegt. Dann wird das Verhältnis priorisierte ε-preferred verwendet, um die Population in Erfüllbarkeitsklassen zu sortieren. Für die Paarungsauswahl wird Turnierselektion verwendet und anschließend werden die Variationsoperatoren genutzt, um eine Nachkommenschaft mit der gleichen Größe wie die der Elternpopulation zu erzeugen. Die Vereinigung der Eltern- und Nachkommenpopulationen wird sortiert und die besten Individuen werden in der nächsten Generation entsprechend ihrer Fitnesswerte überlebt. Dieses Verfahren wird bis zu einer bestimmten Anzahl von Iterationen fortgesetzt. Wie bereits erwähnt, ist der Fitnesswert für jede Lösung gleich dem Index der Erfüllbarkeitsklasse, zu der die Lösung gehört. Die Information über die Dichte der Population wird bei der Auswahl nicht berücksichtigt. Indem man einem der Ziele eine höhere Priorität einräumt, konzentriert sich die Suche auf den besten jemals gefundenen Wert des priorisierten Kriteriums, anstatt eine gute Verteilung von Lösungen zu finden, die einander nicht bevorzugen. Es liegt auf der Hand, dass es zwei Arten von Variationsoperatoren für die verschiedenen Teile eines jeden Individuums geben sollte, d. h. sowohl Crossover- als auch Mutationsoperatoren sollten speziell für die Permutationen der Variablenordnungen und die Approximationsvektoren definiert werden, um ungültige Lösungen zu verhindern. Für das Crossover der Variablenordnungen wird das Partially Matched Crossover [60] verwendet, wie in Abschn. 3.2.1 erläutert, um gültige Permutationen zu garantieren. Der Crossover-Operator für die Approximationsvektoren wählt zwei Positionen zufällig aus und teilt die Eltern in drei Abschnitte auf. Dann werden zwei Kinder durch Kombination der Abschnitte beider Elternteile erzeugt. Die gleichen Mutationsoperatoren, die in Abschn. 3.2.1 erläutert wurden, werden für die Mutation von Variablenreihenfolgen verwendet. Drei Mutationsoperatoren werden unabhängig voneinander für die Approximationsvektoren definiert. Der erste Operator wählt zufällig eine Position im Vektor aus und inkrementiert

3.3  Approximate BDD-Optimierung

43

oder dekrementiert dessen Inhalt mit gleichen Wahrscheinlichkeiten. Die Gültigkeit der Lösungen wird auch dadurch aufrechterhalten, dass nur Änderungen zugelassen werden, die die Indizes, die entweder die Approximationsoperatoren oder die BDD-Ebenen bezeichnen, innerhalb ihrer akzeptablen Bereiche halten. Der zweite Mutationsoperator wendet den ersten Operator zweimal auf denselben Näherungsvektor an. Der dritte Operator wählt ein Paar aus Approximationsoperator und Ebenenindex aus und erhöht oder verringert beide mit gleicher Wahrscheinlichkeit.

3.3.4 Experimentelle Ergebnisse Die Leistung des vorgeschlagenen Algorithmus wird anhand einer Reihe von Benchmarks mit mehreren Ausgängen bewertet, die 20 boolesche Funktionen umfassen. Die Benchmarks stammen aus ISCAS89 [14] mit einem Bereich von 13 bis 54 Eingabevariablen und 9 bis 52 primären Ausgaben. Für jeden Benchmark wird die Populationsgröße auf das Dreifache der Anzahl der Eingabevariablen gesetzt, jedoch nicht größer als 120. Der Algorithmus endet nach 500 Generationen und die in Tab. 3.5 dargestellten Ergebnisse stellen die besten von zehn unabhängigen Durchläufen für jede Benchmark-Funktion dar. Die Summe der ­Wahrscheinlichkeiten der Crossover-Operatoren sowohl für die Variablenordnung als auch für die Approximationsvektoren wird auf 1 gesetzt. Eine Wahrscheinlichkeit von 1∕n, wobei n die Anzahl der Eingangsvariablen der booleschen Funktion ist, d. h. die Länge der Ordnungsvektoren, wird gleichmäßig auf die drei Mutationsoperatoren verteilt. Die maximale Anzahl von Approximationsoperatoren, die auf eine Lösung in der Population angewendet werden, wird bei allen Experimenten auf 3 festgelegt. Dadurch erhalten alle Approximationsvektoren eine feste Länge von 6, da sie aus Paaren von Indizes gebildet werden, die Approximationsoperatoren und ihre entsprechenden BDD-Ebenen bezeichnen. Die Gesamtwahrscheinlichkeit für die drei Mutationsoperatoren, die für Approximationsvektoren entwickelt wurden, wird also auf 1/6 gesetzt. Für die BDD-Darstellung der Benchmark-Funktionen und für die Implementierung der Approximationsoperatoren haben wir das CUDD-Paket [85] verwendet. Tab. 3.5 zeigt die Ergebnisse des vorgeschlagenen adaptiven, ε-preferred evolutionären Algorithmus. Die Ergebnisse werden auch mit nicht optimierten, anfänglich geordneten BDDs (angegeben durch #N-initial), mit BDDs, die durch die Sifting-­Reordering-Methode [65] optimiert wurden, und mit den Ergebnissen des vorgeschlagenen Algorithmus verglichen, wenn ε manuell eingestellt wird, dass die Wirkung des adaptiven Schemas zu sehen sein soll. Der Schwellenwert für die Error-Rate wird auf 10 % festgelegt, d. h. jede Ausgabe des approximierten BDD kann sich von der entsprechenden Ausgabe im exakten BDD für maximal 10 % der gesamten Eingabezuweisungen unterscheiden. Wir haben den gleichen Wert von 10 % als Schwellenwert für den Worst-Case-Fehler

#I∕O 18/9 17/20 24/26 24/26 24/27 13/13 24/27 34/17 24/27 25/13 24/27 54/42 54/42 23/24 23/24 45/52 45/52 32/32 32/32 14/25 15.051.90

#N-anfangs 1033 125 206 206 168 281 168 262.227 226 19.076 232 1352 1352 2651 2651 1723 1755 2295 2295 1016

[65] 61 78 104 104 121 123 121 185 161 165 141 629 629 258 258 402 417 642 642 391 281.60 #N 30 72 106 105 121 114 122 63 126 147 116 408 403 221 218 102 264 627 627 375 218.35

Manuell ε ER (%) 9,32 0,78 6,25 0,00 0,00 0,39 2,25 6,24 0,00 0,00 0,00 8,98 2,72 0,09 0,09 0,38 9,84 2,59 2,59 0,00 2,62

WC (%) 0,19 3,12 3,12 0,00 0,00 0,19 0,19