DE60127524T2 - Cachespeicher für arithmetische Rechenoperationen mit partieller Resultatsausgabe bei partieller Operandenübereinstimmung - Google Patents

Cachespeicher für arithmetische Rechenoperationen mit partieller Resultatsausgabe bei partieller Operandenübereinstimmung Download PDF

Info

Publication number
DE60127524T2
DE60127524T2 DE60127524T DE60127524T DE60127524T2 DE 60127524 T2 DE60127524 T2 DE 60127524T2 DE 60127524 T DE60127524 T DE 60127524T DE 60127524 T DE60127524 T DE 60127524T DE 60127524 T2 DE60127524 T2 DE 60127524T2
Authority
DE
Germany
Prior art keywords
operand
result
cache
partial
msbs
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
DE60127524T
Other languages
English (en)
Other versions
DE60127524D1 (de
Inventor
Hoi-Jin Sungnam-shi Lee
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.)
Samsung Electronics Co Ltd
Original Assignee
Samsung Electronics Co Ltd
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 Samsung Electronics Co Ltd filed Critical Samsung Electronics Co Ltd
Application granted granted Critical
Publication of DE60127524D1 publication Critical patent/DE60127524D1/de
Publication of DE60127524T2 publication Critical patent/DE60127524T2/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
    • 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/57Arithmetic logic units [ALU], i.e. arrangements or devices for performing two or more of the operations covered by groups G06F7/483 – G06F7/556 or for performing logical operations

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computational Mathematics (AREA)
  • Computing Systems (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Description

  • Hintergrund der Erfindung
  • Bereich der Erfindung
  • Die vorliegende Erfindung betrifft eine Vorrichtung und ein Verfahren zur Durchführung arithmetischer Operationen mit einem Cachespeicher, insbesondere eine Vorrichtung und ein Verfahren unter Verwendung eines Cachespeichers, der zur partiellen Ausgabe in der Lage ist.
  • Diskussion des Standes der Technik
  • Computer führen arithmetische Operationen wie Multiplizieren, Dividieren unter Datenmanipulation durch wiederholte Verschiebungen, Additionen und Subtraktionen aus. Es sind zahlreiche Zugriffe auf Daten und Operationszyklen notwendig, um zum Ergebnis zu kommen. Für komplexere Vorgänge wie "Quadratwurzel" und Durchführung trigonometrischer Funktionen ist der traditionelle Rechenprozess sehr zeitaufwändig und in einigen Anwendungen nicht zur Implementierung machbar.
  • Einige der komplexeren arithmetischen Funktionen können durch Nachschlagetabellen implementiert werden, aber die Tabelle muss groß genug sein, um viele verschiedene Operanden aufzunehmen. Wenn es Differenzen beim zu verwendenden Operanden gibt, selbst bei einer Differenz von einem einzigen Bit, funktioniert die Nachschlagetabelle nicht. Die Daten aus der Nachschlagetabelle wären fehlerhaft. Um ein korrektes Ergebnis zu erhalten, muss die gesamte Berechnung für jede Ziffernstelle des Operanden durchgeführt werden.
  • Andere Implementierungen beinhalten die Verwendung von dedizierten Schaltungen. Siehe zum Beispiel US-Patent Nr. 4,734,878 von Sutcliffe "Circuit for Performing Square Root Functions". Obwohl sie weniger zeitaufwändig sind, erfordern dedizierte Schaltungen zusätzliche Hardware und können nur für spezielle Funktionen verwendet werden. Das heißt, die Sutcliffe-Vorrichtung kann nur Quadratwurzeln durchführen, ein Multiplizierer kann nur für Multiplikationen verwendet werden usw.
  • Ein Cachespeicher ist ein Direktzugriffspeicher (RAM) hoher Geschwindigkeit, auf den eine Zentraleinheit (CPU) schneller zugreifen kann als sie auf einen regulären Speicher zugreifen kann. Der Cachespeicher wird typischerweise zum Speichern von Daten verwendet, auf die von der CPU häufig zugegriffen wird. Je mehr Operationen eine CPU mit Daten aus dem Cachespeicher durchführen kann, desto rascher können Operationen im Vergleich zu Operationen mit Daten durchgeführt werden, auf die von einem regulären Speicher zugegriffen wird.
  • Auf den Cachespeicher kann die CPU direkt zugreifen (statt beispielsweise über eine externe Speicherverwaltungseinheit) und er ist körperlich nahe der CPU gelegen, wobei einige Caches auf dem CPU-Chip vorliegen, um die Signalausbreitungsdauer zwischen der CPU und dem Cachespeicher zu verringern. Beschreibungen der Vorgänge im Datencache wie im Mikroprozessor Alpha AXP 21064 sind in "Computer Architecture A Quantitative Approach" von David A. Patterson und John L. Hennessy, 1996, Morgan Kaufmann Publishers, Inc., Seiten 380-383 zu finden. Wenn die CPU einen Lese- oder Abrufvorgang durchführt, prüft sie zunächst, ob die Daten oder Instruktionen, die sie sucht, im Cache vorliegen. Auf die Daten oder Instruktion wird schnell zugegriffen, wenn sie im Cache sind. Ansonsten müssen die Daten oder Instruktionen aus dem regulären Speicher (DRAM oder ROM) abgerufen werden und es dauert länger.
  • Ein herkömmlicher Cache ist in 1 dargestellt. Ein Cachespeicher 10 weist ein Cache-Tag 11 auf, das eine Mehrzahl von Puffern zum Speichern von Daten, Adressen oder Dateien aufweist, auf die der Prozessor häufig zugreift oder unlängst zugegriffen hat. Der Cachespeicher 10 weist Schaltungen zum Vergleichen neu eingegebener Daten mit den im Tag gespeicherten Daten auf. Wie in 1 gezeigt ist, ist jedem Bit jedes Puffers im Cache-Tag 11 ein ExklusivODER-Gate zugeordnet. Wenn bestimmt ist, dass die neu eingegebenen Daten mit den in einem der Puffer im Cache-Tag 11 gespeicherten Daten übereinstimmen, wird an den Gates 15, 16, ... 19 ein Wahrheits-Vergleich ausgegeben. Cachedaten 12 sind eine Datei, die Daten speichert, die jedem Puffer im Cache-Tag 11 entsprechen. Beim Empfang eines Wahrheits-Vergleichssignals von einem entsprechenden Gate 15, 16, ... 19 werden die Daten an der entsprechenden Stelle der Cache-Daten 12 als q4, q3, q2 ... q0 ausgegeben. Der in 1 gezeigte Cache weist einen Umfang von 5 Bits auf.
  • Es ist zu erkennen, dass die Merkmale des Cachespeichers als Datenspeichervorrichtung für eine arithmetische Anlage zur Durchführung von Berechnungen in Hochgeschwindigkeit geeignet sind. Zum Beispiel speichert der Cachespeicher, wie er in 1 gezeigt ist, Operanden im Cache-Tag 11 und entsprechende Rechenergebnisse in Cachedaten 12. Die arithmetische Operation wird umgangen, wenn ein Operand, an dem die selbe arithmetische Operation durchzuführen ist, im Cache-Tag 11 gefunden wird. In einem solchen Fall wird der Cache als Nachschlagetabelle verwendet, wobei die Zugriffszeit im Vergleich zu einer ROM-Nachschlagetabelle verringert ist. Jedoch bewirkt wie im Falle einer ROM-Nachschlagetabelle die Verwendung des Cache in einem Nachschlagetabellenmodus eine Verringerung des Gesamtdurchsatzes, wenn der Ansatz nur funktioniert, wenn die Operanden exakt mit den gespeicherten Cache-Tagdaten übereinstimmen.
  • Dementsprechend besteht ein Bedarf an einer Einrichtung mit einem Cachespeicher, der anstelle einer arithmetischen Einheit verwendet wird und in der Lage ist, Rechenergebnisse für teilweise übereinstimmende Operanden teilweise auszugeben.
  • EP 0990981 offenbart einen Hochgeschwindigkeitsmultiplizierer, der die Ergebnisse vorhergehender Berechnungen verwendet, wobei erkannt wird, dass in vielen Fällen der Multiplikand zwischen einer ersten und zweiten Multiplikation nur gering anders ist. Das offenbarte System teilt einen Multiplikanden in ein Cache-Nachschlagebit und ein Tabellen-Nachschlagebit. Das Cache-Nachschlagebit des Multiplikanden bei der zweiten Multiplikation wird dann mit dem Cache-Line-Bit des Multiplikanden bei der zweiten Multiplikation verglichen. Wenn das Cache-Line-Bit übereinstimmt, wird das Produkt der ersten Multiplikation abgerufen.
  • US 5,260,898 offenbart ein Ergebniscache für komplexe arithmetische Einheiten. Es wird offenbart, dass einzelne Mehrzyklusaufgaben oder komplexe arithmetische Einheiten wie Dividierer, Multiplizierer und Addierer durch eine Einzyklus-Cachesuche ersetzt werden. Dieser Cache enthält das Ergebnis der spezifischen arithmetischen Operation unter Verwendung spezifizierter Operanden. Diese Operanden wurden zuvor vom Prozessor verwendet, um eine frühere, jedoch wiederholte Operation durchzuführen. Vor Durchführung einer spezifischen arithmetischen Operation wird offenbart, dass der Cache herangezogen wird, um zu bestimmen, ob die Operation durchgeführt wurde.
  • Gemäß einem ersten Aspekt der Erfindung wird ein Verfahren zur Durchführung einer arithmetischen Operation unter Verwendung einer Cachestruktur mit einem TAG-Register und einem Cachedatenspeicher wie in Anspruch 1 angegeben zur Verfügung gestellt.
  • Bevorzugte Merkmale dieses Aspekts sind in den Ansprüchen 2 bis 4 angegeben.
  • Gemäß einem zweiten Aspekt der Erfindung wird ein Cache-Bauelement zur Durchführung einer arithmetischen Operation wie in Anspruch 5 angegeben zur Verfügung gestellt.
  • Kurze Beschreibung der Zeichnungen
  • 1 zeigt einen herkömmlichen Cachespeicher;
  • 2 zeigt ein Arithmetikbauelement mit einem Cache gemäß einer Ausführungsform der vorliegenden Erfindung;
  • 3 ist ein erläuterndes Flussdiagramm einer Quadratwurzeloperation unter Verwendung des Bauelements von 2;
  • 4 ist eine Tabelle von Eingabe- und Ausgabedaten einer Detektierlogik im Cachespeicher von 2 und einer Maskierungsoperation gemäß der vorliegenden Erfindung;
  • 5 ist eine erläuternde Tabelle von Eingabe- und Ausgabedaten einer Detektier- und Maskierungsoperation gemäß einer Multiplikationsausführungsform der vorliegenden Erfindung; und
  • 6 ist ein Arithmetikbauelement gemäß einer anderen Ausführungsform der vorliegenden Erfindung.
  • Beschreibung bevorzugter Ausführungsformen der Erfindung
  • Ein Operationscache gemäß der vorliegenden Erfindung speichert Resultatdaten eines vorhergehenden arithmetischen Berechnungsergebnisses und gibt die Resultatdaten aus, wenn der vorliegende Operand der gleiche ist wie ein vorhergehender Operand, bei dem die selbe arithmetische Operation durchgeführt wurde. Die vorliegende Erfindung gibt auch partielle Resultatdaten aus dem Operationscache aus, wenn der vorliegende Operand teilweise mit dem Operanden übereinstimmt, der zuvor im Operationscache gespeichert wurde. Die Struktur und Funktionsweise von Arithmetikeinheiten unter Verwendung eines Ope rationscache gemäß der vorliegenden Erfindung werden unten gezeigt und beschrieben.
  • 2 zeigt eine Arithmetikeinheit zur Durchführung einer Quadratwurzeloperation. Die gezeigte arithmetische Einheit weist einen Partial-Match-Partial-Output(PMPO)-Cache gemäß einer Ausführungsform der vorliegenden Erfindung auf. Die dargestellte Arithmetikeinheit gemäß dieser Ausführungsform beinhaltet einen PMPO-Cache 100 mit einem PMPO-Cache-Tag 21 und PMPO-Cachedaten 22. Ein Quadratwurzelmodul 27 ist ein Software- oder Hardwaremodul zum Berechnen der resultierenden Quadratwurzel einer gegebenen Zahl X (Radikand). Das Quadratwurzelmodul beinhaltet bevorzugt Programmierschritte oder Algorithmen zum Durchführen einer bekannten Quadratwurzeloperation, wie ein "Verfahren der quadratischen Ergänzung" zum Quadratwurzelziehen, was im Konzept dem Restoring-Division-Schema ähnlich ist, siehe Israel Koren, "Computer Arithmetic Algorithms", Kapitel 7, ISBN D-13-151952-2, 1993. Das Quadratwurzelmodul 27 beinhaltet auch Schaltkreise oder Programmschritte zum Berechnen einer Quadratwurzel für eine Radikandeneingabe durch einen traditionellen Divisions- und Restwertansatz. Beispielsweise erfordert ein Prozessor, der eine Quadratwurzeloperation mit "Division und Restwert" bei einem Operanden von 8 Bit ausführt, typischerweise 8 Zyklen, um die resultierenden Quadratwurzeldaten zu ermitteln. Die resultierenden Daten werden in einem Q'-Puffer 29 gesammelt. Nach Abschluss der Quadratwurzeloperation werden die resultierenden Quadratwurzeldaten vom Q'-Puffer 29 zu einem von D1, D2 ... Dn in PMPO-Cachedaten 22 zum Speichern geleitet. Der Radikand X wird auch im entsprechenden Puffer T1, T2, ... Tn im PMPO-Cache-Tag 21 gespeichert. In einer solchen Konfiguration gibt die Arithmetikeinheit von 2 eine Quadratwurzel Q' von den PMPO-Cachedaten 22 aus, wenn bestimmt ist, dass der zum Quadratwurzelziehen neu eingegebene Radikand X' mit dem Radikanden X im entsprechenden Puffer im PMPO-Cache-Tag 21 übereinstimmt. Die Über einstimmung des neuen Radikanden wird durch die Exklusiv-NOR-Gates im Cache-Tag 21 durchgeführt, die alle Einser in einem Puffer ausgeben, bei dem jedes Bit von X mit jedem Bit des neu eingegebenen Radikanden X' exakt übereinstimmt. Die an der Stelle der Cachedaten 22 gespeicherten Daten, die X im Puffer T1, T2, ... Tn mit der exakten Übereinstimmung zum Radikanden X' entsprechen, werden als resultierende Quadratwurzel Q' ausgegeben. In einem solchen Fall wird Q' aus den Cachedaten 22 direkt durch einen Multiplexer 63 zum Q'-Puffer 29 ausgegeben. Eine solche direkte Übereinstimmung und Ausgabe der resultierenden Quadratwurzeldaten an den Q'-Puffer 29 umgeht die Verarbeitung im Quadratwurzelmodul 27.
  • Die in 2 gezeigte Arithmetikeinheit mit einem PMPO-Cache gemäß der vorliegenden Erfindung ist auch so konfiguriert, dass sie eine partielle Quadratwurzelausgabe ausgibt, wenn eine partielle Übereinstimmung zwischen dem neu eingegebenen Operanden X' und der Mehrzahl von Operanden X vorliegt, die in den Puffern T1, T2, ... Tn des Cache-Tag 21 gespeichert sind. Die Operationen der PMPO-Ausführungsform mit partieller Ausgabe bei partieller Übereinstimmung wird mit Bezug zu den 2 bis 5 beschrieben. Bei Empfang eines neuen Operanden X' zum Quadratwurzelziehen (Schritt 410), wird der Operand X' mit den in den Puffern T1, T2, ... Tn des Cache-Tag 21 gespeicherten X verglichen (Schritt 412). Hier sind zum Zwecke der Erläuterung der Operand und die Quadratwurzeldaten 8 Bits, z. B. X' [7:0] und Q' [7:0]. Es ist für einen Fachmann leicht zu erkennen, dass der PMPO-Cache von 2 bei Operanden beliebiger Breite anwendbar ist. Die Exklusiv-NOR-Gates des Cache-Tag 21 werden mit Detektierlogik 42 verbunden, die bevorzugt mit 8 Bit Puffern implementiert ist, einen für jeden Puffer Tx, so dass die 8 Bits gespeichert werden, die von einer entsprechenden exklusiven NOR-Puffergruppe ausgegeben sind. Daher registriert, wenn eine exakte Übereinstimmung des Operanden X' mit X in irgendeinem der Puffer im Cache-Tag 21 vorliegt, die entsprechende Schaltung in der Detektierlogik 42 alle Einser in ihrem 8 Bit-Puffer. Es ist für einen Fachmann auch leicht erkennbar, dass, wenn Exklusiv-ODER-Gates im Cache-Tag 21 verwendet werden, die Detektierlogik alle Nullwerte für eine exakte Übereinstimmung registriert. Wenn nur eine partielle Übereinstimmung vorliegt, zeigt die Detektierlogik 42 eine logische "1" in Bits von Xn im Cache-Tag 21, die mit den Bits des Operanden X' übereinstimmen. Es wird in Schritt 414 eine Feststellung vorgenommen, ob eine vollständige oder teilweise Übereinstimmung des neu eingegebenen Operanden X' mit der Mehrzahl von Operanden X vorliegt, die in Puffern des Cache-Tag 21 gespeichert sind. Die Auswahl- und Maskierlogik 43 beinhaltet Logikschaltungen zum Dekodieren von Det_1, Det_2, ... Det_n und Bestimmen, ob eine exakte oder partielle Übereinstimmung vorliegt. Wenn eine partielle Übereinstimmung vorliegt, wird das Ausmaß der Übereinstimmung ebenfalls bestimmt. Die Auswahl- und Maskierlogik 43 gibt die geeigneten Freigabesignale an die Cachedaten 22 und das Maskierregister 45 ab. Es wird eine exakte Übereinstimmung des Operanden X' ermittelt, wenn jedes der Det_1, Det_2, ... Det_n Signale von der Detektierlogik 42 alle Einser enthält. Wenn es keine exakte oder partielle Übereinstimmung gibt, gibt der PMPO-Cache 100 ein Signal aus, das angibt, dass es keine Quadratwurzeldaten vom Cache 100 gibt. Es wird ein Nichtübereinstimmungssignal an Multiplexer (MUXs) 62 und 63 gesendet, worin der neu eingegebene Radikand X' in das Quadratwurzelmodul 27 eingegeben wird, und eine normale Quadratwurzeloperation wird vom Quadratwurzelmodul 27 mit dem Operanden X durchgeführt (Schritt 416). Die bei der Verarbeitung im Modul 27 gewonnenen resultierenden Daten werden zum Speichern an einer Stelle, die einem Tx-Puffer im Cache-Tag 21 entspricht, zu den Cachedaten 22 geleitet, worin der soeben verwendete Operand X' gespeichert wird (Schritt 418).
  • Wenn eine partielle oder eine exakte Übereinstimmung vorliegt, werden die Det_1, Det_2, ... Det_n Signale von der Detektierlogik 42 geprüft, um zu sehen, ob es eine identische Übereinstimmung gibt (Schritt (420). Wenn eine identische Übereinstimmung vorliegt, gibt die Auswahl- und Maskierlogik 43 ein Signal an die Stelle in den Cachedaten 22 aus, die dem Puffer mit der exakten Übereinstimmung im Cache-Tag 21 entspricht. In diesem Fall gibt das Maskierregister 45 die von den Cachedaten 22 ausgegebenen Daten zum Quadratwurzelpuffer 48 weiter, und die Daten werden wiederum durch MUX 63 zum Q'-Puffer 29 als Ergebnis der Quadratwurzeloperation geleitet (Schritt 422).
  • Wenn der Operand X' partiell übereinstimmt, wählt die Auswahl- und Maskierlogik 43 das Det_1, Det_2, ... Det_n Signal mit den meisten übereinstimmenden aufeinanderfolgenden signifikantesten Bits (MSB) aus (Schritt 424). Die Detektierlogik 42 setzt alle Daten nach dem ersten signifikantesten Nullwert bei den Daten von M1 bis Mn auf "egal". 4 stellt die M1 bis Mn Eingaben und entsprechenden Det_1 bis Det_n Ausgaben von der Detektierlogik 42 dar. Die Auswahl- und Maskierlogik 43 empfängt die Det_1 bis Det_n Signale und führt eine Maskieroperation durch, die ein Passiersignal für jede zwei aufeinanderfolgende logische Einsen in Det_1 bis Det_n erzeugt. In dem Fall, bei dem Det_n alle Einser sind, wird keine Maskierung durchgeführt. Eine Maskiertabelle enthält Det_1 bis Det_n Eingaben und entsprechende Maskeneingabe von der Auswahl- und Maskierlogik 43. In 5 sind 8 Bit Maskierdaten Mask [7:0] dargestellt. Die Auswahl- und Maskierlogik 43 gibt ein Freigabesignal En für den Zugriff zur Stelle in den Cachedaten 22 ab, die dem ähnlichsten Muster Det_max entspricht. Die Maskierdaten Mask [7:0], die Det_Max entsprechen, werden in die partielle Ausgabeeinheit 45 eingegeben, worin eine UND-Operation für diese Maskierdaten entsprechend Det_max und die aus den Cachedaten 22 ausgelesene Datenausgabe Qi (Schritt 426) durchgeführt wird.
  • Der obige Prozess wird in einem Beispiel erläutert. Operanden 100000002, 100011112 und 101011112 sind in T1 bis Tn des Cache-Tag 21 gespeichert und die resultierenden Quadratwurzeldaten entsprechend den Operanden sind an entsprechenden Stellen im Cachedatenspeicher 22 gespeichert. Ein Radikand X' von 100000012 zur Quadratwurzelziehung wird in die Arithmetikeinheit eingegeben. Die Detektierlogik 42 empfängt Signale entsprechend den Operanden als 11111110, 11110xxx bzw. 110xxxxx und Ausgabemuster Det_1 bis Det_n entsprechend den Vergleichsergebnissen als 11111110, 11110000 bzw. 11000000. Daher bedeutet eine logische "1", dass entsprechende Bits der Operanden in T1 bis Tn gespeichert sind und der Radikand X' übereinstimmt, und "0" bedeutet, dass entsprechende Bits nicht übereinstimmen. Außerdem bedeutet "x" egal.
  • Die Muster Det_1 = 11111110, Det_2 = 11110000 und Det_3 = 1100000, die von der Detektierlogik 42 erzeugt werden, werden in die Auswahl- und Maskierlogik 43 eingegeben und das Det_1 Muster 11111110 als ähnlichstes Muster Det_max ausgewählt, das die meisten aufeinanderfolgenden MSB-Bits gleich den entsprechenden Bits des Radikanden X' aufweist. Gemäß der in 5 gezeigten Wahrheitstabelle erzeugt die Auswahl- und Maskiereinheit 43 ein Maskenmuster Mask von 11100000 entsprechend einem Det_max von 11111110. Ein Ausgangsfreigabesignal En wird zum Datencachespeicher 22 gesendet, so dass resultierende Daten Qi ausgegeben werden, die dem Det_max entsprechen, das Det_1 war, mit den Daten von 11111110.
  • Die partielle Ausgabeeinheit 45 führt eine UND-Operation bei Qi und den Maskendaten 11100000 durch und speichert q [x:0] im Puffer 48. Wie zuvor angeführt, wenn alle Detektionssignale Det_1 bis Det_n von der Detektierlogik 42 0xxxxxxx2 sind, werden alle Nullwerte in den Q'-Puffer 29 als Ausgangswert eingegeben und der Operand X' wird in das Quadratwurzelmodul 27 eingegeben. Die arithmetische Operation, in diesem Beispiel eine Quadratwurzelkalkulation für alle Bitstellen des Operanden X' wird in einem Arithmetikmodul 27 (in diesem Beispiel ein Quadratwurzelmodul) durchgeführt. Und wenn einer der Operanden T1 bis Tn, die im Cache-Tag 21 gespeichert sind, gleich dem Radikanden X' ist, mit anderen Worten, wenn eines der Detektionssignale Det_1 bis Det_n von der Detektierlogik 42 11111111 ist, werden die Qi Daten entsprechend dem Detektionssignal 11111111 aus den Cachedaten 22 als die resultierenden Daten Q' ausgegeben, ohne dass eine Berechnung oder Verarbeitung im Modul 27 erfolgt.
  • Zwischenschaltungen mit einer Operatorteileinheit 61, einem ersten Multiplexer 62 und einem zweiten Multiplexer 63 werden durch die Auswahl- und Maskierlogik 43 gesteuert, so dass Daten zum Modul 27 und Q'-Puffer 29 übertragen werden. Die Operatorteileinheit 61 wird zum Extrahieren eines partiellen Operanden X'' verwendet, der vorwiegend der nicht übereinstimmende Teil des Radikanden X' ist. Bei einer Quadratwurzelberechnung werden die partiellen resultierenden Quadratwurzeldaten q [x:0] quadriert und dann vom eingegebenen Radikanden X' subtrahiert, so dass ein partieller Radikand X'' erhalten wird (X'' = X' – q2). Der partielle X'' wird in den Modul 27 eingegeben, um die Quadratwurzeloperation durchzuführen. Die partielle Resultatausgabe q [x:0] wird in den Q'-Puffer 29 als partielle Resultatdaten eingegeben (Schritt 428). Die X'' und q [x:0] Daten werden, gesteuert von der Auswahl- und Maskierlogik 43, durch den Mux 62 bzw. 63 ausgewählt. Wenn das Modul 27 den Quadratwurzelprozess mit den eingegebenen partiellen X'' abgeschlossen hat, werden die Resultatdaten mit den partiellen Resultatdaten kombiniert, die im Q'-Puffer 29 gespeichert sind, um vollständige Quadratwurzelresultatdaten zu bilden.
  • Mit Vorteil kann gezeigt werden, dass das Verfahren mit partieller Ausgabe bei partieller Übereinstimmung gemäß der vorliegenden Erfindung die Systembelastung signifikant reduzieren kann, wenn arithmetische Operationen häufig durchgeführt werden.
  • Obwohl das obige Beispiel eine Quadratwurzeloperation darstellt, ist es für einen Durchschnittsfachmann leicht erkennbar, dass die in 2 gezeigte und beschriebene Vorrichtung bei anderen arithmetischen Operationen anwendbar ist, wie Quadratwurzel, Division, Multiplikation, trigonometrische Funktionen und so weiter, wobei geringe Modifikationen im Wissensbereich des Fachmanns liegen. Eine Quadratwurzelberechnung kann beschrieben werden als Q = √x ri = 2ri-1 – qi(2 Qi-1 + qi 2–i)eine Division als Q = XY ri = 2ri-1 - qiD
  • Zur Erläuterung, wenn X = 11101001, Y = K und wenn ein neuer Operand X' = 11111011 und Y' = K gleich Y ist, ist die Divisionsoperation gleich der Quadratwurzeloperation, mit der Ausnahme, dass zwei Operanden X und Y für eine Division vorliegen. Wenn ein neuer Operand Y' zum früheren Operanden Y identisch ist, kann die Division als eine unäre Operation betrachtet werden und die Division kann mit dem PMPO-Cache 100 durchgeführt werden.
  • Für die Multiplikation Q = X × Y, wenn X = 11101001, Y = K und wenn X' = 11111011, Y' = K gleich Y ist, kann gemäß der vorliegenden Erfindung eine partielle Multiplikation vom PMPO-Cache durchgeführt werden. 5 stellt dar, dass die Maskieroperation nur gültig ist, wenn (X XOR X') UND X = 0000_0000 ist. Mit Bezug zu 6, die eine modifizierte Version der Vorrichtung von 2 ist, wird die inverse Funktion 61 so modifiziert, dass sie X'' = X' – X zum Extrahieren des partiellen Operanden durchführt, wobei gleiche Bezugszeichen gleiche Operationen wie für Komponenten mit den selben Bezugszeichen wie in 2 gezeigt beschreiben.
  • Obwohl erläuternde Ausführungsformen der vorliegenden Erfindung hier mit Bezug zu den begleitenden Zeichnungen beschrieben sind, versteht es sich, dass die Erfindung nicht auf diese präzisen Ausführungsformen beschränkt ist und dass von einem Fachmann verschiedene andere Veränderungen und Modifikationen hierzu vorgenommen werden können, ohne den Rahmen der Erfindung zu verlassen, wie er in den beigefügten Ansprüchen definiert ist.

Claims (5)

  1. Verfahren zur Durchführung einer arithmetischen Operation unter Verwendung einer Cachestruktur mit einem Tag-Register (21) und einem Cachedatenspeicher (22), mit folgenden Schritten: – Speichern einer Mehrzahl bekannter Operanden (X), von denen jeder ein aus einer arithmetischen Operation abgeleitetes, zugehöriges Resultat (Q) beinhaltet, in dem Tag-Register (21), wobei das Resultat (Q) an einer zugeordneten Stelle im Cachedatenspeicher (22) gespeichert wird, – Eingeben eines neuen Operanden (Q'), mit dem die arithmetische Operation auszuführen ist, in das Tag-Register (21), – Vergleichen des neuen Operanden (X') mit der Mehrzahl bekannter Operanden (X), – Feststellen, ob der neue Operand (X') mit einem der bekannten Operanden (X) übereinstimmt und, wenn eine Übereinstimmung vorliegt, Ausgeben des zu dem bekannten Operanden (X), der mit dem neuen Operanden (X') übereinstimmt, gehörigen bekannten Resultates (Q) aus dem Cachedatenspeicher (22), – Feststellen, ob partielle Übereinstimmungen zwischen den bekannten Operanden (X) und dem neuen Operanden (X') vorliegen, wenn im Feststellungsschritt keine Übereinstimmung vorliegt, – Auswählen des bekannten Operanden (X) mit der höchsten Anzahl an MSBs, die mit den MSBs des neuen Operanden (X') übereinstimmen, – Zugreifen auf das zu dem bekannten Operanden (X) mit den meisten übereinstimmenden MSBs gehörige Resultat (Q) aus dem Cachedatenspeicher (22), – Bestimmen eines ersten Teils des Resultats, auf das zugegriffen wurde, abgeleitet aus den übereinstimmenden MSBs des bekannten Operanden (X), – Maskieren eines zweiten Teils des Resultats, auf das zugegriffen wurde, der sich vom ersten Teil unterscheidet, und – Bereitstellen eines ersten partiellen Resultates des maskierten Resultates, wobei des Weiteren die Schritte zur Durchführung der arithmetischen Operation mit Bits des neuen Operanden (X') außer den übereinstimmenden MSBs vorgesehen sind, um ein zweites partielles Resultat zu erzeugen und ein komplettes Resultat durch Kombinieren des ersten partiellen Resultates mit dem zweiten partiellen Resultat auszugeben.
  2. Verfahren nach Anspruch 1, wobei die arithmetische Operation eine Quadratwurzel des neuen Operanden ist.
  3. Verfahren nach Anspruch 1, wobei die arithmetische Operation eine Division ist, bei welcher der neue Operand der Dividend ist.
  4. Verfahren nach Anspruch 1, wobei die arithmetische Operation eine Multiplikation ist, bei welcher der neue Operand der Multiplikand ist.
  5. Cache-Bauelement zur Durchführung einer arithmetischen Operation, mit – einem Tag-Register (21) zur Speicherung einer Mehrzahl bekannter Operanden (X), von denen jeder ein aus einer arithmetischen Operation abgeleitetes zugehöriges Resultat (Q) beinhaltet, – einen Cachedatenspeicher (22) zum Speichern von zu den bekannten Operanden (X) gehörigen Resultaten (Q), – einer Vergleichslogik (42) im Tag-Register (21) zum Vergleichen eines neuen Operanden (X'), mit dem die arithmetische Operation auszuführen ist, mit der Mehrzahl bekannter Operanden (X), wobei der Cachedatenspeicher (22), wenn der neue Operand (X') mit einem der bekannten Operanden (X) übereinstimmt, das zu dem mit dem neuen Operanden (X') übereinstimmenden bekannten Operanden (X) gehörige bekannte Resultat (Q) ausgibt, – einem Logikgruppendetektor (33) zum Detektieren einer Gruppe von Daten, die einen gemeinsamen Logikpegel haben, wobei der Logikgruppendetektor (43) dazu dient, den bekannten Operanden (X) mit der höchsten Anzahl an mit den MSBs des neuen Operanden (X') übereinstimmenden MSBs zu detektieren, – eine Maskierlogik (43) zum partiellen Maskieren des zu dem bekannten Operanden (X) mit den meisten übereinstimmenden MSBs gehörigen Resultates, wobei die Maskierlogik (43) dazu dient, einen ersten Teil des von den übereinstimmenden MSBs des bekannten Operanden abgeleiteten zugehörigen Resultates (Q) passieren zu lassen und einen vom ersten Teil verschiedenen zweiten Teil des zugehörigen Resultates (Q) zu maskieren, und – einem Multiplexer (63) zum Multiplexen des maskierten Resultates als eines ersten partiellen Resultates (Q) in einen Puffer (29), wobei es des Weiteren einen zweiten Multiplexer (62) beinhaltet, wobei eine Arithmetikeinheit (27) die arithmetische Operation mit Bits des neuen Operanden außer denjenigen der übereinstimmenden MSBs ausführt, um ein zweites partielles Resultat zu erzeugen, der zweite Multiplexer (62) dazu vorgese hen ist, die Bits des neuen Operanden außer denjenigen der übereinstimmenden MSBs in die Arithmetikeinheit (27) zu multiplexen, und das zweite partielle Resultat mit dem ersten partiellen Resultat zur Bildung eines kompletten Resultates kombiniert wird.
DE60127524T 2001-01-10 2001-02-09 Cachespeicher für arithmetische Rechenoperationen mit partieller Resultatsausgabe bei partieller Operandenübereinstimmung Expired - Lifetime DE60127524T2 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US757789 2001-01-10
US09/757,789 US6542963B2 (en) 2001-01-10 2001-01-10 Partial match partial output cache for computer arithmetic operations

Publications (2)

Publication Number Publication Date
DE60127524D1 DE60127524D1 (de) 2007-05-10
DE60127524T2 true DE60127524T2 (de) 2008-01-31

Family

ID=25049225

Family Applications (1)

Application Number Title Priority Date Filing Date
DE60127524T Expired - Lifetime DE60127524T2 (de) 2001-01-10 2001-02-09 Cachespeicher für arithmetische Rechenoperationen mit partieller Resultatsausgabe bei partieller Operandenübereinstimmung

Country Status (7)

Country Link
US (1) US6542963B2 (de)
EP (1) EP1223505B1 (de)
JP (1) JP4574030B2 (de)
KR (1) KR100423893B1 (de)
CN (1) CN1194301C (de)
DE (1) DE60127524T2 (de)
TW (1) TW501026B (de)

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050108368A1 (en) * 2003-10-30 2005-05-19 Aditya Mohan Method and apparatus for representing data available in a peer-to-peer network using bloom-filters
DE102004019967B4 (de) * 2004-04-23 2014-02-13 Rohde & Schwarz Gmbh & Co. Kg Signalverarbeitungseinrichtung mit Nachverarbeitung
US9189412B2 (en) * 2013-03-07 2015-11-17 Mips Technologies, Inc. Apparatus and method for operating a processor with an operation cache
US9817466B2 (en) 2014-04-17 2017-11-14 Arm Limited Power saving by reusing results of identical micro-operations
US9933841B2 (en) 2014-04-17 2018-04-03 Arm Limited Reuse of results of back-to-back micro-operations
GB2525263B (en) * 2014-04-17 2021-06-02 Advanced Risc Mach Ltd Reuse of results of back-to-back micro-operations
US10514928B2 (en) 2014-04-17 2019-12-24 Arm Limited Preventing duplicate execution by sharing a result between different processing lanes assigned micro-operations that generate the same result
US9946331B2 (en) * 2014-06-27 2018-04-17 Samsung Electronics Co., Ltd. System and method to process signals having a common component
GB2528497B (en) * 2014-07-24 2021-06-16 Advanced Risc Mach Ltd Apparatus And Method For Performing Floating-Point Square Root Operation
US10261911B2 (en) * 2016-09-08 2019-04-16 The Johns Hopkins University Apparatus and method for computational workflow management
US11269643B2 (en) 2017-04-09 2022-03-08 Intel Corporation Data operations and finite state machine for machine learning via bypass of computational tasks based on frequently-used data values
JP7143866B2 (ja) 2020-03-25 2022-09-29 カシオ計算機株式会社 キャッシュ管理プログラム、サーバ、キャッシュ管理方法、および情報処理装置

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4734878A (en) 1985-10-31 1988-03-29 General Electric Company Circuit for performing square root functions
JP2613223B2 (ja) * 1987-09-10 1997-05-21 株式会社日立製作所 演算装置
CA2074769C (en) * 1991-08-09 2001-03-20 International Business Machines Corporation Formula processor
US5260898A (en) * 1992-03-13 1993-11-09 Sun Microsystems, Inc. Result cache for complex arithmetic units
US5828591A (en) * 1992-11-02 1998-10-27 Intel Corporation Method and apparatus for using a cache memory to store and retrieve intermediate and final results
US5537560A (en) * 1994-03-01 1996-07-16 Intel Corporation Method and apparatus for conditionally generating a microinstruction that selects one of two values based upon control states of a microprocessor
US5845103A (en) * 1997-06-13 1998-12-01 Wisconsin Alumni Research Foundation Computer with dynamic instruction reuse
WO1999045463A1 (fr) * 1998-03-04 1999-09-10 Hitachi, Ltd. Processeur de donnees
US6253287B1 (en) * 1998-09-09 2001-06-26 Advanced Micro Devices, Inc. Using three-dimensional storage to make variable-length instructions appear uniform in two dimensions
US6298369B1 (en) * 1998-09-30 2001-10-02 Stmicroelectronics, Inc. High speed multiplier
US6343359B1 (en) * 1999-05-18 2002-01-29 Ip-First, L.L.C. Result forwarding cache

Also Published As

Publication number Publication date
TW501026B (en) 2002-09-01
EP1223505A3 (de) 2004-06-16
CN1194301C (zh) 2005-03-23
DE60127524D1 (de) 2007-05-10
JP4574030B2 (ja) 2010-11-04
US6542963B2 (en) 2003-04-01
KR100423893B1 (ko) 2004-03-24
US20020120814A1 (en) 2002-08-29
JP2002229775A (ja) 2002-08-16
EP1223505B1 (de) 2007-03-28
CN1365049A (zh) 2002-08-21
EP1223505A2 (de) 2002-07-17
KR20020060547A (ko) 2002-07-18

Similar Documents

Publication Publication Date Title
DE69430838T2 (de) Schaltung und Verfahren zur parallelen Verschiebung und Addition
DE69811877T2 (de) ARITHMETISCHER PROZESSOR, der endliche Felder Arithmetik und ganzzahlige modular Arithmetik kombiniert.
DE68927415T2 (de) Kontextumschaltungsverfahren und -anordnung zur Verwendung in einem Vektorverarbeitungssystem
DE69115344T2 (de) Vorverarbeitungsprozessor zur Verbindung von Befehlen für einen Cache-Speicher
DE69328070T2 (de) Maske zum Auswählen von Kompenenten in einem Verbundoperand
DE68924477T2 (de) Gleitkommaeinheit mit gleichzeitiger Multiplikation und Addition.
DE60127524T2 (de) Cachespeicher für arithmetische Rechenoperationen mit partieller Resultatsausgabe bei partieller Operandenübereinstimmung
DE69416283T2 (de) Überlaufsteuerung für arithmetische Operationen
DE68928519T2 (de) Verfahren und Vorrichtung zur Vorhersage der richtigen Durchführung der Übersetzungen von virtuellen in physikalische Adressen
DE69132129T2 (de) In der Grundzahl 4 arbeitende Übertragvorgriffsbäume
DE3751503T2 (de) Datenprozessor in Pipelinestruktur mit der Fähigkeit mehrere Befehle parallel zu dekodieren und auszuführen.
DE69435047T2 (de) Schaltung und Verfahren zur parallelen Addition und Mittelwertbildung
DE69130581T2 (de) Verfahren zur Berechnung einer Operation des Typus A.X modulo N, in einem Kodierverfahren gemäss der RSA-Methode
DE19581638C2 (de) Rechenvorrichtung mit einem Mikroprozessor, einem neuralen Netz-Koprozessor und einer DMA-Steuervorrichtung
DE60004640T2 (de) Verfahren und vorrichtung für sprungvorhersage unter verwendung einer hybriden branch-history mit gemeinsamer zugriffsstruktur
DE3853759T2 (de) Datenprozessor mit zwei Betriebsmoden.
DE19540102A1 (de) Gleitkomma-Recheneinheit mit einer Logik für eine Vierfach-Präzisions-Arithmetik
DE68924546T2 (de) Verfahren und Vorrichtung zur Ausführung von Befehlen für ein Vektorverarbeitungssystem.
DE102009030525A1 (de) Effizientes Paralleles Behandeln von Gleitkomma-Ausnahmen in einem Prozessor
DE2524046C2 (de) Elektronische Datenverarbeitungsanlage
DE69418146T2 (de) Temporärer Registersatz für einen superpipeline-superskalaren Prozessor
DE102009051288A1 (de) Befehl und Logik zur Ausführung von Bereichserkennung
DE4403917C2 (de) Vorrichtung zum Berechnen einer Bit-Besetzungszählung
DE60216210T2 (de) Binärer Grösse-Vergleicher
DE102014002510A1 (de) Präzise Ausnahmesignalisierung für Mehrfachdatenarchitektur

Legal Events

Date Code Title Description
8364 No opposition during term of opposition