DE60035171T2 - Verfahren und Schaltungen zum schnellen Auffinden des minimalen / maximalen Wertes in einer Menge von Zahlen - Google Patents

Verfahren und Schaltungen zum schnellen Auffinden des minimalen / maximalen Wertes in einer Menge von Zahlen Download PDF

Info

Publication number
DE60035171T2
DE60035171T2 DE60035171T DE60035171T DE60035171T2 DE 60035171 T2 DE60035171 T2 DE 60035171T2 DE 60035171 T DE60035171 T DE 60035171T DE 60035171 T DE60035171 T DE 60035171T DE 60035171 T2 DE60035171 T2 DE 60035171T2
Authority
DE
Germany
Prior art keywords
value
lowest
bits
coded
sub
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Lifetime
Application number
DE60035171T
Other languages
English (en)
Other versions
DE60035171D1 (de
Inventor
Ghislain Imbert De Tremiolles
Pascal Tannhof
Didier Louis
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of DE60035171D1 publication Critical patent/DE60035171D1/de
Application granted granted Critical
Publication of DE60035171T2 publication Critical patent/DE60035171T2/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/544Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices for evaluating functions by calculation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/22Arrangements for sorting or merging computer data on continuous record carriers, e.g. tape, drum, disc
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30021Compare instructions, e.g. Greater-Than, Equal-To, MINMAX

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Mathematical Analysis (AREA)
  • Computing Systems (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)
  • Measurement Of Current Or Voltage (AREA)
  • Measuring Instrument Details And Bridges, And Automatic Balancing Devices (AREA)
  • Analogue/Digital Conversion (AREA)

Description

  • GEBIET DER ERFINDUNG
  • Die vorliegende Erfindung betrifft Verfahren, die dazu dienen, in einer Gruppe von Zahlen nach einer Zahl zu suchen, die einen vorher festgelegten Wert hat, und insbesondere betrifft sie ein Verfahren und Schaltungen, um die Zahl mit dem niedrigsten/höchsten Wert in dieser Gruppe von Zahlen zu suchen. Die beschriebene Lösung ermöglicht eine sehr schnelle Suche, wodurch sie die Antwortzeit verbessert und auch eine Antwort bereitstellt, die ungeachtet der Menge an Zahlen in der Gruppe, in der die Suche nach dem niedrigsten/höchsten Wert durchgeführt wird, eine gleich bleibende Zeit in Anspruch nimmt.
  • DER ERFINDUNG ZUGRUNDE LIEGENDER ALLGEMEINER STAND DER TECHNIK
  • Bei den heutigen Datenverarbeitungsprozessen wird die Suche nach dem niedrigsten oder dem höchsten Wert in einer Gruppe von Zahlen auf verschiedenen technischen Gebieten wie zum Beispiel bei Optimierungsprozessen, bei künstlichen neuronalen Netzwerken, in der Signalverarbeitung usw. in großem Umfang durchgeführt. Der resultierende Wert kommt in nachfolgenden Berechnungsaufgaben zur Anwendung oder wird zur Durchführung einer entsprechenden damit verbundenen Aktion, beispielsweise der Auswahl einer Schaltung, verwendet. Da es ausgesprochen wünschenswert ist, dass der Suchlauf so schnell wie möglich durchgeführt wird, kann diese Zielsetzung nur erreicht werden, wenn man sehr leistungsfähige und kostspielige funktionsspezifische Schaltungen einsetzt. Bis heute gibt es mehrere Lösungen für dieses vordringliche Problem, die mit mehr oder weniger großen Schwierigkeiten in Hardware, üblicherweise auf einem Silizium-Chip, ausgeführt sind.
  • Das bekannteste Verfahren zur Ermittlung der Zahl mit dem niedrigsten Wert in einer Gruppe von Zahlen besteht darin, eine Zahl mit einer anderen Zahl der Gruppe zu vergleichen, die Zahl mit dem niedrigsten Wert auszuwählen und dann mit der ausgewählten Zahl in der gleichen Weise fortzufahren, bis alle Zahlen der Gruppe verarbeitet worden sind, um die Zahl(en) mit dem niedrigsten Wert zu ermitteln. Offensichtlich ist diese Lösung, die viele Verarbeitungsschritte erforderlich macht, welche nacheinander durchgeführt werden, nicht optimiert und hat beträchtliche Nachteile. Wie dem Fachmann bekannt ist, ist die Antwortzeit untragbar. Diese Lösung und im Allgemeinen alle Lösungen, die davon abgeleitet werden, haben Antwortzeiten, die bis heute bei den meisten Anwendungen nicht annehmbar sind, hauptsächlich weil sie auf Algorithmen für eine aufeinanderfolgende Verarbeitung beruhen. Überdies verschlechtert sich die Antwortzeit, da sie von der Genauigkeit (der Anzahl q der Bits, die zur Codierung der Zahlen verwendet werden) und auch von der Menge der Zahlen abhängig ist, in denen nach dem niedrigsten/höchsten Wert gesucht wird.
  • Eine weitere Vorgehensweise besteht in einer gleichzeitigen Ermittlung (d.h. in einer parallel stattfindenden Ermittlung) aller Bits mit derselben Gewichtung für die Gesamtzahl der Zahlen, in denen nach dem niedrigsten/höchsten Wert gesucht wird. Eine solche parallele Vorgehensweise wurde kürzlich in der Fachliteratur in Verbindung mit einer neu entwickelten Familie von neuronalen Siliziumchips beschrieben, die von IBM Frankreich unter der Bezeichnung ZISC036 (ZISC ist ein eingetragenes Warenzeichen der IBM Corp.) hergestellt und vertrieben werden. Weitere Einzelheiten finden sich in der US-Patentschrift 5 740 326 mit dem Titel "Circuit for Searching/Sorting Data in Neural Networks", die auf denselben Rechtsnachfolger übertragen wurde.
  • Das Prinzip dieser Vorgehensweise wird mit Bezug auf 1 kurz erklärt, wobei davon ausgegangen wird, dass p Zahlen (die nachstehend als Zahl 1 bis Zahl p bezeichnet werden), die in q Bits codiert werden, verarbeitet werden. Wenden wir uns nun 1 zu, in der die Schaltung 10, die aus p Blöcken 11 besteht, welche mit den Bezugszahlen 11-1 bis 11-p (ein Block pro Zahl, nach der gesucht werden soll) gekennzeichnet sind, eine 1-Bit-Scheibe, in diesem Fall das zweite Bit (das Bit 2 oder Bit 2) der Zahlen, verarbeitet. Man beachte, dass alle q Scheiben genau gleich aufgebaut sind. Im Grunde ist ein Block 11 der in 28B der vorstehend genannten US-Patentschrift gezeigten Schaltung ziemlich ähnlich. Der Block 11-1 umfasst zum Beispiel ein ODER-Gatter mit zwei Eingängen 12-1, ein UND-Gatter mit zwei Eingängen 13-1 und ein ODER-Gatter mit zwei Eingängen 14-1. Die beiden letzteren Gatter bilden den Teilblock 15-1, dessen Hauptaufgabe in der Auswahl/Abwahl der ihm zugeordneten Zahl, in diesem Fall der Zahl 1, besteht. Bei Verwendung derselben Terminologie wie in der vorstehend genannten US-Patentschrift werden die Signale Exout1- 2 und das Bit1- 2 an das ODER-Gatter 12-1 angelegt. Die Signale Exout1-2 und das Bit1-2 stellen den Zustand der Zahl 1 (d.h. ausgewählt oder abgewählt) beziehungsweise den Wert des Bits 2 für diese Zahl 1 dar. Derselbe Aufbau gilt für alle Blöcke 11-1 bis 11-p. Die Ausgangssignale der ODER-Gatter 12-1 bis 12-p werden an ein p-Wege-UND-Gatter (UND-Gatter mit p Eingängen) 16 angelegt (das UND-Gatter 16 benötigt die gleiche Anzahl von Eingängen wie es gleichzeitig zu verarbeitende Zahlen gibt), um ein Signal zu erzeugen, das im Inverter 17 invertiert wird. Das UND-Gatter 16 und der Inverter 17 bilden den Block 18. Das resultierende Signal wird an einen ersten Eingang von allen UND-Gattern 13-1 bis 13-p angelegt, deren anderer Eingang das entsprechende Bit-Signal empfängt, d.h. Bit1-2 bis Bitp-2. Die Ausgangssignale der UND-Gatter 13-1 und 13-p und die entsprechenden Signale Exout, d.h. Exout1-2 bis Exoutp-2 werden jeweils an die ODER-Gatter 14-1 bis 14-p angelegt. Die Ausgangssignale der ODER-Gatter 14-1 bis 14-p werden mit Exout1- 3 bis Exoutp-3 bezeichnet, um bei dieser Terminologie zu bleiben. Der allen p Blöcken 11-1 bis 11-p gemeinsame Block 18 ermöglicht die Ermittlung des niedrigsten Werts für das Bit 2 der p Zahlen, d.h. für nur ein einziges Bit. Um diesen Vergleich beispielsweise zur Auswahl des niedrigsten Werts durchzuführen, wird jede 1-Bit-Scheibe eines Bits von allen Zahlen 1 bis p in Folge verarbeitet, und zwar eine Scheibe je Schritt (z.B. je Taktzyklus), wobei beim höchstwertigen Bit (MSB) begonnen und bis zum niedrigstwertigen Bit (LSB) fortgefahren wird. Die Antwortzeit dieses Verfahrens ist dann abhängig von der Menge q der Scheiben, d.h. der Anzahl der Bits, die zur Codierung der Zahlen 1 bis p verwendet werden. Folglich ist diese Lösung parallel, was die p Zahlen angeht, und sequenziell, was die q Bits der Codierung angeht, so dass die Rechenzeit ungeachtet des Wertes von p nur von der Anzahl der Bits/Scheiben q abhängt. Wie in 1 gezeigt ist, wird das Signal Exout, das das Ausschlussbit darstellt, zur Auswahl/Abwahl der entsprechenden Zahl während des Ermittlungsprozesses verwendet. Eine Zahl wird ausgewählt, solange das Signal Exout gleich einer logischen "0" ist, und sie wird abgewählt, sobald es gleich einer logischen "1" ist. Tatsächlich verhält es sich so, dass, wenn eine Zahl, zum Beispiel die Zahl 1, während der Ermittlung des Bits i (i variiert von 1 bis q) abgewählt worden ist, Exout1-(i+1) gleich "1" ist, und alle folgenden Signale Exout1-(i+2) ... Exout1-q werden auf "1" gesetzt. Folglich wird die Zahl 1 ungeachtet ihres Werts nicht mehr berücksichtigt, und die Werte der Signale Bit1-(i+1) ..., Bit1-q werden gesperrt. Da bei diesem Beispiel, das auf die Suche nach dem niedrigsten Wert beschränkt ist, die erste Scheibe, die dem Bit 1 entspricht (d.h. dem MSB), nicht abgewählt werden darf, wenn der Ermittlungsprozess beginnt, werden die Signale Exout1-1 bis Exoutp-1 auf logisch "0" gezwungen.
  • Zusammenfassend kann gesagt werden, dass diese Lösung eine der Menge q an Bit, die zur Codierung der Zahlen 1 bis p verwendet werden, entsprechende Anzahl von Schritten erforderlich macht, wodurch sie nicht nur die Geschwindigkeit des Suchprozesses einschränkt, sondern natürlich auch viel Siliziumfläche in Anspruch nimmt.
  • ZUSAMMENFASSUNG DER VORLIEGENDEN ERFINDUNG
  • Es ist daher eine Hauptaufgabe der vorliegenden Erfindung, ein Verfahren und Schaltungen zur Durchführung des Suchlaufs nach dem niedrigsten/höchsten Wert in einer Gruppe von Zahlen bereitzustellen, wobei die Antwortzeit erheblich verbessert wird, da mehrere Bitscheiben in ein und demselben Schritt gleichzeitig parallel verarbeitet werden können.
  • Es ist eine weitere Aufgabe der vorliegenden Erfindung, ein Verfahren und Schaltungen zur Durchführung des Suchlaufs nach dem niedrigsten/höchsten Wert in einer Gruppe von Zahlen bereitzustellen, wobei die Antwortzeit ungeachtet der Menge an Zahlen, in der der Suchlauf durchgeführt wird, gleich bleibt.
  • Es ist noch eine weitere Aufgabe der vorliegenden Erfindung, ein Verfahren und Schaltungen zur Durchführung des Suchlaufs nach dem niedrigsten/höchsten Wert in einer Gruppe von Zahlen bereitzustellen, mit denen sich viel Fläche einsparen lässt, wenn sie auf einem Siliziumchip realisiert werden, und die für eine einfachere Anschließbarkeit des Siliziumchips sorgen.
  • Diese und andere damit zusammenhängende Aufgaben werden durch das erfindungsgemäße Verfahren und die erfindungsgemäßen Schaltungen gelöst.
  • Das Verfahren zur Durchführung des Suchlaufs nach dem niedrigsten/höchsten Wert in einer Gruppe von p Zahlen, die als in einem Binärformat in q Bit codierte Zahlen bezeichnet werden, umfasst die folgenden Schritte:
    • a) Aufteilen einer jeden Zahl in K Teilwerte, die in n Bit codiert werden (q <= K × n) und Festlegen eines Parameters k (k = 1 bis K), der jedem Teilwert einer Zahl einen Rang zuordnet, wobei alle Teilwerte desselben Rangs eine Scheibe bilden;
    • b) Bilden der ersten Scheibe (k = 1), die aus den in n Bit codierten Teilwerten des ersten Rangs (MSBs) gebildet wird;
    • c) Codieren eines jeden in n Bit codierten Teilwerts dieser Scheibe in m Bit (m > n), um eine Scheibe aus in m Bit codierten Teilwerten zu bilden, wobei ein Codierverfahren zur Anwendung kommt, das die Ermittlung des niedrigsten/höchsten Werts mit einer elementaren Logikfunktion (logisches UND, logisches ODER) ermöglicht;
    • d) paralleles Durchsuchen der Scheibe der in m Bit codierten Teilwerte, um den in m Bit codierten niedrigsten/höchsten Teilwert von ihnen zu ermitteln;
    • e) Abwählen aller Zahlen, deren in m Bit codierter Teilwert größer/kleiner als der in m Bit codierte niedrigste/höchste Teilwert ist, der im Schritt d) ermittelt wurde; und
    • f) Wiederholen der Schritte c) bis d) mit der nächsten Scheibe (k = k + 1) der in n Bit codierten Teilwerte, bis alle Scheiben verarbeitet worden sind (k = K), so dass der niedrigste/höchste Wert als ein Wert ermittelt wird, der dem Wert der Zahl (s) entspricht, die nicht abgewählt worden ist.
  • Die Schaltung, die dazu dient, nach dem niedrigsten/höchsten Wert in einer Gruppe von p Zahlen zu suchen, die als in einem Binärformat in q Bit codierte Zahlen bezeichnet werden, umfasst Folgendes:
    • a) Mittel zur Ermittlung des niedrigsten/höchsten Werts, die aus m p-Wege-UND-Gattern (m UND-Gatter mit p Eingängen) bestehen, welche an jedem der m Bit mit derselben Gewichtung von p in m Bit codierten Binärwörtern eine UND-Funktion ausführen können; und
    • b) p Blöcke, wobei jeder Block einer Zahl zugeordnet wird und Folgendes umfasst: a) Aufteilungsmittel, das dazu dient, jede Zahl in K Teilwerte (K ≥ 1) von n Bit entsprechend dem Verhältnis q ≤ K × n aufzuteilen; b) Codiermittel, das mit dem Aufteilungsmittel verbunden ist, um jeden in n Bit codierten Teilwert in einen in m Bit codierten Teilwert zu codieren (m > n), und dessen Ausgang mit den Mitteln zur Ermittlung des niedrigsten/höchsten Werts verbunden ist; und c) Abwahlmittel, die mit dem Codiermittel verbunden sind;
    wobei das in dem Codiermittel verwendete Codierverfahren die Ermittlung des niedrigsten/höchsten Werts für die in m Bit codierten Teilwerte ermöglicht, die von allen Codiermitteln der Suchschaltung über eine UND-Funktion erzeugt werden;
    wobei die in m Bit codierten Teilwerte, die von allen Codiermitteln der Suchschaltung erzeugt werden, an die Mittel zur Ermittlung des niedrigsten/höchsten Werts angelegt werden, um den codierten niedrigsten/höchsten Teilwert unter ihnen zu ermitteln, und an das Abwahlmittel, um ein Ausschlusssignal Exout zu erzeugen, das die Zahl abwählen kann, die diesem Block zugeordnet wird, wenn sein in m Bit codierter Teilwert größer/kleiner als der in m Bit codierte niedrigste/höchste Teilwert ist, der ermittelt worden ist.
  • Das Verfahren der vorliegenden Erfindung verbessert folglich die Antwortzeit des Suchlaufs nach dem niedrigsten/höchsten Wert erheblich, indem es die meisten Berechnungen, wenn nicht alle, parallel durchführt, so dass es zur Codierung der Zahlen, nach denen gesucht werden soll, nicht länger von der Menge q der Bits abhängig ist und folglich die Anzahl der Schritte des Prozesses zur Ermittlung des niedrigsten/höchsten Werts beträchtlich verringert werden kann.
  • Die neuartigen Funktionen, die als kennzeichnend für diese Erfindung erachtet werden, sind in den beigefügten Ansprüchen dargelegt. Die Erfindung selbst jedoch sowie diese und andere damit verbundenen Aufgaben und Vorteile der Erfindung lassen sich am besten durch Bezugnahme auf die folgende ausführliche Beschreibung in Verbindung mit den beigefügten Zeichnungen verstehen.
  • KURZE BESCHREIBUNG DER ZEICHNUNGEN
  • 1 zeigt schematisch die Schaltung, die zur Durchführung des Suchlaufs nach dem niedrigsten/höchsten Wert auf einer Bitscheibe einer Gruppe von p Zahlen verwendet wird und die in der vorstehend erwähnten US-Patentschrift 5 740 326 beschrieben ist.
  • 2A zeigt die grundlegende Architektur der Suchschaltung, die zur Durchführung des Suchlaufs nach dem niedrigsten/höchsten Wert von p Zahlen verwendet wird, die mit "Zahl 1" bis "Zahl p" bezeichnet und in q Bit codiert sind, wobei die q Bit gemäß einer ersten bevorzugten Ausführungsform der vorliegenden Erfindung in einer teilweise parallelen Operation verarbeitet werden.
  • 23 zeigt eine weitere Architektur der Suchschaltung von 2A, wobei die q Bit gemäß einer zweiten bevorzugten Ausführungsform der vorliegenden Erfindung in einer vollkommen parallelen Operation verarbeitet werden.
  • 3, die aus den 3(a) und 3(b) besteht, zeigt zwei Varianten des herkömmlichen "thermometrischen" Codierverfahrens.
  • 4 zeigt die wesentlichen Schritte des Algorithmus am Anfang des Verfahrens der vorliegenden Erfindung.
  • 5, die aus den 5(a) und 5(b) besteht, zeigt das verfahren der vorliegenden Erfindung in dem ganz bestimmten Schritt, in dem in einer Gruppe von 4 Zahlen nach dem niedrigsten Wert gesucht wird, wobei dieser Wert aus Gründen der Übersichtlichkeit der Darstellung gewählt wurde.
  • 6A beziehungsweise 6B zeigen eine Hardware-Ausführung der Hauptschaltungen, welche die innovative Suchschaltung von 2A ohne und mit einem Decodierer bilden.
  • 7 zeigt eine Hardware-Ausführung der Hauptschaltungen einer Scheibe der innovativen Suchschaltung von 2B mit einem Decodierer.
  • BESCHREIBUNG DER BEVORZUGTEN AUSFÜHRUNGSFORMEN
  • Gemäß einem allgemeineren Aspekt der vorliegenden Erfindung wird der Wert einer jeden in q Bit codierten Zahl in eine Vielzahl K von kleineren Werten aufgeteilt, die in n Bit codiert und nachstehend als Teilwerte bezeichnet werden. Dann werden die in n Bit codierten Teilwerte mit Hilfe eines geeigneten Codierers in m Bit codiert, so dass jeder Teilwert in nur einem Schritt geprüft werden kann, um einen schnellstmöglichen Suchprozess zu ermöglichen. Diese Aufteilung und die Verwendung einer Codierfunktion sind wesentliche Merkmale der vorliegenden Erfindung (es sei jedoch darauf hingewiesen, dass die Aufteilung in dem besonderen Fall, in dem n = q ist, nicht erforderlich ist). Andererseits verringert die Verwendung eines Decodierers den Hardware-Umfang erheblich, der letztendlich notwendig ist, um die Suchschaltungen der vorliegenden Erfindung physisch zu realisieren.
  • Die Architektur der grundlegenden Suchschaltung der vorliegenden Erfindung, die einen teilweise parallelen Betrieb ermöglicht, ist in 2A mit der Bezugszahl 19 gekennzeichnet. Es sei der Einfachheit halber weiterhin angenommen, dass nach dem niedrigsten Wert unter p Zahlen (Zahl 1 bis Zahl p) gesucht werden soll. Dieselben Überlegungen würden auch für den Suchlauf nach dem höchsten Wert gelten, da die Suche nach dem niedrigsten und dem höchsten Wert ziemlich ähnlich ist. Wenden wir uns nun 2A zu. Die Schaltung 19 besteht aus p identischen Blöcken, die mit den Bezugszahlen 20-1 bis 20-p gekennzeichnet sind. Betrachten wir zum Zweck der Veranschaulichung beispielsweise den Block 20-1. Er umfasst zunächst ein Register 21-1, um die Zahl 1 zu speichern, die in ein Binärformat, im vorliegenden Fall beispielsweise in q Bit, codiert ist, und einen Teilwert-Extrahierer 22-1, dessen Aufgabe darin besteht, den Inhalt des Registers 21-1 in eine vorher festgelegte Anzahl K von Teilwerten aufzuteilen, von denen jeder in n Bit codiert wird (q ≤ K × n). Es sei angemerkt, dass K = 1 die Nichtdurchführung einer Aufteilung bezeichnet. Führen wir nun die Variable k ein, die für jeden der Teilwerte, die die Zahl 1 bilden, und allgemeiner für alle Zahlen, aus denen die Gruppe zusammengesetzt ist, einen Rang (k = 1 bis K) festlegt und dadurch eine Scheibe von Bits festlegt, die parallel verarbeitet werden sollen. In Wirklichkeit gehört das Register 21-1 nicht unbedingt zum Block 20-1 und könnte als ein externes Register oder auch als ein RAM betrachtet werden.
  • Im Grunde ist der Teilwert-Extrahierer ein Schieberegister, das über einen Schiebesteuereingang verfügt, der mit einer Folgesteuerungseinheit in der Steuerlogik CL (nicht ausführlich gezeigt) verbunden ist, um die Teilwerte von den Scheiben 1 bis K in Folge für alle Zahlen auszugeben. Es ist wichtig zu verstehen, dass alle Teilwerte desselben Rangs, die eine Scheibe bilden, während des Prozesses zur Ermittlung des niedrigsten Werts in einem Schritt verarbeitet werden. Bei abgewählten Zahlen wird der Teilwert durch einen neutralen Wert ersetzt, bei der Suche nach dem niedrigsten Wert zum Beispiel durch eine Reihe von n "1"-Werten, der während des Prozesses zur Ermittlung des niedrigsten Werts keinen Einfluss hat. Der Block 20-1 umfasst darüber hinaus einen Codierer, der mit der Bezugszahl 23-1 gekennzeichnet ist, und eine Auswahl-/Abwahlschaltung 24-1. Für jeden in n Bit codierten Teilwert erzeugt der Codierer 23-1 einen entsprechenden in m Bit codierten Teilwert, der an einen ersten Eingang (der aus m Leitungen besteht) der Auswahl-/Abwahlschaltung 24-1 und an eine Schaltung 25 zur Ermittlung des niedrigsten Werts angelegt wird, die im Grunde dem in 1 gezeigten Block 18 ziemlich ähnlich ist. Das Ausgangssignal der Schaltung 25 zur Ermittlung des niedrigsten Werts wird an einen zweiten Eingang (der aus m Leitungen besteht) der Auswahl-/Abwahlschaltung 24-1 (ein ähnlicher Aufbau gilt für jeden Block 20 der Schaltung 19) angelegt. Schließlich wird der Ausgang der Auswahl-/Abwahlschaltung 24-1, der das Ausschlusssignal Exout1 überträgt, entweder mit der Teilwert-Entnahmeschaltung 22-1 oder mit dem Codierer 23-1 verbunden, um eine Gruppe von neutralen Bits zu erzwingen, falls die Zahl 1 abgewählt wird.
  • Jede der Auswahl-/Abwahlschaltungen 24-1 bis 24-p enthält einen Signalspeicher (latch), der mit der Steuerlogik CL verbunden ist, so dass in der Anfangsphase des Prozesses zur Ermittlung des niedrigsten Werts alle Zahlen 1 bis p ausgewählt werden. Bei der Initialisierung werden die Signale Exout1 bis Exoutp folglich auf logisch "0" gesetzt, damit alle Zahlen verarbeitet werden können. Als solches ist die Suchschaltung 19 so ausgelegt, dass sie entsprechend einer ersten Betriebsart arbeitet, in der die von den Codierern 23-1 bis 23-p erzeugten Teilwerte und der niedrigste Teilwert (der von der Schaltung 25 zur Ermittlung des niedrigsten Werts ermittelt wird) in dem codierten Format (d.h. in m Bit codiert) in jeder der Auswahl-/Abwahlschaltungen 24-1 bis 24-p parallel verglichen werden. Diese Schaltungen erzeugen die Ausschlusssignale Exout1 bis Exoutp, die dieselbe Aufgabe wie in der vorstehend erwähnten US-Patentschrift haben, nämlich die Auswahl/Abwahl der Zahlen. Wenn ein Signal Exout den Wert logisch "0" hat, darf der nächste Teilwert ausgewählt werden, und wenn es den Wert logisch "1" hat, sperrt es diesen Teilwert, indem es eine Gruppe von neutralen Bits, eine Reihe von n "1"-Bits, erzwingt, wie vorstehend erwähnt wurde. Es ist notwendig, ein solches Ausschlusssignal zur Auswahl oder zur Abwahl der Zahlen während der Ermittlung einer jeden Scheibe von Teilwerten eines festgelegten Rangs zu verwenden. Sobald das Ergebnis der Ermittlung eines Teilwerts zur Abwahl der entsprechenden Zahl führt, werden die realen Werte der nächsten Teilwerte dieser Zahl (noch unverarbeitet) während der nachfolgenden Schritte des Prozesses zur Ermittlung des niedrigsten Werts nicht berücksichtigt. Im Grunde ist der Betrieb der Suchschaltung 19 weitgehend parallel in dem Sinn, dass p Zahlen gleichzeitig verarbeitet werden, bleibt aber teilweise sequenziell, da die Zahlen der in n Bit codierten Teilwerte scheibenweise verarbeitet werden. Der niedrigste Wert kann im Register der noch ausgewählten Zahlen gefunden werden, d.h. derjenigen Zahlen, deren Signal Exout gleich logisch "0" ist.
  • In einer zweiten Betriebsart wird ein Decodierer 26 verwendet. In diesem Fall bestehen die vorstehend erwähnten Verbindungen zwischen dem Codierer 23-1 und den Auswahl-/Abwahlschaltungen 24-1 bis 24p einerseits und zwischen der Schaltung 25 zur Ermittlung des niedrigsten Werts und den Auswahl/Abwahlschaltungen 24-1 bis 24-p andererseits nicht mehr (nur die Verbindung zwischen dem Codierer 23-1 und der Schaltung 25 zur Ermittlung des niedrigsten Werts bleibt bestehen). Im vorliegenden Fall wird der Ausgang des Teilwert-Extrahierers 22-1 mit dem ersten Eingang der Auswahl-/Abwahlschaltung 24-1 verbunden. Das Ausgangssignal der Schaltung 25 zur Ermittlung des niedrigsten Werts wird nicht mehr direkt an die Auswahl-/Abwahlschaltungen 24-1 bis 24-p, sondern an einen Decodierer 26 angelegt. Das Ausgangssignal des Decodierers 26 wiederum wird an den zweiten Eingang einer jeden der Auswahl-/Abwahlschaltungen 24-1 bis 24-p angelegt. Ein ähnlicher Aufbau gilt für jeden Block 20 der Schaltung 19. Folglich wird zwischen den Teilwerten und dem Niedrigsten Teilwert (der von der Schaltung 25 zur Ermittlung des niedrigsten Werts ermittelt wird) nach wie vor ein Vergleich durchgeführt, aber jetzt an dem nichtcodierten Format (d.h. n Bits) anstelle des codierten Formats (d.h. m Bits). Diese zweite Betriebsart ist in 2A mit punktierten Linien gezeigt. Die Verwendung eines Decodierers kann sich als lohnenswert erweisen, wenn der Suchlauf zur Ermittlung des niedrigsten/höchsten Werts in einer großen Menge von Zahlen durchgeführt wird, da er in jeder der Auswahl-/Abwahlschaltungen 24 eine beträchtliche Vereinfachung der Hardware mit sich bringt.
  • 23 zeigt eine andere Architektur, die mit der Bezugszahl 27 gekennzeichnet ist und die direkt von der Architektur der Suchschaltung 19 abgeleitet wird, um immer noch im Einklang mit der vorliegenden Erfindung einen vollkommen parallelen Betrieb zu ermöglichen. Mit Bezug auf die Schaltung von 2A sind die Teilwert-Extrahierer 23 nicht mehr notwendig, und der innovative Teil des Blocks 20, der nun allgemein mit der Bezugszahl 28 gekennzeichnet ist, enthält nur den Codierer 29 und die Auswahl-/Abwahlschaltung 30. Jede Scheibe (es gibt K Scheiben) ist ausschließlich zur Verarbeitung der Teilwerte eines vorher festgelegten Rangs vorgesehen, die in den entsprechenden Registern gespeichert werden, wie vorstehend beschrieben wurde. Der Hauptunterschied liegt in der Nutzung des Signals Exout, das an den Codierer und an die Auswahl-/Abwahlschaltung der nächsten Scheibe angelegt wird. Wie in 2B zu sehen ist, wird das Signal Exout1-1 an den Codierer 29-12 und die Auswahl-/Abwahlschaltung 30-12 angelegt. Man beachte, dass eine logische "0" an die Codierer 29-11 bis 29-p1 der Scheibe 1 (MSB) angelegt wird, so dass alle Teilwerte der ersten Scheibe ausgewählt werden, wenn der Prozess zur Ermittlung des niedrigsten Werts gestartet wird.
  • In der obigen Beschreibung sollte klar sein, dass die vorliegende Erfindung nicht auf die Schaltung 25 beschränkt ist, um den niedrigsten Wert zu suchen, sondern für jedwede Schaltung gilt, die so ausgelegt ist, dass sie den höchsten Wert oder einen festgelegten Wert in einer Gruppe von Zahlen sucht.
  • Das Ziel der Codierer, die in 2A beziehungsweise 2B allgemein mit den Bezugszahlen 23 und 29 gekennzeichnet sind, besteht darin, einen in n Bit codierten Teilwert in einen in m Bit codierten Teilwert umzuwandeln, wobei m größer als n ist. Darüber hinaus müssen sie über bestimmte Eigenschaften verfügen, damit die Ermittlung des niedrigsten Teilwerts bei allen m Bit in demselben Schritt durchgeführt werden kann. Die Einzelheiten der Beziehungen zwischen den Parametern n, q, K und m werden später beschrieben, aber im Grunde wird die Beziehung von dem bestmöglichen Kompromiss zwischen der Geschwindigkeit (K muss so klein wie möglich und n folglich so groß wie möglich sein) und den Anschlussmöglichkeiten der Hardware (d.h. der Anzahl der Leitungen) vorgegeben, der davon abhängt, dass m auf den kleinstmöglichen Wert gesetzt werden muss. Ein Codierverfahren, das in der Fachliteratur gewöhnlich als "thermometrische" (oder "barometrische") Codierung bezeichnet wird, ist beispielsweise in jeder Hinsicht geeignet.
  • 3(a) zeigt ein praktisches Beispiel dieses Codierverfahrens, das die Durchführung eines einfachen parallelen Suchlaufs an einer Vielzahl von Teilwerten gestattet. Wenden wir uns nun 3(a) zu, in der vier Teilwerte (die das Ergebnis der Aufteilung der entsprechenden Zahlen 1 bis 4 sind) desselben Rangs, d.h., die zu derselben Scheibe gehören und mit Teilwert 1 bis Teilwert 4 bezeichnet und in m = 7 Bit (Bit 0 bis Bit 6) codiert sind, parallel verarbeitet werden, um den niedrigsten Wert dieser Scheibe zu ermitteln. Um das gewünschte Ergebnis zu erzielen (den niedrigsten Teilwert), wird an allen Bits, die dieselbe Gewichtung haben, eine logische UND-Funktion ausgeführt. In dem in 3(a) gezeigten Beispiel sind die jeweiligen Werte der Teilwerte 1 bis 4 "5" "3" und "6". Der niedrigste Teilwert ist folglich der Teilwert 3, der gleich "3" ist.
  • 3(b) zeigt lediglich eine Variante des in 3(a) dargestellten Beispiels. Wie in 3(b) zu sehen ist, ist bei jedem Teilwert und bei dem niedrigsten Teilwert jedes Bit nach dem ersten Bit, das den Wert "0" hat, unbedeutend und kann folglich entweder durch den Wert "0" oder durch den Wert "1", in diesem Fall durch ein "X" ("don't care", was bedeutet, dass es ignoriert werden kann), dargestellt werden.
  • Wie dem Fachmann bekannt ist, gibt es jedoch auch andere Codierverfahren oder Varianten des vorstehend beschriebenen "thermometrischen" Codierverfahrens. Statt beim LSB (Bit 0) zu beginnen und zum MSB (Bit 6) fortzufahren, könnte überdies auch umgekehrt (vom MSB zum LSB) vorgegangen werden. Ebenso sollten bei Verwendung einer komplementären Logik entsprechend den Regeln nach De Morgan anstelle von UND-Gattern ODER-Gatter verwendet werden. Tatsächlich wäre jedes Codierverfahren geeignet, das eine parallele Vorgehensweise bei der Ermittlung des niedrigsten Teilwerts für eine Scheibe ermöglicht. Es ist ein wesentliches Merkmal der vorliegenden Erfindung, dass es bei dem vorstehend beschriebenen Codierverfahren möglich ist, die Ermittlung mit einer elementaren Logikfunktion, in diesem Fall einer UND-Funktion, durchzuführen.
  • Zusammenfassend kann gesagt werden, dass bei dem globalen Prozess zur Ermittlung des niedrigsten Werts alle p codierten Teilwerte desselben Rangs gleichzeitig verarbeitet werden, um den niedrigsten Teilwert für eine Scheibe festzustellen. Jede Scheibe desselben Rangs vom MSB zum LSB wird parallel verarbeitet, wobei eine Menge m von UND-Gattern mit p Eingängen verwendet wird. Folglich kann der Suchlauf nach dem niedrigsten Wert in einer Gruppe von Teilwerten in nur einem einzigen Schritt durchgeführt werden. Bei der Schaltung 19 von 2A werden die K Teilwerte rangweise (oder scheibenweise) in Folge verarbeitet, bis die Gesamtheit der q Bits, die jede einzelne der Zahlen 1 bis p bilden, verarbeitet ist. Die K Teilwerte können jedoch auch parallel verarbeitet werden, wenn stattdessen die Schaltung 27 von 2B verwendet wird. Man beachte, dass die verbleibenden Teilwerte in beiden Fällen nicht mehr verarbeitet werden, sobald eine Zahl abgewählt wurde, da sie durch eine Gruppe von neutralen Bits ersetzt werden, wie vorstehend erklärt wurde.
  • Das Verfahren der vorliegenden Erfindung wird nun mit Bezugnahme auf den Algorithmus, der in 4 mit der Bezugszahl 31 gekennzeichnet ist und der Hardware von 2A entspricht, ausführlicher beschrieben. Der Algorithmus, der aus den Kästchen 32 bis 39 (die jeweils den Schritten A bis H entsprechen) besteht, veranschaulicht die zweite Betriebsart, die vorstehend erwähnt wurde und die mit einem Decodierer arbeitet.
  • Wenden wir uns nun 4 zu. In der Anfangsphase des Ermittlungsprozesses werden alle Zahlen, bei denen nach dem niedrigsten Wert gesucht werden soll, ausgewählt. Jede Zahl wird in K Teilwerte aufgeteilt. Um die Teilwerte des ersten Ranges (die die MSBs darstellen) verarbeitungsbereit zu machen, wird eine Variable k, die zu dem Rang gehört (k variiert zwischen 1 und K) auf "1" gesetzt (Schritt A). Allgemeiner gesprochen, für jede Zahl werden die Teilwerte des Ranges k ausgewählt (Schritt B). Um nun einen Suchlauf zur Ermittlung des niedrigsten Wertes bei diesen ausgewählten Teilwerten in einem einzigen Schritt durchzuführen, werden sie mit Hilfe des "thermometrischen" Codierverfahrens codiert, das vorstehend mit Bezug auf 3 (Schritt C) beschrieben wurde. Es ist jetzt möglich, den niedrigsten Teilwert von allen ausgewählten Teilwerten zu ermitteln (Schritt D). Der niedrigste Teilwert wird decodiert (Schritt E), anschließend wird er mit ausgewählten Teilwerten verglichen, um all diejenigen Zahlen abzuwählen, die Teilwerten zugeordnet sind, die größer als der niedrigste Teilwert sind (Schritt F). Nach diesem Schritt der Abwahl wird ein Test durchgeführt, um festzustellen, ob die Teilwerte, die die LSBs darstellen, erreicht worden sind, d.h., ob k = K (Schritt G). Wenn nicht, wird die obige Folge der Schritte B bis G wiederholt, indem die Variable k erhöht wird (Schritt H), so dass der nächste Rang von Teilwerten ausgewählt und dann in derselben Weise verarbeitet wird. Wenn ja, hält der Ermittlungsprozess an, der niedrigste Wert wurde ermittelt und steht dem Benutzer zur Verfügung. Der niedrigste Wert ist folglich der Wert der Zahl(en), die zu dem Block/den Blöcken gehören, der/die noch nicht abgewählt worden sind. Wenn der Algorithmus 31 in einem Zeitrahmen (d.h. sequenziell) ausgeführt wird, entspricht er der Schaltung 19 von 2A, und wenn er in einem räumlichen Rahmen (d.h. parallel) ausgeführt wird, entspricht er der Schaltung 27 von 2B.
  • In der ersten Betriebsart ist der Schritt E nicht mehr notwendig, der Vergleich wird zwischen den ausgewählten codierten Teilwerten und dem codierten niedrigsten Teilwert durchgeführt.
  • Das vorstehende Verfahren wird nun anhand des praktischen Beispiels veranschaulicht, das mit Bezug auf die 5(a) und 5(b) beschrieben wird. Wie in 5(a) zu sehen ist, werden vier Zahlen (d.h. p = 4), 14, 57, 14 und 9, an denen die Suche nach dem niedrigsten Wert durchgeführt wird, in q = 6 Bit codiert. Zum Zeitpunkt der Initialisierung werden alle Zahlen ausgewählt. Vorzugsweise teilen wir jede Zahl in zwei Teilwerte (K = 2) auf, die in n = 3 Bit codiert werden, und die Variable k wird auf "1" gesetzt (Schritt A). Die Teilwerte des Ranges 1, die die Scheibe 1 bilden, d.h. die MSBs, werden ausgewählt und sind verarbeitungsbereit (Schritt B). Bei Verwendung des "thermometrischen" Codierverfahrens, das vorstehend mit Bezug auf 3 beschrieben wurde, werden die Teilwerte nun in m = 7 Bit codiert, zum Beispiel wird 001 zu 0000001 (Schritt C). Der niedrigste Teilwert lässt sich nun mit Hilfe der Schaltung 25 zur Ermittlung des niedrigsten Werts ermitteln, die im Wesentlichen eine UND-Funktion an jedem Bit von allen ausgewählten Teilwerten ausführt (Schritt D). 5(b) veranschaulicht den Schritt D ausführlicher, um zu zeigen, dass man das Ergebnis vollkommen parallel erhält und dass dieser Vorgang gemäß einem wesentlichen Merkmal der vorliegenden Erfindung in einem einzigen Schritt durchgeführt wird. Wenn die Leistungsfähigkeit des Systems es zulässt, kann dieser einzige Schritt aus einem einzigen Taktzyklus bestehen. Der niedrigste Teilwert, den man in dem vorliegenden Beispiel erhält, ist 0000001. Wenden wir uns nochmals 5(a) zu. Dieser niedrigste Teilwert wird dann decodiert, in diesem Fall ist er gleich 001 (Schritt E). Jetzt wird er mit jedem ausgewählten Teilwert verglichen, um alle Zahlen abzuwählen, deren Teilwerte größer sind (Schritt F). Folglich wird die Zahl 2, die einen Wert von 57 hat, abgewählt, da "111" größer als "001" ist, und es wird ihnen der Buchstabe "D" zugewiesen ("D" steht für "Deselected" (abgewählt)). Den verbleibenden Teilwerten dieser Zahl wird der neutrale Wert (1111111) zugewiesen. Andere Zahlen bleiben ausgewählt, und ihnen wird ein "S" zugewiesen ("S" steht für "Selected" (ausgewählt)). Ein Test wird durchgeführt, um festzustellen, ob unverarbeitete Teilwerte übrig bleiben (Schritt G), was in dem in 5(a) gezeigten Beispiel der Fall ist, so dass die vorstehende Abfolge der Schritte (B bis G) nun für die LSBs (k = 2) wiederholt werden muss. Während der Verarbeitung von Teilwerten des zweiten Rangs, die die Scheibe 2 bilden, werden die Zahlen 1 und 3 abgewählt, so dass am Ende des Ermittlungsprozesses die Zahlen 1, 2 und 3 abgewählt sind und der Gewinner die Zahl 4 mit einem Wert von 9 ist (Binarwert = 001001). Folglich wurde der niedrigste Wert der vier Zahlen 1 bis 4, die in 6 Bit codiert wurden, in zwei Schritten gefunden, da K = 2. Wie zuvor erwähnt wurde, hängt diese Antwortzeit daher nicht mehr von der Menge p der Zahlen ab, bei denen nach dem niedrigsten Wert gesucht wird (im vorliegenden Fall vier) und auch nicht vom Parameter q (im vorliegenden Fall sechs), sondern vom Parameter K, der die Aufteilung der Zahlen festlegt (zwei in dem in 5(a) gezeigten Beispiel. Es ist nun möglich, in einer Gruppe von Zahlen in weniger Schritten als der Anzahl der Bits, in die diese Zahlen codiert werden, nach dem niedrigsten Wert zu suchen. Bei Zahlen, die in q Bit codiert werden, ist die erforderliche Anzahl der Schritte tatsächlich gleich K, wobei K < q (im vorliegenden Fall 2 im Vergleich zu 6). Es ist immer möglich, eine optimale Gruppe von Parametern zu finden, indem man die geeigneten Werte für K (Anzahl der erforderlichen Schritte und somit die Geschwindigkeit) und n (Umfang der Teilwerte) auswählt, um den gewünschten Wert für m (die Anschlussmöglichkeiten) zu erreichen. Diese optimale Gruppe ist keine absolute Gruppe, sie hängt von der Zielsetzung der Anwendung, der für die physische Umsetzung verwendeten Technologie, der Leistungsfähigkeit des gewünschten Systems usw. ab.
  • Betrachten wir nun eine erste physische Ausführungsart der Schaltung von 2A ohne den Decodierer 26 (viele andere Ausführungsarten können ebenfalls ins Auge gefasst werden), die in 6A gezeigt ist. Bei dieser Ausführungsart werden Teilwerte in n = 3 Bit codiert: a, b und c (wobei a das MSB darstellt). Aufgrund des klassischen "thermometrischen" Codierverfahrens, das bei dem Verfahren der vorliegenden Erfindung zur Anwendung kommt, sind 7 Bit (w0 bis w6) zur Codierung der Teilwerte erforderlich, wie in 3 gezeigt ist.
  • Wenden wir uns nun 6A zu, in der eine Schaltung gezeigt ist, welche mit der Bezugszahl 40 gekennzeichnet ist und die Hauptelemente der Schaltung 19 enthält (d.h. die Codierer 23, die Auswahl-/Abwahlschaltungen 24 und die Schaltung 25 zur Ermittlung des niedrigsten Werts).
  • In dieser ersten Ausführungsart lauten die logischen Gleichungen, die einen Codierer 23 (z.B. den Codierer 23-1) darstellen, wie folgt: w0 = a + b + c w1 = b + c w2 = (a·b) + c w3 = c w4 = (a + b) – c w5 = b·c w6 = a – b·c
  • Der physische Aufbau eines Codierers, der diese Gleichungen erfüllt, ist in 6A ausführlich gezeigt. Geeignete Schaltungen zur Ermittlung des niedrigsten Werts und zur Ausführung der Auswahl-/Abwahlfunktionen sind der Einfachheit halber nach wie vor mit den Bezugszahlen 25 beziehungsweise 24-1 bis 24-p gekennzeichnet. Wie in 6A zu sehen ist, werden diese Schaltungen direkt von den Schaltungen 18 beziehungsweise 15 von 1 abgeleitet, bei denen es sich für den Fachmann um Schaltungen nach dem Stand der Technik handelt. Wie in 6A zu sehen ist, wird das Ausgangssignal Exout1 über den Setzeingang S in einem Signalspeicher 41-1 gespeichert und steht dann zur beliebigen Verwendung bereit, während der Rücksetzeingang RS mit der Steuerlogik CL verbunden ist. In dieser Ausführungsart wird das Signal Exout1 an den Teilwert-Extrahierer 22-1 angelegt (2A). Zum Zeitpunkt der Initialisierung, bevor der Ermittlungsprozess stattfindet, werden alle Signalspeicher 41-1 bis 41-p auf "0" gesetzt, so dass alle Zahlen ausgewählt werden.
  • Eine zweite Ausführungsart der Schaltung von 2A, die bevorzugt wird, weil sie den benötigten Hardware-Umfang erheblich verringert, ohne die Verzögerungszeiten zu erhöhen, wird nun mit Bezug auf 6B beschrieben. Die Schaltung 42 beruht auf der Verwendung des Decodierers 26, der der gesamten Suchschaltung 19 von 2A gemein ist. Im vorliegenden Fall unterscheiden sich die Schaltungen, die einen Codierer 23 bilden, von der Schaltung, die vorstehend mit Bezug auf 6A beschrieben wurde, da jetzt der Einfachheit halber eine Variante des "thermometrischen" Codierverfahrens, das in 3 gezeigt ist, verwendet wird. Nehmen wir nach wie vor an, dass Teilwerte in 3 Bit, a b und c, codiert werden.
  • Bei dieser zweiten Ausführungsart lauten die logischen Gleichungen, die einen Codierer darstellen, der jetzt mit der Bezugszahl 23' gekennzeichnet ist (z.B. 23'-1), nun wie folgt: w0 = a + b + c + Exout1 w1 = a + b + Exout1 w2 = a + c + Exout1 w3 = a + Exout1 w4 = b + c + Exout1 w5 = b + Exout1 w6 = c + Exout1
  • Wie in 6B zu sehen ist, steuert das Signal Exout den Codierer 23' anstelle des Teilwert-Extrahierers, wie es bei der Schaltung von 6A der Fall war. Die elementaren Schaltungen, die die Auswahl-/Abwahlschaltung bilden, die jetzt mit der Bezugszahl 24'-1 gekennzeichnet ist, wurden im Hinblick auf die Schaltung 24-1 von 6A erheblich vereinfacht, beinhalten aber immer noch den Signalspeicher 41-1. Der Decodierer 26 ist, für den Fachmann erkennbar, standardmäßig aufgebaut, seine Aufgabe besteht darin, in 7 Bit codierte Wörter (w0 bis w6) in 3 Bit codierte Wörter umzuwandeln. Was die Schaltung zur Ermittlung des niedrigsten Werts angeht, gibt es keine nennenswerten Unterschiede. Man beachte, dass es am Ausgang des Decodierers 26 in der Schaltung 42 nur drei Leitungen anstelle der sieben Leitungen am Ausgang der Schaltung 25 zur Ermittlung des niedrigsten Werts, die Teil der Schaltung 40 ist, gibt, um die Auswahl-/Abwahlschaltungen 24 (in 6A) oder 24' (in 6B) anzusteuern. Diese Vereinfachungen sind das Ergebnis der Verwendung des Decodierers 26, der allerdings etwas zusätzlichen Platz in der Schaltung 42 beansprucht. Die Realisierung eines Decodierers lohnt bei einer Menge p von Zahlen, die größer als 10 ist.
  • 7 zeigt die Hauptelemente der Verarbeitung der ersten Bitscheibe (Scheibe 1) durch die Schaltung 27 von 2B. Die in 7 gezeigte physische Ausführungsart, die durch die Bezugszahl 43-1 gekennzeichnet ist, enthält die Codierer 29 (die mit den Codierern 23' identisch sind), die Auswahl-/Abwahlschaltungen 30 (die mit den Schaltungen 24' identisch sind), die Schaltung 25 zur Ermittlung des niedrigsten Werts (die identisch mit der Schaltung 25' ist) und den Decodierer 26. Wie in 7 zu sehen ist, ist die Schaltung 43-1 mit der Schaltung 42 von 6B identisch, außer dass die Signalspeicher 41 in den Auswahl-/Abwahlschaltungen 24' nicht mehr erforderlich sind.
  • Ein wichtiger Vorteil der Hardware-Ausführung von 6A (ohne einen Decodierer) betrifft die Systemtesteinrichtungen. In diesem Fall kann der niedrigste Wert auf den sieben Leitungen geprüft und somit einfach ausgewertet werden. Folglich ist die Feststellung eines möglichen Kurzschlusses oder einer Stromkreisunterbrechung sehr leicht. Andererseits ist aufgrund dessen, dass kein Decodierer vorhanden ist, eine höhere Anzahl von Leitungen notwendig, um die Auswahl-/Abwahlschaltungen zu speisen; anstelle der in 6B gezeigten 3 Leitungen sind 7 Leitungen notwendig, wie in 6A gezeigt ist.
  • Die vorstehend mit Bezugnahme auf die 6A, 6B und 7 erörterten Beispiele betreffen Teilwerte, die in n = 3 Bit codiert werden. Die Anzahl der benötigten Leitungen am Ausgang eines Codierers 23 ist gleich m und steht wie folgt im Verhältnis zu n: m = 2n – 1. Die nachstehende Tabelle zeigt die Anzahl der erforderlichen Schritte im Vergleich zur Anzahl m der benötigten Leitungen und der Anzahl n der Bits zur Codierung eines Teilwerts. Mit dieser Tabelle ist es möglich, den im Einzelfall besten anwendungsbezogenen Kompromiss zwischen der Antwortzeit (d.h. die Anzahl der Schritte) und der Anzahl der Leitungen zu finden. TABELLE
    Anzahl der Bits in der codierten Zahl Anzahl der notwendigen Schritte bei dem (sequentiellen) Verfahren nach dem Stand der Technik Anzahl (K) der notwendigen Schritte bei dem vorliegenden Verfahren Anzahl der benötigten Leitungen (m)
    16 16 16 1 = 21 – 1
    16 16 8 3 = 22 – 1
    14 14 7
    12 12 6
    10 10 5
    8 8 4
    15 15 5 7 = 23 – 1
    12 12 4
    9 9 3
    6 6 2
    16 16 4 15 = 24 – 1
    12 12 3
    8 8 2
    4 4 1
    15 15 3 31 = 25 – 1
    16 16 2 255 = 28 – 1
  • Wie in den 6B und 7 gezeigt ist, werden jedem Teilwert Codierer zugeordnet, um eine schnelle Codieroperation durchzuführen. Es sollte sich auch verstehen, dass gemäß der vorliegenden Erfindung nur ein Decodierer für die ganze Suchschaltung verwendet werden könnte, um den Umfang der erforderlichen Hardware zu verringern. Überdies ist anzumerken, dass die Schaltung 25 zur Ermittlung des niedrigsten/höchsten Werts und der Decodierer 26 in den Suchschaltungen 19 und 27 zwar als zwei gemeinschaftlich genutzte Einheiten realisiert wurden, die die Blöcke 20-1 bis 20-p beziehungsweise die Blöcke 28-11 bis 28-1p (für die Scheibe 1) bedienen, doch können sie auch in jedem der Blöcke verteilt werden. Es kann insbesondere lohnend sein, die UND-Funktion in jedem der Blöcke vorzusehen, indem entweder ein UND-Gatter mit zwei Eingängen verwendet wird (wobei ein Eingang mit dem vorhergehenden Block und der Ausgang mit dem nächsten Block verbunden wird) oder indem eine standardmäßige Kopplung vorgenommen wird.
  • Zwar wurde die Erfindung insbesondere in Bezug auf eine bevorzugte Ausführungsform beschrieben, doch sollte es sich für den Fachmann verstehen, dass die vorstehenden und andere Änderungen an der Form und an den Einzelheiten der Erfindung vorgenommen werden können, ohne vom Umfang der Erfindung abzuweichen.

Claims (6)

  1. Verfahren zur Durchführung des Suchlaufs nach dem niedrigsten/höchsten Wert in einer Gruppe von p Zahlen, die als in einem Binärformat in q Bit codierte Zahlen bezeichnet werden, wobei das Verfahren die folgenden Schritte umfasst: a) Aufteilen einer jeden Zahl in K Teilwerte, die in eine Vielzahl n von Bits codiert werden (q <= K × n), und Festlegen eines Parameters k (k = 1 bis K), der jedem Teilwert einer Zahl einen Rang zuweist, wobei alle Teilwerte desselben Rangs eine Scheibe bilden; b) Bilden der ersten Scheibe (k = 1), die aus den in n Bit codierten Teilwerten des ersten Rangs (MSBs) besteht; c) Codieren eines jeden in n Bit codierten Teilwerts dieser Scheibe in m Bit (m > n), um mit Hilfe eines thermometrischen Codierverfahrens eine Scheibe aus in m Bit codierten Teilwerten zu bilden; d) paralleles Durchsuchen der Scheibe aus in m Bit codierten Teilwerten, um mit Hilfe einer elementaren Logikfunktion den in m Bit codierten niedrigsten/höchsten Teilwert der Teilwerte zu ermitteln; e) Abwählen aller Zahlen, deren in m Bit codierter Teilwert größer/kleiner als der in m Bit codierte niedrigste/höchste Teilwert ist, der im Schritt d) ermittelt wurde, indem in dem Codiermittel ein neutraler Wert erzeugt wird; und f) Wiederholen der Schritte c) bis e) mit der nächsten Scheibe (k = k + 1) aus in n Bit codierten Teilwerten, bis alle Scheiben verarbeitet worden sind (k = K), so dass der niedrigste/höchste Wert als der Wert der Zahl (s) ermittelt wird, die nicht abgewählt wurde.
  2. Schaltung (19), die speziell so ausgelegt ist, dass sie den niedrigsten/höchsten Wert in einer Gruppe von p Zahlen sucht, die als in einem Binärformat in q Bit codierte Zahlen bezeichnet werden, wobei die Schaltung Folgendes umfasst: a) Mittel (25) zur Ermittlung des niedrigsten/höchsten Werts, die aus m p-Wege-UND-Gattern bestehen, welche so angeordnet sind, dass sie an jedem der p Bit mit derselben Gewichtung von p in m Bit codierten Binärwörtern eine UND-Funktion ausführen; und b) p Blöcke (20), wobei jeder Block einer Zahl zugeordnet wird und Folgendes umfasst: i) Aufteilungsmittel (22), das speziell so ausgelegt ist, dass es jede Zahl in K Teilwerte (K >= 1) einer Vielzahl n von Bits entsprechend dem Verhältnis q <= K × n aufteilt; ii) Codiermittel (23), das mit dem Aufteilungsmittel verbunden ist, wobei das Codiermittel (23) speziell so ausgelegt ist, dass es mit Hilfe eines thermometrischen Codierverfahrens jeden in n Bit codierten Teilwert in einen in m Bit codierten Teilwert (m > n) codiert, und wobei sein Ausgang mit den Mitteln zur Ermittlung des niedrigsten/höchsten Werts verbunden ist; und iii) Abwahlmittel (24), die mit dem Codiermittel und mit den Mitteln zur Ermittlung des niedrigsten/höchsten Werts verbunden sind; wobei die in m Bit codierten Teilwerte, die von allen Codiermitteln (23) der Suchschaltung (19) erzeugt werden, an die Mittel (25) zur Ermittlung des niedrigsten/höchsten Werts angelegt werden, um den codierten niedrigsten/höchsten Teilwert von ihnen zu ermitteln, und an die Abwahlmittel (24), um in dem Codiermittel einen neutralen Wert zu erzeugen, wenn sein in m Bit codierter Teilwert größer/kleiner als der in m Bit codierte niedrigste/höchste Teilwert ist, der ermittelt worden ist.
  3. Schaltung nach Anspruch 2, wobei die Abwahlmittel ein Mittel enthalten, das so ausgelegt ist, dass es zum Zeitpunkt der Initialisierung des Prozesses zur Ermittlung des niedrigsten/höchsten Werts alle zahlen auswählt, die durchsucht werden sollen.
  4. Schaltung nach Anspruch 2, wobei die Mittel (25) zur Ermittlung des niedrigsten/höchsten Werts in jedem der p Blöcke (20) verteilt sind.
  5. Schaltung (19), die speziell so ausgelegt ist, dass sie den niedrigsten/höchsten Wert in einer Gruppe von p Zahlen sucht, die als in einem Binärformat in q Bit codierte Zahlen bezeichnet werden, wobei die Schaltung Folgendes umfasst: a) Mittel (25) zur Ermittlung des niedrigsten/höchsten Werts, die aus m p-Wege-UND-Gattern bestehen, welche so angeordnet sind, dass sie an jedem der p Bit mit derselben Gewichtung von p in m Bit codierten Binärwörtern eine UND-Funktion ausführen; und b) Decodiermittel (26), das mit den Mitteln (25) zur Ermittlung des niedrigsten/höchsten Werts verbunden ist und speziell so ausgelegt ist, dass es ein in m Bit codiertes Wort in ein in n Bit codiertes Wort umwandelt (n < m); und c) p Blöcke (20), wobei jeder Block einer Zahl zugeordnet wird und Folgendes umfasst: i) Aufteilungsmittel (22), das so ausgelegt ist, dass es jede Zahl in K Teilwerte (K >= 1) einer Vielzahl von n Bit entsprechend dem Verhältnis q <= K × n aufteilt; ii) Codiermittel (23), das mit dem Ausgang des Aufteilungsmittels verbunden und so ausgelegt ist, dass es mit Hilfe eines thermometrischen Codierverfahrens jeden in n Bit codierten Teilwert in einen in m Bit codierten Teilwert (m > n) codiert, und wobei sein Ausgang mit den Mitteln (25) zur Ermittlung des niedrigsten/höchsten Werts verbunden ist; und iii) Abwahlmittel (24), das mit dem Aufteilungsmittel (22) und mit dem Codiermittel (26) verbunden ist; wobei der in m Bit codierte Teilwert, der von dem Codiermittel (23) erzeugt wird, mit allen in m Bit codierten Teilwerten, die von den anderen Blöcken erzeugt werden, an die Mittel (25) zur Ermittlung des niedrigsten/höchsten Werts angelegt wird, um den in m Bit codierten niedrigsten/höchsten Teilwert zu ermitteln; und wobei der in m Bit codierte niedrigste/höchste Teilwert an das Decodiermittel (26) angelegt wird, um einen in n Bit codierten niedrigsten/höchsten Teilwert zu erzeugen, der in den Abwahlmitteln (24) mit dem in n Bit codierten Teilwert verglichen wird, um in dem Codiermittel (23) einen neutralen Wert zu erzeugen, wenn dieser in n Bit codierte Teilwert größer/kleiner als der in n Bit codierte niedrigste/höchste Teilwert ist, der ermittelt worden ist.
  6. Schaltung nach Anspruch 5, wobei die Mittel (25) zur Ermittlung des niedrigsten/höchsten Werts in jedem der p Blöcke (20) verteilt sind.
DE60035171T 2000-01-06 2000-11-14 Verfahren und Schaltungen zum schnellen Auffinden des minimalen / maximalen Wertes in einer Menge von Zahlen Expired - Lifetime DE60035171T2 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
EP00480010 2000-01-06
EP00480010 2000-01-06

Publications (2)

Publication Number Publication Date
DE60035171D1 DE60035171D1 (de) 2007-07-26
DE60035171T2 true DE60035171T2 (de) 2008-02-14

Family

ID=8174209

Family Applications (1)

Application Number Title Priority Date Filing Date
DE60035171T Expired - Lifetime DE60035171T2 (de) 2000-01-06 2000-11-14 Verfahren und Schaltungen zum schnellen Auffinden des minimalen / maximalen Wertes in einer Menge von Zahlen

Country Status (4)

Country Link
US (1) US6748405B2 (de)
JP (1) JP3524057B2 (de)
AT (1) ATE364866T1 (de)
DE (1) DE60035171T2 (de)

Families Citing this family (41)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6711558B1 (en) * 2000-04-07 2004-03-23 Washington University Associative database scanning and information retrieval
US7139743B2 (en) * 2000-04-07 2006-11-21 Washington University Associative database scanning and information retrieval using FPGA devices
US8095508B2 (en) * 2000-04-07 2012-01-10 Washington University Intelligent data storage and processing using FPGA devices
US8027942B2 (en) * 2000-12-13 2011-09-27 International Business Machines Corporation Method and circuits for associating a complex operator to each component of an input pattern presented to an artificial neural network
US7716330B2 (en) * 2001-10-19 2010-05-11 Global Velocity, Inc. System and method for controlling transmission of data packets over an information network
US20090006659A1 (en) * 2001-10-19 2009-01-01 Collins Jack M Advanced mezzanine card for digital network data inspection
US7085794B2 (en) * 2002-04-12 2006-08-01 Agere Systems Inc. Low power vector summation method and apparatus
JP2004164565A (ja) 2002-09-26 2004-06-10 Yokogawa Electric Corp 数値検索装置および数値検索方法
FR2849301A1 (fr) * 2002-12-23 2004-06-25 St Microelectronics Sa Dispositif pour le traitement collectif de donnees
WO2004066141A2 (en) * 2003-01-15 2004-08-05 Globespanvirata Incorporated Apparatus and method for determining extreme values
JP2007528033A (ja) 2003-01-28 2007-10-04 ルシッド インフォメーション テクノロジー リミテッド 結合判定メカニズムを用いて三次元グラフィックス画像をコンポジットするための方法およびシステム
EP2511787B1 (de) 2003-05-23 2017-09-20 IP Reservoir, LLC Datendekomprimierung und -suche unter Verwendung von FPGA-Geräten
US10572824B2 (en) 2003-05-23 2020-02-25 Ip Reservoir, Llc System and method for low latency multi-functional pipeline with correlation logic and selectively activated/deactivated pipelined data processing engines
US20050050119A1 (en) * 2003-08-26 2005-03-03 Vandanapu Naveen Kumar Method for reducing data dependency in codebook searches for multi-ALU DSP architectures
US7602785B2 (en) * 2004-02-09 2009-10-13 Washington University Method and system for performing longest prefix matching for network address lookup using bloom filters
EP1859378A2 (de) 2005-03-03 2007-11-28 Washington University Verfahren und vorrichtung zur durchführung einer biosequenz-ähnlichkeitssuche
GB2431745B (en) * 2005-10-28 2010-12-08 Tandberg Television Asa Apparatus and method to find a maximum or minimum of a set of numbers
US7921046B2 (en) 2006-06-19 2011-04-05 Exegy Incorporated High speed processing of financial information using FPGA devices
US20080288565A1 (en) * 2007-05-15 2008-11-20 Himax Technologies Limited Method to compare and sort binary data
US8234320B1 (en) * 2007-10-25 2012-07-31 Marvell International Ltd. Bitwise comparator for selecting two smallest numbers from a set of numbers
US10229453B2 (en) * 2008-01-11 2019-03-12 Ip Reservoir, Llc Method and system for low latency basket calculation
US8374986B2 (en) 2008-05-15 2013-02-12 Exegy Incorporated Method and system for accelerated stream processing
CA3184014A1 (en) 2008-12-15 2010-07-08 Exegy Incorporated Method and apparatus for high-speed processing of financial market depth data
US10037568B2 (en) 2010-12-09 2018-07-31 Ip Reservoir, Llc Method and apparatus for managing orders in financial markets
US10121196B2 (en) 2012-03-27 2018-11-06 Ip Reservoir, Llc Offload processing of data packets containing financial market data
US11436672B2 (en) 2012-03-27 2022-09-06 Exegy Incorporated Intelligent switch for processing financial market data
US10650452B2 (en) 2012-03-27 2020-05-12 Ip Reservoir, Llc Offload processing of data packets
US9990393B2 (en) 2012-03-27 2018-06-05 Ip Reservoir, Llc Intelligent feed switch
US9633097B2 (en) 2012-10-23 2017-04-25 Ip Reservoir, Llc Method and apparatus for record pivoting to accelerate processing of data fields
US9633093B2 (en) 2012-10-23 2017-04-25 Ip Reservoir, Llc Method and apparatus for accelerated format translation of data in a delimited data format
CA2887022C (en) 2012-10-23 2021-05-04 Ip Reservoir, Llc Method and apparatus for accelerated format translation of data in a delimited data format
GB2541577A (en) 2014-04-23 2017-02-22 Ip Reservoir Llc Method and apparatus for accelerated data translation
JP7020780B2 (ja) * 2015-02-09 2022-02-16 日本電気株式会社 サーバ装置、データ検索システム、検索方法および検索プログラム
US10942943B2 (en) 2015-10-29 2021-03-09 Ip Reservoir, Llc Dynamic field data translation to support high performance stream data processing
RU2710936C2 (ru) * 2016-12-07 2020-01-14 Частное образовательное учреждение высшего образования "ЮЖНЫЙ УНИВЕРСИТЕТ (ИУБиП)" Способ нахождения наибольшего и наименьшего числа в произвольном массиве двоичных многозначных чисел и устройство для его реализации
RU2682399C2 (ru) * 2016-12-08 2019-03-19 Частное образовательное учреждение высшего образования "ЮЖНЫЙ УНИВЕРСИТЕТ (ИУБиП)" Способ и устройство нахождения наибольшего и наименьшего элементов массива методом дешифрации данных
WO2018119035A1 (en) 2016-12-22 2018-06-28 Ip Reservoir, Llc Pipelines for hardware-accelerated machine learning
RU2675301C1 (ru) * 2017-11-22 2018-12-18 федеральное государственное бюджетное образовательное учреждение высшего образования "Ульяновский государственный технический университет" Устройство селекции двоичных чисел
RU2703352C1 (ru) * 2018-08-30 2019-10-16 федеральное государственное бюджетное образовательное учреждение высшего образования "Ульяновский государственный технический университет" Устройство селекции двоичных чисел
RU2709668C1 (ru) * 2019-03-13 2019-12-19 федеральное государственное бюджетное образовательное учреждение высшего образования "Ульяновский государственный технический университет" Ранговый фильтр
RU2710866C1 (ru) * 2019-03-22 2020-01-14 федеральное государственное бюджетное образовательное учреждение высшего образования "Ульяновский государственный технический университет" Ранговый фильтр

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4998219A (en) * 1989-02-16 1991-03-05 Ail Systems, Inc. Method and apparatus for determining the greatest value of a binary number and for minimizing any uncertainty associated with the determination
JPH10224224A (ja) * 1997-02-03 1998-08-21 Sunao Shibata 半導体演算装置
US6446101B1 (en) * 1998-09-01 2002-09-03 Siemens Aktiengesellschaft Apparatus for fast determination of a prescribable number of highest value signals

Also Published As

Publication number Publication date
DE60035171D1 (de) 2007-07-26
JP3524057B2 (ja) 2004-04-26
US20010013048A1 (en) 2001-08-09
JP2001236207A (ja) 2001-08-31
US6748405B2 (en) 2004-06-08
ATE364866T1 (de) 2007-07-15

Similar Documents

Publication Publication Date Title
DE60035171T2 (de) Verfahren und Schaltungen zum schnellen Auffinden des minimalen / maximalen Wertes in einer Menge von Zahlen
DE69330196T2 (de) Textkomprimierungstechnik unter Anwendung einer frequenzgeordneten Matrix von Wort-Nummern-Abbildungen
DE2158378C2 (de) Digitales Filter
DE68914172T2 (de) Datenverarbeitungssystem und Videoverarbeitungssystem mit einem derartigen Datenverarbeitungssystem.
DE69905595T2 (de) Speicherbankauswahlschaltung für simultanen flash-speicher mit flexibler speicherbank einteilung
DE3883192T2 (de) Neuronale Netzwerkschaltung und -struktur.
DE602004010922T2 (de) Speicher und stromeffizienter mechanismus für schnelles tabellennachschlagen
DE69532775T2 (de) Verfahren zur Datenkomprimierung und -Dekomprimierung und zugehöriges Datenkomprimierungs- und Dekomprimierungsgerät
DE69011133T2 (de) Verfahren und gerät zur hochgenauigen erzeugung von gewichteten zufallsmustern.
DE4314741A1 (de) Dekodierer-Architektur nach Huffman für eine höhere Betriebsgeschwindigkeit und reduzierten Speicherbedarf
DE60118973T2 (de) Verfahren zum abfragen einer struktur komprimierter daten
DE2614916A1 (de) Konverter zur codeumwandlung
DE112019003326T5 (de) Speichererweiterte neuronale netzwerkarchitekturen eines codierers-decodierers
DE2256135B2 (de) Verfahren und Anordnung zum Prüfen von monolithisch integrierten Halbleiterschaltungen
DE3789253T2 (de) Bildverarbeitungsgerät zur Bildvergrösserung und/oder Bildschrumpfung.
DE2946502C2 (de)
DE69327021T2 (de) Dekodierschaltung für einen Kode variabler Länge
DE2421130C2 (de)
DE69029288T2 (de) Verfahren und Einrichtung zum digitalen Kodieren und Dekodieren für neuronale Netzwerke
DE2063199B2 (de) Einrichtung zur Ausführung logischer Funktionen
DE19526008A1 (de) Vertikal partitionierter, primärer Befehls-Cache-Speicher
DE69130238T2 (de) Datenverarbeitungsgerät und Verfahren um in einem Wörterbuch enthaltene Datenwörter auszuwählen
DE4210109C2 (de) Sortiervorrichtung zum Sortieren von Daten und Sortierverfahren
DE69127759T2 (de) Abspeicherungsverfahren für die Bildverarbeitung und Gerät,um dieses einzusetzen
DE69627391T2 (de) Verfahren und system zum durchführen einer booleschen operation auf bitketten unter benutzung einer maximalen bitscheibe

Legal Events

Date Code Title Description
8364 No opposition during term of opposition
8320 Willingness to grant licences declared (paragraph 23)