-
Ausführungsbeispiele
der Erfindung betreffen ein Verfahren und eine Vorrichtung zum Bestimmen
eines Minimums/Maximums einer Mehrzahl von Binärwerten, genauer gesagt betreffen
Ausführungsbeispiele der
vorliegenden Erfindung ein Verfahren und eine Vorrichtung zum Bestimmen
eines Minimal-/Maximalwerts aus einer Mehrzahl von Binärwerten,
die an unterschiedlichen Stellen entfernt von einem zentralen Prozessor gespeichert
sind.
-
Speicherelemente
und integrierte Schaltungen (IC, integrated circuit) müssen getestet
werden, um einen ordnungsgemäßen Betrieb
sicherzustellen, und insbesondere ist ein Testen bei einer Herstellung
während einer
IC- oder Speicherentwicklung erforderlich. Während eines Testens werden
derartige Testobjekte (DUTs, devices under test) verschiedenen Arten
von Stimulussignalen ausgesetzt und werden Antworten von den Vorrichtungen
gemessen, verarbeitet und für
gewöhnlich
mit einer erwarteten Antwort verglichen. Ein derartiges Testen kann
durch eine automatische Testausrüstung
(ATE, automated test equipment) ausgeführt werden, die diese Aufgaben
für gewöhnlich gemäß einem
vorrichtungsspezifischen Testprogramm durchführt.
-
Beispiele
für eine
derartige automatische Testausrüstung
sind die V93000-Reihe und die V5000-Reihe von Verigy, wobei die
erste eine Plattform zum Testen von System-auf-einem-Chip-, System-auf-einem-Gehäuse- und
Hochgeschwindigkeitsspeichervorrichtungen ist. Die letztere Reihe
ist zum Testen von Speichervorrichtungen, einschließlich eines
Flash-Speichers und Mehrchipgehäusen
bei einer Wafersortierung und Endprüfung.
-
Bei
einer derartigen automatischen Testausrüstung oder bei derartigen Testern
könnte
eine Mehrzahl von Testergebnissen erhalten und an verschiedenen
Stellen entfernt von einem zentralen Verarbeitungsbereich gespeichert
werden. Zum Beispiel könnten
die Ergebnisse auf der Basis unterschiedlicher Stimulussignale erzeugt
sein, die durch eine Mehrzahl von Verarbeitungsvorrichtungen oder
Prozessoren geliefert werden, die nicht nur die Stimulussignale
erzeugen, sondern auch die Antwortsignale von dem Testobjekt oder
von einer Mehrzahl von Testobjekten empfangen. Für eine Testhandlung wird für gewöhnlich eine
Testroutine an allen Kanälen
parallel ausgeführt.
Die Testroutinen, die ausgeführt
werden, oder die Daten, die durch die Testroutinen verwendet werden,
können
sich unter Kanälen
unterscheiden. Für
eine schnelle Testausführung kann
es jedoch erwünscht
sein, eine Rundsendung und ein gemeinsames Lesen zu verwenden, wo
immer es möglich
ist, was erfordert, dass verwandte Testdaten unterschiedlicher Kanäle in all
diesen Kanälen
bei der gleichen Speicheradresse gespeichert sind. Das Herausfinden,
wie Speicherstücke
bestimmter Größen über bestimmte
Sätze von
Kanälen
zuzuteilen sind, wird durch die Testerspeicherverwaltung vorgenommen.
Bei einigen komplexen Testanwendungen kann es eine Einschränkung geben,
dass verwandte Daten unterschiedlicher Kanäle bei der gleichen Adresse
ausgerichtet sein müssen,
was zu unbenutzten Zwischenräumen
in dem Testerspeicher führt.
Bei steigender Rechenleistung eines eingebetteten Prozessors innerhalb
der Testprozessoren kann jeder Prozessor den Speicher desselben
selbst verwalten und werden eventuell bei der Kommunikation zwischen
dem zentralen Prozessor und den Testprozessoren lediglich symbolische
Adressen für
Speicherstücke
verwendet. Durch dies kann die Beschränkung vermieden werden, dass
verwandte Daten unterschiedlicher Kanäle an der gleichen Adresse
ausgerichtet sein müssen.
Dies kann jedoch erfordern, dass der zentrale Prozessor das Minimum
oder Maximum von einigen Werten kennt, die in den Testprozessoren gespeichert
sind. Ein Beispiel für
dies ist die Frage: Wie viel Speicher kann man Angesichts eines
Satzes von Kanälen über all
diese Kanäle
immer noch zuteilen, d. h. was ist die minimale Größe des größten zusammenhängenden
Blocks von freiem Speicher an jedem dieser Kanäle?
-
Zusammenfassung der Erfindung
-
Es
ist die Aufgabe der vorliegenden Erfindung, einen verbesserten Ansatz
zum Bestimmen eines Minimal- oder Maximalwerts aus einer Mehrzahl
von Binärwerten,
die an unterschiedlichen Positionen gespeichert sind, auf verarbeitungs-
und zeiteffiziente Weise zu schaffen.
-
Diese
Aufgabe wird durch ein Verfahren gemäß Anspruch 1, ein Computerspeichermedium
gemäß Anspruch
8, ein Computerprogrammprodukt gemäß Anspruch 9, ein Computerprogramm
gemäß Anspruch
10, ein System gemäß Anspruch
11 und eine Vorrichtung gemäß Anspruch
14 gelöst.
-
Die
vorliegende Erfindung sieht ein Verfahren zum Bestimmen eines Minimums/Maximums
einer Mehrzahl von Binärwerten
vor, wobei das Verfahren folgende Schritte aufweist:
- (a) Bestimmen einer Bitposition in der Mehrzahl von Binärwerten,
nachfolgend zu der alle Bitwerte die gleichen sind;
- (b) Auswählen
dieser Binärwerte,
deren Bitwert an der bei (a) bestimmten Bitposition und allen nachfolgenden
Bitpositionen, falls vorhanden, einen vorbestimmten Wert aufweist,
aus der Mehrzahl von Binärwerten;
- (c) Wiederholen der Schritte (a) und (b), wobei der Schritt
(a) auf der Basis der Binärwerte,
die bei dem Schritt (b) ausgewählt
werden, wiederholt wird, bis lediglich ein ausgewählter Binärwert oder
eine Mehrzahl von übereinstimmenden
Binärwerten
verbleibt; und
- (d) Liefern des verbleibenden Binärwerts als das Minimum oder
Maximum.
-
Ausführungsbeispiele
der Erfindung sehen eine Vorrichtung zum Bestimmen eines Minimums/Maximums
einer Mehrzahl von Binärwerten
vor, die einen Prozessor aufweist, der konfiguriert ist, um gemäß dem Verfahren
von Ausführungsbeispielen
der Erfindung wirksam zu sein.
-
Weitere
Ausführungsbeispiele
der Erfindung sehen ein System zum Bestimmen eines Minimums/Maximums
einer Mehrzahl von Binärwerten
vor, wobei das System einen zentralen Prozessor, eine Logik, die
mit dem zentralen Prozessor gekoppelt ist und konfiguriert ist,
um eine bitweise ODER-Verknüpfung
und eine bitweise UND-Verknüpfung einer
Mehrzahl von Eingangswerten an den zentralen Prozessor auszugeben,
und eine Mehrzahl von Speichern aufweist, die Prozessoren zugeordnet
sind, wobei jeder Speicher mit der Logik gekoppelt ist und gekoppelt
ist, um einen der Mehrzahl von Binärwerten zu halten, wobei der
zentrale Prozessor konfiguriert ist, um gemäß dem Verfahren von Ausführungsbeispielen
der Erfindung wirksam zu sein.
-
Kurze Beschreibung der Zeichnungen
-
Ausführungsbeispiele
der vorliegenden Erfindung werden im Folgenden unter Bezugnahme
auf die zugehörigen
Zeichnungen beschrieben, in denen:
-
1 eine
schematische Ansicht eines herkömmlichen
Testers zeigt;
-
2 eine
schematische Ansicht eines Testers gemäß einem Ausführungsbeispiel
der Erfindung zeigt; und
-
3 ein
Flussdiagramm zeigt, das ein Ausführungsbeispiel zum Bestimmen
eines Minimums/Maximums einer Mehrzahl von Binärwerten darstellt.
-
Beschreibung der bevorzugten
Ausführungsbeispiele
-
1 zeigt
eine schematische Ansicht eines Testers 100, der einen
zentralen Prozessor 102 und eine Mehrzahl einzelner Prozessoren
P1 bis Pn aufweist,
die mit dem zentralen Prozessor 102 gekoppelt sind, wie es
durch die jeweiligen Pfeile angegeben ist, die in 1 gezeigt
sind, die die einzelnen Prozessoren P1 bis Pn mit einem zentralen Prozessor 102 verbinden.
Der Tester 100 kann mit einem einzigen Testobjekt oder
einer Mehrzahl von Testobjekten verbunden oder gekoppelt sein, wie
es bei 104 angegeben ist. Ferner weist der Tester 100 einen
Ausgang 106 zum Liefern von Ausgangssignalen auf, die beispielsweise
das Ergebnis eines Tests des DUT 104 angeben. Die Mehrzahl
von Prozessoren P1 bis Pn könnte zum
Liefern der jeweiligen Stimulussignale an das DUT 104 und
wiederum zum Empfangen jeweiliger Antwortsignale von dem DUT vorgesehen
sein. Wie es in 1 angegeben ist, könnte jeder
Prozessor P1 bis Pn einen
oder mehrere Werte in binärer
Form halten, die ein Antwortsignal oder ein anderes Signal darstellen,
das ein Testergebnis eines Tests angibt, der auf das DUT 104 mittels
eines jeweiligen Prozessors angewandt wurde.
-
Bei
dem in 1 gezeigten Ausführungsbeispiel speichert der
einzelne Prozessor P1 den Wert 45 in binärer Form
(101101), speichert der einzelne Prozessor P2 den
Wert 57 in binärer
Form (111001), speichert der einzelne Prozessor P3 den
Wert 13 in binärer
Form (001101), speichert der einzelne Prozessor P4 den
Wert 44 in binärer
Form (101100), speichert der einzelne Prozessor P5 den
Wert 29 (011101) und speichert der einzelne Prozessor Pn den
Wert 45 in binärer
Form (101101).
-
In
der oben beschriebenen Umgebung weist der Prozessor 100 die
Front-End-Prozessoren P1 bis Pn auf,
von denen jeder einen ganzzahligen Wert halt. Der zentrale Prozessor 102 kann
nun anfordern, das Minimum oder Maximum all dieser Werte so schnell
wie möglich
in Erfahrung zu bringen. Gemäß dem in 1 gezeigten
herkömmlichen
Tester besteht der herkömmliche
Ansatz zum Finden des Maximums oder Minimus aller Werte darin, den
zentralen Prozessor 102 die Werte einzeln nacheinander
aus den Prozessoren P1 bis Pn lesen
zu lassen, was wiederum n Leseoperationen erfordern wird.
-
Während der
zentrale Prozessor 102 im Allgemeinen einfache Verarbeitungsschritte
oder Berechnungen ziemlich schnell handhaben kann, ist es nicht
möglich,
das Minimum oder Maximum aller Werte schnell zu erhalten, wenn im
Allgemeinen die Kommunikation zwischen dem zentralen Prozessor 102 und
dem jeweiligen einzelnen Prozessor P1 bis
Pn verglichen mit der eben erwähnten Berechnung
langsam ist, d. h. die Anzahl von erforderlichen Kommunikationsschritten
dominiert die gesamte erforderliche Zeit, vorausgesetzt, dass einfache
Verarbeitungsschritte oder Berechnungen in dem zentralen Prozessor
ausgeführt
werden sollen.
-
Deshalb
besteht ein Bedarf danach, einen verbesserten Ansatz zum Bestimmen
eines Minimal- oder Maximalwerts auf verarbeitungs- und zeiteffiziente
Weise aus einer Mehrzahl von Binärwerten
zu schaffen, die bei den unterschiedlichen Positionen gespeichert
sind. Das schnelle Finden eines oder mehrerer Minimal-/Maximalwerte
kann bei einem Testsystem und insbesondere zum Verwalten des Speichers
verteilter Prozessoren eines derartigen Testsystems verwendet werden.
Ein Beispiel eines derartigen Testsystems verwendet eine Mehrzahl
von Kanälen
(die Messeinheit für
einen Anschlussstift eines DUT), von denen jeder einen eigenen Testprozessor
mit einem zugeordneten Speicher aufweist. 2 zeigt
eine schematische Ansicht eines Testers gemäß einem Ausführungsbeispiel
der Erfindung. In 2 sind diesen Elementen, die
bereits hinsichtlich 1 beschrieben wurden, die gleichen
Bezugszeichen zugeordnet. Wie es aus 2 zu erkennen
ist, weist zusätzlich
zu dem Tester, der hinsichtlich 1 beschrieben
wurde, der Tester 100 eine Logik 108 auf, die
zwischen die jeweiligen einzelnen Prozessoren P1 bis
Pn und den zentralen Prozessor 102 gekoppelt
ist. Die Logik 108 ist als ein separates Element gezeigt,
jedoch könnten
andere Ausführungsbeispiele
die Logik 108 als einen Teil des zentralen Prozessors 102 implementieren,
wie es durch die gestrichelte Linie angegeben ist, die diese zwei
Elemente umgibt. Wie es zu sehen ist, ist die Logik 108 konfiguriert,
um die Werte, die aus den Prozessoren P1 bis
Pn gelesen werden, unter Verwendung eines
bitweisen „UND” („AND”) oder
eines bitweisen „ODER” („OR”) zu verknüpfen. Die
zwei Ausgaben der Logik 108 sind entweder die „bitweise
ODER”-
oder die „bitweise
UND”-Ausgabe,
die in den zentralen Prozessor 102 eingegeben wird. Bei
dem in 2 gezeigten Ausführungsbeispiel wird angenommen,
dass die einzelnen Prozessoren P1 bis Pn die gleichen Werte halten, wie es mit Bezug
auf 1 beschrieben ist, und zusätzlich sind Speicherelemente
M1 bis Mn gezeigt,
die die angegebenen Werte halten. Die Speicher M1 bis
Mn könnten
entweder Teil des Prozessors P1 bis Pn, z. B. als Prozessorregister, oder Speicherelemente
sein, die mit den jeweiligen Prozessoren gekoppelt sind. Die Funktionalität des in 2 gezeigten
Testers ist derart, dass die Werte aus allen Prozessoren P1 bis Pn in einem Schritt
durch Verknüpfen
der Werte, die aus den Prozessoren gelesen werden, unter Verwendung
des bitweisen „UND” oder des
bitweisen „ODER” in den
zentralen Prozessor 102 gelesen werden können. Ein
Verwenden dieser gemeinsamen Leseoperation an allen Prozessoren
ist so schnell wie das Lesen eines Werts aus einem spezifischen
Prozessor. Auf ähnliche
Weise können
in einem Schritt Daten von dem zentralen Prozessor an alle anderen
Prozessoren oder an einen einzelnen Prozessor rundgesendet werden.
-
Im
Folgenden werden Beispiele zum schnellen Bestimmen des Minimums
oder Maximums von Werten, die in dem verteilten Prozessor P1 bis Pn gespeichert
sind, unter Verwendung gemeinsamer Lesefähigkeiten mit weiterer Bezugnahme
auf 3 beschrieben.
-
3 zeigt
ein Flussdiagramm eines Ausführungsbeispiels
zum Bestimmen eines oder mehrerer Minimal-/Maximalwerte, die einer
Mehrzahl von Prozessoren P1 bis Pn zugeordnet sind. Die ursprünglichen
Werte sind in jedem der Prozessoren gespeichert oder können anderswo
gespeichert sein, aber sind einem der Prozessoren zugeordnet. Die
Binärwerte
weisen eine Anzahl von Bits auf, die auf k gesetzt ist, und die
Bits in der Binärdarstellung
sind von rechts (niederstwertiges Bit) nach links (höchstwertiges
Bit) nummeriert, beginnend bei 0, d. h. die Anzahl ist als Bits
(k – 1)
... 0 dargestellt. Bei i handelt es sich um die erste Bitposition
von links (höchstwertiges
Bit), bis zu der die Bits des Minimums bereits bekannt sind. Bei
dem hinsichtlich 3 beschriebenen Beispiel gilt
k = 8 und anfänglich
i = k.
-
Bei
einem Schritt S100 werden die folgenden Variablen initialisiert:
- k
- = 8 (= acht Bits);
- n
- = 9 (= neun Prozessoren);
- R
- = Variable, in der
die bis jetzt bekannten Bits des Ergebnisses für die Bestimmung des Minimums/Maximums
gespeichert sind und bei der die nicht bekannten Bits auf 0 gesetzt
sind;
- j
- = höchste Bitposition,
bei der sich bitweises UND und bitweises ODER unterscheiden (wobei
das niedrigstwertige Bit als 0 gezählt wird);
- VANDn
- = tatsächliche
Werte für
bitweises UND;
- VORn
- = tatsächliche
Werte für
bitweises ODER;
- Pn
- = Wert, der bei Prozessor
n gespeichert/demselben zugeordnet ist
-
Nach
der Initialisierung bei dem Schritt S100 wird ein Wert für j, das
kleiner ist als i, derart bestimmt, dass Bits (k – 1) ...
(j + 1) der Binärdarstellung
aller Werte, die von den Prozessoren P1 bis
Pn geliefert werden, gleich sind. Dann müssen Bits
(k – 1)
... (j + 1) des Minimal-/Maximalwerts die gleichen sein und muss
das Bit j des Minimums „0” sein bzw.
muss das Bit j des Maximums „1” sein.
Um die Position j zu bestimmen, nimmt der zentrale Prozessor 102 das
bitweise „UND” und das
bitweise „ODER”, die durch
zwei gemeinsame Leseoperationen der Binärdarstellungen der Anzahlen
der Prozessoren erhalten werden (siehe Schritt S102). An den Bitpositionen,
an denen diese zwei Bitmuster gleich sind, müssen alle Werte, die von den
Prozessoren geliefert werden, gleich sein. An Bitpositionen, an
denen diese zwei Bitmuster sich unterscheiden, muss zumindest ein
Prozessor ein 0-Bit geliefert haben und muss zumindest einer ein
1-Bit geliefert haben. Somit ist j die höchstwertige Bitposition, an
der sich das bitweise UND und das bitweise ODER unterscheiden, was
in dem zentralen Prozessor durch einfaches Untersuchen der einzelnen
Bits berechnet werden kann. Nach diesem Schritt sind Bits (k – 1) ...
j bekannt, d. h. i kann auf j gesetzt werden (siehe Schritt S104).
-
Bei
einem Schritt S106 werden die bis jetzt bekannten Bits (k – 1) bis
0 für R
bestimmt durch Setzen der Bits k – 1 bis j + 1 von R auf die übereinstimmenden
Bits der Ergebnisse der bitweisen UND- und bitweisen ODER-Verknüpfung, Setzen
des Bits j von R (falls vorhanden) auf 0 in dem Fall einer Suche
nach dem Minimum und auf 1 in dem Fall einer Suche nach dem Maximum
und Setzen der verbleibenden Bits j – 1 bis 0 von R (falls vorhanden)
auf 0.
-
Bei
einem Schritt S108 wird bestimmt, ob j kleiner oder gleich 0 ist.
Falls dem so ist, endet der Prozess bei einem Schritt S110.
-
Andernfalls
geht der Prozess zu einem Schritt S112 über, bei dem die Suche nun
auf diese Ergebnisse eingeschränkt
wird, bei denen die Bits (k – 1)
... i gleich den bereits bekannten Bits des kleinsten Maximums sind.
Zum Vorbereiten dieses Schritts übermittelt
der zentrale Prozessor 102 die bis jetzt bekannten Bits
des Minimums/Maximums an jeden Prozessor P1 bis
Pn sowie das Ergebnis des bitweisen „UND” und des
bitweisen „ODER” aller
Werte bei der vorhergehenden Iteration (bei der ersten Iteration
die Ergebnisse des bitweisen „UND” und des
bitweisen „ODER” aller
ursprünglichen
Werte, die in den Prozessoren gespeichert sind). Ferner weist der
zentrale Prozessor 102 nun alle Prozessoren P1 bis
Pn an, die folgenden Werte bei dem nächsten Schritt
wie folgt zu liefern (siehe Schritte S112 bis S118).
- – falls
Bits (k – 1)
bis j des ursprünglichen
Werts Pn eines jeweiligen Prozessors gleich
den bereits bekannten Bits des Minimums/Maximums sind, wird der
ursprüngliche
Wert Pn geliefert (siehe Schritte 114 und 116),
und
- – für alle anderen
Prozessoren werden die ursprünglichen
binären
Werte nicht geliefert, sondern werden die Prozessoren angewiesen,
modifizierte Werte an die Logik 108 zu liefern (siehe Schritte
S114 und S118).
-
Genauer
gesagt werden bei dem Schritt S118 die modifizierten Werte abhängig davon
bestimmt, ob ein gemeinsamer Lesevorgang mit einer „UND”-Operation
oder ein gemeinsamer Lesevorgang mit einer „ODER”-Operation ausgeführt werden
soll. Für
die Operation „gemeinsamer
Lesevorgang mit „UND” werden die
jeweiligen Prozessoren angewiesen, die bis jetzt bekannten Bits
des Minimums für
Bits (k – 1)
... i zurückzugeben.
Zusätzlich
werden auch die Bits des vorhergehenden „ODER” der gespeicherten Werte geliefert.
Auf ähnliche
Weise werden die Prozessoren angewiesen, jeweilige modifizierte
Werte für
die Operation „gemeinsamer
Lesevorgang mit „ODER” zurückzugeben.
Erneut werden die bis jetzt bekannten Bits der Minimum-Bits (k – 1) ...
i zurückgegeben
und sind die verbleibenden Bits diese des „UND” aller vorhergehenden Bits.
Die eben beschriebenen modifizierten Werte beeinflussen das bitweise „UND” oder das
bitweise „ODER” über die Werte
der Prozessoren des eingeschränkten
Suchraums nicht.
-
Der
obige Prozess wird auf der Basis der ursprünglichen/modifizierten Werte
wiederholt, bis j ≤ 0
(siehe Schritte 108, 110).
-
Bei
den folgenden Beispielen wird veranschaulichend der obige Ansatz
zum Bestimmen eines Minimal-/Maximalwerts beschrieben.
-
BEISPIEL 1
-
Bestimmen
eines Minimalwerts aus Werten, die in neun Prozessoren P1 bis P9
gespeichert sind.
-
Ursprüngliche
Werte:
P
1 = 112 → 01110000
P
2 =
114 → 01110010
P
3 = 111 → 01101111
P
4 = 99 → 01100011
P
5 = 101 → 01100101
P
6 = 115 → 01110011
P
7 = 115 → 01110011
P
8 = 111 → 01101111
P
9 = 114 → 01110010 ITERATION
NR. 1
Anzahl
von bis jetzt bekannten Bits von Ergebnis: | 0 |
Bitmaske
für bis
jetzt bekannte Bits: | 00000000 |
Bits
von Ergebnis: | 00000000 |
-
Werte,
die bei dieser Iteration von jedem Prozessor an den zentralen Prozessor
gegeben werden:
-
Höchste Bitposition,
an der sich bitweises UND und bitweises ODER unterscheiden
(wobei
das niedrigstwertige Bit als 0 gezählt wird): 4 (j = 4)
⇒ nun sind
die vier höchstwertigen
Bits des Ergebnisses bekannt. ITERATION
NR. 2
Anzahl
von bis jetzt bekannten Bits von Ergebnis: | 0 |
Bitmaske
für bis
jetzt bekannte Bits: | 11110000 |
Bits
von Ergebnis: | 01100000 |
-
Bis
jetzt bekannte Bits von Ergebnis erzeugt durch:
- – Bits k – 1 bis
j + 1 (Bits 7 bis 5) = übereinstimmende
Bits von bitweisem UND und bitweisem ODER bei Iteration Nr. 1 – bei diesem
Beispiel 011.
- – Setzen
von Bit j (Bit 4) auf 0 wegen
Suche nach Minimum.
- – Verbleibende
Bits j – 1
bis 0 (Bits 3 bis 0) bleiben bei 0.
| Für UND: (P1 bis P9) | |
| (01101111) | modifiziert |
| (01101111) | modifiziert |
| 01101111 | ursprünglich |
| 01100011 | ursprünglich |
| 01100101 | ursprünglich |
| (01101111) | modifiziert |
| (01101111) | modifiziert |
| 01101111 | ursprünglich |
| (01101111) | modifiziert |
bitweises
UND: | 01100001 | |
- Ursprünglich:
Ursprünglicher
Wert, der beibehalten wird, weil die bis jetzt bekannten Bits des
Ergebnisses, d. h. 0110, und
die entsprechenden Bits in dem ursprünglichen Wert übereinstimmen.
- Modifiziert: Ursprünglicher
Wert, der modifiziert ist, weil die bis jetzt bekannten Bits des
Ergebnisses, d. h. 0110, und
die entsprechenden Bits in dem ursprünglichen Wert nicht übereinstimmen.
Diese Bits in dem ursprünglichen
Wert, die nicht übereinstimmen,
werden durch die bis jetzt bekannten Bits des Ergebnisses ersetzt,
d. h. 0110, und die verbleibenden
Bits in dem ursprünglichen
Wert werden durch die entsprechenden Bits aus dem Ergebnis des bitweisen
ODER bei Iteration Nr. 1 ersetzt, d. h. 1111.
| Für ODER:
(P1 bis P9) |
| (01100000) | modifiziert |
| (01100000) | modifiziert |
| 01101111 | ursprünglich |
| 01100011 | ursprünglich |
| 01100101 | ursprünglich |
| (01100000) | modifiziert |
| (01100000) | modifiziert |
| 01101111 | ursprünglich |
| (01100000) | modifiziert |
bitweises
ODER: | 01101111 | |
- Ursprünglich:
Ursprünglicher
Wert, der beibehalten wird, weil die bis jetzt bekannten Bits des
Ergebnisses, d. h. 0110, und
die entsprechenden Bits in dem ursprünglichen Wert übereinstimmen.
- Modifiziert: Ursprünglicher
Wert, der modifiziert ist, weil die bis jetzt bekannten Bits des
Ergebnisses, d. h. 0110, und
die entsprechenden Bits in dem ursprünglichen Wert nicht übereinstimmen.
Diese Bits in dem ursprünglichen
Wert, die nicht übereinstimmen,
werden durch die bis jetzt bekannten Bits des Ergebnisses ersetzt,
d. h. 0110, und die verbleibenden
Bits in dem ursprünglichen
Wert werden durch die entsprechenden Bits aus dem Ergebnis des bitweisen
ODER bei Iteration Nr. 1 ersetzt, d. h. 0000.
-
Höchste Bitposition,
bei der sich bitweises UND und bitweises ODER unterscheiden
(wobei
das niedrigstwertige Bit als 0 gezählt wird): 3 (j = 3)
⇒ nun sind
die 5 höchstwertigen
Bits des Ergebnisses bekannt. ITERATION
NR. 3
Anzahl
von bis jetzt bekannten Bits von Ergebnis: | 5 |
Bitmaske
für bis
jetzt bekannte Bits: | 11111000 |
Bits
von Ergebnis: | 01100000 |
-
Bis
jetzt bekannte Bits von Ergebnis erzeugt durch:
- – Bits k – 1 bis
j + 1 (Bits 7 bis 4) = übereinstimmende
Bits von bitweisem UND und bitweisem ODER bei Iteration Nr. 2 – bei diesem
Beispiel 0110.
- – Bit
j (Bit 3) auf 0 setzen wegen
Suche nach Minimum.
- – Verbleibende
Bits j – 1
bis 0 (2 bis 0) bleiben bei 0.
| Für UND: (P1 bis P9) |
| (01100111) | modifiziert |
| (01100111) | modifiziert |
| (01100111) | modifiziert |
| 01100011 | ursprünglich |
| 01100101 | ursprünglich |
| (01100111) | modifiziert |
| (01100111) | modifiziert |
| (01100111) | modifiziert |
| (01100111) | modifiziert |
bitweises
UND: | 01100001 | |
- Ursprünglich:
Ursprünglicher
Wert, der beibehalten wird, weil die bis jetzt bekannten Bits des
Ergebnisses, d. h. 01100, und
die entsprechenden Bits in dem ursprünglichen Wert übereinstimmen.
- Modifiziert: Ursprünglicher
Wert, der modifiziert ist, weil die bis jetzt bekannten Bits des
Ergebnisses, d. h. 01100, und
die entsprechenden Bits in dem ursprünglichen Wert nicht übereinstimmen.
Diese Bits in dem ursprünglichen
Wert, die nicht übereinstimmen,
werden durch die bis jetzt bekannten Bits des Ergebnisses ersetzt,
d. h. 01100, und die verbleibenden
Bits in dem ursprünglichen
Wert werden durch die entsprechenden Bits aus dem Ergebnis des bitweisen
ODER bei Iteration Nr. 2 ersetzt, d. h. 111.
| Für ODER:
(P1 bis P9) |
| (01100000) | modifiziert |
| (01100000) | modifiziert |
| (01100000) | modifiziert |
| 01100011 | ursprünglich |
| 01100101 | ursprünglich |
| (01100000) | modifiziert |
| (01100000) | modifiziert |
| (01100000) | modifiziert |
| (01100000) | modifiziert |
bitweises
ODER: | 01100111 | |
- Ursprünglich:
Ursprünglicher
Wert, der beibehalten wird, weil die bis jetzt bekannten Bits des
Ergebnisses, d. h. 01100, und
die entsprechenden Bits in dem ursprünglichen Wert übereinstimmen.
- Modifiziert: Ursprünglicher
Wert, der modifiziert ist, weil die bis jetzt bekannten Bits des
Ergebnisses, d. h. 01100, und
die entsprechenden Bits in dem ursprünglichen Wert nicht übereinstimmen.
Diese Bits in dem ursprünglichen
Wert, die nicht übereinstimmen,
werden durch die bis jetzt bekannten Bits des Ergebnisses ersetzt,
d. h. 01100, und die verbleibenden
Bits in dem ursprünglichen
Wert werden durch die entsprechenden Bits aus dem Ergebnis des bitweisen
UND bei Iteration Nr. 2 ersetzt, d. h. 000.
-
Höchste Bitposition,
bei der sich bitweises UND und bitweises ODER unterscheiden
(wobei
das niedrigstwertige Bit als 0 gezählt wird): 2 (j = 2)
⇒ nun sind
die 6 höchstwertigen
Bits des Ergebnisses bekannt. ITERATION
NR. 4
Anzahl
von bis jetzt bekannten Bits von Ergebnis: | 6 |
Bitmaske
für bis
jetzt bekannte Bits: | 11111100 |
Bits
von Ergebnis: | 01100000 |
-
Bis
jetzt bekannte Bits von Ergebnis erzeugt durch:
- – Bits k – 1 bis
j + 1 (Bits 7 bis 3) = übereinstimmende
Bits von bitweisem UND und bitweisem ODER bei Iteration Nr. 3 – bei diesem
Beispiel 01100.
- – Bit
j (Bit 2) auf 0 setzen wegen
Suche nach Minimum.
- – Verbleibende
Bits j – 1
bis 0 (1 bis 0) bleiben bei 0.
| Für UND: (P1 bis P9) |
| (01100011) | modifiziert |
| (01100011) | modifiziert |
| (01100011) | modifiziert |
| 01100011 | ursprünglich |
| (01100011) | modifiziert |
| (01100011) | modifiziert |
| (01100011) | modifiziert |
| (01100011) | modifiziert |
| (01100011) | modifiziert |
bitweises
UND: | 01100011 | |
- Ursprünglich:
Ursprünglicher
Wert, der beibehalten wird, weil die bis jetzt bekannten Bits des
Ergebnisses, d. h. 011000,
und die entsprechenden Bits in dem ursprünglichen Wert übereinstimmen.
- Modifiziert: Ursprünglicher
Wert, der modifiziert ist, weil die bis jetzt bekannten Bits des
Ergebnisses, d. h. 011000,
und die entsprechenden Bits in dem ursprünglichen Wert nicht übereinstimmen.
Diese Bits in dem ursprünglichen
Wert, die nicht übereinstimmen,
werden durch die bis jetzt bekannten Bits des Ergebnisses ersetzt,
d. h. 011000, und die verbleibenden
Bits in dem ursprünglichen
Wert werden durch die entsprechenden Bits aus dem Ergebnis des bitweisen
ODER bei Iteration Nr. 3 ersetzt, d. h. 11.
| Für ODER:
(P1 bis P9) |
| (01100000) | modifiziert |
| (01100000) | modifiziert |
| (01100000) | modifiziert |
| 01100011 | ursprünglich |
| (01100000) | modifiziert |
| (01100000) | modifiziert |
| (01100000) | modifiziert |
| (01100000) | modifiziert |
| (01100000) | modifiziert |
bitweises
ODER: | 01100011 | |
- Ursprünglich:
Ursprünglicher
Wert, der beibehalten wird, weil die bis jetzt bekannten Bits des
Ergebnisses, d. h. 011000,
und die entsprechenden Bits in dem ursprünglichen Wert übereinstimmen.
- Modifiziert: Ursprünglicher
Wert, der modifiziert ist, weil die bis jetzt bekannten Bits des
Ergebnisses, d. h. 011000,
und die entsprechenden Bits in dem ursprünglichen Wert nicht übereinstimmen.
Diese Bits in dem ursprünglichen
Wert, die nicht übereinstimmen,
werden durch die bis jetzt bekannten Bits des Ergebnisses ersetzt,
d. h. 011000, und die verbleibenden
Bits in dem ursprünglichen
Wert werden durch die entsprechenden Bits aus dem Ergebnis des bitweisen
UND bei Iteration Nr. 3 ersetzt, d. h. 00.
-
Höchste Bitposition,
bei der sich bitweises UND und bitweises ODER unterscheiden
(wobei
das niedrigstwertige Bit als 0 gezählt wird): –1(j = –1)
⇒ nun sind die 8 höchstwertigen
Bits des Ergebnisses bekannt.
Bitmaske
für bis
jetzt bekannte Bits: | 11111111 |
Bits
von Ergebnis: | 01100011 |
-
Bis
jetzt bekannte Bits von Ergebnis erzeugt durch:
- – Bits k – 1 bis
j + 1 (Bits 7 bis 1) = übereinstimmende
Bits von bitweisem UND und bitweisem ODER bei Iteration Nr. 4 – bei diesem
Beispiel 01100011.
- – Bit
j (Bit – 1)
existiert nicht.
- – Es
gibt keine verbleibenden Bits j – 1 bis 0.
- ⇒ Nun sind
alle Bits des Ergebnisses bekannt, d. h. das Ergebnis lautet 01100011
= 99. Somit hält
der Prozessor P4 den Minimalwert.
-
BEISPIEL 2
-
Bestimmen
eines Maximalwerts aus Werten, die in neun Prozessoren P1 bis P9 gespeichert
sind.
-
Ursprüngliche
Werte:
P
1 = 112 → 01110000
P
2 =
114 → 01110010
P
3 = 111 → 01101111
P
4 = 99 → 01100011
P
5 = 101 → 01100101
P
6 = 115 → 01110011
P
7 = 115 → 01110011
P
8 = 111 → 01101111
P
9 = 114 → 01110010 ITERATION
NR. 1
Anzahl
von bis jetzt bekannten Bits von Ergebnis: | 0 |
Bitmaske
für bis
jetzt bekannte Bits: | 00000000 |
Bits
von Ergebnis: | 00000000 |
-
Werte,
die bei dieser Iteration von jedem Prozessor an den zentralen Prozessor
gegeben werden:
-
Höchste Bitposition,
bei der sich bitweises UND und bitweises ODER unterscheiden
(wobei
das niedrigstwertige Bit als 0 gezählt wird): 4 (j = 4)
⇒ nun sind
die 4 höchstwertigen
Bits des Ergebnisses bekannt. ITERATION
NR. 2
Anzahl
von bis jetzt bekannten Bits von Ergebnis: | 4 |
Bitmaske
für bis
jetzt bekannte Bits: | 11110000 |
Bits
von Ergebnis: | 01110000 |
-
Bis
jetzt bekannte Bits von Ergebnis erzeugt durch:
- – Bits k – 1 bis
j + 1 (Bits 7 bis 5) = übereinstimmende
Bits von bitweisem UND und bitweisem ODER bei Iteration Nr. 1 – bei diesem
Beispiel 011.
- – Setzen
von Bit j (Bit 4) auf 1 wegen
Suche nach Maximum.
- – Verbleibende
Bits j – 1
bis 0 (Bits 3 bis 0) bleiben bei 0.
| Für UND: (P1 bis P9) |
| 01110000 | ursprünglich |
| 01110010 | ursprünglich |
| (01111111) | modifiziert |
| (01111111) | modifiziert |
| (01111111) | modifiziert |
| 01110011 | ursprünglich |
| 01110011 | ursprünglich |
| (01111111) | modifiziert |
| 01110010 | ursprünglich |
bitweises
UND: | 01110000 | |
- Ursprünglich:
Ursprünglicher
Wert, der beibehalten wird, weil die bis jetzt bekannten Bits des
Ergebnisses, d. h. 0111, und
die entsprechenden Bits in dem ursprünglichen Wert übereinstimmen.
- Modifiziert: Ursprünglicher
Wert, der modifiziert ist, weil die bis jetzt bekannten Bits des
Ergebnisses, d. h. 0111, und
die entsprechenden Bits in dem ursprünglichen Wert nicht übereinstimmen.
Diese Bits in dem ursprünglichen
Wert, die nicht übereinstimmen,
werden durch die bis jetzt bekannten Bits des Ergebnisses ersetzt,
d. h. 0111, und die verbleibenden
Bits in dem ursprünglichen
Wert werden durch die entsprechenden Bits aus dem Ergebnis des bitweisen
ODER bei Iteration Nr. 1 ersetzt, d. h. 1111.
| Für ODER:
(P1 bis P9) |
| 01110000 | ursprünglich |
| 01110010 | ursprünglich |
| (01110000) | modifiziert |
| (01110000) | modifiziert |
| (01110000) | modifiziert |
| 01110011 | ursprünglich |
| 01110011 | ursprünglich |
| (01110000) | modifiziert |
| 01110010 | ursprünglich |
bitweises
ODER: | 01110011 | |
- Ursprünglich:
Ursprünglicher
Wert, der beibehalten wird, weil die bis jetzt bekannten Bits des
Ergebnisses, d. h. 0111, und
die entsprechenden Bits in dem ursprünglichen Wert übereinstimmen.
- Modifiziert: Ursprünglicher
Wert, der modifiziert ist, weil die bis jetzt bekannten Bits des
Ergebnisses, d. h. 0111, und
die entsprechenden Bits in dem ursprünglichen Wert nicht übereinstimmen.
Diese Bits in dem ursprünglichen
Wert, die nicht übereinstimmen,
werden durch die bis jetzt bekannten Bits des Ergebnisses ersetzt,
d. h. 0111, und die verbleibenden
Bits in dem ursprünglichen
Wert werden durch die entsprechenden Bits aus dem Ergebnis des bitweisen
UND bei Iteration Nr. 1 ersetzt, d. h. 0000.
-
Höchste Bitposition,
bei der sich bitweises UND und bitweises ODER unterscheiden
(wobei
das niedrigstwertige Bit als 0 gezählt wird): 1 (j = 1)
⇒ nun sind
die 7 höchstwertigen
Bits des Ergebnisses bekannt.
-
ITERATION
NR. 3
Anzahl
von bis jetzt bekannten Bits von Ergebnis: | 7 |
Bitmaske
für bis
jetzt bekannte Bits: | 11111110 |
Bits
von Ergebnis: | 01110010 |
-
Bis
jetzt bekannte Bits von Ergebnis erzeugt durch:
- – Bits k – 1 bis
j + 1 (Bits 7 bis 2) = übereinstimmende
Bits von bitweisem UND und bitweisem ODER bei Iteration Nr. 2 – bei diesem
Beispiel 011100.
- – Bit
j (Bit 1) auf 1 setzen wegen
Suche nach Maximum.
- – Verbleibende
Bits j – 1
bis 0 (0 bis 0) bleiben bei 0.
| Für UND: (P1 bis P9) |
| (01110011) | modifiziert |
| 01110010 | ursprünglich |
| (01110011) | modifiziert |
| (01110011) | modifiziert |
| (01110011) | modifiziert |
| 01110011 | ursprünglich |
| 01110011 | ursprünglich |
| (01110011) | modifiziert |
| 01110010 | ursprünglich |
bitweises
UND: | 01110010 | |
- Ursprünglich:
Ursprünglicher
Wert, der beibehalten wird, weil die bis jetzt bekannten Bits des
Ergebnisses, d. h. 0111001,
und die entsprechenden Bits in dem ursprünglichen Wert übereinstimmen.
- Modifiziert: Ursprünglicher
Wert, der modifiziert ist, weil die bis jetzt bekannten Bits des
Ergebnisses, d. h. 0111001,
und die entsprechenden Bits in dem ursprünglichen Wert nicht übereinstimmen.
Diese Bits in dem ursprünglichen
Wert, die nicht übereinstimmen,
werden durch die bis jetzt bekannten Bits des Ergebnisses ersetzt,
d. h. 0111001, und die verbleibenden
Bits in dem ursprünglichen
Wert werden durch die entsprechenden Bits aus dem Ergebnis des bitweisen
ODER bei Iteration Nr. 2 ersetzt, d. h. 1.
| Für ODER:
(P1 bis P9) |
| (01110010) | modifiziert |
| 01110010 | ursprünglich |
| (01110010) | modifiziert |
| (01110010) | modifiziert |
| (01110010) | modifiziert |
| 01110011 | ursprünglich |
| 01110011 | ursprünglich |
| (01110010) | modifiziert |
| 01110010 | ursprünglich |
bitweises
ODER: | 01110011 | |
- Ursprünglich:
Ursprünglicher
Wert, der beibehalten wird, weil die bis jetzt bekannten Bits des
Ergebnisses, d. h. 0111001,
und die entsprechenden Bits in dem ursprünglichen Wert übereinstimmen.
- Modifiziert: Ursprünglicher
Wert, der modifiziert ist, weil die bis jetzt bekannten Bits des
Ergebnisses, d. h. 0111001,
und die entsprechenden Bits in dem ursprünglichen Wert nicht übereinstimmen.
Diese Bits in dem ursprünglichen
Wert, die nicht übereinstimmen,
werden durch die bis jetzt bekannten Bits des Ergebnisses ersetzt,
d. h. 0111001, und die verbleibenden
Bits in dem ursprünglichen
Wert werden durch die entsprechenden Bits aus dem Ergebnis des bitweisen
UND bei Iteration Nr. 2 ersetzt, d. h. 0.
-
Höchste Bitposition,
bei der sich bitweises UND und bitweises ODER unterscheiden
(wobei
das niedrigstwertige Bit als 0 gezählt wird): 0 (j = 0)
⇒ nun sind
die 8 höchstwertigen
Bits des Ergebnisses bekannt.
Bitmaske
für bis
jetzt bekannte Bits: | 11111111 |
Bits
von Ergebnis: | 01100011 |
-
Bis
jetzt bekannte Bits von Ergebnis erzeugt durch:
- – Bits k – 1 bis
j + 1 (Bits 7 bis 1) = übereinstimmende
Bits von bitweisem UND und bitweisem ODER bei Iteration Nr. 4 – bei diesem
Beispiel 0111001.
- – Bit
j (Bit 0) auf 1 setzen wegen
Suche nach Maximum.
- – Es
gibt keine verbleibenden Bits j – 1 bis 0.
- ⇒ Nun sind
alle Bits des Ergebnisses bekannt, d. h. das Ergebnis lautet 01110011
= 115. Somit hält
der Prozessor P7 den Minimalwert.
-
BEISPIEL 3
-
Bestimmen
eines Minimalwerts aus Werten, die in elf Prozessoren P1 bis
P11 gespeichert sind. (Hinsichtlich der
Bestimmung für
die Werte für
das bitweise UND und das bitweise ODER, siehe bitte oben Beispiele
1 und 2)
-
Ursprüngliche
Werte:
P
1 = 70 → 01000110
P
2 =
97 → 01100001
P
3 = 115 → 01110011
P
4 = 116 → 01110100
P
5 = 77 → 01001101
P
6 = 105 → 01101001
P
7 = 110 → 01101110
P
8 = 68 → 01000100
P
9 = 101 → 01100101
P
10 = 109 → 01101101
P
11 = 111 → 01101111 ITERATION
NR. 1
Anzahl
von bis jetzt bekannten Bits von Ergebnis R: | 0 |
Bitmaske
für bis
jetzt bekannte Bits: | 00000000 |
Bits
von Ergebnis: | 00000000 |
-
Werte,
die bei dieser Iteration von jedem Prozessor an den zentralen Prozessor
gegeben werden:
-
Höchste Bitposition,
bei der sich bitweises UND und bitweises ODER unterscheiden
(wobei
das niedrigstwertige Bit als 0 gezählt wird): 5 (j = 5)
⇒ nun sind
die 3 höchstwertigen
Bits des Ergebnisses bekannt. ITERATION
NR. 2
Anzahl
von bis jetzt bekannten Bits von Ergebnis: | 3 |
Bitmaske
für bis
jetzt bekannte Bits: | 11100000 |
Bits
von Ergebnis: | 01000000 |
-
Bis
jetzt bekannte Bits von Ergebnis erzeugt durch:
- – Bits k – 1 bis
j + 1 (Bits 7 bis 6) = übereinstimmende
Bits von bitweisem UND und bitweisem ODER bei Iteration Nr. 1 – bei diesem
Beispiel 01.
- – Setzen
von Bit j (Bit 5) auf 0 wegen
Suche nach Minimum.
- – Verbleibende
Bits j – 1
bis 0 (Bits 4 bis 0) bleiben bei 0.
-
-
Höchste Bitposition,
bei der sich bitweises UND und bitweises ODER unterscheiden
(wobei
das niedrigstwertige Bit als 0 gezählt wird): 3 (j = 3)
⇒ nun sind
die 5 höchstwertigen
Bits des Ergebnisses bekannt. ITERATION
NR. 3
Anzahl
von bis jetzt bekannten Bits von Ergebnis: | 5 |
Bitmaske
für bis
jetzt bekannte Bits: | 11111000 |
Bits
von Ergebnis: | 01000000 |
-
Bis
jetzt bekannte Bits von Ergebnis erzeugt durch:
- – Bits k – 1 bis
j + 1 (Bits 7 bis 4) = übereinstimmende
Bits von bitweisem UND und bitweisem ODER bei Iteration Nr. 2 – bei diesem
Beispiel 0100.
- – Bit
j (Bit 3) auf 0 setzen wegen
Suche nach Minimum.
- – Verbleibende
Bits j – 1
bis 0 (2 bis 0) bleiben bei 0.
-
Höchste Bitposition,
bei der sich bitweises UND und bitweises ODER unterscheiden
(wobei
das niedrigstwertige Bit als 0 gezählt wird): 1 (j = 1)
⇒ nun sind
die 7 höchstwertigen
Bits des Ergebnisses bekannt. ITERATION
NR. 4
Anzahl
von bis jetzt bekannten Bits von Ergebnis: | 7 |
Bitmaske
für bis
jetzt bekannte Bits: | 11111110 |
Bits
von Ergebnis: | 01000100 |
-
Bis
jetzt bekannte Bits von Ergebnis erzeugt durch:
- – Bits k – 1 bis
j + 1 (Bits 7 bis 2) = übereinstimmende
Bits von bitweisem UND und bitweisem ODER bei Iteration Nr. 3 – bei diesem
Beispiel 01100.
- – Bit
j (Bit 1) auf 0 setzen wegen
Suche nach Minimum.
- – Verbleibende
Bits j – 1
bis 0 (0 bis 0) bleiben bei 0.
-
-
Höchste Bitposition,
bei der sich bitweises UND und bitweises ODER unterscheiden
(wobei
das niedrigstwertige Bit als 0 gezählt wird): –1(j = –1)
(d. h. alle Bits stimmen überein)
Anzahl
von bis jetzt bekannten Bits von Ergebnis: | 8 |
Bitmaske
für bis
jetzt bekannte Bits: | 11111111 |
Bits
von Ergebnis: | 01000100 |
-
Bis
jetzt bekannte Bits von Ergebnis erzeugt durch:
- – Bits k – 1 bis
j + 1 (Bits 7 bis 0) = übereinstimmende
Bits von bitweisem UND und bitweisem ODER bei Iteration Nr. 4 – bei diesem
Beispiel 01000100.
- – Bit
j (Bit – 1)
existiert nicht.
- – Es
gibt keine verbleibenden Bits j – 1 bis 0.
- ⇒ Nun sind
alle Bits des Ergebnisses bekannt, d. h. das Ergebnis lautet 01000100
= 68. Somit hält
der Prozessor P7 den Minimalwert.
-
BEISPIEL 4
-
Bestimmen
eines Maximalwerts aus Werten, die in elf Prozessoren P1 bis
P11 gespeichert sind. (Hinsichtlich der
Bestimmung für
die Werte für
das bitweise UND und das bitweise ODER, siehe bitte oben Beispiele
1 und 2)
-
Ursprüngliche
Werte:
P
1 = 70 → 01000110
P
2 =
97 → 01100001
P
3 = 115 → 01110011
P
4 = 116 → 01110100
P
5 = 77 → 01001101
P
6 = 105 → 01101001
P
7 = 110 → 01101110
P
8 = 68 → 01000100
P
9 = 101 → 01100101
P
10 = 109 → 01101101
P
11 = 111 → 01101111 ITERATION
NR. 1
Anzahl
von bis jetzt bekannten Bits von Ergebnis: | 0 |
Bitmaske
für bis
jetzt bekannte Bits: | 00000000 |
Bits
von Ergebnis: | 00000000 |
-
Werte,
die bei dieser Iteration von jedem Prozessor an den zentralen Prozessor
gegeben werden:
-
Höchste Bitposition,
bei der sich bitweises UND und bitweises ODER unterscheiden
(wobei
das niedrigstweitige Bit als 0 gezählt wird): 5 (j = 5)
⇒ nun sind
die 3 höchstwertigen
Bits des Ergebnisses bekannt. ITERATION
NR. 2
Anzahl
von bis jetzt bekannten Bits von Ergebnis: | 3 |
Bitmaske
für bis
jetzt bekannte Bits: | 11100000 |
Bits
von Ergebnis: | 01100000 |
-
Bis
jetzt bekannte Bits von Ergebnis erzeugt durch:
- – Bits k – 1 bis
j + 1 (Bits 7 bis 6) = übereinstimmende
Bits von bitweisem UND und bitweisem ODER bei Iteration Nr. 1 – bei diesem
Beispiel 01.
- – Setzen
von Bit j (Bit 5) auf 1 wegen
Suche nach Maximum.
- – Verbleibende
Bits j – 1
bis 0 (Bits 4 bis 0) bleiben bei 0.
-
-
Höchste Bitposition,
bei der sich bitweises UND und bitweises ODER unterscheiden
(wobei
das niedrigstwertige Bit als 0 gezählt wird): 4 (j = 4)
⇒ nun sind
die 4 höchstwertigen
Bits des Ergebnisses bekannt. ITERATION
NR. 3
Anzahl
von bis jetzt bekannten Bits von Ergebnis: | 4 |
Bitmaske
für bis
jetzt bekannte Bits: | 11110000 |
Bits
von Ergebnis: | 01110000 |
-
Bis
jetzt bekannte Bits von Ergebnis erzeugt durch:
- – Bits k – 1 bis
j + 1 (Bits 7 bis 5) = übereinstimmende
Bits von bitweisem UND und bitweisem ODER bei Iteration Nr. 2 – bei diesem
Beispiel 011.
- – Bit
j (Bit 4) auf 1 setzen wegen
Suche nach Maximum.
- – Verbleibende
Bits j – 1
bis 0 (3 bis 0) bleiben bei 0.
-
-
Höchste Bitposition,
bei der sich bitweises UND und bitweises ODER unterscheiden
(wobei
das niedrigstwertige Bit als 0 gezählt wird): 2 (j = 2)
⇒ nun sind
die 6 höchstwertigen
Bits des Ergebnisses bekannt. ITERATION
NR. 4
Anzahl
von bis jetzt bekannten Bits von Ergebnis: | 6 |
Bitmaske
für bis
jetzt bekannte Bits: | 11111100 |
Bits
von Ergebnis: | 01110100 |
-
Bis
jetzt bekannte Bits von Ergebnis erzeugt durch:
- – Bits k – 1 bis
j + 1 (Bits 7 bis 3) = übereinstimmende
Bits von bitweisem UND und bitweisem ODER bei Iteration Nr. 3 – bei diesem
Beispiel 01110.
- – Bit
j (Bit 2) auf 1 setzen wegen
Suche nach Maximum.
- – Verbleibende
Bits j – 1
bis 0 (0 bis 0) bleiben bei 0.
-
-
-
Höchste Bitposition,
bei der sich bitweises UND und bitweises ODER unterscheiden
(wobei
das niedrigstwertige Bit als 0 gezählt wird): –1 (j = –1)
(d. h. alle Bits sind
bekannt)
Anzahl
von bis jetzt bekannten Bits von Ergebnis: | 8 |
Bitmaske
für bis
jetzt bekannte Bits: | 11111111 |
Bits
von Ergebnis: | 01110100 |
-
Bis
jetzt bekannte Bits von Ergebnis erzeugt durch:
- – Bits k – 1 bis
j + 1 (Bits 7 bis 0) = übereinstimmende
Bits von bitweisem UND und bitweisem ODER bei Iteration Nr. 4 – bei diesem
Beispiel 01110100.
- – Bit
j (Bit –1)
existiert nicht.
- – Es
gibt keine verbleibenden Bits j – 1 bis 0.
- ⇒ Nun sind
alle Bits des Ergebnisses bekannt, d. h. das Ergebnis lautet 01110100
= 116. Somit hält
der Prozessor P4 den Minimalwert.
-
BEISPIEL 5
-
Bestimmen
eines Minimalwerts aus Werten, die in achtzehn Prozessoren P1 bis P18 gespeichert
sind. (Hinsichtlich der Bestimmung für die Werte für das bitweise
UND und das bitweise ODER, siehe bitte oben Beispiele 1 und 2)
-
Ursprüngliche
Werte:
P
1 = 114 → 01110010
P
2 =
104 → 01101000
P
3 = 97 → 01100001
P
4 = 98 → 01100010
P
5 = 97 → 01100001
P
6 = 114 → 01110010
P
7 = 98 → 01100010
P
8 = 101 → 01100101
P
9 = 114 → 01110010
P
10 = 114 → 01110010
P
11 = 104 → 01101000
P
12 = 97 → 01100001
P
13 = 98 → 01100010
P
14 = 97 → 01100001
P
15 = 114 → 01110010
P
16 = 98 → 01100010
P
17 = 101 → 01100101
P
18 = 114 → 01110010 ITERATION
NR. 1
Anzahl
von bis jetzt bekannten Bits von Ergebnis: | 0 |
Bitmaske
für bis
jetzt bekannte Bits: | 00000000 |
Bits
von Ergebnis: | 00000000 |
-
Werte,
die bei dieser Iteration von jedem Prozessor an den zentralen Prozessor
gegeben werden:
-
Höchste Bitposition,
bei der sich bitweises UND und bitweises ODER unterscheiden
(wobei
das niedrigstwertige Bit als 0 gezählt wird): 4 (j = 4)
⇒ nun sind
die 4 höchstwertigen
Bits des Ergebnisses bekannt. ITERATION
NR. 2
Anzahl
von bis jetzt bekannten Bits von Ergebnis: | 4 |
Bitmaske
für bis
jetzt bekannte Bits: | 11110000 |
Bits
von Ergebnis: | 01100000 |
-
Bis
jetzt bekannte Bits von Ergebnis erzeugt durch:
- – Bits k – 1 bis
j + 1 (Bits 7 bis 5) = übereinstimmende
Bits von bitweisem UND und bitweisem ODER bei Iteration Nr. 1 – bei diesem
Beispiel 011.
- – Setzen
von Bit j (Bit 4) auf 0 wegen
Suche nach Minimum.
- – Verbleibende
Bits j – 1
bis 0 (Bits 3 bis 0) bleiben bei 0.
-
-
Höchste Bitposition,
bei der sich bitweises UND und bitweises ODER unterscheiden
(wobei
das niedrigstwertige Bit als 0 gezählt wird): 3 (j = 3)
⇒ nun sind
die 5 höchstwertigen
Bits des Ergebnisses bekannt. ITERATION
NR. 3
Anzahl
von bis jetzt bekannten Bits von Ergebnis: | 5 |
Bitmaske
für bis
jetzt bekannte Bits: | 11111000 |
Bits
von Ergebnis: | 01100000 |
-
Bis
jetzt bekannte Bits von Ergebnis erzeugt durch:
- – Bits k – 1 bis
j + 1 (Bits 7 bis 4) = übereinstimmende
Bits von bitweisem UND und bitweisem ODER bei Iteration Nr. 2 – bei diesem
Beispiel 0110.
- – Bit
j (Bit 3) auf 0 setzen wegen
Suche nach Minimum.
- – Verbleibende
Bits j – 1
bis 0 (2 bis 0) bleiben bei 0.
-
-
Höchste Bitposition,
bei der sich bitweises UND und bitweises ODER unterscheiden
(wobei
das niedrigstwertige Bit als 0 gezählt wird): 2 (j = 2)
⇒ nun sind
die 6 höchstwertigen
Bits des Ergebnisses bekannt. ITERATION
NR. 4
Anzahl
von bis jetzt bekannten Bits von Ergebnis: | 6 |
Bitmaske
für bis
jetzt bekannte Bits: | 11111100 |
Bits
von Ergebnis: | 01100000 |
-
Bis
jetzt bekannte Bits von Ergebnis erzeugt durch:
- – Bits k – 1 bis
j + 1 (Bits 7 bis 3) = übereinstimmende
Bits von bitweisem UND und bitweisem ODER bei Iteration Nr. 3 – bei diesem
Beispiel 01100.
- – Bit
j (Bit 2) auf 0 setzen wegen
Suche nach Minimum.
- – Verbleibende
Bits j – 1
bis 0 (1 bis 0) bleiben bei 0.
-
-
Höchste Bitposition,
bei der sich bitweises UND und bitweises ODER unterscheiden
(wobei
das niedrigstwertige Bit als 0 gezählt wird): 1 (j = 1)
⇒ nun sind
die 7 höchstwertigen
Bits des Ergebnisses bekannt. ITERATION
NR. 5
Anzahl
von bis jetzt bekannten Bits von Ergebnis: | 7 |
Bitmaske
für bis
jetzt bekannte Bits: | 11111110 |
Bits
von Ergebnis: | 01100000 |
-
Bis
jetzt bekannte Bits von Ergebnis erzeugt durch:
- – Bits k – 1 bis
j + 1 (Bits 7 bis 2) = übereinstimmende
Bits von bitweisem UND und bitweisem ODER bei Iteration Nr. 4 – bei diesem
Beispiel 011000.
- – Bit
j (Bit 1) auf 0 setzen wegen
Suche nach Minimum.
- – Verbleibende
Bits j – 1
bis 0 (0 bis 0) bleiben bei 0.
-
-
Höchste Bitposition,
bei der sich bitweises UND und bitweises ODER unterscheiden
(wobei
das niedrigstwertige Bit als 0 gezählt wird): –1 (j = –1)
(d. h. alle Bits sind
bekannt)
Anzahl
von bis jetzt bekannten Bits von Ergebnis: | 8 |
Bitmaske
für bis
jetzt bekannte Bits: | 11111111 |
Bits
von Ergebnis: | 01100001 |
-
Bis
jetzt bekannte Bits von Ergebnis erzeugt durch:
- – Bits k – 1 bis
j + 1 (Bits 7 bis 0) = übereinstimmende
Bits von bitweisem UND und bitweisem ODER bei Iteration Nr. 4 – bei diesem
Beispiel 01100001.
- – Bit
j (Bit –1)
existiert nicht.
- – Es
gibt keine verbleibenden Bits j – 1 bis 0.
- ⇒ Nun sind
alle Bits des Ergebnisses bekannt, d. h. das Ergebnis lautet 01100001
= 97. Somit halten die Prozessoren P3, P5, P12 den Minimalwert.
-
BEISPIEL 6
-
Bestimmen
eines Maximalwerts aus Werten, die in achtzehn Prozessoren P1 bis P18 gespeichert
sind. (Hinsichtlich der Bestimmung für die Werte für das bitweise
UND und das bitweise ODER, siehe bitte oben Beispiele 1 und 2)
-
Ursprüngliche
Werte:
P
1 = 114 → 01110010
P
2 =
104 → 01101000
P
3 = 97 → 01100001
P
4 = 98 → 01100010
P
5 = 97 → 01100001
P
6 = 114 → 01110010
P
7 = 98 → 01100010
P
8 = 101 → 01100101
P
9 = 114 → 01110010
P
10 = 114 → 01110010
P
11 = 104 → 01101000
P
12 = 97 → 01100001
P
13 = 98 → 01100010
P
14 = 97 → 01100001
P
15 = 114 → 01110010
P
16 = 98 → 01100010
P
17 = 101 → 01100101
P
18 = 114 → 01110010 ITERATION
NR. 1
Anzahl
von bis jetzt bekannten Bits von Ergebnis: | 0 |
Bitmaske
für bis
jetzt bekannte Bits: | 00000000 |
Bits
von Ergebnis: | 00000000 |
-
Werte,
die bei dieser Iteration von jedem Prozessor an den zentralen Prozessor
gegeben werden:
-
Höchste Bitposition,
bei der sich bitweises UND und bitweises ODER unterscheiden
(wobei
das niedrigstwertige Bit als 0 gezählt wird): 4 (j = 4)
⇒ nun sind
die 4 höchstwertigen
Bits des Ergebnisses bekannt. ITERATION
NR. 2
Anzahl
von bis jetzt bekannten Bits von Ergebnis: | 4 |
Bitmaske
für bis
jetzt bekannte Bits: | 11110000 |
Bits
von Ergebnis: | 01110000 |
-
Bis
jetzt bekannte Bits von Ergebnis erzeugt durch:
- – Bits k – 1 bis
j + 1 (Bits 7 bis 5) = übereinstimmende
Bits von bitweisem UND und bitweisem ODER bei Iteration Nr. 1 – bei diesem
Beispiel 011.
- – Setzen
von Bit j (Bit 4) auf 1 wegen
Suche nach Minimum.
- – Verbleibende
Bits j – 1
bis 0 (Bits 3 bis 0) bleiben bei 0.
-
-
-
Höchste Bitposition,
bei der sich bitweises UND und bitweises ODER unterscheiden
(wobei
das niedrigstwertige Bit als 0 gezählt wird): –1 (j = –1)
Anzahl
von bis jetzt bekannten Bits von Ergebnis: | 8 |
Bitmaske
für bis
jetzt bekannte Bits: | 11111111 |
Bits
von Ergebnis: | 01110010 |
-
Bis
jetzt bekannte Bits von Ergebnis erzeugt durch:
- – Bits k – 1 bis
j + 1 (Bits 7 bis 0) = übereinstimmende
Bits von bitweisem UND und bitweisem ODER bei Iteration Nr. 4 – bei diesem
Beispiel 01110010.
- – Bit
j (Bit –1)
existiert nicht.
- – Es
gibt keine verbleibenden Bits j – 1 bis 0.
- ⇒ Nun sind
alle Bits des Ergebnisses bekannt, d. h. das Ergebnis lautet 01110010
= 114. Somit halten die Prozessoren P6,
P9, P10, P15, P18, den Minimalwert.
-
Gemäß den oben
beschriebenen Ausführungsbeispielen
ist die Anzahl von Iterationen, die für diese Art des Bestimmens
des Minimums benötigt
wird, lediglich die Anzahl von Bits, bei denen sich die Binärdarstellung
von zwei der ursprünglichen
Werte unterscheidet. Jede Iteration erfordert einen gemeinsamen
Lesevorgang mit „UND”, einen
gemeinsamen Lesevorgang mit „ODER” und eine
Rundsendung.
-
Die
Anzahl von Bits, die verwendet wird, um Zahlen darzustellen, beträgt typischerweise
32, oder kann sogar 64 betragen, und die Anzahl von Bits, bei denen
sich ein Satz von Werten unterscheidet, kann noch geringer sein.
Falls die Anzahl n von Prozessoren erheblich größer als die Anzahl von Bits
ist, bei denen sich der Satz von Werten unterscheidet, beispielsweise
um mehrere Tausend größer, ist
das „schnelle
Minimumfinden” erheblich
schneller als die oben angegebene triviale Weise, die n Leseoperationen
benötigt.
-
Ausführungsbeispiele
der Erfindung wurden unter Verwendung einer Mehrzahl von Prozessoren
P1 bis Pn beschrieben,
die jeweils einen Binärwert
liefern. Andere Ausführungsbeispiele
verwenden eventuell lediglich einen einzigen Prozessor oder eine
verringerte Anzahl von Prozessoren, die jeweils in jeweiligen Registern von
Speicherelementen, die denselben zugeordnet sind, die Binärwerte halten,
deren Maximum/Minimum durch den zentralen Prozessor bestimmt werden
soll.
-
Das
oben beschriebene Verfahren kann in Hardware oder in Software implementiert
werden. Zusätzlich
kann die Implementierung in einem digitalen Speichermedium erfolgen,
beispielsweise einer Platte oder einer CD, die elektronisch lesbare
Steuersignale aufweist, die mit einem programmierbaren Computersystem zusammenwirken
können,
zum Ausführen
des Verfahrens gemäß Ausführungsbeispielen
der vorliegenden Erfindung. Im Allgemeinen handelt es sich bei der
Erfindung auch um ein Computerprogrammprodukt, das einen Programmcode
zum Ausführen
des Verfahrens gemäß Ausführungsbeispielen
der vorliegenden Erfindung aufweist, der auf einem maschinenlesbaren
Träger
gespeichert ist und ausgeführt
wird, wenn das Computerprogrammprodukt auf einem Computer abläuft. Anders
ausgedrückt
handelt es sich bei der Erfindung auch um ein Computerprogramm,
das Programmcodes zum Ausführen
des Verfahrens aufweist, wenn das Computerprogramm auf einem Computer
abläuft.
-
Zusammenfassung
-
Zum
Bestimmen eines Minimums/Maximums einer Mehrzahl von Binärwerten
wird eine Bitposition in der Mehrzahl von Binärwerten bestimmt, nachfolgend
zu der alle Bitwerte die gleichen sind. Aus der Mehrzahl von Binärwerten
werden diese Binärwerte
ausgewählt,
deren Bitwerte an der Bitposition, die bei dem vorhergehenden Schritt
bestimmt werden, und allen nachfolgenden Positionen, falls vorhanden,
einen vorbestimmten Wert aufweisen. Die vorhergehenden Schritte
werden dann wiederholt, bis lediglich ein Binärwert verbleibt, der als das
Minimum oder Maximum geliefert wird.