DE69700328T2 - Ausgleich von Latenzzeit in einem Speicher - Google Patents

Ausgleich von Latenzzeit in einem Speicher

Info

Publication number
DE69700328T2
DE69700328T2 DE69700328T DE69700328T DE69700328T2 DE 69700328 T2 DE69700328 T2 DE 69700328T2 DE 69700328 T DE69700328 T DE 69700328T DE 69700328 T DE69700328 T DE 69700328T DE 69700328 T2 DE69700328 T2 DE 69700328T2
Authority
DE
Germany
Prior art keywords
data
buffer
repeat
access
storage facility
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 - Fee Related
Application number
DE69700328T
Other languages
English (en)
Other versions
DE69700328D1 (de
Inventor
Thomas Henkel
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.)
Verigy Singapore Pte Ltd
Original Assignee
Hewlett Packard Co
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 Hewlett Packard Co filed Critical Hewlett Packard Co
Application granted granted Critical
Publication of DE69700328D1 publication Critical patent/DE69700328D1/de
Publication of DE69700328T2 publication Critical patent/DE69700328T2/de
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F5/00Methods or arrangements for data conversion without changing the order or content of the data handled
    • G06F5/06Methods or arrangements for data conversion without changing the order or content of the data handled for changing the speed of data flow, i.e. speed regularising or timing, e.g. delay lines, FIFO buffers; over- or underrun control therefor
    • G06F5/16Multiplexed systems, i.e. using two or more similar devices which are alternately accessed for enqueue and dequeue operations, e.g. ping-pong buffers
    • GPHYSICS
    • G01MEASURING; TESTING
    • G01RMEASURING ELECTRIC VARIABLES; MEASURING MAGNETIC VARIABLES
    • G01R31/00Arrangements for testing electric properties; Arrangements for locating electric faults; Arrangements for electrical testing characterised by what is being tested not provided for elsewhere
    • G01R31/28Testing of electronic circuits, e.g. by signal tracer
    • G01R31/317Testing of digital circuits
    • G01R31/3181Functional testing
    • G01R31/319Tester hardware, i.e. output processing circuits
    • G01R31/31917Stimuli generation or application of test patterns to the device under test [DUT]
    • G01R31/31919Storing and outputting test patterns
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F5/00Methods or arrangements for data conversion without changing the order or content of the data handled
    • G06F5/06Methods or arrangements for data conversion without changing the order or content of the data handled for changing the speed of data flow, i.e. speed regularising or timing, e.g. delay lines, FIFO buffers; over- or underrun control therefor
    • GPHYSICS
    • G01MEASURING; TESTING
    • G01RMEASURING ELECTRIC VARIABLES; MEASURING MAGNETIC VARIABLES
    • G01R31/00Arrangements for testing electric properties; Arrangements for locating electric faults; Arrangements for electrical testing characterised by what is being tested not provided for elsewhere
    • G01R31/28Testing of electronic circuits, e.g. by signal tracer
    • G01R31/317Testing of digital circuits
    • G01R31/3181Functional testing
    • G01R31/319Tester hardware, i.e. output processing circuits
    • G01R31/31917Stimuli generation or application of test patterns to the device under test [DUT]
    • G01R31/31919Storing and outputting test patterns
    • G01R31/31921Storing and outputting test patterns using compression techniques, e.g. patterns sequencer

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Dram (AREA)
  • Memory System (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Description

    HINTERGRUND DER ERFINDUNG
  • Die vorliegende Erfindung bezieht sich im allgemeinen auf den Ausgleich von Latenzzeiteffekten in Speichern.
  • Computersysteme umfassen im allgemeinen mehr oder weniger komplexe Speichereinheiten zum Speichern von Informationen auf temporärer oder permanenter Basis, wie z. B. Daten oder Programmen (Abfolgen von Anweisungen). Der Begriff "Speicher", wie er im folgenden gebraucht wird, soll sich auf jegliche Speichervorrichtung wie z. B. Platten, Bänder, Halbleiterelemente oder ähnliches beziehen und beschränkt sich nicht auf eine bestimmte Art von Zweck oder Anwendungen wie z. B. in Mikrocomputern. Der Begriff "Daten", wie er im folgenden gebraucht wird, bezieht sich auf jegliche Art von Information wie z. B. individuelle oder kollektive Daten, Programme, Anweisungen, sowohl auf temporärer wie permanenter Basis.
  • Ein Zugriff auf einen Speicher umfaßt normalerweise drei grundlegende Operationen: 1) Dem Speicher mitteilen, was zu tun ist, z. B. lese eine Anzahl von Bytes aus einer Position im Speicher; 2) Warten bis der Speicher einen Zugriff beendet hat und 3) Erhalten der ausgelesenen Daten oder Schreiben der Daten in den Speicher. Die Übertragung auf der Systemebene kann in drei Takt- Parameter aufgeschlüsselt werden: (a) Adressenübertragung, (b) Datenzugriffszeit und (c) Datenübertragung. Die Adressenübertragung kann definiert werden als die Zeit, die benötigt wird, um eine neue Adresse und jegliche Steuerung in eine Schnittstelle des Speichers einzustellen. Diese Übertragungszeit ist im allgemeinen allein eine Funktion der Speicherschnittstelle. Die Datenzugriffszeit kann definiert werden als die Zeit, die benötigt wird, um einen Datenzugriff auszuführen, d. h. die Zeit, die vom Speicher benötigt wird, um auf bestimmte Daten der internen Speichertabelle oder des Kerns zuzugreifen. Die Datenübertragung kann definiert werden als die Zeit, die benötigt wird, um Daten vom oder zum Speicher zu übertragen und hängt im allgemeinen von der Bandbreite oder der Signalrate der Speicherschnittstelle ab.
  • Eine wichtige Anwendung von Speichern, und insbesondere von tiefen Speichern (d. h. Speichern mit einer großen Speicherkapazität) besteht in Testanwendungen zum Testen von z. B. integrierten Schaltkreisen (ICs) oder anderen elektronischen Geräten wie z. B. der Hewlett-Packard HP 83000 Digital IC Test Systems. Eine typische Testeinheit umfaßt einen Testerschaltkreis und eine zu prüfende Vorrichtung (DUT), die ein IC oder jedes andere elektronische Gerät sein kann. Einzelheiten solcher Testeinheiten können z. B. in den noch ausstehenden europäischen Patentanträgen des gleichen Antragsstellers z. B. unter den internen Referenznummern: 20-97-009, 20-97-023, 20-97-013, 20-97-013/1 und 20-97-019 gefunden werden. Der Testschaltkreis besteht im allgemeinen aus einer Einheit zur Signalerzeugung zum Erzeugen und Einspeisen eines Stroms von Anregungsdaten zur DUT, einer Einheit zum Signalempfang zum Empfangen der Antwort auf den Anregungsdatenstrom von der DUT und einer Einheit zur Signalanalyse zum Vergleich der Antwort mit einem erwarteten Datenstrom. Testdaten, die zur DUT geschickt werden, werden auch Vektordaten oder Testvektoren genannt und umfassen einen oder mehrere einzelne individuelle Vektoren. Jeder individuelle Vektor kann einen Signalzustand darstellen, der zu einem bestimmten Zeitpunkt entweder an einem oder mehreren Eingängen der DUT angelegt werden soll oder ausgegeben wird. In einem digitalen IC-Tester werden Vektoren normalerweise in einem sequentiellen Strom, mit Teilen unterschiedlicher Länge, die bestimmte Male wiederholt werden, ausgeführt.
  • Insbesondere bei digitalen IC-Testern besteht ein wachsender Bedarf an schnellen und tiefen Speichern, um die Testvektoren zu speichern, welche zur Anregung der DUT und der Bewertung der Antwort notwendig sind. Mit steigender Komplexität und steigender Anzahl an zu testenden Ausgängen der DUTs werden die Vektorfolgen entsprechend riesig. Um diese großen Speichermengen zu einem vernünftigen Preis zur Verfügung stellen zu können, werden gewöhnlich Speichergeräte mit einer hohen Speicherdichte verwendet, die auch hohen Vektorraten die Minimierung der Testzeit erlauben und die DUTs mit der beabsichtigten Betriebsgeschwindigkeit testen können. Die im Moment verfügbare Speichertechnologie mit der höchsten Speicherdichte ist die DRAM- Technologie.
  • Eine grundsätzliche Beschränkung aller Speicher besteht in der sogenannten Latenzzeit als dem Zeitintervall zwischen dem Zeitpunkt, an dem eine Anweisungskontrolleinheit einen Datenabruf initiiert und dem Zeitpunkt, an dem dann die eigentliche Datenübertragung beginnt, oder anders ausgedrückt, der Zeit, die benötigt wird, um auf das erste Datenwort bei einem zufälligen Zugriff zuzugreifen. Die Latenzzeit erhöht im allgemeinen die Datenzugriffszeit. Die Latenzzeit besitzt keinen festen Wert für einen bestimmten Speicher oder Speichertyp, sondern hängt vom eigentlichen Datenzugriff ab. In den meisten Speichern ist jedoch die Latenzzeit für die meisten Datenzugriffe im wesentlichen konstant. Um der Einfachheit willen soll im weiteren die Latenzzeit für einen bestimmten Speicher als konstant angesehen werden.
  • Obwohl die physikalische Zeit, um intern auf einen bestimmten Speichertyp zuzugreifen, gleich sein mag, können die Unterschiede zwischen Speichertypen, welche die Latenzzeit beeinflussen könnten, in der Geschwindigkeit, mit der eine Adreß- und (Steuer-)Information zum Speicher und der Geschwindigkeit, mit der Daten zurück zur Steuereinheit bewegt werden können, bestehen.
  • In Anwendungen, die nur sequentiellen (oder synonym dazu: seriellen) Zugriff auf Speicher benötigen, wie Lesen oder Schreiben, d. h. ein Zugriff auf den Speicher (z. B. Daten müssen in den Speicher geschrieben werden) verläuft sequentiell (oder seriell) von einer ersten Startadresse in aufeinanderfolgende physische Positionen, tritt die Latenzzeit nur für den Zugriff auf die Startadresse auf. Nachdem auf das erste Datenwort der seriellen Daten innerhalb der Latenzzeit zugegriffen wurde, kann die Lese- oder Schreib-Operation der auf das erste Datenwort auf der Startadresse folgenden Daten mit einer Speichergeschwindigkeit ausgeführt werden, die normalerweise viel höher ist als die "Geschwindigkeit", mit der auf das erste Datenwort zugegriffen wird, und ist normalerweise auch die höchste vom Speicher unterstützte Geschwindigkeit. Diese Operation wird auch eine erste Datenzugriftsoperation genannt, d. h. Zugriff auf das erste Datenwort von seriellen Daten. Im allgemeinen tritt die Latenzzeit bei jeder ersten Datenzugriffsoperation auf. Es versteht sich, daß während der Latenzzeit keine Daten verfügbar sind und ein laufender Prozeß, der weitere Daten benötigt, auf diese warten muß.
  • Abb. 1 zeigt ein Beispiel eines Speichers 10, der (neben weiteren, nicht dargestellten Daten) einen ersten seriell gespeicherten Datenbereich 20 mit Datenblöcken 20a, 20b und 20c und einem zweiten seriell gespeicherten Datenbereich 30 mit Datenblöcken 30a, 30b und 30c, von denen jeder in einem zusammenhängenden Bereich des Speichers gespeichert ist, umfaßt. Der Speicher 10 wird von einem Prozessor 40 gesteuert, der auf den Speicher 10 über eine Datenverbindung 50, die keine feste physische Verbindung darstellt, sondern eine Zugriffsleitung von und zu den jeweiligen Datenblöcken des Speichers 10, die mittels irgendeiner Verbindungsart gemäß dem Stand der Technik ausgeführt werden kann. Im Beispiel der Abb. 1 greift der Prozessor auf den Datenblock 20a über die Datenverbindung 50 zu.
  • Wenn der gesamte sequentiell gespeicherte Datenbereich 20 gelesen werden soll, tritt die Latenzzeit nur für den Zugriff auf den (ersten) Datenblock 20a, als die erste Datenzugriffsoperation, auf. Nach Zugriff auf den Datenblock 20a können die weiteren Datenblöcke 20b und 20c mit der Speichergeschwindigkeit gelesen werden. Analog gilt, daß wenn der Datenbereich 30 gelesen werden soll die Latenzzeit nur bei dem Zugriff auf den Datenblock 30, als die erste Datenzugriffsoperation, auftritt. Nach dem Zugriff auf den Datenblock 30a können die weiteren Datenblöcke 30b, 30c und 30d mit der Speichergeschwindigkeit gelesen werden.
  • Falls nach dem Zugriff (z. B. zum Lesen oder Schreiben) auf erste serielle Daten, z. B. Datenbereich 20 oder Teile davon, auf zweite serielle Daten zugegriffen werden soll, z. B. Datenbereich 30 oder Teile davon, tritt die Latenzzeit zuerst beim Zugriff auf das erste Datenwort der ersten seriellen Daten, z. B. dem Datenblock 20a, auf und dann wieder für den Zugriff auf das erste Datenwort der zweiten seriellen Daten, z. B. dem Datenblock 30a. Diese Operation wird auch Sprungoperation genannt, d. h. Springen von den einen seriellen Daten zu anderen seriellen Daten. Im allgemeinen tritt die Latenzzeit mit jeder Sprungoperation auf.
  • Für den Fall, daß der Zugriff auf serielle Daten, z. B. den Datenbereich 20 oder Teile davon, wiederholt werden muß, tritt die Latenzzeit zwischen jedem Zugriff auf die seriellen Daten auf. Diese Operation wird auch Wiederholungsoperation genannt, d. h. Wiederholen eines Zugriffs auf serielle Daten. Im allgemeinen tritt die Latenzzeit mit jeder Wiederholungsoperation auf. Wiederholungsoperationen werden in den meisten Fällen nur für das Lesen von Daten und nicht für das Schreiben von Daten verwendet, da das wiederholte Schreiben von Daten in den gleichen Speicherbereich in der Regel nicht sinnvoll ist.
  • Latenzzeitprobleme werden in Anwendungen wie Prüf- oder Ausweichsystemen wichtig, bei denen die Latenzzeit im Vergleich zu anderen Zugriffszeiten, z. B. denen zum Lesen und Schreiben von Daten, nicht vernachlässigbar ist.
  • Besonders in Anwendungen mit vielen Sprung- und/oder Wiederholungsoperationen könnte die Gesamtzeit, die für den Zugriff auf alle angeforderten Daten benötigt wird, vor allem von der Latenzzeit des Speichers abhängen.
  • Wenn auf eine bestimmte Datenmenge zugegriffen werden soll, die nicht aufeinander folgend gespeichert ist, sondern auf verschiedene Positionen in einem oder mehreren Speichern verteilt ist, könnte die Latenzzeit bei dem Zugriff auf die gesamte Datenmenge mehrmals auftreten und die Datenerfassungszeit als die Zeit, die für den Zugriff auf die gesamte Datenmenge benötigt wird, stark erhöhen. Es ist offensichtlich, daß im Falle einer Speicherlatenzzeit die Datenerfassungszeit von der individuellen Datenmenge, auf die zugegriffen werden soll, abhängt und zwar insbesondere von der Anzahl der ersten Datenzugriffe, Wiederholungs- und Sprungoperationen.
  • Eine offensichtliche Möglichkeit, Probleme mit der Latenzzeit zu vermeiden, liegt darin, Speicher mit einer reduzierten oder nahe null gelegenen Latenzzeit zu verwenden, wie z. B. SRAM. Diese Speicher sind jedoch im allgemeinen teuer und weisen eine geringe Speicherdichte auf, so daß sie sich nicht für Anwendungen mit einem großen Speicherbedarf eignen mögen.
  • Eine weitere Möglichkeit, Probleme mit der Latenzzeit zu vermeiden, könnte das Sortieren und serielle Speichern der angeforderten Daten schon während des Ladens in den Speicher darstellen, anstatt zwischen den verschieden gespeicherten seriellen Datenblöcken zu springen oder während der Ausführung von Daten bestimmte seriell gespeicherte Datenblöcke zu wiederholen. Es ist jedoch offensichtlich, daß dieser Ansatz zu großen Allgemeinkosten bei den Speicherressourcen und der Verwaltung für das Betriebssystem führen.
  • Eine weitere Möglichkeit, Probleme mit der Latenzzeit zu vermeiden, liegt darin, Speicher mit einer reduzierten oder nahe null gelegenen Latenzzeit nur für Wiederholungsoperationen in solcher Weise zu verwenden, daß solche Datenfolgen, die wiederholt werden müssen, vor einer Operation vollständig in diesen Speicher gespeichert werden. Diese Möglichkeit bedeutet jedoch mangelnde Flexibilität und hohe Kosten für den zusätzlichen Speicher, der für die zu wiederholenden Datenfolgen ausreichend sein muß.
  • EP-A-0228332 beschreibt ein automatisches Testsystem mit einer "True testerper-pin"-Architektur. Abb. 6, EP-A-00228332 zeigt ein Gerät zum Zugriff auf einen Speicher mit Hilfe eines RAM-Datendecoders und einem Cache-Speicher. Das Programmieren einer Schleife erfordert, daß sowohl die erste wie letzte Anweisung der Schleife als auch die Anzahl der Schleifendurchgänge in einem Speicheradressengenerator gespeichert werden. Für die allererste Schleife einer Testsequenz wird diese Information dem Speicheradressengenerator vor dem Teststart übergeben. Wenn der Speicheradressengenerator die erste Adresse der Schleife erreicht, speichert er diese Anweisung und alle folgenden Anweisungen in dem Cache-Speicher, bis die letzte Anweisung der Schleife erreicht wird. Wenn die letzte Anweisung der Schleife erreicht wird, wird der Speicheradressengenerator die im Cache-Speicher gespeicherte Anweisung für die Anzahl der Wiederholungen, die programmiert wurden, wiederholen.
  • Während der Schleife entschlüsselt der RAM-Datendecoder die vom Cache- Speicher und nicht die vom Speicher eingehenden Anweisungen. Schleifen, die in ihrer Länge unbeschränkt sind, können verwendet werden, auch wenn die Anzahl der notwendigen Anweisungen der Schleife nicht in den Cache-Speicher passen. In diesem Fall führt der RAM-Datendecoder vom Cache-Speicher die Anweisungen aus, bis die Zahl der Anweisungen im Cache-Speicher ausläuft, und kehrt dann zu den Anweisungen im Speicher zurück, um die Schleife zu beenden. Dies überwindet das Problem, sofortigen Zugriff auf die nächste Anweisung zu benötigen, was wegen der ziemlich langen Zykluszeiten der DRAMs nicht eintreten kann, und stellt gleichzeitig die benötigte Zeit zur Verfügung, um die Adressen mehrere Male für die nächste Schleife zu holen und zu laden.
  • US-A-4,216,533 beschreibt die Erzeugung eines Musters mit einer Vielzahl an langsamen Speichern, in denen einen Vielzahl an Mustern und ersten und zweiten Hochgeschwindigkeitsspeichern, die mit einer kürzeren Zugriffszeit als die langsameren arbeiten. Eine der ersten und zweiten Hochgeschwindigkeitsspeicher wird gelesen, um Ausgabemuster zu erhalten und gleichzeitig werden die Vielzahl der langsamen Speicher parallel gelesen und die ausgelesenen Daten werden nacheinander jeweils abwechselnd in den anderen Hochgeschwindigkeitsspeicher geschrieben.
  • ZUSAMMENFASSUNG DER ERFINDUNG
  • Es ist somit ein Ziel der Erfindung, die Auswirkung der Speicherlatenzzeit auf Zugriffoperationen auf den Speicher zu reduzieren. Dieses Ziel wird durch die in den einzelnen Ansprüche definierten Verfahren erreicht.
  • Die Grundsätze der Erfindung können auch kombiniert werden und erlauben so, eine Auswirkung der Speicherlatenzzeit auf Wiederholungsoperationen, Sprungoperationen und/oder kombinierte Wiederholung- und Sprungoperationen zu reduzieren. Die Wiederholungs- und/oder Sprungoperationen können sowohl zum Lesen und/oder Schreiben von Daten verwendet werden.
  • Indem der Anfang einer Datenfolge, die wiederholt und/oder auf nach einer aktuellen Zugriffsoperation folgend zugegriffen werden soll, gepuffert wird, kann die Wartezeit, die aufgrund von Latenzzeiteffekten während aufeinanderfolgenden Zugriffszyklen/-operationen beruht, reduziert oder sogar eliminiert werden, abhängig von der Speicherkapazität des jeweils eingesetzten Puffers. Die Speicherkapazität des Puffers stimmt deswegen vorzugsweise mit der erwarteten Latenzzeit und mit der maximalen Latenzzeit des Speichers überein, was bedeutet, daß die Latenzzeit mit dem Dateninhalt des Puffers überbrückt wird. Dies ermöglicht die Bereitstellung eines kontinuierlichen oder beinahe kontinuierlichen Datenflusses mit einem Minimum an Komponenten und Verwaltungsaufwand und einer hohen Flexibilität. Das Puffern kann während der Zugriffsoperationen erfolgen und muß nicht vorab vorbereitet werden.
  • Die Erfindung kann am besten in Testsystemen, und insbesondere in IC-Testern, verwendet werden.
  • KURZBESCHREIBUNG DER ZEICHNUNGEN
  • Weitere Ziele und viele der begleitenden Vorzüge der vorliegenden Erfindung werden mit Hinblick auf die folgende ausführliche Beschreibung leichter gewürdigt und besser verstanden, wenn sie in Verbindung mit den zugehörigen Zeichnungen betrachtet werden, in welchen:
  • Abb. 1 ein Beispiel eines Speichers, der aus seriell gespeicherten Datenbereichen besteht, darstellt;
  • Abb. 2 eine Ausführung gemäß eines ersten Grundsatzes der Erfindung, die eine verbesserte Datenzugriffszeit für Wiederholungsoperationen gewährt, darstellt;
  • Abb. 3 eine Ausführung gemäß eines zweiten Grundsatzes der Erfindung, die eine verbesserte Datenzugriffszeit für Sprungoperationen zwischen verschiedenen Bereichen seriell gespeicherter Daten gewährt, darstellt;
  • Abb. 4a, 4b und 4c Ausführungen, die eine verbesserte Datenzugriffszeit für Sprungoperationen zwischen verschiedenen Bereichen seriell gespeicherter Daten und/oder für Wiederholungsoperationen gewähren, darstellen;
  • Abb. 5 eine Ausführung, die eine verbesserte Datenzugriffszeit sowohl für Sprungoperationen zwischen verschiedenen Bereichen seriell gespeicherter Daten als auch für Wiederholungsoperationen für eine Vielzahl von Kanälen a ... n gewährt, zeigt.
  • AUSFÜHRLICHE BESCHREIBUNG DER ERFINDUNG 1. Wiederholungsoperationen
  • Abb. 2 zeigt eine Ausführung gemäß eines ersten Grundsatzes der Erfindung, die eine verbesserte Datenzugriffszeit für Wiederholungsoperationen gewährt. Ein Wiederholungsstartpuffer 100 ist mit dem Speicher 10 über eine Datenverbindung 105 und mit einer Wiederholungsschalteinheit 110 über eine Datenleitung 115 verbunden. Die Wiederholungsschalteinheit 110 ist ebenfalls mit dem Speicher 10 über die Datenleitung 105 und über die Datenleitung 120 mit dem Prozessor 40 verbunden. Die Pfeile der Linien in Abb. 2 geben die Richtung des Datenflusses z. B. für einen Lesezugriff auf den Speicher 10 an.
  • Es versteht sich, daß jegliche Datenverbindung wie auf sie hier im folgenden Bezug genommen wird, nicht eine feste physische Verbindung, sondern eine Zugriffsleitung von und zu dem entsprechenden Datenblöcken des Speichers 10 darstellt, die mittels irgendeiner Verbindungsart ausgeführt werden kann. Das Zeigen einer jeden Datenverbindung von oder auf jeden der Datenblöcke des Speichers 10 soll heißen, daß der entsprechende Datenblock über die entsprechende Datenverbindung angesprochen werden kann (Lesen oder Schreiben), wobei die Richtung des Zeigers die Richtung des Datenflusses für entweder eine Lese- oder eine Schreiboperation anzeigt. Wie in dem Beispiel in Abb. 2 bedeutet das Zeigen der Datenverbindung 105 von Datenblock 20a, daß der Datenblock 20a über die Datenverbindung 105 gelesen werden kann.
  • 1.2 Lese-Wiederholungsoperation
  • Zu Beginn einer Wiederholungsoperation, wenn bestimmte Daten, z. B. der Datenbereich 20, wiederholt gelesen werden soll, erstellt der Prozessor 40 die Datenverbindung 105 für den Zugriff auf das erste zu lesende Datenwort, z. B. den Datenblock 20a. Nach der Latenzzeit ist das erste Datenwort verfügbar und wird über die Datenverbindung 105 sowohl an den Wiederholungsstartpuffer 100 als auch die Wiederholungsschalteinheit 110 gesandt. Am Anfang des ersten Wiederholungszyklus schaltet die Wiederholungsschalteinheit 110 die Datenverbindung 105 auf die Datenleitung 120 um, so daß der Prozessor 40 schließlich mit dem Lesen der Daten von Speicher 10 anfangen kann. In dem Beispiel beginnt der Prozessor 40 mit dem Lesen des Datenbereichs 20 vom ersten Datenblock 20a bis zum letzten Datenblock 20c des Datenbereichs 20 (als ein Wiederholungszyklus). Gleichzeitig werden die zu lesenden Daten (in diesem Beispiel der Datenbereich 20) über die Datenverbindung 105 am Wiederholungsstartpuffer 100 angelegt, und ein gewisser Anteil der Daten, am besten entsprechend der Speicherkapazität des Wiederholungspuffers 100, wird darin gepuffert. In dem Beispiel soll der Wiederholungsstartpuffer den ersten Datenblock 20a puffern.
  • Es versteht sich, daß die Datenmenge, die vom Wiederholungsstartpuffer 100 gepuffert werden, von dessen Speicherkapazität abhängt, wohingegen der Beginn der gepufferten Daten mit der Startadresse des Wiederholungszyklus für ein wiederholtes Lesen dieser Daten korrespondiert. Der Wiederholungsstartpuffer 100 wird am besten so gewählt, daß er keine oder nur eine vernachlässigbare Latenzzeit aufweist. Um der Einfachheit willen soll der Wiederholungsstartpuffer 100 in den folgenden Überlegungen und Erklärungen so betrachtet werden als hätte er keine Latenzzeit.
  • Wenn das Ende der zu lesenden Daten (während des ersten Wiederholungszyklus) erreicht ist und dieser Lesezyklus wiederholt werden soll, schaltet die Wiederholungsschalteinheit 110 (zu Beginn des zweiten Wiederholungszyklus) den Wiederholungsstartpuffer 100 über die Datenleitung 115 auf die Datenleitung 120 um, so daß der Prozessor 40 unverzüglich mit dem Lesen der im Wiederholungsstartpuffer 100 gepufferten Daten beginnen kann. In dem Beispiel beginnt der Prozessor 40 mit dem Lesen des ersten Datenblocks 20a aus dem Wiederholungsstartpuffer 100. Gleichzeitig veranlaßt der Prozessor (wie durch den Pfeil 125 angedeutet) den Speicher 10, auf die zu lesenden Daten zuzugreifen, in diesem Falle jedoch nicht vom Anfangspunkt der gesamten Daten, sondern (mindestens) ab dem ersten Datenwort der zu lesenden Daten, die nicht durch den Wiederholungsstartpuffer 100 gepuffert sind. In dem Beispiel ist das erste Datenwort der zu lesenden Daten, welches nicht durch den Wiederholungsstartpuffer 100 gepuffert ist, der Datenblock 20b (wie durch den Pfeil 125 angedeutet). Nach der Latenzzeit wird dieses Datenwort (z. B. Datenblock 20b) verfügbar sein und wird ebenfalls über die Datenverbindung 105 (jetzt jedoch auf den Datenblock 20b zugreifend, wie durch Pfeil 125 angedeutet) zum Wiederholungsstartpuffer 100 und der Wiederholungsschalteinheit 110 gesandt. Die Wiederholungsschalteinheit 110 schaltet jetzt die Datenverbindung 105 auf die Datenleitung 120 um, so daß wiederum der Prozessor 40 mit dem Lesen direkt aus dem Speicher 10 beginnen kann, diesmal jedoch bei dem Datenwort anfängt, das von Pfeil 125 bezeichnet wird. In dem Beispiel liest der Prozessor 40 zuerst den in den Wiederholungsstartpuffer 100 gepufferten Datenblock 20a, gleichzeitig wird die Datenverbindung 105 auf den Datenblock 20b erstellt und der Prozessor liest dann die Datenblöcke 20b und 20c direkt aus dem Speicher 10. Es ist offensichtlich, daß im zweiten Wiederholungszyklus der Wiederholungsstartpuffer 100 keine weiteren Daten, die von der Datenverbindung 105 gesandt werden, puffern muß.
  • Jeder nachfolgende Wiederholungszyklus wird im wesentlichen in der gleichen Art wie der zweiten Wiederholungszyklus oben wiederholt. Während des letzten Wiederholungszyklus jedoch könnte der Wiederholungsstartpuffer 100 schon für andere Zwecke, wie z. B. später erklärt werden wird, verwendet werden.
  • Die Wiederholungsschalteinheit 110 wird so gesteuert und synchronisiert, daß die Wiederholungsschalteinheit 110 von der Datenverbindung 105 auf die Datenleitung 115 umgeschaltet wird, sobald bestimmte, zu verarbeitende Daten (in diesem Moment) vom Speicher 10 nicht verfügbar sind, sondern in dem Wiederholungsstartpuffer 100 gepuffert sind. Falls diese bestimmten Daten sowohl vom Speicher 10 als auch vom Wiederholungsstartpuffer 100 verfügbar sind, kann die Wiederholungsschalteinheit 110 entweder die Datenverbindung 105 oder die Datenleitung 115 auswählen; sie wird aber am besten die Datenverbindung 105, und somit den Speicher 10, auswählen und die nachfolgenden Daten werden dann direkt aus dem Speicher 10 gelesen werden. Wenn die bewußten Daten, auf die zugegriffen werden soll, nicht im Wiederholungsstartpuffer 100 gepuffert sind, schaltet die Wiederholungsschalteinheit 110 von der Datenleitung 115 auf die Datenverbindung 105 um, und der Prozessor fährt mit dem direkten Lesen vom Speicher 10 fort. In einer bevorzugten Ausführung wird die Datenverbindung 105 auf die Datenadresse, die zuletzt im Wiederholungsstartpuffer 100 gepuffert wurde, erstellt, die dieser Datenadresse folgt, so daß die Daten entweder nur vom Wiederholungsstartpuffer 100 oder direkt vom Speicher 10 verfügbar sind.
  • Das Puffern des Wiederholungsstartpuffers 100, das Umschalten der Wiederholungsschalteinheit 110 und das Erstellen der Datenverbindungen 105 wird von einem gebräuchlichen Prozessor 40 gesteuert. Zu diesem Zweck erhält der Prozessor 40 am besten eine Anweisung, die aus der Länge und dem Ort der zu wiederholenden Folge besteht, und der daraus die Information, wie die individuellen Bauelemente zu steuern sind, ableitet.
  • Die Speicherkapazität des Wiederholungsstartpuffers 100 wird am besten entsprechend der Latenzzeit des Speichers 10 gewählt, was bedeutet, daß der Wiederholungsstartpuffer 10 in einem Zeitraum, welcher der Latenzzeit des Speichers 10 entspricht, so viele Daten puffern kann, wie von dem Speicher 10 gelesen werden können (ohne Latenzzeit). In einer bevorzugten Ausführung wird die Speicherkapazität des Wiederholungsstartpuffers 100 entsprechend der maximalen Latenzzeit, die im Speicher 10 auftritt, ausgewählt. In diesem Fall kann der Wiederholungsstartpuffer 100 jede nur denkbare Situation in diesem Speicher 10 abdecken.
  • In anderen Worten, eine Wiederholungsoperation entsprechend dem ersten Grundsatz der Erfindung wird durch die Anwendung der folgenden Schritte ausgeführt:
  • (a) während des ersten Wiederholungszyklus:
  • Lesen der Daten, die direkt aus dem Speicher 10 gelesen werden sollen, und Puffern des Anfangs dieser Daten im Wiederholungsstartpuffer 100;
  • (b) während jedes nachfolgenden Wiederholungszyklus:
  • Lesen zuerst des gepufferten Anfangs der zu lesenden Daten aus dem Wiederholungsstartpuffer 100 und dann Lesen des Rests dieser Daten, die direkt aus dem Speicher 10 gelesen werden sollen.
  • 1.2 Schreib-Wiederholungsoperation
  • Die Pfeile in Abb. 2 zeigen die Richtung des Datenflusses für das Beispiel eines Lesezugriffs auf den Speicher 10 an. Obwohl im allgemeinen ein Schreibzugriff in einer Wiederholungsoperation nicht sehr sinnvoll erscheint, ist es offensichtlich, daß die Ausführung der Abb. 2 auch für einen Schreibzugriff benutzt werden kann, wobei der Datenfluß entgegengesetzt der Richtung wäre, wie sie mit den Pfeilen in Abb. 2 dargestellt wird.
  • 2. Sprung-Operationen
  • Abb. 3 zeigt eine Ausführung gemäß eines zweiten Grundsatzes der Erfindung, die eine verbesserte Datenzugriffszeit für Sprungoperationen zwischen verschiedenen Bereichen seriell gespeicherter Daten gewährt. Die Datenverbindung 105 gewährt Zugriff auf den Speicher 10 für einen ersten Datenpuffer 200a und einen zweiten Datenpuffer 200b. Um zu verdeutlichen, daß die Datenverbindung 105 Zugriff auf entweder den ersten Datenpuffer 200a oder den zweiten Datenpuffer 200b gewährt, wird die Datenverbindung 105 zu dem zweiten Datenpuffer 200b mit einer punktierten Linie dargestellt. Eine Sprungschalteinheit 210 ist mit dem ersten Datenpuffer 200a über eine Datenleitung 205a verbunden, mit dem zweiten Datenpuffer 200b über eine Datenleitung 205b und mit dem Prozessor 40 über eine Datenleitung 215. Die Pfeile in Abb. 3 zeigen wiederum die Richtung des Datenflusses für das Beispiels eines Lesezugriffs auf den Speicher 10 an.
  • Es versteht sich, daß aus Gründen, die später erklärt werden, eine Datengeschwindigkeit auf den Datenleitungen 205a und 205b gewählt werden muß, die geringer ist als eine Datengeschwindigkeit auf der Datenverbindung 105. Das bedeutet, daß ein Datentransport zwischen dem Speicher 10 und den Datenpuffern 200a und 200b schneller sein wird als ein Datentransport zwischen den Datenpuffern 200a und 200b und dem Prozessor 40. Anders ausgedrückt werden im Falle eines Lesezugriffs auf den Speicher 10 die Datenpuffer 200a und 200b schneller vom Speicher 10 "gefüllt" als sie vom Prozessor 40 ausgelesen werden. Im Falle eines Schreibzugriffs auf den Speicher 10 werden die Datenpuffer (200a und 200b) vom Prozessor 40 langsamer "gefüllt" als sie in den Speicher 10 geschrieben werden.
  • 2.1 Lese-Sprungoperation
  • Zuerst wird ein Lesezugriff auf den Speicher 10, der eine Sprungoperation zwischen zwei verschiedenen Bereichen seriell gespeicherter Daten, z. B. den Datenbereichen 20 und 30 umfaßt, beschrieben. Zu Beginn des Lesezugriffs erstellt der Prozessor 40 die Datenverbindung 105, um auf den ersten Bereich seriell gespeicherter Daten zuzugreifen, z. B. Datenbereich 20 am Datenblock 20a. Die Daten, die aus dem ersten Bereich seriell gespeicherter Daten ausgelesen wurden, werden durch den ersten Datenpuffer 200a gepuffert. Die Sprungschalteinheit 210 ist bereit, die Datenleitung 205a zur Datenleitung 215 umzuschalten. Der Prozessor 40 beginnt mit dem Auslesen des ersten Datenpuffers 200a über die Datenleitungen 205a und 215, wie oben jedoch schon hervorgehoben wurde, mit einer geringeren Datengeschwindigkeit als die Datengeschwindigkeit für das Auslesen aus dem Speichers 10. Das bedeutet, daß der erste Datenpuffer 200a schneller "gefüllt" als ausgelesen wird.
  • Sobald der erste Datenpuffer 200a vollständig "gefüllt" ist, ist die Datenverbindung 105 inaktiv, da keine weiteren Daten vom ersten Datenpuffer 200a mehr gepuffert werden können. Der Prozessor 40 erstellt jetzt die Datenverbindung 105, um auf den zweiten Bereich von seriell gespeicherten Daten zuzugreifen, z. B. den Datenbereich 30 am Datenblock 30a, und der zweite Datenpuffer 200b beginnt mit dem Puffern der Daten aus dem zweiten Bereich seriell gespeicherter Daten. Wenn der Prozessor 40 "erkennt", daß der erste Datenpuffer 200a "leer" wird, das heißt, daß die Zeit zum Auslesen der restlichen im ersten Datenpuffer 200a gepufferten Daten in etwa oder gleich der Latenzzeit des Speichers 10 ist, erstellt der Mikroprozessor 40 die Datenverbindung 105, um wiederum auf den ersten Bereich der seriell gespeicherten Daten zuzugreifen, diesmal jedoch auf die Datenadresse, die auf die zuletzt ausgelesenen Daten des ersten Bereichs seriell gespeicherter Daten folgt, und weitere Daten, z. B. dem Datenbereich 20, können in dem ersten Datenpuffer 200a gepuffert werden.
  • Im obigen Beispiel soll der erster Datenpuffer komplett mit dem ersten Datenblock 20a gefüllt" sein und die Datenverbindung 105 wird inaktiv, da keine weiteren Daten mehr durch den ersten Datenpuffer 200a gepuffert werden können. Der Prozessor 40 erstellt jetzt die Datenverbindung 105, um auf den Datenbereich 30 am Datenblock 30a zuzugreifen, und der zweite Datenpuffer 200b beginnt mit dem Puffern des Datenblocks 30a, so daß schließlich der Datenblock 30a im zweiten Datenpuffer 200b gepuffert wird. Wenn der Prozessor 40 "erkennt, daß der erste Datenpuffer 200a "leer" wird, erstellt der Prozessor 40 die Datenverbindung 105, um erneut Zugang zum ersten Bereich seriell gespeicherter Daten zu erhalten, diesmal jedoch am Datenblock 20b.
  • Sobald der Prozessor 40 eine Sprungoperation zum zweiten Bereich seriell gespeicherter Daten benötigt, der Anfang des zweiten Bereichs seriell gespeicherter Daten ist bereits im zweiten Datenpuffer 200b gepuffert und kann unverzüglich daraus ausgelesen werden ohne daß eine zusätzliche Latenzzeit benötigt wird. Der Prozessor 40 erstellt eine Datenverbindung 105 in den zweiten Bereich seriell gespeicherter Daten auf die erste Adresse, die auf die in den zweiten Datenpuffer 200b gepufferten Daten folgt.
  • Es ist offensichtlich, daß die Menge an gepufferten Daten im zweiten Datenpuffer 200b von der Größe des zweiten Datenpuffers 200b, einer "Leerlaufzeit", d. h. der Zeit zwischen aufeinanderfolgenden Pufferzyklen des ersten Datenpuffers 200a, und von der Latenzzeit des Speichers 10 abhängt. Für den Fall, daß die Leerlaufzeit nicht ausreichend ist, damit der zweite Datenpuffer 200b mit dem Puffern beginnen kann, wird der Prozessor 40 vorzugsweise die Datenverbindung 105 zum ersten Bereich seriell gespeicherter Daten aufrecht erhalten. Für den Fall, daß es überhaupt keine Leerlaufzeit gibt, bevor ein Sprung angefordert wird, ist es offensichtlich, daß der zweite Datenpuffer 200b vor dem Springen nicht aufgefüllt werden kann. Für dem Fall, daß die Leerlaufzeit größer ist als die Zeit, um den zweiten Datenpuffer 200b zu "füllen", wird der Prozessor 40 vorzugsweise die Datenverbindung 105 zurück auf den ersten Bereich seriell gespeicherter Daten direkt nach dem "Füllen" des zweiten Datenpuffers 200b erstellen.
  • Weiteres Springen zwischen den Bereichen seriell gespeicherter Daten wird entsprechend durchgeführt, wobei in Abhängigkeit vom "Füllzustand" des jeweiligen Datenpuffers 200, die Leerlaufzeit der Datenverbindung 105 zu einem der beiden Datenpuffer 200 zum weiteren Puffern des anderen Datenpuffers 200 vor dem Sprung verwendet werden kann.
  • Anders ausgedrückt wird eine Sprung-Operation gemäß des zweiten Grundsatzes der Erfindung durch die Anwendung der folgenden Schritte ausgeführt:
  • (a) vor dem Sprung von einem ersten Bereich seriell gespeicherter Daten zu einem zweiten Bereich seriell gespeicherter Daten:
  • Puffern der vom ersten Bereich seriell gespeicherter Daten im ersten Datenpuffer 200a zu lesenden Daten und das Auslesen daraus und
  • während der Leerlaufzeit der Datenverbindung 105 Puffern eines Anfangs der aus dem zweiten Bereich seriell gespeicherter Daten im zweiten Datenpuffer 200b zu lesenden Daten;
  • (b) nach dem Sprung von dem ersten Bereich seriell gespeicherter Daten zum zweiten Bereich seriell gespeicherter Daten:
  • Auslesen des gepufferten Anfangs der aus dem zweiten Bereich seriell gespeicherter Daten aus dem zweiten Datenpuffer 200b zu lesenden Daten,
  • Erstellen der Datenverbindung 105 in den zweiten Bereich seriell gespeicherter Daten auf die erste Adresse nach der in den zweiten Datenpuffer 200b gepufferten Daten und Puffern der weiteren aus dem zweiten Bereich seriell gespeicherter Daten im zweiten Datenpuffer 200b zu lesenden Daten und das Auslesen daraus und
  • - falls erforderlich - während der Leerlaufzeit der Datenverbindung 105, Puffern eines Anfangs von nacheinander zu lesenden Daten nach einer nachfolgenden Sprung-Operation in dem ersten Datenpuffer 200a.
  • Für den Fall, daß ein Sprung zwischen mehr als zwei Bereichen seriell gespeicherter Daten erfolgen muß, kann eine Vielzahl an Datenpuffern 200i, mit i = 1 ... n, bereitgestellt werden, um die Zugriffszeit für Sprungoperationen zwischen den maximal n verschiedenen Bereichen seriell gespeicherter Daten zu reduzieren.
  • 2.2 Schreib-Sprungoperation
  • Die Pfeile in Abb. 3 zeigen die Richtung des Datenflusses für das Beispiel eines Lesezugriffs auf den Speicher 10. Ein Schreibzugriff in einer Sprungoperation kann entsprechend dem oben beschriebenen Lesezugriff erreicht werden. Für den Fall eines Schreibzugriffs wäre der Datenfluß jedoch entgegengesetzt der Richtung wie sie durch die Pfeile in Abb. 3 dargestellt ist. Der Datenfluß in Richtung des Speichers 10 könnte des weiteren durch jedes gebräuchliche Mittel, wie z. B. durch Multiplexer, gesteuert und geführt werden.
  • 3. Gemischte Sprung- und Wiederholungsoperationen
  • Abb. 4a, 4b und 4c zeigen Ausführungen, die einen verbesserten Datenzugriff für Sprungoperationen zwischen verschiedenen Bereichen seriell gespeicherter Daten und/oder für Wiederholungsoperationen gewähren. Die Ausführungen der Abb. 4a, 4b und 4c umfassen die Elemente der Ausführungen der Abb. 2 und 3, manche Elemente sind jedoch verdoppelt, um die Sprung- und Wiederholungsfunktionalitäten für beide,,Kanäle" umzusetzen. Abb. 5 zeigt eine Ausführung, welche die verbesserte Datenzugriffszeit sowohl für die Sprungoperationen zwischen verschiedenen Bereichen seriell gespeicherter Daten als auch für die Wiederholungsoperationen für eine Vielzahl von a ... n Kanälen gewährt. Jeder Kanal i, mit i = a ... n, umfaßt einen Datenpuffer 200i, der über die Datenverbindung 105 mit einem zugehörigen Datenbereich i des Speichers 10 verbunden werden kann und mit der Datenleitung 205i mit einem Wiederholungsstartpuffer 100i und einer Wiederholungsschalteinheit 110i verbunden ist. Die Wiederholungsschalteinheit 110i ist über eine Datenleitung 115i mit dem Wiederholungsstartpuffer 100i und über eine Datenleitung 120i mit der Sprungschalteinheit 210 verbunden. Alle anderen Merkmale und Verbindungen sind entsprechend den Abb. 2 und 3.
  • Die Funktionsweise der Ausführungen der Abb. 4a, 4b und 5 ist entsprechend dem oben Gesagten und ermöglicht verbesserte Datenzugriffszeiten für Sprungoperationen, Wiederholungsoperationen und/oder kombinierte Sprung- und Wiederholungsoperationen. In der Ausführung der Abb. 4a wird die Pufferfunktion der Datenpuffer 200a, b gemäß Abb. 3 durch die Wiederholungsstartpuffer 100a,b gewährt, um Sprung- und/oder Wiederholungsoperationen zu unterstützen (auf die entsprechenden Elemente wird deshalb als Datenpuffer 100a/200a und 100b/200b Bezug genommen, da sie funktionell gleich sind). Die Ausführung der Abb. 4b erlaubt auf einem "Kanal" a (mit Bezugsnummern a) Sprung- und/oder Wiederholungsoperationen zu unterstützen, wohingegen der "Kanal b" (mit Bezugsnummern b) nur die Unterstützung von Sprungoperationen erlaubt. In der Ausführung der Abb. 4c - und dementsprechend in Abb. 5 - sind alle Kanäle (a, b, ..., n) symmetrisch aufgebaut und erlauben eine Unterstützung von Sprung = und/oder Wiederholungsoperationen. Es versteht sich, daß die Struktur einer spezifischen Ausführung von den spezifischen Anforderungen abhängt und Kanäle zur Unterstützung von Sprung- und/oder Wiederholungsoperationen und/oder Kanäle zur Unterstützung von allein Sprungoperationen oder Wiederholungsoperationen umfassen könnte.
  • Ein Beispiel für einen Lesezugriff auf den Speicher 10, der in der Ausführung der Abb. 4c Sprung- und Wiederholungsoperationen umfaßt, wird im folgenden dargestellt, wobei das Beispiel auch einem Schreibzugriff entsprechend gegeben werden könnte. Es soll eine Datenfolge gelesen werden, die aus den Datenblöcken a) 3x 20a-20b-20c; b) 2x 20a-20b-30a-30b; c) 3X 20b-30b-20c besteht. Der Beitrag der Erfindung in Bezug auf die Reduzierung der Zugriffszeit wird für jeden Zugriffschritt angezeigt, z. B. durch (-1LT), was bedeutet, daß in diesem Zugriffsschritt das Auftreten der Latenzzeit (LT = latency time) vermieden wurde. In diesem Beispiel ist die Zeit, die benötigt wird, um auf einen der Datenblöcke zuzugreifen, gleich der Latenzzeit und die Speicherkapazität der Puffer 100 und 200 gleich einem Datenblock.
  • a) 3x 20a-20b-20c. Zuerst erstellt der Prozessor 40 die Datenverbindung 105 auf den Datenblock 20a, der im ersten Datenpuffer 200a gepuffert ist und schließlich über die Datenleitung 205a zu dem Wiederholungsstartpuffer 100a gesandt und dort gepuffert wird. Die Wiederholungsschalteinheit 110a schaltet die Datenleitung 205a auf die Datenleitung 120a um und der Sprungschaltpuffer 210 schaltet die Datenleitung 120a über die Datenleitung 215 auf den Prozessor um. Die aufeinanderfolgenden Datenblöcke 20b und 20c werden analog gelesen, jedoch ist nur der erste Datenblock 20a von dieser Wiederholungsoperation in dem Wiederholungsstartpuffer 100a gepuffert. Wenn im ersten Wiederholungszyklus der Datenblock 20c gelesen wird, schaltet die Wiederholungsschalteinheit 110a die Datenleitung 115a und somit den Wiederholungsstartpuffer 100a auf die Datenleitung 120a um (-1LT). Der Prozessor 40 erstellt die Datenverbindung 105 auf den Datenblock 20b. Wenn auf den Datenblock 20b zugegriffen wird (nach der Latenzzeit) und damit begonnen wird, in den ersten Datenpuffer 200a gepuffert zu werden, schaltet die Wiederholungsschalteinheit 110a wiederum die Datenleitung 205a auf die Datenleitung 120a um, und die Datenblöcke 20b und 20c des zweiten Wiederholungszyklus werden aus dem ersten Datenpuffer 200a gelesen. Der dritte Wiederholungszyklus wird analog zum zweiten Wiederholungszyklus ausgeführt (-1LT).
  • b) 2x 20a-20b-30a-30b. Da der Anfang (20a) der teilweisen Sprungfolge 20a- 20b-20c bereits im Wiederholungsstartpuffer 100a gepuffert ist, schaltet die Wiederholungsschalteinheit 110a die Datenleitung 115a und somit den Wiederholungsstartpuffer 100a auf die Datenleitung 120a um (-1LT). Der Prozessor 40 setzt die Datenverbindung 105 auf den Datenblock 20b. Wenn auf den Datenblock 20b zugegriffen wird (nach der Latenzzeit) und damit begonnen wird, in den ersten Datenpuffer 200a gepuffert zu werden, schaltet die Wiederholungsschalteinheit 110a wiederum die Datenleitung 205a auf die Datenleitung 120a um, und die Datenblöcke 20b und 20c werden aus dem ersten Datenpuffer 200a gelesen. Es wird davon ausgegangen, daß während des Pufferns der Datenblöcke 20b und 20c im ersten Datenpuffer eine Leerlaufzeit der Datenverbindung 105 schon dazu verwendet wird, den Datenblock 30a in den zweiten Datenpuffer 200b zu puffern. Da die Sprungteilfolge 30a-30b wiederholt werden wird, wird der Datenblock 30a als deren Anfang ebenfalls in dem Wiederholungsstartpuffer 100b gepuffert werden. Nachdem der Datenblock 20c gelesen wurde, schaltet die Wiederholungsschalteinheit 110b die Datenleitung 205b auf die Datenleitung 120b um, und der Sprungschaltpuffer 210 schaltet die Datenleitung 120b über die Datenleitung 215 auf den Prozessor 40 um, so daß der Datenblock 30a aus dem zweiten Datenpuffer 200b gelesen werden kann (-1LT). Gleichzeitig wird die Datenverbindung 105 erstellt, um auf den Datenblock 30b zuzugreifen, der nach der Latenzzeit aus dem zweiten Datenpuffer 200b ausgelesen wird. Da jedoch die Zeit für das Auslesen des Datenblocks 30a aus dem zweiten Datenpuffer 200b größer als die Latenzzeit ist, wird der Datenblock 30b sofort nach dem Auslesen des Datenblocks 30a im zweiten Datenpuffer 200b verfügbar sein, so daß keine Zeitverzögerung zwischen den Datenblöcken 30a und 30b auftritt (-1LT). Nachdem der Datenblock 30a gelesen wurde, muß die Sprungfolge wiederholt werden. Der Datenblock 20a wird aus dem Wiederholungsstartpuffer 100a ausgelesen (-1LT) und die Datenblöcke 20b und 20c direkt aus dem Speicher 10 (über den ersten Datenpuffer 200a). Der Datenblock 30a wird aus dem Wiederholungsstartpuffer 100b (-1LT) ausgelesen und die Datenblöcke 30b direkt aus dem Speicher 10 (über den ersten Datenpuffer 200b).
  • c) 3X 20b-30b-20c. Während des Auslesens des Datenblocks 30a-30b der vorhergehenden Folge wird eine Leerlaufzeit der Datenverbindung 105 schon zum Puffern des Datenblocks 20b in dem ersten Datenpuffer 200a verwendet. Da der Datenblock 20b auch den Anfang dieser Sequenz repräsentiert, wird der Datenblock 20b (ebenfalls) in dem Wiederholungsstartpuffer 100a gepuffert werden. Der Datenblock 20b kann somit ausgelesen werden (-1LT) entweder aus dem ersten Datenpuffer 200a oder aus dem Wiederholungsstartpuffer 200a, jeweils abhängig davon, ob er entweder ausschließlich im ersten Datenpuffer 200a oder dem Wiederholungsstartpuffer 100a oder in beiden gepuffert ist. Gleichzeitig wird die Datenverbindung 105 auf den Datenblock 30b erstellt, der dann im zweiten Datenpuffer 200b gepuffert wird, so daß, nach dem Lesen des Datenblocks 20b, der Datenblock 30b aus dem zweiten Datenpuffer 200b ausgelesen werden kann (-1LT). Während des Auslesens des Datenblocks 30b wird eine Leerlaufzeit der Datenverbindung 105 schon zum Puffern des Datenblocks 20c im ersten Datenpuffer 200a verwendet, so daß der Datenblock 20c aus dem ersten Datenpuffer 200a ausgelesen werden kann (-1LT). Das Auslesen der beiden nächsten Wiederholungszyklen der Folge c) wird durch das Auslesen des Datenblocks 20b aus dem Wiederholungsstartpuffer 100a, des Datenblocks 30b aus dem zweiten Datenpuffer 200b und des Datenblocks 20c aus dem ersten Datenpuffer 200a erreicht
  • (insgesamt: 2x-3LT).
  • In dem beschriebenen Beispiel wurde die Zugriffszeit um 16 Latenzzeit-Einheiten für einen Zugriff auf insgesamt 26 Datenblöcke verringert. Es ist offensichtlich, daß die Reduzierung der Zugriffszeit von der konkreten Struktur der Daten, auf die zugegriffen werden soll, abhängt. Es ist offensichtlich, daß die gegebenen Beispiele entsprechend auch auf Schreibzugriffe oder kombinierte Lese- und Schreibzugriffe angewandt werden kann.
  • Es versteht sich, daß des Puffern von Daten, so wie es oben dargestellt wurde, auch ein Zwischenpuffern von solchen Daten umfassen kann, die während einer Folge ausgelesen und während einer anderen Folge benötigt werden. Es ist jedoch offensichtlich, daß ein solches Zwischenpuffern nur dann möglich ist, für den Fall, daß der entsprechende Puffer nicht vor dem Auslesen der zwischengepufferten Daten benötigt wird. So hätte z. B. in der obigen Folge c) der erste Datenblock 20b schon unverzüglich in den Wiederholungsstartpuffer 100a während des Auslesens des Datenblocks 20b der vorhergehenden Folge b) gepuffert werden können.
  • Die Wiederholungsstartpuffer 100 und die Datenpuffer 200 können durch jede gebräuchliche Puffermöglichkeit realisiert werden, die eine (nahe) null gelegene oder wenigstens reduzierte Latenzzeit aufweisen, wie z. B. ein SRAM, Latch- oder Registerdateien. Die Wiederholungsstartpuffer 100 werden vorzugsweise als RAM ausgeführt, wohingegen die Datenpuffer 200 vorzugsweise als FlFO- (first in, first out) Speicher ausgeführt werden.
  • Die Wiederholungsschalteinheiten 110 und die Sprungschalteinheit 210 kann durch jede gebräuchliche Schalteinheit realisiert werden, z. B. als ein Multiplexer. Der Prozessor kann durch jeden gebräuchlichen Prozessor realisiert werden.
  • Der Speicher 10 kann durch jeden gebräuchlichen Speicher oder Hauptspeicher realisiert werden, z. B. als SDRAM, RDRAM, DRAM oder einen Plattenspeicher.
  • Die Datenleitungen 115, 205, 120 und 215 können durch jede gebräuchliche Verbindungsmöglichkeit realisiert werden, wie z. B. als Bus, Einfachleitung, Kommunikationskanäle mit oder ohne Zugriffsprotokoll oder ähnlichem.

Claims (12)

1. Vorrichtung (Abb. 2) zum Zugriff auf eine Speichermöglichkeit (10), bestehend aus:
einem Wiederholungsstartpuffer (100), der mit der Speichermöglichkeit (10) verbunden werden kann, zum gleichzeitigen Puffern eines Anfangs einer Datenfolge, auf die wiederholt zugegriffen werden soll, während auf die Datenfolge zum ersten Mal in dem Wiederholungszugriff zugegriffen wird;
einer Wiederholungsschalteinheit (110), die mit Speichermöglichkeit (10) verbunden werden kann und verbunden ist mit dem Wiederholungsstartpuffer (100), zum Umschalten zwischen der Speichermöglichkeit (10) und dem Wiederholungsstartpuffer (100), wobei die Wiederholungsschalteinheit (110) auf den Wiederholungsstartpuffer umgeschaltet werden kann, um auf den gepufferten Anfang der Datenfolge, auf die wiederholt zugegriffen werden soll, zuzugreifen.
2. Vorrichtung gemäß Anspruch 1, worin die Speicherkapazität des Wiederholungsstartpuffers (100) entsprechend der Latenzzeit der Speichermöglichkeit (10) ausgewählt wird.
3. Vorrichtung (Abb. 3) zum Zugriff auf eine Speichermöglichkeit (10), bestehend aus:
einem erstem Datenpuffer (200a) und einem zweiten Datenpuffer (200b), von denen jeder mit der Speichermöglichkeit (10) verbunden werden kann und die dem Puffern der Datenfolgen dienen,
einer Sprungschalteinheit (210), verbunden mit dem ersten Datenpuffer (200a) und dem zweiten Datenpuffer (200b), zum Umschalten zwischen dem ersten Datenpuffer (200a) und dem zweiten Datenpuffer (200b), wobei die Speichermöglichkeit (10) zum Puffern eines Anfangs einer Datenfolge, auf die aufeinanderfolgend zugegriffen werden soll, für jeden der Datenpuffer (200a,b) während einer Leerlaufzeit des jeweils anderen der Datenpuffer (200a,b) zugreifbar ist.
4. Vorrichtung (Abb. 4a) gemäß Anspruch 3, des weiteren bestehend aus:
einer ersten Wiederholungsschalteinheit (110a), die mit dem ersten Datenpuffer (100a1200a) verbunden ist und die mit der Speichermöglichkeit (10) verbunden werden kann, zum Umschalten zwischen dem ersten Datenpuffer (100a/200a) und der Speichermöglichkeit (10),
einer zweiten Wiederholungsschalteinheit (110b), die mit dem zweiten Datenpuffer (100b/200b) verbunden ist und die mit der Speichermöglichkeit (10) verbunden werden kann, zum Umschalten zwischen dem zweiten Datenpuffer (100b/200b) und der Speichermöglichkeit (10),
wobei der erste Datenpuffer (100a/200a) und der zweite Datenpuffer (100b/200b) entsprechend angepaßt sind, um den Anfang einer Datenfolge, auf die wiederholt zugegriffen werden soll, zu puffern;
der Sprung-Schalteinheit (210), die mit der ersten Wiederholungsschalteinheit (110a) und der zweiten Wiederholungsschalteinheit (110b) verbunden ist, zum Umschalten zwischen den beiden.
5. Vorrichtung (Abb. 4b) gemäß Anspruch 3, des weiteren bestehend aus:
einem erstem Wiederholungsstartpuffer (100a), verbunden mit dem ersten Datenpuffer (200a) zum Puffern eines Anfangs einer Datenfolge, auf die wiederholt zugegriffen werden soll und einer ersten Wiederholungsschalteinheit (110a), die mit dem ersten Datenpuffer (200a) und dem ersten Wiederholungsstartpuffer (100a) verbunden ist, zum Umschalten zwischen dem ersten Datenpuffer (200a) und dem ersten Wiederhofungsstartpuffer (100a), wobei die erste Wiederholungsschalteinheit (110a) zum Zugriff auf den gepufferten Anfang einer Datenfolge, auf die wiederholt zugegriffen werden soll, auf den ersten Wiederholungsstartpuffer (100a) umschaltbar ist.
6. Vorrichtung (Abb. 4c) gemäß Anspruch 4, des weiteren bestehend aus:
einem zweiten Wiederholungsstartpuffer (100b), verbunden mit dem zweiten Wiederholungsstartpuffer (100b), zum Puffern eines weiteren Anfangs einer Datenfolge, auf die wiederholt zugegriffen werden soll;
einer zweiten Wiederholungsschalteinheit (110b), die mit dem zweiten Datenpuffer (200b) und dem zweiten Wiederholungsstartpuffer (100b) verbunden ist, zum Umschalten zwischen dem zweiten Datenpuffer (200b) und dem zweiten Wiederholungsstartpuffer (100b), wobei die zweite Wiederholungsschalteinheit (110b) zum Zugriff auf den anderen gepufferten Anfang der Datenfolge, auf die wiederholt zugegriffen werden soll, auf den zweiten Wiederholungsstartpuffer (100b) umschaltbar ist.
7. Vorrichtung gemäß Anspruch 3 oder 4, worin ein Datentransport zwischen der Speichermöglichkeit (10) und dem ersten und zweiten Datenpuffern (200a,b) schneller ist als ein Datentransport zwischen dem ersten und dem zweiten Datenpuffer (200a,b) und der Sprungschalteinheit (210).
8. Gebrauch der Vorrichtung gemäß Anspruch 1 oder 3 in einer Testumgebung und vorzugsweise in einem IC-Tester.
9. Methode zum wiederholten Zugriff auf eine Speichermöglichkeit (10) zum Lesen und/oder Schreiben einer Datenfolge, wobei die Methode die folgenden Schritte umfaßt:
(a) während eines ersten Zugriffszyklus:
(a1) Zugriff auf die Speichermöglichkeit (10) und
(a2) gleichzeitiges Puffern eines Anfangs einer Datenfolge in einem Wiederholungsstartpuffer (100);
(b) während jedem nachfolgenden Zugriffszyklus:
(b1) Zugriff zuerst auf den gepufferten Anfang der Datenfolge vom Wiederholungsstartpuffer (100),
(b2) Erstellen einer Datenverbindung zur Speichermöglichkeit (10) an einer Adresse, die auf die gepufferte Datenfolge folgt und
(b3) anschließend Zugriff auf weitere Daten von der Speichermöglichkeit (10).
10. Methode zum Zugriff auf verschiedene Speicherbereiche in einer Speichermöglichkeit (10), wobei die Methode die folgenden Schritte umfaßt:
(a) Lesen oder Schreiben einer ersten Datenfolge von oder für einen ersten Bereich (20) unter Benutzung einer Datenverbindung (105);
(b) Puffern eines Anfangs einer zweiten Datenfolge von oder für einen zweiten Bereich (30) während einer Leerlaufzeit der Datenverbindung (105) in einem ersten Datenpuffer (200b) und
(c) nach Sprung zum zweiten Bereich (30):
(c1) Auslesen des gepufferten Anfangs der zweiten Datenfolge aus dem ersten Datenpuffer (200b),
(c2) Erstellen der Datenverbindung (105) in dem zweiten Bereich (30) auf einer Adresse, die auf die in dem ersten Datenpuffer (200b) gepufferten Datenfolge folgt und
(c3) Lesen oder Schreiben weiterer Daten der zweiten Datenfolge von oder für den zweiten Bereich (30) unter Benutzung der Datenverbindung (105).
11. Methode gemäß Anspruch 10, worin der Schritt (a) die folgenden Schritte umfaßt:
(a1) Puffern der ersten Datenfolge in einem zweiten Datenpuffer (200a) und
(a2) Lesen oder Schreiben der ersten Datenfolge von dem zweiten Datenpuffer (200a).
12. Methode gemäß Anspruch 10 oder 11, die auf den Schritt (c3) folgend des weiteren einen Schritt umfaßt:
(c4) Puffern eines Anfangs einer nachfolgenden Datenfolge von oder für einen anderen Bereich während einer Leerlaufzeit der Datenverbindung (105) in dem zweiten Datenpuffer (200a).
DE69700328T 1997-09-13 1997-09-13 Ausgleich von Latenzzeit in einem Speicher Expired - Fee Related DE69700328T2 (de)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
EP97115982A EP0864977B1 (de) 1997-09-13 1997-09-13 Ausgleich von Latenzzeit in einem Speicher

Publications (2)

Publication Number Publication Date
DE69700328D1 DE69700328D1 (de) 1999-08-19
DE69700328T2 true DE69700328T2 (de) 1999-11-04

Family

ID=8227349

Family Applications (1)

Application Number Title Priority Date Filing Date
DE69700328T Expired - Fee Related DE69700328T2 (de) 1997-09-13 1997-09-13 Ausgleich von Latenzzeit in einem Speicher

Country Status (4)

Country Link
US (1) US6351793B2 (de)
EP (1) EP0864977B1 (de)
JP (1) JPH11134242A (de)
DE (1) DE69700328T2 (de)

Families Citing this family (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR2829253A1 (fr) * 2001-08-31 2003-03-07 Koninkl Philips Electronics Nv Controle d'acces dynamique d'une fonction a ressource collective
DE10159165B4 (de) * 2001-12-03 2007-02-08 Agilent Technologies, Inc. (n.d.Ges.d.Staates Delaware), Palo Alto Vorrichtung zum Messen und/oder Kalibrieren eines Testkopfes
DE60131067T2 (de) 2001-12-05 2008-05-15 Verigy (Singapore) Pte. Ltd. Leitungsentzerrer zur Kompensation von Droop-Effekten
EP1351067B1 (de) 2003-02-25 2004-11-10 Agilent Technologies Inc Aufspüren eines Signalübergangs
US7104346B2 (en) * 2003-03-25 2006-09-12 Schaffner Walter E Power wheelchair
DE60308844T2 (de) 2003-06-17 2007-03-01 Agilent Technologies, Inc., Palo Alto Sigma-Delta-Modulator mit Pulsbreitenmodulations-Ausgang
EP1600784A1 (de) 2004-05-03 2005-11-30 Agilent Technologies, Inc. Serielle/parallele Schnittstelle für einen Tester für integrierte Schaltkreise
DE602004017440D1 (de) 2004-06-24 2008-12-11 Verigy Pte Ltd Singapore Schnelle Synchronisierung einem Anzahl von digitale Takten
EP1610137B1 (de) 2004-06-24 2009-05-20 Verigy (Singapore) Pte. Ltd. Taktsynthese pro Stift
ATE441120T1 (de) 2004-07-07 2009-09-15 Verigy Pte Ltd Singapore Auswertung eines ausgangssignals eines gerade geprüften bausteins
EP1624577B1 (de) 2004-08-06 2008-07-23 Verigy (Singapore) Pte. Ltd. Verbesserte Analogsignalerzeugung mittels eines Delta-Sigma Modulators
WO2006092173A1 (en) 2005-03-02 2006-09-08 Agilent Technologies, Inc. Analog signal test using a-priori information
EP1701173B1 (de) 2005-03-11 2008-08-20 Verigy (Singapore) Pte. Ltd. Fehlererkennung in komprimierten Daten
WO2006117255A1 (en) 2005-04-29 2006-11-09 Verigy (Singapore) Pte Ltd. Communication circuit for a bi-directonal data transmission
US8838406B2 (en) 2008-11-11 2014-09-16 Advantest (Singapore) Pte Ltd Re-configurable test circuit, method for operating an automated test equipment, apparatus, method and computer program for setting up an automated test equipment
JP5873275B2 (ja) * 2011-09-12 2016-03-01 キヤノン株式会社 描画装置及び物品の製造方法

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS5847741B2 (ja) * 1978-03-29 1983-10-24 日本電信電話株式会社 パタ−ン発生器
CA1251575A (en) * 1985-12-18 1989-03-21 A. Keith Jeffrey Automatic test system having a "true tester-per-pin" architecture
US5317718A (en) * 1990-03-27 1994-05-31 Digital Equipment Corporation Data processing system and method with prefetch buffers
JPH07253922A (ja) * 1994-03-14 1995-10-03 Texas Instr Japan Ltd アドレス生成回路
US5890207A (en) * 1996-11-27 1999-03-30 Emc Corporation High performance integrated cached storage device
US5890219A (en) * 1996-11-27 1999-03-30 Emc Corporation Redundant writing of data to cached storage system
US6112266A (en) * 1998-01-22 2000-08-29 Pc-Tel, Inc. Host signal processing modem using a software circular buffer in system memory and direct transfers of samples to maintain a communication signal

Also Published As

Publication number Publication date
EP0864977A1 (de) 1998-09-16
US20010013092A1 (en) 2001-08-09
EP0864977B1 (de) 1999-07-14
US6351793B2 (en) 2002-02-26
JPH11134242A (ja) 1999-05-21
DE69700328D1 (de) 1999-08-19

Similar Documents

Publication Publication Date Title
DE69700328T2 (de) Ausgleich von Latenzzeit in einem Speicher
DE69021594T2 (de) Hochgeschwindigkeitsdatenübertragung auf einem Rechnersystembus.
DE1966633C3 (de) Datenverarbeitungsanlage mit überlappter Arbeitsweise bei Verwendung eines Haupt- und Pufferspeichers
DE69124905T2 (de) Datenverarbeitungsvorrichtung zur dynamischen Zeiteinstellung in einem dynamischen Speichersystem
DE4305442C2 (de) Verfahren und Vorrichtung zum Erzeugen eines Testvektors
DE68920419T2 (de) Verfahren und Anordnung für eine leistungsfähige DRAM-Steuerung.
DE69125438T2 (de) Ablaufsteuerung für automatische Testeinrichtung
DE69025524T2 (de) Vorrichtung und Verfahren zur Steuerung von Speicherzugriffsanforderungen in einem digitalen Datenverarbeitungssystem
DE4206286C2 (de) Speicherzugriffssystem und Verfahren zum Ausgeben eines digitalen Datenstromes
DE69120765T2 (de) Verfahren zum Datentransfer zu oder von Vorrichtungen über eine Boundary-Scan-Test-Schnittstelle
DE10150321A1 (de) Verfahren und Vorrichtung zum Testen von integrierten Schaltungen
DE3743114A1 (de) Schnittstelleneinheit und verfahren zum schaffen einer schnittstelle zwischen analogen eingangssignalen und einem digitalen systembus
DE3015875A1 (de) Speicherzugriffssystem und verfahren fuer einen zugriff zu einem digitalen speichersystem
DE69131917T2 (de) Cache-Speicher mit rekonfigurierbarer Blocklänge und Verfahren dafür
DE3900248C2 (de) Verfahren zur schnellen Ablaufsteuerung digitaler Testmuster und Vorrichtung zur Durchführung des Verfahrens
DE3689414T2 (de) Automatisches Prüfsystem mit "wahrem Prüfer-per-Anschluss" -Architektur.
DE69616909T2 (de) Analog-Digital-Wandler, Dezimierung und Speichersystem
DE2432608A1 (de) Speicheranordnung fuer datenverarbeitungseinrichtungen
DE3788855T2 (de) Modulareingerichteter Speicherprüfer.
DE69524315T2 (de) Speicherarchitektur für eine automatische Testeinrichtung mit Vektormodultabelle
DE60108551T2 (de) Digitales Speicheroszilloskop
DE69330587T2 (de) Digitalsignalverarbeitungssystem
DE69224559T2 (de) Halbleiterspeicher
DE4114053A1 (de) Computersystem mit cachespeicher
DE69032490T2 (de) Datenspeichersystem und dessen Betriebsverfahren

Legal Events

Date Code Title Description
8364 No opposition during term of opposition
8327 Change in the person/name/address of the patent owner

Owner name: AGILENT TECHNOLOGIES, INC. (N.D.GES.D.STAATES DELA

8328 Change in the person/name/address of the agent

Representative=s name: SCHOPPE, ZIMMERMANN, STOECKELER & ZINKLER, 82049 PU

8327 Change in the person/name/address of the patent owner

Owner name: VERIGY (SINGAPORE) PTE. LTD., SINGAPORE, SG

8339 Ceased/non-payment of the annual fee