DE19729180C2 - Verfahren zum Korrelieren von Logikanalysatorzustandserfassungsdaten mit zugeordneten Anwendungsdatenstrukturen - Google Patents
Verfahren zum Korrelieren von Logikanalysatorzustandserfassungsdaten mit zugeordneten AnwendungsdatenstrukturenInfo
- Publication number
- DE19729180C2 DE19729180C2 DE19729180A DE19729180A DE19729180C2 DE 19729180 C2 DE19729180 C2 DE 19729180C2 DE 19729180 A DE19729180 A DE 19729180A DE 19729180 A DE19729180 A DE 19729180A DE 19729180 C2 DE19729180 C2 DE 19729180C2
- Authority
- DE
- Germany
- Prior art keywords
- buffer
- data
- buffers
- identified
- state logic
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/32—Monitoring with visual or acoustical indication of the functioning of the machine
- G06F11/321—Display for diagnostics, e.g. diagnostic result display, self-test user interface
- G06F11/322—Display of waveforms, e.g. of logic analysers
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Human Computer Interaction (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
- Test And Diagnosis Of Digital Computers (AREA)
Description
Die vorliegende Erfindung bezieht sich auf die Verwendung
von Logikanalysatorzustandserfassungsinformationen für eine
Problemidentifikation und -Lösung und insbesondere auf Ver
fahren zum Analysieren und Präsentieren
von Logikanalysatorzustandserfassungsinformationen auf eine
Art und Weise, die beim Korrelieren der Zustandserfassungs
informationen mit Datenstrukturen auf höherer Ebene, die
beim Erzeugen der Logikzustände verwendet werden, hilft.
Eine zeitweilige Datenzerstörung ist eine übliche Klasse von
Problemen bei dem Entwurf und dem Debuggen von Elektronik/
Software-Systemen. Oft ist die Datenzerstörung ein Symptom
oder eine Manifestation einer Ursache mit tieferer Wurzel.
Es kann sehr schwierig sein, solche Probleme zu orten, da
die Wurzelursache eines speziellen Datenzerstörungssymptoms
wesentlich früher in dem Betrieb des Systems als die Erfas
sung der Datenzerstörung auftreten kann. Die Wurzel- oder
Grundursachen solcher zeitweiliger Fehler beziehen sich oft
auf Softwarefehler (wie z. B. ein unkorrektes Zeiger-Zurück
setzen), auf elektronische Hardwareentwurfsfehler (wie z. B.
Masseschleifen), auf unkorrekte Entwurfsannahmen bezüglich
der Hardware oder Software oder auf Kombinationen dieser
Probleme.
Gegenwärtige Ingenieursentwurfswerkzeuge zum Debuggen sol
cher zeitweiliger Fehler umfassen folgende: Protokollanaly
satoren, Logikanalysatoren, Mikroprozessoremulatoren, Bit
fehlerratentester und Oszilloskope. Jedes dieser Werkzeuge
liefert dem Ingenieur einen Einblick bezüglich des korrekten
oder unkorrekten Betriebs eines Aspekts eines potentiell
komplexen Systems. Protokollanalysatoren helfen beim Identifizieren
der Eigenschaft von Daten, wie sie über ein Kommu
nikationsmedium übertragen werden. Logikanalysatoren und Os
zilloskope liefern detaillierte Informationen bezüglich der
Parameter von digitalen und analogen Signalen der Elektronik
in dem System. Mikroprozessoremulatoren erlauben eine de
taillierte Analyse des Betriebs der Software innerhalb des
Systems. Diese Werkzeuge werden oft in verschiedenen Kombi
nationen von Entwurfsingenieuren verwendet, um mehrere As
pekte des Systems zu analysieren und zu debuggen, wenn ein
Fehler auftritt.
Im allgemeinen suchen Ingenieure danach, zeitweilige Fehler
unter Verwendung eines "Teilen- und Erobern"-Lösungsansat
zes zu identifizieren und zu lösen, um die Suche nach der
Wurzelursache eines speziellen Fehlers einzuengen. Die Inge
nieursanalyse sucht danach, mögliche Fehler zu beseitigen,
indem die Eingaben, die einer speziellen Komponente/einem
speziellen Aspekt des Systems geliefert werden, betrachtet
werden, und indem verifiziert wird, daß dieselbe die erwar
teten Ausgaben erzeugt. Wenn die Eingabe auf einer speziel
len Ebene fehlerhaft ist, verschiebt der Ingenieur die Ana
lyse weiter "nach oben" zu der Quelle dieser Eingabe hin,
usw., bis die Wurzelursache geortet und repariert ist.
Ein Problem bei gegenwärtigen Analysewerkzeugen und Methoden
für ihre Verwendung liegt in der Tatsache, daß, obwohl viele
Werkzeuge verschiedene Testfunktionen integrieren, dieselben
nicht die Fähigkeit besitzen, die Erfassung auf niederer
Ebene (die Erfassung auf Hardwarezustandsebene) des Zustands
von Daten mit der semantischen Bedeutung auf höherer Ebene
der Zustände als Manipulationen von Datenstrukturen zu kor
relieren. Eine solche Korrelation der Zustandserfassungsin
formationen auf niedriger Ebene mit den Datenstrukturen auf
höherer Ebene, welche manipuliert werden, wird dem Entwurfs/
Test-Ingenieur selbst überlassen. Ohne eine solche Korrela
tion zu der semantischen Manipulation von zugeordneten Da
tenstrukturen können die einzelnen Zustandserfassungen jeder
Analysiereinrichtung nicht synergistisch kombiniert werden,
um zusätzliche Debugginginformationen zu liefern.
Bei einem Computerkommunikationsnetzsystem ist es beispiels
weise üblich, daß eine intelligente Netzschnittstellenkarte
(NIC; NIC = Network Interface Card), die in einem Prozessor
komplex (Hostcomputer) verwendet wird, eine wesentliche Ver
arbeitungsleistung auf der Netzschnittstellenkarte selbst
umfaßt. Die NIC und der Hostcomputer tauschen dann Daten,
Befehle und Zustände über einen gemeinsamen Zugriff auf ei
nen gemeinsamen Bus zu Puffern, Pufferbeschreibern (Deskriptoren) und Zu
standsbereichen, die in dem Hauptspeicher des Hostcomputers
gespeichert sind, aus. Das Hostcomputersystem leitet die in
telligente NIC an, um eine Schlange von Befehlen zu verar
beiten, die in einer Serie von Pufferbeschreibern in dem
Computerhauptspeicher enthalten sind. Die NIC ruft die Be
schreiberblöcke von dem Hauptspeicher ab und verarbeitet die
speziellen in denselben enthaltenen Befehle, einschließlich
des Datenaustausches zwischen der NIC und den Puffern in dem
Hauptspeicher (wie es durch die Befehle in dem Pufferbe
schreiber angeleitet wird). Ein Ingenieur kann ein Netzpro
tokollsystemproblem in einer solchen Umgebung durch die kom
binierte Verwendung eines Netzprotokollanalysators (z. B. um
Daten zu überwachen, die über das Netzmedium ausgetauscht
werden) eines Mikroprozessoremulators (z. B. um den Betrieb
von programmierten Befehlen auf einem Hauptprozessor oder
auf dem NIC-Prozessor zu überwachen und/oder zu steuern,
während Daten erzeugt und übertragen werden) und eines Lo
gikanalysators (z. B. um Hardwarezustandsinformationen auf
einem Bus zu überwachen, der die NIC mit dem Hauptprozessor
verbindet) debuggen. Wenn der spezielle Protokollfehler
zuerst erfaßt wird (z. B. durch eine getriggerte Situation
in dem Protokollanalysator oder der Testsoftware), können
der Logikanalysator und der Mikroprozessoremulator ge
triggert werden, um ihre jeweiligen Daten für eine Zeitdauer
zu erfassen, die dem erfaßten Protokollfehler vorausgeht.
Der Ingenieur muß dann manuell versuchen, die Netzdaten, die
auf dem Netzmedium ausgetauscht werden, wie sie in dem
Protokollanalysator erfaßt werden, mit dem Softwarezustand
zu korrelieren, der in dem Mikroprozessoremulator erfaßt
wurde, und ferner mit dem Netzschnittstellenkartenzustand
korrelieren, der in dem Logikanalysator erfaßt wurde. Obwohl
die verschiedenen Analysatoren und Emulatoren korreliert
oder bezüglich der Zeit synchronisiert sein können, können
die erfaßten Daten nicht ohne weiteres mit den Datenstruktu
ren auf höherer Ebene (und mit ihrem Inhalt) korreliert wer
den, die von dem Hauptprozessor oder von der intelligenten
Netzschnittstellenkarte verwendet werden. Statt dessen steht
der Ingenieur einer schwierigen zeitaufwendigen Aufgabe ge
genüber, die erfaßten Zustandsinformationen von allen Analy
satoren manuell zu interpretieren, um die erwünschte Korre
lation herzustellen.
Die Schnittstelle zwischen solchen intelligenten I/O-
Schnittstellengeräten (I/O = Input/Output) und ihren zuge
ordneten Hostcomputern ist daher ein wesentlicher Aspekt bei
der Analyse, die erforderlich ist, um die Wurzelursache ei
nes Datenzerstörungsproblems zu isolieren. Eine übliche Ur
sache für Datenzerstörungsfehler entsteht aus dieser I/O-
Architektur, wenn aufgrund typischerweise von Software- oder
Hardware-Zeitsteuerungsfehlern ein Computer damit beginnt,
einen Puffer oder einen Beschreiberblock zu überschreiben,
bevor die früheren Handlungen, die diesen Beschreiber oder
Puffer verwenden, vollendet worden sind. In anderen Situa
tionen werden die Beschreiber oder Puffer einfach mit Infor
mationen über ihrer definierten Kapazität oder Größe hinaus
überschrieben, derart, daß andere Beschreiber oder Puffer
fehlerhaft verändert werden, während sie noch in Verwendung
sind.
Moderne Test- und Analysegeräte, wie z. B. Logikanalysato
ren, weisen größere Speicher für eine tiefere Speicherung
von erfaßten Informationen auf. Solche tiefen Erfassungs
speicher sind im allgemeinen hilfreich, um Probleme zu orten
und zu identifizieren, und zwar deswegen, da die erhöhte
Tiefe die Wahrscheinlichkeit erhöht, daß Daten, die für die
Lösung des Problems relevant sind, in dem erfaßten Speicher
enthalten sein werden. Das größere Volumen von erfaßten Da
ten multipliziert jedoch auch das Problem des Ingenieurs,
erfaßte Daten mit den manipulierten Datenstrukturen auf hö
herer Ebene zu korrelieren. Ein fortgesetztes Wachstum der
Erfassungsspeichertiefe wird die Probleme des Ingenieurs
beim manuellen Korrelieren der erfaßten Zustandsdaten mit
den Aktivitäten auf höherer Ebene, die Datenstrukturmanipu
lationen umfassen, noch verschärfen.
Aus der obigen Diskussion ist es klar, daß ein Bedarf be
steht, die Automatisierung und die Unterstützung für die In
genieursaufgabe des Korrelierens von Zustandserfassungsdaten
auf niedriger Ebene mit den entsprechenden Aktivitäten auf
höherer Ebene an der Wurzel des gesuchten Problems zu korre
lieren.
In Elektronik 7/1996, Seiten 92-95 wird die Fehlersuche bei
Adressierungsproblemen beschrieben, für die ein integrierter
Adressdecoder verwendet wird. Hierbei handelt es sich um
eine Software-implementierte Technik, die die oben beschrie
benen Probleme mit sich bringt, nämlich daß durch das Ablau
fen dieser Software tatsächliche Hardware-Probleme ver
schleiert oder verändert werden.
In IBM Technical Disclosure Bulletin, März 1995, Seiten 67-
69 wird keine besondere Art der Fehlererfassung erwähnt,
sondern ausschließlich die Darstellung der Ergebnisse.
Die US-A-5,408,650 zeigt die graphische Darstellung von zu
geordneten Speichersegmenten, wobei zur Erfassung ein "De
bugger" verwendet wird, also eine software-implementierte
Ausführung.
Die DE 32 18 277 A1 zeigt ein Mehrprozessorsystem mit einer
Mehrzahl von Logikanalysatoren, die Unterrechnern zugeordnet
sind. Die Logikanalysatoren dienen dazu, zur Auffindung von
Fehlern einen von und zu den Unterrechnern fließenden Daten
strom aufzuzeichnen und zu speichern.
Die Aufgabe der vorliegenden Erfindung besteht darin, Ver
fahren zu schaffen, die eine vergrößerte Automation und
Unterstützung schaffen, um Zustandsinformationsinformationen
auf niedriger Ebene mit entsprechenden Aktivitäten auf
höherer Ebene zu korrelieren.
Diese Aufgabe wird durch ein Verfahren gemäß Anspruch 1 ge
löst.
Die vorliegende Erfindung löst die oben genannten und weite
re Probleme durch Bereitstellen automatisierter Verfahren
zum Unterstützen des Test/Ent
wurfs-Ingenieurs beim Korrelieren von Zustandserfassungsin
formationen auf niedriger Ebene mit Datenstrukturen auf hö
herer Ebene, die von dem zu testenden System manipuliert
werden. Insbesondere können die Verfahren der vorliegenden
Erfindung auf Zustandserfassungsinformationen arbeiten, die
von einem Logikanalysator gesammelt werden, der derart ver
bunden ist, um die Informationen zu überwachen, die zwischen
intelligenten I/O-Schnittstellengeräten und einem beigefüg
ten steuernden Hauptprozessor ausgetauscht werden. Bezüglich
seiner Verwendung in dieser Anmeldung bezieht sich der Ausdruck
"Hauptprozessor" auf einen Computer, der über einen
I/O-Schnittstellenbus an einem intelligenten I/O-Schnitt
stellengerät angebracht ist. In einer solchen Konfiguration
teilen der Hauptprozessor und die intelligente I/O-Schnitt
stellenkarte den Zugriff auf ein Speicherteilsystem, das an
dem Hauptprozessor und der I/O-Schnittstellenkarte ange
bracht ist (über den I/O-Schnittstellenbus). Diese I/O-Ar
chitektur ist bei Allzweckcomputersystemen, wie z. B. Per
sonalcomputern und Arbeitsstationen, üblich. Solche I/O-Ar
chitekturen sind ebenfalls in vielen Spezialgeräten, wie z. B.
Test- und Analyseausrüstungen, üblich, bei denen ein ein
gebetteter Hauptprozessor den Betrieb des Geräts steuert,
während angebrachte intelligente I/O-Schnittstellengeräte
spezifische Operationen für die Spezialausrüstung durchfüh
ren. Die Verfahren der vorliegenden Erfindung sind daher so
wohl auf Allzweckcomputersysteme als auch auf Spezialtest-
oder Kommunikationsgeräte anwendbar, die in sich eingebettet
die oben beschriebene I/O-Architektur aufweisen.
Im allgemeinen kann die Darstellung des speziellen Datenaus
tauschprotokolls, das verwendet wird, beobachtet werden, in
dem die Hauptspeicherzugriffe von dem Hauptprozessor und der
zugeordneten I/O-Schnittstelle überwacht werden. In Pakete
geformte Protokolle sind beispielhaft für Datenaustauschpro
tokolle, auf die die Verfahren und Vorrichtungen der vorlie
genden Erfindung auf vorteilhafte Weise angewendet werden
können. Insbesondere werden die Einheiten von Daten, die in
solchen Protokollen ausgetauscht werden, als Pakete, Rahmen
oder einfach als Protokolldateneinheiten bezeichnet. Pakete
in solchen Protokollen sind üblicherweise in einem gemeinsam
verwendeten Speicher positioniert, der von sowohl dem Host
computer als auch von einer zugeordneten intelligenten I/O-
Schnittstelle zugegriffen werden kann. Die Pakete sind übli
cherweise durch zusätzliche Datenstrukturen in dem Speicher
getrennt, die der Verwaltung des gemeinsam verwendeten Spei
chers zugeordnet sind. Die zusätzlichen Abschnitte der Da
tenstrukturen, die den Paketen in dem Speicher zugeordnet
sind, werden oft als Wächter bezeichnet. Bekannte Speicherverwaltungstechniken
(wie z. B. "Malloc" und verwandte
UNIX-Systemfunktionen) verwenden solche Wächterstrukturen,
um die Verwendung der gemeinsam verwendeten Speicherstruktu
ren zu verwalten. Zusätzlich sind die Verfahren der vorlie
genden Erfindung ebenfalls dazu in der Lage, Puffer, die in
"zusammenhängenden" oder "herunter-verriegelten" (üblicher
weise statisch vor-zugeordnete) Puffermengen positioniert
sind, zu analysieren.
Die Speicherzugriffe, die bei den Zustandserfassungsinforma
tionen erfaßt werden, werden von den Verfahren und Vorrich
tungen der vorliegenden Erfindung analysiert, um die Manipu
lation von Puffern in dem Austausch von Daten zwischen dem
Hauptprozessor (Hostcomputer) und zugeordneten I/O-Geräten
zu rekonstruieren. Die Verfahren der vorliegenden Erfindung
analysieren daher die erfaßten Zustandsinformationen, um die
erfaßten Zustandsinformationen auf eine Art und Weise zu
präsentieren, die mit den darunterliegenden Datenstrukturma
nipulationen zwischen dem Hostcomputer und der I/O-Schnitt
stelle korreliert sind, und die ebenfalls mit dem darunter
liegenden Datenaustauschprotokoll, das debuggt wird, korre
liert sind.
Insbesondere analysieren die Verfahren der vorliegenden Er
findung auf automatische Art und Weise die erfaßten Zu
standsinformationen, um Puffer und Pufferbeschreiber, die
zwischen dem Hostcomputer und der zugeordneten I/O-Schnitt
stellenkarte ausgetauscht werden, heuristisch zu orten und
zu identifizieren. Konfigurationsparameter der Verfahren und
Vorrichtungen der vorliegenden Erfindung definieren die Re
geln, die verwendet werden, um Puffer und Pufferbeschreiber
in den erfaßten Zustandsinformationen heuristisch zu iden
tifizieren. Die Konfigurationsparameter erlauben es, daß die
Verfahren und Vorrichtungen der vorliegenden Erfindung ohne
weiteres an ein spezielles Datenaustauschprotokoll oder an
eine spezielle Datenstruktur angepaßt wird.
Das Identifizieren und Orten von Puffern und Pufferbeschreibern
innerhalb der erfaßten Zustandsinformationen hilft dem
Ingenieur beim Korrelieren der erfaßten Zustandsdaten in ei
nem Logikanalysator mit den zerstörten Datenaustauschvorgän
gen, die dem zu lösenden Problem zugeordnet sind. Weitere
Verfahren der vorliegenden Erfindung korrelieren spezielle
Pufferbeschreiber mit dem speziellen Puffer, auf die sich
derselbe bezieht. Noch weitere Verfahren der vorliegenden
Erfindung korrelieren die identifizierten Puffer und Puffer
beschreiber mit dem speziellen Datenaustauschprotokoll, das
für die Anwendung verwendet wird. Diese Korrelation hilft
ferner dem Ingenieur beim Einengen des Suchgebiets für die
Wurzelursache des Problems, das analysiert wird.
Verfahren der vorliegenden Erfindung zeigen die Zustandser
fassungsinformationen auf einem Computeranzeigebildschirm in
einem Graphik- und in einem Textstil an, welche die Korrela
tion zwischen den Zustandserfassungsinformationen und den
Datenstrukturen auf höherer Ebene und Protokollen des Haupt
prozessors verdeutlichen. Insbesondere werden Puffer identi
fiziert, indem die Mehrzahl von erfaßten Zuständen, die
Speicherverweise auf einen identifizierten Puffer darstel
len, visuell verbunden werden. Die Farbe des Puffers auf dem
Anzeigebildschirm zeigt an, ob der Pufferzugriff für eine
Lesen- oder für eine Schreiben-Operation ist. Jeder Puffer
beschreiber, der von der Analyseheuristik identifiziert
wird, ist mit dem zugeordneten Puffer mittels eines graphi
schen Vektors graphisch verbunden. Ein Benutzer der Verfah
ren der vorliegenden Erfindung kann graphisch einen speziell
identifizierten Puffer oder Pufferbeschreiber auswählen und
den Dateninhalt desselben in einem getrennten Textfenster
auf dem Anzeigebildschirm betrachten. Der Inhalt des ausge
wählten Puffers oder Beschreibers kann in einem rohen Hexa
dezimalmodus oder in einem Textübersetzungsmodus, wie z. B.
ASCII oder EBCDIC, betrachtet werden.
Die Verfahren der vorliegenden Erfindung sind auf einem All
zweckcomputer ausführbar. Ein solcher Computer kann entweder
in einem Logikanalysator oder außerhalb eines Logikanalysators
vorhanden sein, der in einem Nachverarbeitungsmodus ar
beitet, um Puffer- und Protokoll-Informationen in den er
faßten Zuständen, die von einem Logikanalysator wiedergewon
nen werden, zu analysieren und anzuzeigen. Alternativ können
Teile der vorliegenden Erfindung in einer speziell entworfe
nen Hardwarehilfselektronikschaltung eingebettet sein, um
das Verhalten der Analyse und die Erkennungsverfahren der
vorliegenden Erfindung zu verbessern. Solche anwendungsspe
zifischen Hilfsschaltungen können in den Benutzerschnitt
stellensteuerungsschaltungen und in der Software eines Lo
gikanalysators integriert werden.
Zusätzlich wird ein Fachmann Merkmale der vorliegenden Er
findung erkennen, die dem Benutzer beim Bestimmen detail
lierter Aspekte des Systemverhaltens helfen, wenn sie ver
wendet werden, um lokalisierte Situationen einer Operation
zu inspizieren. Die Visualisierungsmerkmale, die von den
Verfahren und Vorrichtungen während der vorliegenden Erfin
dung geschaffen werden, machen viele detaillierten Merkmale
des Verhaltens offensichtlich, die die Buseignerschaft, den
Stoß- bzw. "Burst"-Wirkungsgrad und Datenübertragungsraten
umfassen, die jedoch nicht auf die genannten begrenzt sind.
Bevorzugte Ausführungsbeispiele der vorliegenden Erfindung
werden nachfolgend bezugnehmend auf die beiliegenden Zeich
nungen detaillierter erörtert. Es zeigen:
Fig. 1 ein Blockdiagramm, das einen Logikanalysator
zeigt, der in Verbindung mit den Verfahren der
vorliegenden Erfindung betreibbar ist und mit ei
nem typischen Computersystem, das getestet wird,
verbunden ist;
Fig. 2 ein Blockdiagramm, das einen selbständigen Logik
analysator zeigt, der einen eingebetteten Prozes
sor und eine Anzeige aufweist, auf denen die Ver
fahren der vorliegenden Erfindung ausführbar sind;
Fig. 3 ein Blockdiagramm, das einen Logikanalysator
zeigt, der allein verwendet wird, um Zustandslo
gikdaten zu erfassen, und der mit einem Allzweck
computer verbunden ist, auf dem die Verfahren der
vorliegenden Erfindung ausführbar sind, um die Er
fassungszustandslogikdaten nachzuverarbeiten;
Fig. 4 eine beispielhafte Bildschirmanzeige, die durch
ein Ausführen der Verfahren der vorliegenden Er
findung erzeugt wird, um Puffer und zugeordnete
Pufferbeschreiber darzustellen, die durch Ausfüh
rung der Verfahren der vorliegenden Erfindung auf
erfaßte Zustandslogikdaten geortet und identifi
ziert wurden;
Fig. 5 einen beispielhaften Anzeigebildschirm, der durch
ein Ausführen der Verfahren der vorliegenden Er
findung erzeugt wird, und zwar als Reaktion auf
eine Benutzeranforderung, um erfaßte Zustandslo
gikdaten in Textform sowohl als Rohdaten als auch
als Daten anzuzeigen, die gemäß einer Protokoll
spezifikation interpretiert sind;
Fig. 6 bis 13 Flußdiagramme, die die Ausführung der Verfahren
der vorliegenden Erfindung beschreiben, um erfaßte
Zustandslogikdaten zu analysieren, und um Nutzin
formationen bezüglich von Puffern anzuzeigen, die
in denselben geortet und identifiziert wurden; und
Fig. 14 bis 19 Blockdiagramme, die verschiedene Bedingungen zei
gen, die von Verfahren der vorliegenden Erfindung
verwendet und erkannt werden, um Puffer innerhalb
erfaßter Zustandslogikdaten zu orten, und um mög
liche schädliche Verweise auf dieselben zu erken
nen.
Fig. 1 ist ein Blockdiagramm eines typischen Computersystems
100, mit dem ein Logikanalysator 1 über Sonden 2 verbunden
ist, um beim Orten der Wurzelursache eines Datenzerstörungs
problems zu helfen. Das System 100 umfaßt eine CPU 102, die
über eine Host/PCI/Cache/Brücke-Einrichtung 104 mit dem
Hauptspeicher 106 verbunden ist. Die CPU 102 ruft program
mierte Befehle von dem Hauptspeicher 106 ab und manipuliert
Daten in dem Hauptspeicher 106 über die Host/PCI/Brücke-
Einrichtung 104. Auf Peripherie-I/O-Geräte kann mittels der
CPU 102 über die Host/PCI/Cache/Brücke-Einrichtung 104 auf
den CPI-Bus 150 zugegriffen werden. Ein SCSI-Adapter 108,
ein LAN-Adapter 110, eine Brücke 112 und ein Graphikadapter
114 sind typische Geräte, die über den PCI-Bus 150 an der
CPU 102 angebracht sind. Der SCSI-Adapter 108 erlaubt eine
Verbindung der CPU 102 über den PCI-Bus 150 mit einer Mehr
zahl von Speichergeräten 116 (wie z. B. einer Platte, einem
Band und einem CDROM) über den SCSI-Bus 152. Der LAN-Adapter
110 paßt Signale in einem LAN 154 zur Verwendung mit der CPU
102 über den PCI-Bus 150 an. Die Brücke 112 erweitert den
Hochgeschwindigkeits-PCI-Bus 150 mit anderen preisgünsti
geren Bussen mit niedriger Leistung zur Verknüpfung mit zu
sätzlichen (typischerweise älteren) I/O-Peripheriegeräten.
Der Graphikadapter 114 verbindet die CPU 102 über den PCI-
Bus 150 mit Hochleistungsgraphikanzeigebildschirmen.
Wie es oben angemerkt wurde, kann das System 100 ein All
zweckcomputersystem oder ein Spezialelektronikgerät sein,
das die I/O-Architektur, welche oben beschrieben wurde, in
sich eingebettet aufweist. Spezialnetz-Kommunikations-Geräte
und eine Testausrüstung betten beispielsweise oft eine I/O-
Architektur ein, die zu der oben beschriebenen ähnlich ist,
obwohl die Benutzerschnittstelle für solche Geräte ihre Ver
wendung auf spezielle Kommunikations- oder Testfunktionen
begrenzt. Auf ähnliche Weise betten viele elektronischen
Testgeräte, wie z. B. Oszilloskope, In-Schaltung(in-circuit)-Emulatoren
und sogar Logikanalysatoren selbst, eine solche leistungsfähige
Allzweck-I/O-Architektur ein, sie begrenzen jedoch
den Benutzer auf bestimmte spezifische Anwendungen und nicht
auf Allzweckcomputeranwendungen. Daher kann, wie es hierin
verwendet wird, ein "Hostcomputer" oder "Hauptprozessor" und
eine "intelligente I/O-Schnittstelle" in einem Allzweckcom
putersystem oder in einem beliebigen Spezialelektronikgerät
mit einer ähnlichen I/O-Architektur liegen.
Um die Verarbeitungslast auf der CPU 102, die auf eine Ver
arbeitung auf niederer Ebene von I/O-Funktionen für Periphe
riegeräte bezogen ist, zu reduzieren, umfassen typische
Adapter 108 bis 114 wesentliche Verarbeitungsfähigkeiten, um
I/O-Anforderungen für die CPU 102 durchzuführen. Eine allge
meine Schnittstellenstruktur für eine solche I/O-Schnitt
stellenkarte ist eine gemeinsame Speicherstruktur ("Shared-
Memory"-Struktur), derart, daß sowohl die CPU 102 als auch
die intelligenten I/O-Adapter (108 bis 114) auf Informatio
nen zugreifen können, die in dem Hauptspeicher 106 gespei
chert sind. Die CPU 102 baut einfach eine Schlange von Be
fehl/Puffer-Beschreiberblöcken in ihrem Hauptspeicher 106,
informiert einen geeigneten I/O-Adapter (108 bis 114) bezüg
lich der Startadresse der Schlange von Beschreibern, und
wartet dann einfach auf ein Signal der Vollendung der Ver
arbeitung der schlangenmäßig angeordneten Beschreiber durch
den ausgewählten intelligenten I/O-Adapter. Wenn ein Daten
puffer als Teil der angeforderten I/O-Verarbeitung für einen
speziellen Beschreiber ausgetauscht werden soll, dann zeigt
der Beschreiber auf eine Position in dem Hauptspeicher 106,
wo der Puffer für den angeforderten Datenaustausch gefunden
werden kann.
Der intelligente I/O-Adapter (108 bis 114) gewinnt einen
nächsten Beschreiber von dem Hauptspeicher 106 zurück und
führt die angeforderte I/O-Funktionsverarbeitung durch. Wenn
die I/O-Funktionsanforderung, die in dem Beschreiber gefun
den wurde, die Verwendung eines Datenpuffers zum Austausch
von Daten erfordert, dann wird der angeforderte Austausch
unter Verwendung des identifizierten Puffers durchgeführt.
Diese Beschreiber werden oft als Befehlsbeschreiber bezeich
net, da sie die durchzuführende I/O-Anforderung beschreiben.
Bezüglich ihrer Verwendung in dieser Anmeldung werden die
Beschreiber oft als Pufferbeschreiber (Deskriptoren) bezeichnet, da sie auf
die Position eines Puffers in dem Hauptspeicher zeigen, der
verwendet wird, um die angeforderte I/O-Funktion durchzufüh
ren.
Der Logikanalysator 1 ist mit dem PCI-Bus 150 über die Son
den 2 verbunden, um Zustandslogikinformationen zu überwachen
und zu erfassen, die zwischen der CPU 102, dem Hauptspeicher
106 und den intelligenten I/O-Adaptern (108 bis 114) ausge
tauscht werden. Die Verfahren der vorliegenden Erfindung
sind auf dem Logikanalysator 1 ausführbar, um dem Ingenieur
beim Analysieren des Austausches von Informationen über den
PCI-Bus 150 zu helfen, die sich auf Puffer und Pufferbe
schreiber beziehen. Wie es oben erörtert wurde, kann eine
solche Analyse bei dem Austausch von Informationen zwischen
der CPU 102 und einer oder mehreren intelligenten I/O-Adap
tern 108 bis 114, wie sie in den Zustandslogikdaten von dem
Logikanalysator 1 erfaßt werden, nützlich sein, um die Wur
zelursache eines Datenzerstörungsfehlers in einem solchen
Computersystem zu isolieren.
Ein Fachmann wird es ohne weiteres erkennen, daß eine solche
Analyse, wie sie von dem Logikanalysator 1 durchgeführt
wird, in Verbindung mit den Verfahren der vorliegenden Er
findung auf gleiche Weise auf eine beliebige Busstruktur an
wendbar ist. Der PCI-Bus 150 ist nur beispielhaft für einen
üblichen Busstandard, der gegenwärtig allgemein verwendet
wird. Wie es oben angemerkt wurde, wird ein Fachmann genauso
ohne weiteres erkennen, daß die Verfahren der vorliegenden
Erfindung, die auf dem Logikanalysator 1 ausführbar sind,
verwendet werden können, um ein beliebiges elektronisches
Gerät, das eine ähnliche I/O-Architektur zu der, die in Fig.
1 gezeigt ist, verwendet, zu debuggen. Das Allzweckcomputer
system 100 ist für ein übliches Gerät beispielhaft, welches
eine solche I/O-Architektur verwendet, wobei intelligente
I/O-Schnittstellenkarten (z. B. 108 bis 114) auf Informatio
nen, die von einem Steuerprozessor (z. B. der CPU 102) er
zeugt werden, in einem gemeinsam verwendeten Speicher (z. B.
dem Hauptspeicher 106) zugreifen. Ein Fachmann wird es ohne
weiteres erkennen, daß das Computersystem 100 von Fig. 1
viele äquivalente Computerumgebungen darstellen kann, die
einen Computer mit einer Platine umfassen, wobei alle Kom
ponenten auf derselben stark integriert und in einer Spe
zialzweckcomputerkomponente (z. B. einer Netzbrücke, einem
Schalter oder einem Routergerät) eingebettet sind.
Die Verfahren der vorliegenden Erfindung (die nachfolgend
detailliert erörtert sind) sind auf einem Computer in Ver
bindung mit einem Logikanalysator ausführbar. Moderne Logik
analysatoren umfassen viele (wenn nicht alle) Aspekte eines
Allzweckcomputers, wie es in Fig. 2 gezeigt ist. Die Verfah
ren der vorliegenden Erfindung sind daher direkt innerhalb
eines Logikanalysators ausführbar, der solche Allzweckre
chen- und Anzeige-Fähigkeiten hat. Der Logikanalysator 1,
wie er in Fig. 2 gezeigt ist, empfängt von Sonden 2 Zu
standslogikdaten, welche verarbeitet und wie erforderlich
durch ein Zustandserfassungselement 208 in einem Zustands
speicherelement 210 gespeichert werden. Der Prozessor 200
steuert das Zustandserfassungselement 208, um die Zustands
erfassungsparameter zu konfigurieren, und um die resultie
renden Zustandslogikdaten von dem Zustandsspeicher 210 wie
derzugewinnen. Wie bei den meisten Allzweckcomputersystemen
ist der Prozessor 200 mit der Benutzer-Eingabe-I/O 202 (z. B.
Tastaturen und Zeigegeräte) verbunden, um Benutzerein
gaben und Parameter zu empfangen. Der Prozessor 200 ist
ebenfalls mit der Anzeige 204 verbunden, um dem Benutzer In
formationen des Logikanalysators zu präsentieren. Ein RAM/
ROM-Speicher 206 wird von dem Prozessor 200 verwendet, um
Variablen zu manipulieren, und um Steuerprogrammbefehle zu
speichern. Die Verfahren der vorliegenden Erfindung können
daher in den Standardsteuerprogrammen in einem Logikanaly
sator integriert sein, dieselben können von dem RAM/ROM-
Speicher 206 gespeichert und wiedergewonnen werden, dieselben
können auf dem Prozessor 200 ausgeführt werden, diesel
ben können ihre Resultate auf der Anzeige 204 anzeigen, und
dieselben können eine Benutzereingabe von der Benutzer-Ein
gabe-I/O 202 empfangen.
Alternativ können die Verfahren der vorliegenden Erfindung
auf einem Allzweckcomputersystem 200 von Fig. 3 ausgeführt
werden, das mit dem Logikanalysator 1 über einen Bus 350
verbunden ist, um einfach die erfaßten Zustandslogikdaten
von demselben wiederzugewinnen. Wie es in Fig. 3 gezeigt
ist, empfängt der Logikanalysator 1 Zustandslogikdaten von
den Sonden 2 unter der Steuerung der Zustandserfassungslogik
312. Die erfaßten Zustände werden in dem Zustandsspeicher
314 gespeichert. Ein Steuerelement 316 (typischerweise ein
Computer) steuert den Betrieb des Logikanalysators 1 und
kann mit einem zugeordneten Hostcomputersystem 300 durch ei
ne Hostschnittstelle 318 über den Bus 350 kommunizieren. Der
Bus 350 kann beispielsweise ein SCSI-Bus, ein LAN, ein Bus
IEEE 488, usw. sein, wie es für den speziellen Logikanalysa
tor 1 und das Computersystem 300 geeignet ist. Das Computer
system 300 umfaßt die CPU 302, die mit dem RAM/ROM-Speicher
306 verbunden ist, die Benutzer-Eingabe-I/O 308 und die An
zeige 310. Das Peripherie-I/O-Element 304 verbindet die CPU
302 mit dem Bus 350 zum Austausch von Daten mit dem Logik
analysator 1. Insbesondere gewinnt das Computersystem 300
erfaßte Zustandslogikdaten von dem extra vorhandenen Logik
analysator 1 über den Bus 350 wieder und verarbeitet dann
die wiedergewonnenen Daten mittels der Verfahren der vorlie
genden Erfindung nach, um dem Ingenieur beim Positionieren
der Wurzelursache eines Datenzerstörungsfehlers in dem zu
testenden System (nicht gezeigt) zu helfen. Die Verfahren
dar vorliegenden Erfindung sind daher in einem für sich an
geordneten Allzweckcomputersystem ausführbar, das mit einem
für sich angeordneten Logikanalysator verbunden ist. Ein
Fachmann wird ebenfalls erkennen, daß das Computersystem 300
erfaßte Zustandslogikdaten über den Bus 350 oder über ir
gendeine andere ähnliche Übertragungsvorrichtung wiederge
winnen kann. Die erfaßten Daten können beispielsweise auf
eine Floppy-Diskette in dem Logikanalysator 1 geschrieben
und physisch zu dem Computersystem 300 übertragen werden.
Ein Fachmann wird erkennen, daß die Verfahren der vorliegen
den Erfindung in Allzwecklogikanalysatoren sowie in Spezial
zweckprotokoll- oder Busanalysatorgeräten oder Softwaremodu
len ausgeführt werden können.
Die Fig. 6 bis 8 sind Flußdiagramme, die den Betrieb auf ho
her Ebene der Verfahren der vorliegenden Erfindung zeigen,
um erfaßte Zustandslogikdaten zu analysieren und
anzuzeigen. Insbesondere führen die Elemente 600 bis 612 von
Fig. 6 eine Grundanalyse von erfaßten Zustandslogikdaten
durch, um Speicherzugriffsbereiche in den erfaßten Zustands
logikdaten zu orten und zu identifizieren, und um die Berei
che als Puffer oder Pufferbeschreiber zu klassifizieren. Die
Elemente 614 und 616 von Fig. 6 führen eine rudimentäre An
zeige der Analyseergebnisse auf dem Anzeigebildschirm des
Benutzercomputers durch. Die Elemente 618 bis 646 von Fig. 7
und 8 führen dann eine zusätzliche Analyse der identifizier
ten Puffer und Pufferbeschreiber im Zusammenhang der spe
ziellen Anwendung der Verfahren der vorliegenden Erfindung
auf spezielle Protokolle und Umgebungen durch, und dieselben
zeigen die Ergebnisse dieser zusätzlichen Analyse an. Die
zusätzliche Analyse kann ebenfalls durch eine Eingabe von
dem Benutzer getrieben werden, um die Verfahren der vorlie
genden Erfindung anzuleiten, um spezielle Analyseschritte
durchzuführen, und um die erfaßten Zustandsdaten auf spe
zielle nützliche Arten und Weisen anzuzeigen. Die speziellen
Analyse- und Anzeigeschritte der Verfahren der vorliegenden
Erfindung, die bezugnehmend auf die Fig. 7 und 8 erörtert
werden, sind beispielhaft für eine Analyse und Anzeige, die
in einer speziellen Anwendung der Verfahren der vorliegenden
Erfindung nützlich ist. Weitere ähnliche Analyse- und An
zeigeschritte für weitere spezielle Anwendungen und Datenaustauschprotokolle
werden für Fachleute im Hinblick auf die
Lehren und Beispiele, die hierin präsentiert sind, offen
sichtlich sein.
Das Element 600 von Fig. 6 ist zuerst betreibbar, um Zu
standslogikdaten zu erfassen. Der Betrieb des Elements 600
hängt von der Struktur des Logikanalysators und des Berech
nungssystems ab, auf dem die Verfahren ausführbar sind. Wie
es oben in Fig. 2 gezeigt ist, bei der die Verfahren der
vorliegenden Erfindung innerhalb des Logikanalysators aus
führbar sind, ist das Element 600 innerhalb des Prozessors
200 betreibbar, um die erfaßten Zustandslogikdaten wieder
zugewinnen, wie sie in dem Zustandsspeicher 210 gespeichert
sind. Wenn, wie es in Fig. 3 gezeigt ist, die Verfahren auf
einem für sich angeordneten Allzweckcomputer ausführbar
sind, dann ist das Element 600 betreibbar, um die erfaßten
Zustandsdaten von dem verbundenen Logikanalysator (z. B.
über den Bus 350 von Fig. 3) oder von einer Datei, die zu
dem System (300 von Fig. 3) mittels einer anderen Einrich
tung übertragen wurden, wiederzugewinnen.
Das Element 602 ist nun betreibbar, um die Analyseparameter
des Benutzers zu bestimmen. Eine Anzahl der Parameter, die
die Analyse und Anzeige der Zustandslogikdaten steuern, sind
durch den Benutzer gemäß der speziellen Anwendung der Ver
fahren der vorliegenden Erfindung konfigurierbar. Der Benut
zer muß Konfigurationsinformationen liefern, die den Typ des
erfaßten Busses definieren. Der Benutzer kann beispielsweise
übliche Standardbusse, wie z. B. PCI oder VME, auswählen,
oder derselbe kann eine anwendungsspezifische Buskonfigura
tion definieren, die eine vollständige Definition der Adres
se und des Datenbuslayouts in den erfaßten Zustandlogikdaten
liefert. Ein Fachmann wird ohne weiteres erkennen, daß die
Verfahren der vorliegenden Erfindung Konfigurationsinforma
tionen innerhalb des Logikanalysators lesen oder auf andere
Art und Weise analysieren, um die Buskonfiguration zu be
stimmen. Der Endian-Modus der erfaßten Zustandslogikdaten
muß von dem Benutzer, der Konfigurationsinformationen zuführte,
bestimmt werden. Zuletzt muß der Benutzer die maxi
male Puffergröße der Datenpuffer in den erfaßten Zustands
logikdaten zuführen. Wenn zumindest bestimmte der Puffer in
einer zusammenhängenden Menge von Puffern mit fester Größe
in dem Speicher enthalten sind, kann die Kenntnis der maxi
malen Puffergröße erforderlich sein, um korrekte Pufferver
weise von unkorrekten Pufferverweisen korrekt zu identifi
zieren (wie es nachfolgend zusätzlich erörtert wird).
Mehrere andere Parameter sind durch den Benutzer konfigu
rierbar, um die Funktion bei speziellen Anwendungsumgebungen
zu verbessern. Eine detaillierte Verwendung dieser anderen
Parameter wird nachfolgend erörtert. Unter diesen anderen
Parametern (und den zusätzlich bevorzugten vorgegebenen
Werten) sind die folgenden:
- - Pufferbeschreibermaximalgröße in der Anzahl von Bytes/ Worten (vorzugsweise 64 Byte);
- - maximaler Durchschnittsleseraum in der Anzahl von erfaß ten Zuständen (vorzugsweise 4);
- - maximaler Durchschnittsschreiberaum in der Anzahl von er faßten Zuständen (vorzugsweise 3);
- - maximaler Pufferzustandsabstandsmultiplizierer (vorzugs weise 150);
- - Versatz des Beschreibers von dem Beginn eines Bereichs (vorzugsweise 0);
- - Menge der Beschreiberinformationen innerhalb eines Be reichs (vorzugsweise 0);
- - ein komplexer Pufferzeigerbeschreiber (für Pufferzeiger in Beschreibern kleiner als volle 32/64 Bits oder an un geradzahligen Positionen in dem Beschreiber< umfaßt vor zugsweise eine Bitmaske (vorzugsweise 0xffffffff), eine Bitverschiebungsposition (vorzugsweise 0) und einen Adressenversatz (vorzugsweise 0).
Noch weitere konfigurierbare Parameter können von dem Benut
zer in einem Element 602 an dem Beginn der Analyse spezifi
ziert werden, wobei diese Parameter jedoch ohne weiteres
während des Betriebs der Verfahren der vorliegenden Erfin
dung modifiziert werden können, welche erfaßte Zustandslo
gikdaten auf dem Anzeigebildschirm des Benutzercomputers an
zeigen. Beispielhafte derartige konfigurierbare Parameter
sind die folgenden:
- - Detailebene von Bereichsbeschreibungen (d. h. Bereichs- ID-Zahl, Bereichsstartadresse, Bereichsendadresse, Be reichsgröße und Kombinationen der obigen, die in vorge gebenen Anzeigeformaten, wie z. B. "eng", "normal" und "breit", gruppiert sind);
- - ASCII, EBCDIC, hexadezimal oder eine gemischte Anzeige von erfaßten Zustandslogikdaten;
- - ASCII, EBCDIC oder hexadezimaler Suchmodus;
- - eine Pufferbereichsfilterspezifikation, um die angezeig ten Daten auf einen speziellen Adressenbereich zu begren zen (d. h. entsprechend einer speziellen intelligenten I/O-Schnittstelle).
Die Verwendung der obigen konfigurierbaren Parameter wird
erörtert, wann und wo es geeignet ist, und zwar nachfolgend
detaillierter in Verknüpfung mit den Verfahrensschritten,
welche diese Parameter verwenden. Ein Fachmann wird ohne
weiteres erkennen, daß häufig verwendete Konfigurationspara
meterwerte von dem Benutzer in Dateien für ein späteres Wie
dergewinnen gespeichert werden können. In solchen Fällen ist
das Element 602 betreibbar, um vorher gespeicherte Konfigu
rationsparameter zur Ausführung der Verfahren der vorliegen
den Erfindung wiederzugewinnen. Zusätzlich wird ein Fachmann
erkennen, daß die Bitbreite dieser Parameter basierend auf
den Charakteristika des analysierten Busses variieren kön
nen.
Ein Element 604 ist ausführbar, um eine vorläufige syntak
tische Analyse der erfaßten Zustandslogikdaten oder ein
"Parsing" derselben durchzuführen, um dieselben in ein
internes kanonisches Format umzuwandeln, das in den Da
tenstrukturen verwendet wird, die mit den Verfahren der vorliegenden
Erfindung verknüpft sind. Das Format der erfaßten
Zustandslogikdaten kann gemäß den Merkmalen und Fähigkeiten
des spezifischen Logikanalysators variieren. Das Element 604
extrahiert daher die Informationen, die für die Analyse und
Anzeige der Verfahren der vorliegenden Erfindung benötigt
werden. Die extrahierten Daten werden in Datenstrukturen ge
speichert, die für die Analyse und Anzeige der Verfahren der
vorliegenden Erfindung nützlich sind. Insbesondere extra
hiert das Element 604 zumindest die folgenden Elemente für
jeden Zustand in den erfaßten Zustandslogikdaten:
- - einen Adressenwert;
- - einen Datenwert, dem Adressenwert entsprechend;
- - einen Lesen/Schreiben-Zugriffszustand, der dem Zugriff auf den Adressenwert entspricht;
- - einen Speicher- oder I/O-Raumzugriffsstatus, der dem Zu griff auf den Adressenwert entspricht;
- - eine Zustandsnummer (ein Versatz in den erfaßten Zu standslogikdaten).
Weitere Anteile der erfaßten Zustandslogikdaten können zum
Analysieren und Anzeigen von Informationen bezüglich spezi
eller Busanwendungen nützlich sein. Bestimmte Logikanalysa
toren erfassen beispielsweise eine Zeitetikette oder eine
"Zeit-Tag", die mit jedem erfaßten Zustand verknüpft ist.
Diese Zeitgebungsinformationen können von den Verfahren der
vorliegenden Erfindung verwendet werden, um Verhaltensas
pekte des getesteten Systems zu analysieren, wie sie durch
die erfaßten Zustandslogikdaten dargestellt sind. Die somit
aus den erfaßten Zustandslogikdaten extrahierten Daten
werden in einem Array von Strukturen gespeichert, dessen
Felder die oben extrahierten Elemente darstellen. Dieses
Array von Speicherverweisen wird dann verwendet, um die
Analyse gemäß den Verfahren der vorliegenden Erfindung
durchzuführen.
Ein Eigner-Identifizierer kann ebenfalls jeder Transaktion
in den erfaßten Zustandslogikdaten hinzugefügt werden, welcher
dazu dient, zu bezeichnen, welches Gerät die Transak
tion ursprünglich ausgelöst hat. Dies kann nützlich sein,
wenn mehrere Entitäten vorhanden sind, die den Bus gemeinsam
benutzen. Eine Farbcodierung kann verwendet werden, um den
Busverkehr von diesen mehreren Entitäten zu differenzieren,
indem die erfaßten Busverkehrszustände angezeigt werden, die
jedem Eigneridentifizierer entsprechen, und zwar in einem
entsprechenden Farbcode. Der Eigneridentifizierer kann durch
von einem Benutzer gelieferte Informationen zugeführt wer
den, oder derselbe kann automatisch durch die Verfahren der
vorliegenden Erfindung bestimmt werden, wenn ausreichende
Informationen in jedem erfaßten Zustand geliefert werden
(wenn die Bussignale Geräteidentifikationsinformationen ent
halten).
Die analysierten Daten, die von den erfaßten Zustandslogik
daten extrahiert werden, werden in einem Array (der nachfol
gend als syntaktisch analysiertes oder "geparstes" Daten
array bezeichnet wird) zum Verweis durch die folgenden Ele
mente gespeichert werden. Insbesondere verwenden die Elemen
te 606 bis 610 das syntaktisch analysierte Datenarray, um
weitere Datenstrukturarrays zu bauen. Das Element 606 analy
siert das syntaktisch analysierte Datenarray, um Speicherzu
griffsbereiche zu orten. Der Betrieb des Elements 606 baut
daher ein Array von Datenstrukturen, welches Bereiche von
Speicherzugriffen in dem syntaktisch analysierten Datenarray
beschreibt (nachfolgend in dieser Anmeldung als Bereichsbe
schreibungsarray bezeichnet). Elemente 608 und 610 sind dann
unter Verwendung des Bereichsbeschreibungsarrays und des
syntaktisch analysierten Datenarrays betreibbar, um Puffer
verweise bzw. Pufferbeschreiberverweise in den Bereichen zu
identifizieren. Die Elemente 608 und 610 bauen daher Arrays
von Datenstrukturen, welche die definierenden Parameter oder
Pufferbeschreiber bzw. Puffer beschreiben, auf die in den
georteten Bereichen verwiesen wird. Im wesentlichen ortet
diese Kernfunktion der Verfahren der vorliegenden Erfindung
auf effektive Art und Weise Speicherzugriffe, die logisch
verwandt sind, trotz der Tatsache, daß sie in den erfaßten
Zustandslogikdaten weit verstreut sind.
Insbesondere ist das Element 606 betreibbar, um Speicherzu
griffsbereiche innerhalb der Zustandslogikdaten, wie sie in
den internen Datenstrukturen gespeichert sind, zu orten. Ein
Speicherzugriffsbereich ist ein Teilsatz der Zustände der
erfaßten Zustandslogikdaten mit dem Attribut des Identifi
zierens benachbarter Adressen. Diese Speicherzugriffsberei
che können ebenfalls basierend auf Informationen unterteilt
werden, die nachfolgend gesammelt oder auf andere Art und
Weise von den Verfahren der vorliegenden Erfindung abgelei
tet werden.
Fig. 9 ist ein Flußdiagramm, das zusätzliche Details des Be
triebs des Elements 606 liefert, um Speicherzugriffsbereiche
in den erfaßten Zustandslogikdaten zu orten. Insbesondere
baut ein Element 900 von Fig. 9 ein Array aus den erfaßten
Daten, die oben erörtert wurden, und die in aufsteigender
Reihenfolge bezüglich des Adressenwerts sortiert sind. Das
sortierte Array wird dann durch einen Betrieb eines Elements
902 gemäß der Eigenschaft der benachbarten sequentiellen
Adresseninkremente gruppiert. Die benachbarte sequentielle
Eigenschaft wird durch die Adresse der Transaktion bestimmt.
Insbesondere muß eine Adresse eines Speicherzugriffs in ei
nem Puffer der Adresse des nächsten Speicherzugriffs in dem
Puffer vorausgehen. Der spezifische Adresseninkrementwert
wird aus dem speziellen Bus und der Anwendung bestimmt (z. B.
4 oder 8 Bytes in dem Fall eines 32- bzw. 64-Bit-PCI-Bus
ses).
Ein Element 904 ist dann betreibbar, um den Durchschnitts
raum der Speicherzugriffe zu bestimmen, welcher den identi
fizierten Speicherzugriffsbereich umfaßt. Der Durchschnitts
raum ist die Durchschnittszahl der erfaßten Zustände in den
erfaßten Zustandslogikdaten zwischen aufeinanderfolgenden
Speicherverweisen in dem Bereich. Wie es an anderer Stelle
angemerkt ist, können andere Daten in den erfaßten Zustands
logikdaten Zeitstempelwerte umfassen. In einem solchen Fall
kann der Durchschnittsraum basierend auf Durchschnitts
zeitdifferenzen zwischen aufeinanderfolgenden erfaßten Zu
ständen des Bereichs bestimmt werden.
Wieder bezugnehmend auf Fig. 6 ist nun ein Element 608 be
treibbar, um Speicherzugriffsbereiche zu orten, welche wahr
scheinlich Pufferbeschreibern entsprechen. Wie es oben ange
merkt wurde, sind Pufferbeschreiber Datenstrukturen, die in
einer solchen I/O-Architektur mit gemeinsam verwendetem
Speicher verwendet werden, um die angeforderte I/O-Operation
zu beschreiben, die einen Zeiger auf den Datenpuffer umfaßt,
der mit der Lesen- oder der Schreiben-Operation verknüpft
ist. Bereiche, welche wahrscheinlich Pufferbeschreibern
entsprechen, können daher durch ihren Dateninhalt identifi
ziert werden (sie enthalten z. B. Zeiger auf einen Speicher
zugriffsbereich, der oben durch einen Betrieb des Elements
606 identifiziert worden ist). Abhängig von den derart geor
teten Pufferbeschreibern können Speicherzugriffsbereiche un
terteilt werden, um die Tatsache wiederzugeben, daß in einem
einzigen Speicherzugriffsbereich, der als Puffer enthaltend
identifiziert ist, scheinbar auf mehrere Puffer verwiesen
wird.
Die Fig. 10 und 11 sind Flußdiagramme, die zusätzliche De
tails des Betriebs des Elements 608 liefern. Elemente 1000
bis 1006 von Fig. 10 sind betreibbar, um doppelt verschach
telte Schleifenkonstrukte zu initialisieren. Die äußerste
Schleife, die durch ein Element 1000 initialisiert wird,
verarbeitet jeden Speicherbereich, der durch einen Betrieb
des obigen Elements 606 versuchsweise identifiziert wurde,
bis das Element 1002 bestimmt, daß keine zu verarbeitenden
Bereiche verbleiben. Eine Zeigervariable "P" wird durch ei
nen Betrieb des Elements 1002 auf den nächsten zu verarbei
tenden Bereich eingestellt. Für jeden Bereich, auf den durch
P gezeigt wird, versuchen die Elemente 1004 bis 1020 zu be
stimmen, ob der Bereich einer ist, der Pufferbeschreiber
enthält. Das Element 1004 initialisiert ein inneres Schlei
fenkonstrukt, um alle Speicherzugriffe innerhalb des gegenwärtigen
Bereichs P zu verarbeiten (bis zu der maximalen
Länge eines Puffers, wie es durch die oben erwähnten Konfi
gurationsparameter bestimmt ist). Eine Zeigervariable "Q"
wird durch einen Betrieb des Elements 1004 eingestellt, um
auf den nächsten Speicherverweis innerhalb des gegenwärtigen
zu verarbeitenden Bereichs P zu zeigen. Jeder Speicherzu
griff Q in dem vorliegenden Bereich P wird dann durch Ele
mente 1008 bis 1020 verarbeitet, bis das Element 1006 be
stimmt, daß keine weiteren zu verarbeitenden in dem gegen
wärtigen Bereich P vorhandenen Speicherzugriffe verbleiben.
Die tatsächlichen Pufferadressenzeiger in dem Beschreiber
können (müssen jedoch nicht) auf dieselbe Art und Weise co
diert sein. Die vom Benutzer zugeführten Konfigurationspara
meter (welche oben beschrieben wurden) können verwendet wer
den, um den tatsächlichen Pufferzeiger zu decodieren, bevor
sie, wie es oben in Fig. 10 beschrieben wurde, analysiert
werden können. Dieses Decodierverfahren kann das Verschie
ben, das Maskieren, das Hinzufügen von Versatzwerten, usw.
umfassen, bevor der resultierende Wert analysiert werden
kann, um seine Gültigkeit als Pufferzeiger in einem Be
schreiber zu bestimmen.
Wenn das Element 1006 bestimmt, daß alle zu verarbeitenden
Zugriffe in dem gegenwärtigen Bereich P inspiziert worden
sind, um zu bestimmen, ob sie Pufferbeschreiber darstellen,
sind nun die Elemente 1008 und 1010 betreibbar, um zu be
stimmen, ob der Bereich in der Tat derart erscheint, daß er
Pufferbeschreiber erhält. Insbesondere bestimmt das Element
1008, ob ein Zähler anzeigt, daß die Anzahl von Speicherzu
griffen, welche als Beschreiber erscheinen, hoch genug ist,
um die Folgerung zu ziehen, daß der Bereich in der Tat Puf
ferbeschreiber enthält. Die Anzahl von Speicherzugriffen,
die in dem Bereich gefunden werden, wird durch den Zählwert
der in demselben gefundenen Zeiger geteilt. Das Resultat
dieser Dichteberechnung muß kleiner als die Pufferbeschrei
bermaximalgröße für den Bereich sein, damit derselbe durch
einen Betrieb des Elements 1010 identifiziert wird, als daß
er ein Bereich ist, der Beschreiber enthält. Wenn der
Vergleich offenlegt, daß dieser Dichtewert für Zeiger, die
in dem Bereich gefunden wurden, zu hoch ist, dann wird der
Speicherbereich durch den Betrieb des Elements 1010 nicht
als ein Beschreiberbereich identifiziert. Ob der Bereich
derart markiert ist oder nicht, die Verarbeitung wird mit
dem Element 1000 fortgesetzt, um den nächsten Bereich (wenn
einer vorhanden ist) zu verarbeiten, der durch den Betrieb
des Elements 606, wie es oben beschrieben wurde, ver
suchsweise geortet worden ist.
Wenn das Element 1006 bestimmt, daß in dem gegenwärtigen Be
reich P ein anderer Speicherverweis Q verarbeitet werden
soll, wird die Verarbeitung mit den Elementen 1012 bis 1020
von Fig. 11 fortgesetzt. Das Element 1012 ist betreibbar, um
aus dem Datenwert, der dem Speicherverweis Q entspricht, zu
bestimmen, ob der Speicherverweis auf einen weiteren Spei
cherzugriffsbereich zeigt, der durch den Betrieb des obigen
Element 606 versuchsweise identifiziert wurde. Wenn das
nicht so ist, wird die Verarbeitung mit dem Element 1004 von
Fig. 10 fortgesetzt, um einen weiteren Speicherverweis in
dem gegenwärtigen Bereich P zu verarbeiten. Wenn der Spei
cherverweis Q des gegenwärtigen Bereichs P derart erscheint,
daß er auf einen weiteren Bereich in den versuchsweise iden
tifizierten Speicherzugriffsbereichen zeigt, dann wird eine
Zeiger-gefunden-Zählervariable durch einen Betrieb des Ele
ments 1014 inkrementiert, um anzuzeigen, daß der gegenwärti
ge Bereich P einen Pufferbeschreiberbereich darstellen kann.
Wie es oben erwähnt wurde, wird der Zählerwert bei dem Test
des Elements 1008 von Fig. 10 verwendet, um zu bestimmen, ob
eine ausreichende Anzahl von Speicherverweisen in dem gegen
wärtigen Bereich P als Pufferbeschreiber erscheint. Der Zäh
lerwert wird in dem Element 1000 zurückgesetzt, um die Ver
arbeitung jedes Bereichs zu starten.
Im allgemeinen zeigen Pufferbeschreiber auf Puffer, obwohl
in bestimmten Fällen ein Pufferbeschreiber ebenfalls einen
Zeiger auf einen anderen Beschreiber enthalten kann (wie z. B.
eine verknüpfte Liste von Beschreibern oder indirekten
Zeigerverweisen). In einem solchen Fall kann der Bereich,
auf den gezeigt wird, einen anderen Pufferbeschreiberbereich
darstellen.
Das Element 1018 bestimmt dann, ob der Zeiger in dem gegen
wärtigen Pufferbeschreiber des Speicherverweises Q auf den
Beginn eines weiteren Speicherzugriffsbereichs oder auf eine
bestimmte andere Position in einem anderen Speicherzugriffs
bereich zeigt. Wenn der Zeiger in dem Speicherverweis Q auf
eine andere Position als den Beginn eines Speicherzugriffs
bereichs zeigt, dann ist das Element 1020 betreibbar, um den
Bereich, auf den gezeigt wird, zu markieren, als daß dersel
be möglicherweise mehrere Unterbereiche enthält, welche wei
ter identifiziert und getrennt werden (wie es nachfolgend
erörtert wird). Es sollte ebenfalls angemerkt werden, daß
Zeiger auf Puffer, die indirekt sind (d. h. das Zeigen auf
einen anderen Bereich als den des tatsächlichen Puffers),
keine Unterteilung von Puffern in dem indirekten Bereich be
wirken werden. Der indirekte Bereich wird statt dessen als
ein Bereich identifiziert, der Pufferbeschreiber enthält,
und zwar aufgrund einer ausreichend hohen Dichte von Zeigern
im Vergleich zu Puffern innerhalb des Bereichs. Zusätzlich
kann ein Zeiger auf eine Grenzposition zeigen, die nicht mit
der Buswortgröße ausgerichtet ist. Ein solcher Zeiger wird
als gültiger Zeiger erkannt, wenn der spezielle Bus Zugriffe
auf weniger als eine gesamte Busworteinheit von Daten unter
stützt (z. B. ein Zeiger auf eine 16-Bit- oder auf eine 8-
Bit-Grenze innerhalb einer 32-Bit-Buswortgröße). Die Verar
beitung wird dann mit dem Element 1004 von Fig. 10 fortge
setzt, um zusätzliche Speicherverweise innerhalb des gegen
wärtigen Bereichs P zu verarbeiten.
Wieder bezugnehmend auf Fig. 6 ist das Element 610 nun be
treibbar, um Puffer aufzubauen, die in den Speicherzugriffs
bereichen geortet wurden, die oben durch den Betrieb des
Elements 606 identifiziert worden sind, und die durch den
Betrieb des Elements 608 nicht als Pufferbeschreiber markiert
wurden. Zusätzlich analysiert das Element 610 jeden
möglichen Unterbereich innerhalb der Bereiche, die durch den
Betrieb des Elements 608 identifiziert worden sind. Die Fig.
12 und 13 sind Flußdiagramme, die den Betrieb des Elements
610 detaillierter beschreiben.
Elemente 1200 bis 1208 von Fig. 12 sind bei jedem Bereich,
der durch den Betrieb des obigen Elements 608 geortet wurde,
iterativ betreibbar. Das Element 1200 von Fig. 12 ist daher
betreibbar, um zu bestimmen, ob von den Elementen 1202 bis
1208 von Fig. 12 ein weiterer Bereich verarbeitet werden
soll. Wenn dies nicht so ist, ist die Verarbeitung des Ele
ments 610 vollendet. Andernfalls ist das Element 1202 nach
folgend betreibbar, um die Verarbeitung zu initialisieren,
die erforderlich ist, um Puffer innerhalb des gegenwärtigen
Bereichs zu orten. Der Betrieb des Elements 610 erzeugt eine
Liste von Puffern, die innerhalb des Bereichs identifiziert
werden. Das Element 1202 initialisiert daher die Liste von
identifizierten Puffern für die Verarbeitung des gegenwärti
gen Bereichs.
Das Element 1204 führt die Verarbeitung durch, die erforder
lich ist, um Puffer innerhalb des gegenwärtigen Bereichs zu
identifizieren, welche an der niedrigen Adresse des Bereichs
starten. Die Verarbeitung des Elements 1204 ist im Wesen re
kursiv, um Puffer innerhalb des gegenwärtigen Bereichs zu
erkennen, der an einer gegebenen Adresse in dem Bereich
startet. Die Verarbeitung des Elements 1204 wird in dieser
Anmeldung auch als Kernpufferkonstruktionsalgorithmus
bezeichnet, und dieselbe wird wiederverwendet, um weitere
Puffer innerhalb des gegenwärtigen Bereichs zu konstruieren
(zu identifizieren oder zu erkennen), die an anderen Posi
tionen als der Beginn-Grenze des Bereichs starten. Details
der Verarbeitung des Elements 1204 werden nachfolgend bezug
nehmend auf Fig. 13 erörtert.
Das Element 1206 von Fig. 12 ist nun betreibbar, um zu be
stimmen, ob die Größe des gegenwärtigen Bereichs (in Speicheradressenpositionen
gemessen) größer als die maximale
Puffergröße ist. Die maximale Puffergröße ist ein konfigu
rierbarer Parameter der Verfahren der vorliegenden Erfin
dung, der von dem Benutzer anwendungsspezifisch eingestellt
wird, um die Verfahren an eine spezielle Anwendung oder an
ein spezielles Datenaustauschprotokoll anzupassen. Wenn die
Größe des Bereichs kleiner oder gleich der maximalen Puffer
größe ist, ist die Pufferkonstruktion für den gegenwärtigen
Bereich vollendet. Die Konstruktion von Puffern, die an der
Beginn-Grenze des Bereichs starten, wird sichergestellt, um
alle gültigen Puffer in diesem Bereich zu orten. Die Verar
beitung wird daher fortgesetzt, indem zu dem Element 1200
schleifenmäßig zurückgesprungen wird, um den nächsten Be
reich zu verarbeiten. Andernfalls wird die Verarbeitung mit
dem Element 1208 fortgesetzt, um Puffer zu konstruieren (zu
erkennen), die an Positionen innerhalb des gegenwärtigen
Bereichs starten, die sich von der Startgrenze unterschei
den. Die Verarbeitung wird dann durch schleifenmäßiges Zu
rückspringen zu dem Element 1200 fortgesetzt, um zusätzliche
Bereiche zu verarbeiten. Die Verarbeitung des Elements 610
ist vollendet, wenn das Element 1200 bestimmt, daß alle Be
reiche für das Aufbauen von Puffern in denselben verarbeitet
worden sind.
Die Elemente 1204 und 1208 führen eine ähnliche Verarbeitung
durch, indem die Verarbeitung des Kernpufferkonstruktions
algorithmus wiederverwendet wird. Die Erfassung von Puffern
an dem Beginn der Speicherbereiche vor denen, die an anderen
Positionen innerhalb des Speicherbereichs starten können,
ist eine Heuristik, die beim korrekten Identifizieren kor
rekter Pufferzugriffe von potentiell zerstörenden Speicher
zugriffen in dem Speicherbereich hilft. Ein Fachmann wird
ohne weiteres erkennen, daß andere heuristische Tests durch
geführt werden können, um bei der Erkennung von korrekten
Pufferverweisen im Unterschied zu anderen Speicherzugriffen
in einem Bereich zu helfen.
Ein Nebenprodukt der Verarbeitung des Elements 610 ist der
Aufbau eines Arrays von Datenstrukturen, das jeden identifi
zierten (konstruierten) Puffer beschreibt, durch den Kern
pufferkonstruktionsalgorithmus. Für jeden solchen identifi
zierten Puffer umfaßt eine Datenstruktur folgende Felder:
- - den Pufferdateninhalt (als eine hexadezimale, ASCII- oder EBCDIC-Zeichenkette);
- - die Pufferbezeichnung (den Namen), die dem Puffer zuge wiesen ist;
- - die Startadresse des Puffers;
- - die Endadresse des Puffers;
- - die Startzeitetikette des Puffers;
- - die Endzeitetikette des Puffers;
- - die Startzustandsnummer (den -Zustandsversatz) des Puf fers;
- - die Endzustandsnummer (den -Zustandsversatz) des Puffers; und
- - eine Zerstörungsflag (die anfänglich zurückgesetzt ist und durch eine nachfolgend erfaßte Zerstörung gesetzt wird).
Wieder bezugnehmend auf Fig. 6 bestimmt das Element 612 nun,
ob der Benutzer lediglich die Vorverarbeitung der erfaßten
Zustandslogikdaten anforderte. Die Verarbeitung der Elemente
600 bis 610 erfaßt Zustandslogikdaten und wandelt die erfaß
ten Daten in Datenstrukturen um, die bei der späteren An
zeige von Puffern und Pufferbeschreibern, die in den erfaß
ten Daten gefunden werden, nützlich sind. Diese Datenstruk
turen, die eine interne Darstellung sind, die für die Anzei
geschritte der Elemente 614 bis 646 nützlich sind, können
für eine spätere Betrachtung gespeichert werden. Wenn das
Element 612 bestimmt, daß die Vorverarbeitung der erfaßten
Zustandslogikdaten angefordert wurde, wird die interne Dar
stellung der Datenstrukturen in einem dauerhaften Speicher
gespeichert, der den Verfahren der vorliegenden Erfindung
zugeordnet ist, und das Verfahren vollendet die Verarbei
tung. Andernfalls wird die Verarbeitung an dem Element 614
fortgesetzt, um eine Anzeige der Analyseergebnisse aus den
internen Datenstrukturen zu beginnen, die durch Analyse der
erfaßten Zustandslogikdaten erzeugt wurden. Ein Fachmann
wird ohne weiteres erkennen, daß die Verfahren der vorlie
genden Erfindung in einem Schritt 614 eingeleitet werden
können, der mit vorverarbeiteten erfaßten Zustandslogikdaten
gespeist wird, die durch einen früheren Betrieb der Elemente
600 bis 612 vorher in dem dauerhaften Speicher gespeichert
wurden.
Die Resultate der Analyse der Puffer und der Pufferbeschrei
ber, die durch den Betrieb der obigen Elemente 600 bis 610
durchgeführt wird, werden dem Benutzer zusammen mit einer
weiteren optionalen Analyse durch den Betrieb der Elemente
614 bis 646 der Fig. 6 bis 8 präsentiert. Die Fig. 4 und 5,
welche oben erörtert wurden, sind beispielhafte Computeran
zeigebildschirme zur Darstellung der Analyseergebnisse. Ins
besondere zeigt das Element 614 die konstruierten Puffer auf
der Gitteranzeige von Fig. 4 an. Die Y-Achse von Fig. 4, wie
es oben angemerkt wurde, stellt die Adressenbereiche dar,
die in den erfaßten Zustandslogikdaten identifiziert wurden,
während Marken entlang der X-Achse in der Zeile (dem Band),
die (das) dem Bereich entspricht, spezielle erfaßte Zustände
anzeigen, die für einen Verweis auf eine Speicherposition in
dem Bereich sprechen.
Um dem Benutzer beim Erkennen visuell zu helfen, daß eine
spezielle Sammlung von Speicherverweisen in dem Speicherbe
reich wahrscheinlich einen Speicherverweis umfaßt, ist die
Sammlung von Verweisen durch Verbinden derselben mit einer
farbcodierten Linie hervorgehoben. Die Linie, die Verweise
verbindet, hilft dem Benutzer dabei, die Verweise als einen
verwandten Satz von Speicherzugriffen, die einen Pufferver
weis aufweisen, zu visualisieren. Die Farbe der Linie kann
verwendet werden, um den Typ von Verweisen (z. B. Lesevor
gänge gegenüber Schreibvorgängen, Hostzugriffe gegenüber
I/O-Schnittstellenzugriffen, usw.) anzuzeigen. Zusätzlich
identifiziert ein Graphikanzeiger am linken Rand der Anzei
ge, in der die Speicherbereichsparameter angezeigt sind, auf
visuelle Art und Weise den Speicherbereich als einen, der
Puffer enthält.
Ein Fachmann wird ohne weiteres erkennen, daß die Verarbei
tung des Elements 610 (beispielsweise), um Pufferverweise
innerhalb der Speicherzugriffsbereiche zu konstruieren, mit
der Anzeigeerzeugung des Elements 614 überlappt sein kann.
Auf eine solche Art und Weise kann die Anzeige erzeugt wer
den, sobald die Pufferverweise innerhalb der erfaßten Zu
standslogikdaten erkannt werden. Solche parallelen/gleich
zeitigen Verarbeitungstechniken sind für Fachleute bekannt.
Das Element 614 ist ferner betreibbar, um eine Bezeichnung
(einen Namen), der mit jedem Puffer verknüpft ist, der auf
dem Computeranzeigebildschirm des Benutzers angezeigt ist,
zu erzeugen. Der Benutzer kann später einen speziellen der
angezeigten Puffer durch "Rechts-Anklicken" der Bezeichnung
des Puffers auswählen. Der Dateninhalt eines solchen ausge
wählten Puffers kann dann in einem Textfenster entweder in
einer hexadezimalen Rohform oder als ASCII- oder EBCDIC-
Textformat betrachtet werden. Das Element 502 von Fig. 5,
das später erörtert wird, stellt ein beispielhaftes Fenster
dar, das eine Textanzeige eines ausgewählten Puffers lie
fert.
Das Element 616 fügt dann die Pufferbeschreiberanzeigen zu
der Computerbildschirmanzeige hinzu, die durch das Element
614 oder durch Benutzerauswahl eingeleitet wurde. Insbeson
dere, wie es oben erörtert wurde, werden die Pufferbeschrei
ber auf der Gitteranzeige auf eine Art und Weise angezeigt,
die der Anzeige der Puffer ähnlich ist. Zusätzlich werden
Pfeilvektoren zwischen den angezeigten Pufferbeschreibern
und dem entsprechenden Puffer, auf den der Beschreiber
zeigt, gezeichnet. Die Pfeile helfen dem Benutzer beim Vi
sualisieren der Verknüpfung zwischen einem Zugriff auf einen
Pufferbeschreiber und dem verknüpften Zugriff auf den ent
sprechenden Puffer.
Der Pfeil wird vertikal von dem Punkt des Pufferbeschreiber
speicherzugriffs zu dem entsprechenden Speicherbereich gezo
gen, der den Puffer enthält, auf den von dem Pufferbeschrei
ber verwiesen wird. Die tatsächlichen Speicherzugriffe, die
den entsprechenden Pufferverweis umfassen (d. h. die ent
sprechenden DMA-Zugriffe), können eine bestimmte Zeit später
in folgenden erfaßten Zuständen auftreten, die in zeitlicher
Reihenfolge von links nach rechts über der X-Achse der An
zeige angezeigt werden. Die horizontale Beabstandung zwi
schen der vertikalen Linie (dem Pfeil) von dem Pufferbe
schreiber zu dem entsprechenden Pufferverweis (den DMA-Ver
weisen) zeigt die Zeitverzögerung (in Anzahlen von Zuständen
gemessen) zwischen den zwei Ereignissen an. Diese Beabstan
dung liefert eine sichtbare Rückkopplung für den Benutzer
bezüglich der Zeitgebung zwischen dem Pufferbeschreiberver
weis und dem tatsächlichen Pufferverweis. Solche visuellen
Informationen schaffen dem Benutzer Verhaltensmessungen des
zugrundeliegenden Datenaustauschprotokolls in einem einfach
zu interpretierenden Format. Wie es an anderer Stelle ange
merkt ist, können die erfaßten Daten Zeitstempelwerte zur
Verwendung beim Bestimmen der tatsächlichen relativen Zeit
gebung zwischen interessierenden Zuständen umfassen. In ei
nem solchen Fall kann die Verhaltensanalyse bezüglich der
tatsächlichen Zeitdifferenzen und nicht bezüglich der
Anzahlen von dazwischenliegenden Zuständen präsentiert
werden.
Das Element 618 von Fig. 7 ist nun betreibbar, um Puffer-
oder Pufferbeschreiberzugriffe hervorzuheben, die Datenzer
störungszugriffe darstellen können. Mehrere heuristische
Tests werden bei der Verarbeitung des Elements 618 angewen
det, um einen wahrscheinlich zerstörenden Zugriff auf Puffer
oder Pufferbeschreiber zu orten. Ein Schreibzugriff auf ei
nen Pufferinhalt, bevor vorher geschriebene Daten von dem
selben gelesen werden, zeigt wahrscheinlich beispielsweise
einen zerstörenden Zugriff auf diesen Puffer an. Viele ande
re heuristische Tests können verwendet werden, um potentiell
zerstörende Speicherzugriffe auf identifizierte Puffer und
Pufferbeschreiber zu identifizieren. Genauso werden zerstö
rende Speicherzugriffe, die derart identifiziert worden
sind, anschließend auf dem Computeranzeigebildschirm hervor
gehoben. Insbesondere heben die Verfahren der vorliegenden
Erfindung einen wahrscheinlich zerstörten Puffer oder Puf
ferbeschreiber durch Zeichnen eines farbig hervorgehobenen
(roten) rechteckigen Kastens um den identifizierten Puffer
herum hervor. Ein Fachmann wird ohne weiteres erkennen, daß
andere bekannte Benutzerschnittstellentechniken verwendet
werden können, um die potentiell zerstörenden Speicherzu
griffe hervorzuheben.
Eine erste Form der Pufferzerstörung, die durch die Verfah
ren der vorliegenden Erfindung erkannt wird, wird in dieser
Anmeldung als "lokale Pufferzerstörung" bezeichnet. Zuerst
wird ein Rechteck mit dem Puffer verknüpft, der in den X/Y-
Koordinatenraum Zustandsnummer/Adresse abgebildet worden
ist. Die untere linke Ecke des Puffers ist der Startzustand,
der den Puffer- oder Beschreiberverweis umfaßt, während die
obere rechte Ecke der Endzustand des Verweises ist. Die ge
samte Anzahl von Speicherzugriffen in dem Rechteck sollte
gleich der Größe des Puffers sein. Eine lokale Pufferzerstö
rung ist durch zusätzliche Verweise innerhalb des Rechtecks
gekennzeichnet.
Fig. 14 zeigt graphisch die Charakterisierung eines lokalen
Pufferzerstörungszustands. Die in Fig. 14 plazierten Buch
staben stellen erfaßte Speicherzugriffe in einem Bereich der
erfaßten Zustandslogikdaten dar. Der Kasten, der die Buch
staben umgibt, stellt die Grenzen des Rechtecks dar, das
durch den Puffer- oder Beschreiberverweis in dem Bereich de
finiert ist. Die Speicherzugriffe, die durch den Buchstaben
"L" markiert sind, stellen legale Speicherverweise dar, wel
che den Puffer- oder den Beschreiberverweis umfassen. Der
Speicherzugriff, der durch den Buchstaben "E" in Fig. 14
markiert ist, stellt einen fehlerhaften Speicherzugriff dar
(E = Error = Fehler). Ein solcher fehlerhafter Speicherzu
griff kann durch eine ungültige Zeigervariable in einem Pro
gramm oder durch einen unkorrekt initialisierten DMA-Verweis
durch eine I/O-Schnittstelle erzeugt werden. Obwohl der in
Fig. 14 dargestellte Puffer fünf legale Speicherzugriffe
(durch die Zeichen "L" markiert) aufweist, werden innerhalb
der Begrenzungen des Rechtecks des Puffers sechs Zugriffe
geortet. Dieser Puffer von Fig. 14 kann dann durch Puffer
zerstörungsheuristikverfahren hervorgehoben werden, als daß
derselbe möglicherweise zerstört ist. Der zerstörte Puffer
verweis wird dann durch ein graphisches Rechteck auf dem Be
nutzeranzeigebildschirm, wie es oben angemerkt wurde, her
vorgehoben. Ein Fachmann wird ohne weiteres erkennen, daß
spezielle Anwendungen der vorliegenden Erfindung für die
Analyse einer speziellen Busstruktur und eines speziellen
Protokolls durch heuristische Tests verbessert werden kön
nen, welche doppelte Speicherzugriffe zwischen verwandten
Stößen oder "Bursts" von Zugriffen erkennen. Die Verfahren
der vorliegenden Erfindung sind daher für eine spezielle
Anwendung abgestimmt, um mehrere derartige Charakteristika
der speziellen Busstruktur oder des speziellen Protokolls zu
berücksichtigen.
Fig. 15 ist eine graphische Zeichnung eines Puffers, der
durch Hohe-Adresse-Pufferzerstörungsheuristikverfahren der
vorliegenden Erfindung als zerstört erkannt worden ist. In
Fig. 15 zeigen die Speicherzugriffe, die mit "L" und "E"
markiert sind, wie in Fig. 14 oben legale (L) bzw. fehler
hafte (E) Speicherzugriffe innerhalb eines Speicherbereichs
an. Wie oben zeigt der Kasten, der alle markierten Zustände
umgibt, die Grenzen des Rechtecks des Pufferverweises an.
Ein Pufferverweis kann durch eine Hohe-Adresse-Pufferzer
störung gekennzeichnet sein, wenn höhere Adressen des Puf
fers offensichtlich nicht verwendet werden, wenn jedoch auf
dieselben durch fehlerhafte Speicherzugriffe zugegriffen
wird. Der gestrichelte Kasten in dem Kasten von Fig. 15
zeigt die Grenzen eines Rechtecks innerhalb des Rechtecks
des vollständigen Puffers an, in dem hohe Adressen nicht
verwendet werden sollen. Ein Pufferzugriff in diesem gestri
chelten Kasten zeigt einen zerstörten Puffer an, der von den
Hohe-Adresse-Pufferzerstörungstechniken der vorliegenden Er
findung erkannt worden ist. Ein Fachmann wird ohne weiteres
erkennen, daß die in Fig. 15 gezeichnete Zerstörung durch
Anwendung der lokalen Pufferzerstörungstechniken, die oben
bezugnehmend auf Fig. 14 beschrieben sind, nicht erkannt
werden dürfte.
Fig. 16 ist eine graphische Darstellung eines Puffers, der
durch Zwischen-Puffer-Zerstörungsheuristikverfahren der vor
liegenden Erfindung als zerstört erkannt worden ist. Zwei
Pufferverweise 1600 und 1602 sind in Fig. 16 innerhalb des
Speicherbereichs gezeigt. Wie oben sind die Rechtecke, die
die Puffer begrenzen, durch einen Kasten um jeden Puffer an
gezeigt. Zeichen "L" zeigen legale Speicherzugriffe auf den
Puffer innerhalb des Speicherbereichs an. Ein gestrichelter
Kasten zeigt die Zustände zwischen den zwei legalen Puffer
verweisen an. Jeder Speicherzugriff in dieser gestrichelten
Kastenregion zwischen den zwei legalen Pufferverweisen kann
einen zerstörenden Speicherverweis darstellen. Der Speicher
zugriff, der mit "E" in Fig. 16 innerhalb des gestrichelten
Kastens zwischen den zwei legalen Pufferverweisen gekenn
zeichnet ist, stellt daher einen fehlerhaften Speicherzu
griff dar.
Ein Fachmann wird ohne weiteres erkennen, daß der Hohe-
Adresse-Pufferzerstörungstest, der in Fig. 15 gezeigt ist,
und der Zwischen-Puffer-Zerstörungstest, der in Fig. 16 ge
zeigt ist, nur nützliche heuristische Tests sind, wenn die
Pufferverweise lediglich an der Startadresse des entspre
chenden Speicherbereichs starten. Wenn, wie es oben ange
merkt wurde, der Pufferbereich größer als die Puffergröße
ist, dann würden die fehlerhaften Speicherverweise, die mit
den Zeichen "E" in den Fig. 15 und 16 bezeichnet sind, durch
den Betrieb des oben gezeigten Elements als gültige Puffer
verweise aufgebaut werden. Die Verfahren der vorliegenden
Erfindung helfen dem Benutzer daher beim Identifizieren
einer wahrscheinlichen Puffer- und Beschreiberzerstörung.
Die Verfahren der vorliegenden Erfindung "schreiten" in dem
Sinn des Bereitstellens von Rohinformationen für den Benut
zer zu einer weiteren Analyse, wenn die heuristischen Ver
fahren Probleme nicht mit Sicherheit identifizieren können,
"nach und nach herab".
Fig. 17 ist eine graphische Darstellung eines Pufferbe
schreibers, der durch Puffer/Beschreiber-Interaktionszerstö
rungsheuristikverfahren der vorliegenden Erfindung als wahr
scheinlich zerstört erkannt wurde. Wie oben bezeichnen die
zwei Buchstaben "L" legale Speicherzugriffe auf einen Puffer
innerhalb eines Speicherbereichs. Kasten umgeben die Grenze
der Pufferverweise. Die Beschreiber D1, D2 und D3 sind Ver
weise auf einen Beschreiber innerhalb eines Speicherbereichs
der erfaßten Zustandslogikdaten. Wie oben bezugnehmend auf
das Element 616 beschrieben, werden Pfeile vertikal von dem
Beschreiberverweis zu dem Beginn des Speicherbereichs gezo
gen, der den Puffer enthält, auf den sich der Beschreiber
bezieht. D1, D2 und D3 sind daher mit einem Pfeil verknüpft,
der auf den Speicherbereich gerichtet ist, der zwei legale
Pufferverweise 1700 und 1702 enthält. Wie es in Fig. 17 ge
zeigt ist, ist der Beschreiberverweis D2 fremd und tritt in
der Mitte eines gültigen Verweises auf dem Puffer 1700 auf.
Die Verfahren der vorliegenden Erfindung orten einen solchen
fremden, ungültigen Beschreiberverweis durch Orten aller
Puffer in dem Speicherbereich, auf den der Beschreiber
zeigt, für jeden Beschreiberverweis. Wenn das Rechteck eines
Pufferverweises die Zustandszahl, die dem Beschreiberverweis
entspricht, umfaßt, dann ist der Beschreiberverweis wahr
scheinlich fehlerhaft, und der Beschreiber wird auf dem Com
puteranzeigebildschirm des Benutzers hervorgehoben.
Wieder bezugnehmend auf Fig. 7 ist das Element 620 nun be
treibbar, um Pakete anzusammeln, indem Puffer gemäß Informa
tionen aneinandergekettet werden, die aus den verweisenden
Beschreibern analysiert wurden. Diese Ansammlung ergibt eine
Liste von Paketen (und von ihren jeweiligen Dateninhalten),
die durch den Startzustand des ersten Puffers jedes Pakets
geordnet sind. Wie es oben angemerkt wurde, liefert der Be
nutzer Parameterinformationen, die die relative Position der
Paketlänge und/oder des anderen Endes von Paketanzeigern in
nerhalb der Beschreiberadressen beschreiben. Ein einzelnes
Paket kann eine Größe von einem einzelnen (sogar noch teil
weise verwendeten) Puffer bis zu mehreren Puffern haben.
Durch Anwenden solcher Benutzerspezifizierten Parameter ist
das Element 620 betreibbar, um logische Pakete basierend auf
den erfaßten Zustandslogikdaten zu konstruieren. Die Paket
informationen können dann, wie es oben erwähnt wurde, ver
wendet werden, um den Dateninhalt eines speziellen Pakets
unabhängig von der Anzahl von Puffern, die von dem Paket
überspannt werden, anzuzeigen, oder um die Daten-tragenden
Abschnitte des Pakets für eine Benutzerspezifizierte Such
zeichenkette zu suchen. Das Element 620 ist ebenfalls be
treibbar, um Paketbezogene Informationen mit anderen analy
tischen Geräten für eine weitere Analyse auszutauschen. Das
Element 620 kann beispielsweise seine Paketinformationen zu
einem anderen Protokoll-Decodierungs/Anzeige-Paket oder -Ge
rät übertragen. Solche Geräte/Pakete führen eine spezifische
Verarbeitung von spezieller Nützlichkeit zur Analyse des
speziellen verwendeten Datenaustauschprotokolls durch. Auf
ähnliche Weise kann das Element 620 angeleitet werden, um
Protokolldaten von einem anderen Protokollanalysatorgerät zu
empfangen, das an dem Kommunikationsmedium angebracht ist
(z. B. von einem LAN-Protokollanalysator, der parallel mit
dem Logikanalysator arbeitet, der unter den Verfahren der
vorliegenden Erfindung betreibbar ist). Die empfangenen Pro
tokolldaten überlappen im wesentlichen die Zeitperiode, die
durch die erfaßte Zustandslogik überdeckt wird, und können
daher mit den Paketinformationen korreliert sein, die durch
das Element 620 gesammelt werden. Abweichungen, die beim
Korrelieren der gesammelten Paketinformationen und der emp
fangenen Protokolldaten von einem externen Analysator erfaßt
werden, können dann auf dem Computeranzeigebildschirm des
Benutzers hervorgehoben werden. Die Protokollinformationen,
die Ergebnisse des Versuchens der Korrelation der Protokoll
informationen und beliebige Fehler bei der Korrelation kön
nen durch einen Betrieb des Elements 620 auf dem Benutzer
anzeigebildschirm als Reaktion auf eine entsprechende Be
nutzeranforderung angezeigt werden.
Das Element 622 ist dann betreibbar, um weitere Zustands
daten, die beispielsweise von einem weiteren Logikanalysator
erfaßt werden, der Daten erfaßt, die zwischen dem Hostcompu
ter und seinem Speicherteilsystem während der gleichen Zeit
periode, die durch die erfaßten Zustandslogikdaten darge
stellt ist, erfaßt werden, zu verschmelzen. Eine Verschmelz
ter-Zustand-Datenanzeige wird dann auf dem Computeranzeige
bildschirm des Benutzers präsentiert.
Durch Korrelieren und Vergleichen der erfaßten Daten von
mehreren analytischen Quellen und durch Erfassen von Daten
von mehreren Punkten der Datenkommunikationswege helfen die
Verfahren der vorliegenden Erfindung dem Ingenieur dabei,
schnell die Wurzelursache eines Datenzerstörungsfehlers zu
isolieren. Die Daten von anderen analytischen Quellen werden
mit den erfaßten Zustandslogikdaten verglichen, indem die
erfaßten Zustände der anderen Quellen mit den erfaßten Zu
standslogikdaten der vorliegenden Erfindung verschmolzen
werden. Wenn die vorliegende Erfindung beispielsweise in ei
nem Logikanalysator verwendet wird, der an der I/O-Schnitt
stelle innerhalb eines Hostcomputers angebracht ist, können
die Daten auf vorteilhafte Weise mit Daten korreliert und
verglichen werden, die von einem anderen Logikanalysator
erfaßt werden, der an dem verknüpften Hostcomputer (z. B. an
der Hostcomputer-CPU-Speicher-Schnittstelle) angebracht ist.
Die Verschmelzung der zwei Quellen der erfaßten Zustands
logikdaten ortet auf einfache Art und Weise einen ersten
Zustand in den erfaßten Daten einer Quelle, welcher einem
Zustand in der anderen Quelle entspricht. Folgende Zustände
in der ersten Quelle der erfaßten Zustandslogikdaten werden
an entsprechende folgende Zustände in der zweiten Quelle von
erfaßten Zustandslogikdaten angepaßt.
Wenn solche korrelierten Daten von mehreren Quellen verfüg
bar sind, können weitere Vergleiche durch den Betrieb der
Elemente 620 und 622 durchgeführt werden, um dem Benutzer
beim Orten der Wurzelursache von Datenzerstörungsfehlern
weiterhin zu helfen. Insbesondere kann ein Datenflußheuri
stikverfahren der vorliegenden Erfindung auf solche korre
lierten mehreren Quellen von erfaßten Daten angewendet wer
den, um eine wahrscheinliche Datenzerstörung zu erfassen,
die durch ein unkorrektes Lesen oder Schreiben von Daten in
Puffern bewirkt wird. Insbesondere "paaren" die Verfahren
der vorliegenden Erfindung Pufferverweise, die Daten in den
Puffer schreiben, mit entsprechenden Lesezugriffen auf den
Puffer und umgekehrt. Jede Dateneinheit, die von der I/O-
Schnittstellenkarte auf einen Puffer geschrieben wird,
sollte durch einen Speicherverweis von dem Hostcomputer und
umgekehrt gelesen werden. Lesen- und Schreiben-Speicherver
weise von beiden Seiten sind verfügbar und werden durch den
Betrieb der Elemente 620 und 622 korreliert. Lesezugriffe
mit keinem entsprechenden vorhergehenden Schreibezugriff
werden als wahrscheinliche Ursachen von Datenzerstörungspro
blemen flagmäßig angezeigt und auf dem Computeranzei
gebildschirm des Benutzers auf geeignete Art und Weise her
vorgehoben.
Das Element 626 zeigt eine Zusammenfassung der analytischen
Ergebnisse an, um dabei zu helfen, die Aufmerksamkeit des
Ingenieurs auf potentielle Ursachen eines Datenzerstörungs
fehlers zu richten. Zusammenfassungsinformationen können
folgende Punkte umfassen:
- - Gesamtanzahl von identifizierten Speicherbereichen;
- - Anzahl von Speicherbereichen, die als Beschreiber-enthal tend identifiziert sind;
- - Anzahl von Speicherbereichen, die als Puffer enthaltend identifiziert sind;
- - Anzahl von nicht-identifizierten Speicherbereichen;
- - Anzahl von georteten Beschreibern;
- - Anzahl von georteten Puffern;
- - Anzahl von wahrscheinlich zerstörten Puffern;
- - Anzahl von Speicherzugriffen;
- - Anzahl von Stößen("Bursts")/Transaktionen.
Das Element 628 wartet dann auf eine Benutzereingabe (über
eine Tastatur, ein Zeigegerät oder über andere bekannte Be
nutzereingabetechniken), um die Verfahren der vorliegenden
Erfindung für eine weitere Verarbeitung anzuleiten. Wenn der
Benutzer anzeigt, daß die Verarbeitung vollendet ist (eine
Ausgangs- oder "Exit"-Anforderung), dann beendet das Element
630 die Verarbeitung der Verfahren der vorliegenden Erfin
dung. Andernfalls wird die Verarbeitung mit dem Element 632
von Fig. 8 fortgesetzt.
Die Elemente 632 bis 646 von Fig. 8 sind betreibbar, um spe
zielle Benutzeranforderungen nach einer fortgesetzten Verar
beitung der Verfahren der vorliegenden Erfindung zu verar
beiten. Insbesondere sind die Elemente 632 und 634 betreib
bar, um eine Benutzeranforderung zu verarbeiten, um einen
ausgewählten Puffer oder einen ausgewählten Pufferbeschrei
ber in Rohdatenform anzuzeigen. Das Fenster 502 von Fig. 5,
das oben erörtert wurde, ist für eine solche Benutzerange
forderte Anzeige beispielhaft. Die Elemente 636 und 638 sind
auf ähnliche Art und Weise betreibbar, um ein ausgewähltes
Paket in einem Protokollspezifischen Format anzuzeigen. Das
Fenster 500 von Fig. 5, das oben erörtert wurde, ist für ei
ne solche Benutzerangeforderte Anzeige in einem Protokoll
spezifischen Format beispielhaft. Wie oben angemerkt wurde,
kann die Anzeige eines einzigen Pakets einen oder mehrere
Puffer überspannen. Ein Fachmann wird ohne weiteres erken
nen, daß die Protokollinformationen, die von den Verfahren
der vorliegenden Erfindung gesammelt wurden, zu einem exter
nen Protokollanalysemodul für eine tiefergehende Analyse
übertragen werden können, die speziell auf das Protokoll
ausgerichtet ist.
Die Auswahl eines anzuzeigenden Puffers in Verbindung mit
den Elementen 632 bis 638, die oben erwähnt wurden, wird
durch eine von mehreren bekannten Benutzerschnittstellen
techniken durchgeführt. Der Benutzer kann beispielsweise das
Zeigegerät (z. B. eine Maus) verwenden, um auf den erwünsch
ten Puffer zu zeigen und zu klicken. Ein Pop-up-Menü er
scheint dann, das es dem Benutzer erlaubt, eine spezielle
Operation in dem ausgewählten Puffer auszuwählen. Alternativ
kann der Benutzer einen Auswahlanzeiger (z. B. einen Cursor
oder ein "Laufzeichen") bewegen, indem eine Tastenanschlag
eingabe von der Tastatur verwendet wird. Zusätzlich können,
wie es oben erwähnt wurde, Puffer auf dem Computeranzeige
bildschirm eine textliche Bezeichnung umfassen, um den Puf
fer zu Auswahlzwecken zu identifizieren. Ein Benutzer wählt
dann einen speziellen Puffer aus, indem er den Puffernamen
durch Tastaturanschläge als Reaktion auf geeignete Auffor
derungen eingibt.
Die Elemente 640 und 642 sind als Reaktion auf eine Benut
zeranforderung, um die Pufferspezifikation oder andere Para
meter zu modifizieren, betreibbar, welche den Betrieb der
Verfahren der vorliegenden Erfindung steuern. Wie es oben
angemerkt wurde, können verschiedene Parameter durch den Be
nutzer konfiguriert werden, um den Betrieb der Verfahren der
vorliegenden Erfindung sowohl beim Erkennen/Konstruieren von
Puffer- oder Protokollinformationen als auch beim Anzeigen
der Ergebnisse dieser Konstruktions/Erkennungs-Verarbeitung
zu steuern.
Die Elemente 644 und 646 sind als Reaktion auf eine Benut
zeranforderung betreibbar, um nach einer speziellen Zielzei
chenkette in den Puffern zu suchen, die in den erfaßten Zu
standslogikdaten erkannt wurden. Wie es oben angemerkt wur
de, kann die Suchzeichenkette (die Zielzeichenkette) in je
dem beliebigen von mehreren zweckmäßigen Formaten spezifi
ziert sein, die ein Dezimal-, ein Binär-, ein Hexadezimal-
und ein Text-Format (z. B. ASCII-Text) umfassen. Die Zei
chenkette ist in den Puffern lokalisiert, die durch das
obige Pufferkonstruktionsverfahren identifiziert worden
sind. Jeder Puffer, in dem die Suchzeigenkette lokalisiert
ist, wird auf dem Computeranzeigebildschirm hervorgehoben,
um dem Benutzer beim Lokalisieren der Suchzeichenkette zu
helfen. Wie es oben angemerkt wurde, sucht die Suchfunktion
der Verfahren der vorliegenden Erfindung die wiederkonstru
ierten Puffer nach der Suchzeichenkette durch, unabhängig
von der tatsächlichen Beabstandung (bezüglich des Zeit- oder
des Zustandsversatzes) der einzelnen Speicherverweise, wel
che den wiederkonstruierten Puffer bilden. Ohne die Hilfe
der Verfahren der vorliegenden Erfindung würde der Benutzer
gezwungen sein, manuell nach der erwünschten Zeichenkette zu
suchen. Eine solche manuelle Suche durch die erfaßten Zu
standslogikdaten ist aufgrund des potentiell nicht-zusammen
hängenden Wesens der erfaßten Zustände kompliziert, welche
ein spezieller Puffer aufweist. Ein Benutzer muß daher durch
die erfaßten Zustandslogikdaten manuell durchsuchen, während
er darauf achten muß, dazwischenliegende Zustände zu igno
rieren, die keine Abschnitte des speziellen Puffers (oder
eines anderen Speicherbereichs), der gerade durchgesucht
wird, aufweisen.
Ein Fachmann wird ohne weiteres erkennen, daß die Elemente
644 und 646 auf ähnliche Art und Weise betreibbar sind, um
Pufferbeschreiber oder Speicherbereiche zu suchen, die nicht
speziell entweder als Beschreiber oder als Puffer identifi
ziert sind. Der Benutzer kann das Ziel der Suchoperation
durch bekannte Benutzerschnittstellentechniken wählen.
Nach dem Verarbeiten der Benutzeranforderung (durch die Ele
mente 634, 638, 642 oder 646 oben) wird die Verarbeitung
fortgesetzt, indem zu dem Element 628 von Fig. 7 (bei der
Bezeichnung "C") schleifenmäßig zurückgesprungen wird, um
auf eine weitere Benutzeranforderung zu warten.
Fig. 13 liefert zusätzliche Details für den Kernpufferkon
struktionsalgorithmus, auf den bereits oben bezugnehmend auf
die Elemente 1204 und 1208 von Fig. 12 verwiesen wurde. Das
Kernpufferkonstruktionsverfahren (der Kernpufferkonstruk
tionsalgorithmus) wird mit einem Parameter aufgerufen, der
die Charakteristika des zu untersuchenden Bereichs (eine
Start- und e 26779 00070 552 001000280000000200012000285912666800040 0002019729180 00004 26660ine End-Adresse) anzeigt, wobei ein Parameter
anzeigt, ob die Konstruktion der Puffer in diesem Bereich
auf Puffer begrenzt sein soll, die an der Startadresse des
Bereichs starten.
Im allgemeinen arbeitet der Pufferkonstruktionsalgorithmus
durch Starten an einem speziellen erfaßten Speicherzugriff
("C") und durch Initialisieren einer Liste von Zugriffen,
die einen Pufferverweis umfassen. Der gegenwärtige Speicher
zugriff "C" ist der erste Zugriff in der initialisierten
Liste. Das Verfahren geht dann weiter, indem es nach dem
nächsten erfaßten Zugriff sucht, welcher den nächsthöheren
Wert in seinem Adressenfeld hat. Diese Suche nach dem näch
sten Speicherzugriff hört auf, wenn die erste von drei Be
dingungen auftritt, d. h. 1) wenn ein solcher Zugriff gefun
den wird, oder 2) wenn alle Speicherzugriffe in dem Bereich,
der untersucht wird, verarbeitet worden sind, ohne daß ein
solcher Zugriff lokalisiert worden ist, oder 3) wenn ein
Speicherzugriff lokalisiert worden ist, der Charakteristika
aufweist, die auf heuristische Art und Weise das Ende eines
Puffers von verwandten Speicherzugriffen definieren. Ein
solcher Zugriff kann den gleichen Adressenfeldwert wie der
Zugriff "C" haben, jedoch mit einem unterschiedlichen Typ
(lesen oder schreiben), oder einen unterschiedlichen Daten
feldwert, und derselbe wird einen Zustandsversatzwert zwi
schen dem Zustandsversatzwert von "C" und dem von "N" haben
(der lokalisierte Speicherzugriff mit dem nächsthöheren er
warteten Adressenfeldwert).
Der obige Fall 3 ist ein heuristischer Test, der versucht,
einen Bruch zwischen mehreren unabhängigen Verweisen auf ei
nen Puffer in einem Speicherbereich zu erkennen. Fig. 18
zeichnet die durch den obigen Fall 3 beschriebenen Bedingun
gen. Die X-Achse 1802 von Fig. 18 ist beispielhaft für den
Zustandsversatz eines Teilsatzes von erfaßten Speicherzu
griffen, wobei der Zustandsversatzindexwert von 0 bis 5
reichen kann. Die Y-Achse 100 ist beispielhaft für die
Adresse eines Speicherverweises in den erfaßten Zustands
daten für die Zustandsversätze, welche Adressenwerte von 0
bis 12 in Inkrementen von 4 aufweisen. Dem Zugriff "C" an
dem Zustandsversatzindex 1 und mit einem Adressenwert von 4
folgt (in der erwarteten Adressensequenz) der Zugriff "N" an
dem Zustandsversatzindex 3 und mit dem nächsten erwarteten
Adressenwert von 8 (dem ein Zugriff "A" folgt, usw.). Das
Lokalisieren des Zugriffs "X" an dem Zustandsversatzindex 2
mit dem gleichen Adressenwert (4) wie der Zugriff "C" be
wirkt jedoch, daß die Suche nach dem nächsten Zugriff "N"
nicht erfolgreich beendet wird (wie es oben für den Fall 3
beschrieben wurde). Fig. 19 zeigt ein typischeres Auftreten
dieses Falls 3, der sich auf typischere erfaßte Daten be
zieht. Die X-Achse 1902 und die Y-Achse 1900 von Fig. 19
sind wie in der Fig. 18 bezeichnet. Der Pufferverweis, der
aus Zugriffen besteht, die mit "1", "B" und "C" bezeichnet
sind, ist ein erster vollständiger Pufferverweis (entweder
gültig oder zerstört, wie es später bestimmt wird). Der
Pufferverweis, der aus den Zugriffen besteht, die mit "2",
"b", "c", "D" und "E" bezeichnet sind, ist ein zweiter
vollständiger Pufferverweis. Wenn der erste Pufferverweis
konstruiert wird, wird die Konstruktion der Liste von
Zugriffen, die der Puffer aufweist, bei dem Zugriff "C"
aufhören, da der Zugriff "c" zwischen den Zugriffen "C" und
"D" ist, und den gleichen Adressenwert wie der Zugriff "C"
hat.
Wenn die Suche aufgrund der obigen Bedingung 2 oder 3
beendet wird, beendet das Kernpufferkonstruktionsverfahren
der vorliegenden Erfindung den Aufbau des vorliegenden
Puffers. Die Liste von Zugriffen, die ein Pufferverweis
umfaßt, ist vollendet, und der Puffer, der dadurch darge
stellt ist, ist neu konstruiert. Wenn die Suche aufgrund der
obigen Bedingung 1 aufhört, dann kann der Speicherzugriff,
der in der Suche geortet worden ist, einen Speicherzugriff
darstellen, der Teil des Pufferverweises ist. Wenn der Spei
cherzugriff innerhalb des Maximalzwischenraumparameterwerts
von der Position des gegenwärtigen Zugriffs "C" (gemessen
durch die Anzahl von Zuständen oder durch die Zeit) ist,
dann wird der neue Zugriff an die Liste von Zugriffen ange
hängt, die der Pufferverweis umfaßt. Das Suchverfahren wird
dann wie oben wiederholt, wobei der Neuzugriff der gegen
wärtige Zugriff ("C") wird, und wobei nach dem nächsten
Zugriff in der Sequenz gesucht wird. Schließlich wird das
Suchverfahren unter entweder der obigen Bedingung 2 oder der
obigen Bedingung 3 beendet werden. Wenn der neu gefundene
Zugriff nicht innerhalb der Zwischenraumparameterbeabstan
dung von dem gegenwärtigen Zugriff "C" ist, dann wird die
Suche beendet, und die Pufferneukonstruktion ist für die
gegenwärtige Liste von Zugriffen vollendet.
Das Flußdiagramm von Fig. 13 liefert eine detaillierte Be
schreibung des Kernpufferkonstruktionsalgorithmus, der oben
erörtert wurde. Das Element 1300 von Fig. 13 ist zuerst
betreibbar, um eine Variable "C" auf den gegenwärtigen Zu
griff an dem Beginn des Bereichs, der durch einen durch das
Verfahren übergebenen Parameter identifiziert ist, zu set
zen. Das Element 1302 fügt dann einen Verweis auf den Zu
griff "C" zu einer Liste von Zuständen hinzu, welcher einen
Pufferverweis in den erfaßten Zustandslogikdaten umfassen
kann. Das Verfahren springt dann weiter, um weitere Zugriffe
zu der Liste hinzuzufügen, bis eine Bedingung erfüllt ist,
die das Verfahren (wie oben erwähnt) beendet. Die Elemente
1302 bis 1314 sind daher wiederholt betreibbar, wobei sie
Verweise auf Zugriffe zu der Liste hinzufügen, was einen
Pufferverweis identifiziert, bis eine Beendungsbedingung ge
funden ist.
Das Element 1304 ist betreibbar, um eine Variable "N" zu
setzen, um auf den nächsten Zugriff in dem Bereich zu ver
weisen, der durch einen Speicherzugriff auf den nächsten er
warteten inkrementierten Adressenwert in der sequentiellen
Adressenreihenfolge identifiziert ist, und der einen Zu
standversatzwert aufweist, der größer als der des Zugriffs
"C" ist. Es sei angemerkt, daß der Zustandsversatzwert des
Zugriffs "C" kleiner als der des Zugriffs "N" ist, welcher
wiederum kleiner als der irgendeines anderen Zugriffs auf
die gleiche Speicheradresse wie die des Zugriffs "N" ist.
Das erwartete Inkrement in der sequentiellen Adresse ist ein
konfigurierbarer Parameter, wie es oben angemerkt wurde, um
es zu erlauben, daß die Verfahren der vorliegenden Erfindung
ohne weiteres an eine Vielzahl von Computerumgebungen ange
paßt werden können. Das nächste erwartete Adresseninkrement
kann beispielsweise 4 oder 8 Byte für erfaßte Zustandslogik
daten sein, die mit einem PCI-Bus von 32 oder 64 Datenbits
verknüpft sind. Das Element 1306 bestimmt dann, ob der näch
ste Zugriff (durch "N" bezeichnet) in dem Speicherbereich
existiert. Wenn das nicht der Fall ist, hört das Verfahren
auf, und die Verarbeitung wird mit dem nachfolgend erörter
ten Element 1316 fortgesetzt. Andernfalls ist das Element
1308 nachfolgend betreibbar, um zu bestimmen, ob die Anzahl
von Zuständen zwischen dem Zustandsversatz des Zugriffs "N"
und des Zugriffs "C" innerhalb des erwarteten Zwischenraum
werts ist. Wenn der Zwischenraum zwischen folgenden Adres
senzuständen zu groß ist, wird dadurch heuristisch bestimmt,
daß die Zugriffe zu getrennten Pufferverweisen gehören, wo
nach die Verarbeitung mit dem nachfolgend erörterten Element
1316 fortgesetzt wird. Der Schwellenwert für den Maximal
zwischenraum zwischen Zuständen, die aufeinanderfolgende
Adressenspeicherverweise in einem einzigen Pufferverweis
darstellen, wird als ein Konfigurationsparameter einge
stellt, wie es oben angemerkt ist. Dies erlaubt es, daß der
Zwischenraum, der die Buszeitgebung und die Computerumge
bung, die getestet wird, anzeigt, an geeignete Werte für
eine spezielle Busstruktur oder Computeranwendung abgestimmt
wird. Wenn in anderen Worten der Zwischenraum zwischen dem
Zugriff "N" und dem Zugriff "C" größer als der maximal erwartete
Zwischenraumwert ist, vollendet das Verfahren von
Fig. 13 die Konstruktion dieses Puffers, und die Verarbei
tung wird mit dem Element 1316 fortgesetzt.
Das Element 1310 ist dann betreibbar, um zu bestimmen, ob
ein Speicherzugriff "X" existiert, welcher einen Zustand
versatzindexwert hat, der zwischen dem des Zugriffs "C" und
des Zugriffs "N" liegt, und der den gleichen Adressenfeld
wert wie der Zugriff "C" hat. Die Fig. 18 und 19, die oben
erörtert wurden, zeigen eine solche Bedingung. In Fig. 18
ist der Zugriff "X" zwischen den Zugriffen "C" und "N" ange
ordnet, und hat einen Adressenwert gleich dem Zugriff "C".
Auf ähnliche Weise zeigt Fig. 19 einen beispielhaften Zu
griff "c", der zwischen den Zugriffen "C" und "D" liegt, wo
bei ein Adressenfeldwert gleich dem Zugriff "C" ist. Wenn
ein solcher Zwischenzugriff in dem Speicherbereich existiert
und nicht zu dem Zugriff "C" bezüglich des Zugrifftyps und
des Datenwerts identisch ist, wird heuristisch bestimmt, daß
der nächste Speicherzugriff "N" ein Teil eines anderen
Pufferverweises ist. In diesem Fall ist die Konstruktion des
Puffers beendet, und die Verarbeitung wird mit dem Element
1316 fortgesetzt. Andernfalls wird die Verarbeitung mit dem
Element 1314 fortgesetzt, um den Verweis auf den Zugriff "C"
mit dem Verweis auf den Zugriff "N" zu aktualisieren, und um
dann die Suche fortzusetzen, indem zu dem Element 1302
schleifenmäßig zurückgesprungen wird, wobei der neue Zugriff
zu der Liste von Zugriffen in dem Pufferverweis hinzugefügt
wird, und wobei die Suche nach einem weiteren nächsten Zu
griff wiederholt wird.
Jeder Speicherzugriff, der zu der Liste von Zugriffen in dem
Pufferverweis durch den Betrieb des Elements 1302 hinzuge
fügt worden ist, wird ebenfalls durch dasselbe aus der Liste
von Zugriffen, die weiter analysiert werden sollen, ent
fernt. Sobald ein Speicherzugriff hierdurch als ein Element
eines speziellen Pufferverweises erkannt worden ist, wird es
nicht länger bei dem Aufbau anderer Pufferverweise in dem
Speicherzugriffsbereich berücksichtigt.
Wenn die Tests der Elemente 1306 oder 1310 bestimmen, daß
das Ende des Pufferverweises in der Suche geortet worden
ist, gibt das Element 1316 die Liste von Speicherzugriffen,
welche der Pufferverweis aufweist, zurück. Die Liste von
Zugriffen wird dann von den aufrufenden Funktionen verwen
det, um ferner die Wahrscheinlichkeit zu analysieren, daß
ein korrekter Speicherzugriff geortet worden ist. Nachdem
ein Pufferverweis durch das oben zusammengefaßte Verfahren
neu konstruiert worden ist, wird eine Vielzahl von heuristi
schen Tests auf den gegenwärtigen Pufferverweis angewendet,
um zu bestimmen, ob derselbe wahrscheinlich ein Pufferver
weis oder ein bestimmter anderer Verweis (wie z. B. ein zer
störender Verweis auf einen Puffer) ist. Es kann beispiels
weise ein Test ausgeführt werden, um die Durchschnittsbeab
standung der erfaßten Zustände zwischen Speicherzugriffen
eines scheinbar neu konstruierten Puffers zu bestimmen. Wenn
die Durchschnittszustandsbeabstandung außerhalb vorbe
stimmter (konfigurierbarer) Parameterwerte ist, dann kann
der neu konstruierte Puffer wieder "dekonstruiert" werden,
indem die Liste von Zugriffen, die der Pufferverweis auf
weist, zu der Liste von Zugriffen zurückgegeben wird, die
zur weiteren Analyse durch nachfolgende Aufrufvorgänge des
Pufferkonstruktionsalgorithmus verfügbar sind.
Ein Fachmann wird ohne weiters viele Varianten des oben be
schriebenen Kernpufferkonstruktionsalgorithmus erkennen,
welche den gleichen Grundzweck des Neuaufbauens von Puffer
verweisen innerhalb von Bereichen verstreuter Speicherver
weise in erfaßten Zustandslogikdaten erreichen. Die oben
erörterten Verfahren können beispielsweise modifiziert wer
den, um die Puffererkennung zu beschleunigen, indem der Zwi
schenraum zwischen scheinbar folgenden Speicherzugriffen
ignoriert wird. Jeder Speicherzugriff mit einem Adres
senfeldwert, der höher als der Adressenwert des vorherigen
Zugriffs ist, kann zu der Liste der Zugriffe hinzugefügt
werden, die den Pufferverweis darstellen. Obwohl eine
Beseitigung des Zwischenraumtests die Pufferneukonstruktion
beschleunigt, kann dies Genauigkeit bei dem Neuaufbau von
Speicherzugriffen opfern, welche in der Tat keine Pufferver
weise sind. Auf ähnliche Art und Weise wird ein Fachmann er
kennen, daß die Tests für erwartete Adresseninkremente be
seitigt werden können. Wenn die Liste von zu analysierenden
Zugriffen in einer sortierten Reihenfolge durch Erhöhen des
Zustandversatzes gehalten wird, dann kann jeder folgende
Zugriff, der die Zustandszwischenraumtestkriterien erfüllt,
zu der Liste von Zugriffen hinzugefügt werden, welche
scheinbar einen Pufferverweis aufweisen. Die Adressenfeld
werte jedes Zugriffs können ignoriert werden. Die verringer
te Genauigkeit einer solchen Heuristik mit gesteigerter Lei
stung wird in der späteren Erkennung von möglichen Datenzer
störungsfällen wiedergegeben, welche tatsächlich keine Da
tenzerstörung darstellen. Die beste gegenwärtig bekannte Art
und Weise zum Implementieren der vorliegenden Erfindung um
faßt daher die zusätzlichen Tests, die oben erörtert wurden,
um die Genauigkeit der Pufferneukonstruktion trotz einer ge
wissen langsameren Geschwindigkeit beim derartigen Durchfüh
ren zu verbessern.
Die Fig. 4 und 5 sind beispielhafte Computerbildschirmanzei
gen, welche einen Stil des visuellen Kommunizierens mit dem
Benutzer der Analyse vorschlagen, die durch die Verfahren
der vorliegenden Erfindung ausgeführt wird. In Fig. 4 zeigt
jede Zeile (die in dieser Anmeldung ebenfalls als ein Band
auf der Anzeige bezeichnet wird) der Tabelle von Fig. 4
einen Bereich 406 an, der durch Verarbeiten mit dem Element
602 von Fig. 6, welches oben erörtert wurde, geortet worden
ist. Die Parameter jedes Bereichs 406 sind in der Zelle am
linken Ende der Zeile (des Bands) gezeigt. Die Parameter,
die für jeden Bereich 406 angezeigt werden, sind die Be
reichsstart- und die Bereichsendadresse (typischerweise auf
eine geeignete Adressengrenze für das testende System ge
rundet) und die Länge des Bereichs. Eine ID-Nummer wird jedem
Bereich 406 durch die Verfahren der vorliegenden Erfin
dung zugewiesen, und dieselbe wird ebenfalls in der Zelle
ganz links jeder Zeile (jedes Bandes) angezeigt.
Der Rest jeder Zeile (jedes Bandes) in der Tabelle von Fig.
4 enthält Markierer, die jeden Speicherverweis in dem zuge
ordneten Bereich identifizieren. Die X-Achse der Tabelle von
Fig. 4 ist der Versatzindex der angezeigten Zustände, und
zwar von links nach recht zunehmend. Wie es in Fig. 4
gezeigt ist, sind 4.000 erfaßte Zustände angezeigt. Die In
dizes der Zustände, die angezeigt sind, sind entlang des
unteren Teils der Tabelle von Fig. 4 als -516094 . . . -512095
angezeigt. Die angezeigten Indizes stimmen mit den Indexwer
ten überein, die beim Speichern des Logikanalysators von er
faßten Zuständen in seinem Zustandsspeicher verwendet wer
den.
Jeder Speicherverweis in einem speziellen Bereich 406 ist
durch eine kleine Zeichenmarke gezeigt. Die horizontale Po
sition der Marke gibt den Indexwert der erfaßten Zustands
logik, die demselben entspricht, wieder. Die vertikale Posi
tion der Marke innerhalb der Tabellenzeile (des Bands) für
den Bereich 406 gibt die genaue Adresse innerhalb des Be
reichs wieder (Marken für niedrigere Adressen erscheinen in
der Zeile für den Bereich niedriger).
Da alle Zeilen (Bänder), die verwendet werden, um alle Be
reiche 406 anzuzeigen, gleichmäßig auf der Tabellenanzeige
beabstandet sind, erscheinen größere Puffer in der vertika
len Achse dichter und in der horizontalen Achse aufgeweitet.
Dies ist aufgrund der Tatsache der Fall, daß die größeren
Puffer mehr Speicherzugriffe in der gleichen vertikalen
Menge von Platz auf dem Computeranzeigebildschirm des Benut
zers im Vergleich zu kleineren Puffern oder Beschreibern
aufnehmen müssen. Größere Puffer erscheinen horizontal er
weitert, und zwar aufgrund der erhöhten Anzahl von erfaßten
Logikzuständen, die der Pufferverweisfall aufweist. In Fig.
4 umfaßt der mit 422 in dem Bereich 406 mit der ID-Zahl 3
markierte Puffer etwa 20 (14 hex) Speicherzugriffe (in
Bytes). Der mit 424 in dem Bereich 406 mit der ID-Zahl 1
markierte Puffer umfaßt hingegen 80 (50 hex) Speicherzu
griffe (in Bytes). Der Puffer 424 ist daher horizontal
vergrößert und im Vergleich zu dem kleineren Puffer 422
vertikal dichter.
Obwohl die X-Achse der Tabelle von Fig. 4 erfaßte Zustands
logikindizes wiedergibt und nicht die Zeit im direkten Sinn,
ist es immer wahr, daß die erfaßten Zustände, die auf der
linken Seite der Tabelle gezeigt sind, dem Auftreten der er
faßten Zustände auf der rechten Seite der Tabelle von Fig. 4
vorausgehen. Genau wie die Verfahren der vorliegenden Erfin
dung auf heuristische Art und Weise wahrscheinliche Daten
zerstörungsereignisse basierend auf den Verstreuungseigen
schaften von Pufferbeschreiberverweisen und Pufferverweisen
erfassen können, helfen die Benutzerinformationen, die dem
Benutzer präsentiert werden, und dazu dienen, Pufferverweise
und Pufferbeschreiberverweise in dem Zeitbereich hervorzu
heben, dem Ingenieur dabei, auf schnelle Art und Weise mög
liche Anomalitäten in den erfaßten Zustandslogikdaten zu
entdecken.
Wie es oben erwähnt wurde, ist das Element 608 von Fig. 6
betreibbar, um Pufferbeschreiber mit den speziellen Puffern,
auf die sie sich beziehen, zu verknüpfen. Diese Informatio
nen werden dem Benutzer visuell präsentiert, wie es in Fig.
4 gezeigt ist, und zwar indem ein gerichteter Vektor von dem
Pufferbeschreiber zu dem entsprechenden Puffer, auf den sich
derselbe bezieht, gezeichnet wird. Zwei Vektoren 408 und 412
sind beispielsweise in Fig. 4 derart gezeigt, daß sie von
zwei Beschreibern, die in dem Bereich 406 mit der Nummer 29
gefunden wurden, aus gezeichnet sind und zu der Startadresse
ihrer jeweiligen verwiesenen Puffer, d. h. 410 bzw. 414, hin
gerichtet sind. Diese visuellen Informationen erlauben es
dem Benutzer, die Verknüpfung von Pufferbeschreibern mit
Puffern schnell zu betrachten, eine mögliche Datenzerstörung
sichtbar zu machen, bei der Daten in einem Puffer oder Beschreiber
modifiziert werden, bevor sie korrekt verwendet
werden, und die Zeitverzögerungen (gemessen in der Anzahl
von Zuständen entlang der X-Achse) zwischen Verweisen auf
Puffer, die einer Einstellung von Beschreibern folgen, usw.
visuell einzuschätzen.
Ein vertikaler Markierer 416 kann von dem Benutzer unter
Verwendung bekannter Eingabetechniken mit einer Tastatur
oder einem Zeigegerät positioniert werden. Der vertikale
Markierer kann verwendet werden, um einen speziellen Ab
schnitt der Tabelle von Fig. 4 durch Positionieren des ver
tikalen Markierers an einem speziellen Zustandsindex für ei
ne detaillierte Analyse auszuwählen. Nach einer derartigen
Auswahl eines speziellen Zustands der Tabelle von Fig. 4
können Standardbenutzerschnittstellentechniken verwendet
werden, um die erfaßten Zustandsdaten in der visuellen Nach
barschaft des vertikalen Markierers zu untersuchen. Durch
Klicken des Zeigegeräts an der vertikalen Markierposition
wird ein Pop-up-Menü angezeigt, welches es dem Benutzer er
laubt, eine erwünschte Option zum Betrachten der ausgewähl
ten Zustandslogikdaten auszuwählen. Die erfaßten Zustands
logikdaten in dem Bereich, der die vertikale Markiererposi
tion umgibt, können angezeigt werden, wie es oben erwähnt
wurde, und zwar auf irgendeine von verschiedenen Formaten in
einem getrennten Fenster. Durch Auswählen und Anzeigen meh
rerer solcher Positionen kann der Benutzer ohne weiteres Da
ten von unterschiedlichen Abschnitten der erfaßten Zustands
logikdaten betrachten und korrelieren.
Wenn die erfaßten Zustandslogikdaten in dem vorgegebenen
Format des Computeranzeigebildschirms zu dicht präsentiert
sind, kann der Benutzer bekannte Benutzerschnittstellentech
niken verwenden, um auszuwählen, daß eine Region der Anzeige
in einem gezoomten Fenster betrachtet wird. Der Benutzer
wählt einen rechteckigen Abschnitt der Speicherbereiche auf
dem Anzeigebildschirm und klickt das Zeigegerät, um ein
Pop-up-Menü anzuzeigen. Der Benutzer kann dann eine Zoom
option auswählen, um die ausgewählte Region des Computeranzeigebildschirms
mit zusätzlichen Details anzuzeigen. Ein
neues Fenster wird mit einer Tabelle angezeigt, die analog
zu der in Fig. 4 angezeigten ist, die jedoch zusätzliche De
tails für jeden Speicherzugriff aufweist (einschließlich
beispielsweise von Adressen- und Datenwerten für jeden Zu
griff). Ferner hebt eine gezoomte Fensteranzeige Zeiger in
farbigem Text und farbiger Graphik hervor. Die erfaßten Zu
standslogikdaten, welche innerhalb der ausgewählten recht
eckigen Region angezeigt werden, werden in der Tabelle des
neuen Fensters gezeigt.
Parameter, die verwendet werden, um heuristisch Puffer und
Pufferbeschreiber in den Bereichen der erfaßten Zustands
logikdaten zu identifizieren, können von dem Benutzer durch
den Eintrag von Werten in das Fenster "THRESH" 400 (THRESH =
threshold = Schwelle) verändert werden. Der Wert in dem
"THRESH"-Fenster 400 bestimmt den Schwellenwert zum Identi
fizieren eines Puffers gegenüber einem Pufferbeschreiber in
den Bereichen, die in den erfaßten Zustandslogikdaten geor
tet wurden, und zwar basierend auf der Länge der zusammen
hängenden Speicherzugriffe.
Wie es oben bezugnehmend auf das Element 634 von Fig. 7 er
örtert wurde, kann der Benutzer eine Suchzeichenkette spezi
fizieren, die auf alle identifizierten Puffer angewendet
wird. Alle Puffer, die den Suchzeichenkettenwert enthalten,
der von dem Benutzer in dem Fenster "SUCHEN" 418 eingegeben
wird, werden auf dem Anzeigebildschirm hervorgehoben. Puf
fer, die die von dem Benutzer ausgewählte Suchzeichenkette
enthalten, werden durch eine visuelle Markierung auf dem An
zeigebildschirm neben dem Puffer hervorgehoben. Ein getrenn
tes Dialogfenster auf dem Computeranzeigebildschirm zeigt
alle Puffer, die die Suchzeichenkette des Benutzers enthal
ten, sowie einen Versatz innerhalb des Puffers, an dem die
Suchzeichenkette geortet wurde. Wie es oben erwähnt wurde,
kann der Benutzer eine Suchzeichenkette in textlicher, in
binärer oder in hexadezimaler Form eingeben. Standardsuch
techniken, die die Verwendung von Stellvertreterzeichen-
Platzhaltern in der Suchzeichenkette umfassen, sind bekannte
Erweiterungen für solche Suchmerkmale. Wie es ebenfalls oben
angemerkt wurde, wird die Suchzeichenkette auf die identifi
zierten Puffer und nicht notwendigerweise auf sequentielle
Zustände der erfaßten Zustandslogikdaten angewendet. Dieses
Suchmerkmal macht daher den Bedarf überflüssig, daß der In
genieur eine Sequenz von erfaßten Zuständen manuell durch
sucht, um Datenwerte in bestimmten Zuständen zu untersuchen,
die einem speziellen Puffer zugeordnet sind, während dazwi
schenliegende nicht-verwandte Zustände ignoriert werden, und
daß der gleiche Prozeß für weitere Puffer wiederholt wird.
Wie es ebenfalls in Fig. 4 gezeigt ist, ist jeder identifi
zierte Puffer mit einer einzigartigen Textbezeichnung, wie
z. B. "BUFnn" (BUF = Buffer = Puffer), versehen. Diese Text
bezeichnung wird verwendet, um ein Anzeigefenster zuzuord
nen, das verwendet wird, um den Dateninhalt des ausgewählten
Puffers zu betrachten, wie es oben bezugnehmend auf das Ele
ment 614 von Fig. 6 beschrieben wurde. Der Benutzer kann ei
nen speziellen Puffer durch eine von mehreren bekannten Be
nutzerschnittstellentechniken auswählen und die Verfahren
der vorliegenden Erfindung anweisen, um den Dateninhalt des
selben in einem neuen Fenster anzuzeigen. Wie es oben erör
tert wurde, kann der Benutzer anfordern, daß die Anzeige der
Daten des Puffers in einer Textform ist (z. B. hexadezimaler
Ablagemodus oder "Dump"-Modus, ASCII oder EBCDIC). Die ein
zigartige Textbezeichnung, die für jeden identifizierten
Puffer in der Anzeige von Fig. 4 verwendet wird, wird dann
verwendet, um das neue Fenster zu bezeichnen, das verwendet
wird, um den Dateninhalt des Puffers anzuzeigen.
Fig. 5 zeigt eine beispielhafte Bildschirmanzeige mit zwei
neuen Fenstern 500 und 502, die den Dateninhalt ausgewählter
Puffer zeigen. Das Fenster 502 zeigt die rohen Hexadezimal
ausdrücke des Dateninhalts des Puffers, der als "BUF35" in
Fig. 4 bezeichnet ist, an. Der Titelbalkenabschnitt der neu
en Fenster gibt die einzigartige Bezeichnung wieder, die für
den entsprechenden Puffer der darunterliegenden angezeigten
Tabelle (wie in Fig. 4) verwendet wurde. Das Fenster 500
zeigt den Inhalt eines Pakets in einem protokollspezifischen
Format an. Wie es in Fig. 5 gezeigt ist, ist ein Token-
Ring-LAN-Protokoll angezeigt. Ein Fachmann wird ohne weite
res die Anwendbarkeit der Verfahren der vorliegenden Erfin
dung auf irgendeines von mehreren Protokollstandards erken
nen, bei denen eine intelligente I/O-Schnittstellenkarte in
Verbindung mit der CPU über ein Schema mit gemeinsam verwen
detem Speicher oder "Shared Memory" verwendet wird. LAN-Pro
tokolle sind lediglich eine beispielhafte Anwendung der Ver
fahren der vorliegenden Erfindung.
Claims (18)
1. Computer-ausführbares Verfahren zum Anzeigen von Zu
standslogikdaten, die durch einen Logikanalysator er
halten werden, der mit einem elektronischen Verbin
dungsbus verbunden ist, über den Speicherzugriffe
übertragen werden, wobei jeder Speicherzugriff einen
Adressenwert umfaßt, mit folgenden Schritten:
Korrelieren einer Mehrzahl von Datenstrukturen mit Speicherzugriffen in den Zustandslogikdaten (606- 610), die durch den Logikanalysator erhalten werden, wobei Speicherzugriffe als benachbarte Speicherzu griffe identifiziert werden, wenn ihre jeweiligen Adressenwerte in einer vorbestimmten Sequenz sind (1204, 1208); und
Anzeigen der Mehrzahl von Datenstrukturen in Bändern auf einem Computeranzeigebildschirm (614-626).
Korrelieren einer Mehrzahl von Datenstrukturen mit Speicherzugriffen in den Zustandslogikdaten (606- 610), die durch den Logikanalysator erhalten werden, wobei Speicherzugriffe als benachbarte Speicherzu griffe identifiziert werden, wenn ihre jeweiligen Adressenwerte in einer vorbestimmten Sequenz sind (1204, 1208); und
Anzeigen der Mehrzahl von Datenstrukturen in Bändern auf einem Computeranzeigebildschirm (614-626).
2. Verfahren gemäß Anspruch 1, bei dem jede Dateneinheit
der Zustandslogikdaten einen Lesen/Schreiben-Attribut
wert umfaßt, wobei der Schritt des Korrelierens ferner
folgenden Schritt aufweist:
Identifizieren benachbarter Speicherzugriffe in den Zustandslogikdaten mit einem identischen Lesen/Schrei ben-Attributwert (1310).
Identifizieren benachbarter Speicherzugriffe in den Zustandslogikdaten mit einem identischen Lesen/Schrei ben-Attributwert (1310).
3. Verfahren gemäß Anspruch 2, bei dem der Schritt des
Anzeigens ferner folgenden Schritt aufweist:
Anzeigen von Datenstrukturen der Mehrzahl von Daten strukturen mit einem Lesen/Schreiben-Attributwert, der eine Leseoperation auf eine Art und Weise anzeigt, die von der Anzeige von Datenstrukturen der Mehrzahl von Datenstrukturen unterscheidbar ist, die einen Lesen/ Schreiben-Attributwert aufweisen, der eine Schreiben- Operation anzeigt (614).
Anzeigen von Datenstrukturen der Mehrzahl von Daten strukturen mit einem Lesen/Schreiben-Attributwert, der eine Leseoperation auf eine Art und Weise anzeigt, die von der Anzeige von Datenstrukturen der Mehrzahl von Datenstrukturen unterscheidbar ist, die einen Lesen/ Schreiben-Attributwert aufweisen, der eine Schreiben- Operation anzeigt (614).
4. Verfahren gemäß Anspruch 2, bei dem der Schritt des
Anzeigens ferner folgende Schritte aufweist:
Anzeigen von Datenstrukturen der Mehrzahl von Daten strukturen mit einem Lesen/Schreiben-Attributwert, die eine Lesen-Operation anzeigen, unter Verwendung einer ersten Anzeigefarbe auf dem Computeranzeigebildschirm (614); und
Anzeigen von Datenstrukturen der Mehrzahl von Daten strukturen mit einem Lesen/Schreiben-Attributwert, die eine Schreiben-Operation anzeigen, unter Verwendung einer zweiten Anzeigefarbe auf dem Computeranzeige bildschirm (614).
Anzeigen von Datenstrukturen der Mehrzahl von Daten strukturen mit einem Lesen/Schreiben-Attributwert, die eine Lesen-Operation anzeigen, unter Verwendung einer ersten Anzeigefarbe auf dem Computeranzeigebildschirm (614); und
Anzeigen von Datenstrukturen der Mehrzahl von Daten strukturen mit einem Lesen/Schreiben-Attributwert, die eine Schreiben-Operation anzeigen, unter Verwendung einer zweiten Anzeigefarbe auf dem Computeranzeige bildschirm (614).
5. Verfahren gemäß einem der vorhergehenden Ansprüche,
bei dem der Schritt des Korrelierens folgende Schritte
aufweist:
Identifizieren von Puffern in den Speicherzugriffen in den Zustandslogikdaten als eine Anzahl von benachbar ten Zugriffen der Speicherzugriffe in den Zustandslo gikdaten (610); und
Identifizieren von Pufferbeschreibern in den Speicher zugriffen in den Zustandslogikdaten als eine Anzahl von Speicherzugriffen der Speicherzugriffe in den Zu standslogikdaten, die einen Zeiger auf einen der Mehr zahl von Datenstrukturen umfassen (608).
Identifizieren von Puffern in den Speicherzugriffen in den Zustandslogikdaten als eine Anzahl von benachbar ten Zugriffen der Speicherzugriffe in den Zustandslo gikdaten (610); und
Identifizieren von Pufferbeschreibern in den Speicher zugriffen in den Zustandslogikdaten als eine Anzahl von Speicherzugriffen der Speicherzugriffe in den Zu standslogikdaten, die einen Zeiger auf einen der Mehr zahl von Datenstrukturen umfassen (608).
6. Verfahren gemäß Anspruch 5, bei dem der Schritt des
Anzeigens ferner folgende Schritte aufweist:
graphisches Anzeigen der identifizierten Puffer auf dem Computeranzeigebildschirm (614); und
graphisches Anzeigen der identifizierten Pufferbe schreiber auf dem Computeranzeigebildschirm auf eine Art und Weise, die von der Anzeige der identifizierten Puffer (616) unterscheidbar ist.
graphisches Anzeigen der identifizierten Puffer auf dem Computeranzeigebildschirm (614); und
graphisches Anzeigen der identifizierten Pufferbe schreiber auf dem Computeranzeigebildschirm auf eine Art und Weise, die von der Anzeige der identifizierten Puffer (616) unterscheidbar ist.
7. Verfahren gemäß Anspruch 6, bei dem der Schritt des
Anzeigens ferner folgende Schritte aufweist:
Bestimmen, auf welchen der identifizierten Puffer von jedem der identifizierten Pufferbeschreiber verwiesen wird (608); und
Anzeigen von Anzeichen eines Verweises von jedem der identifizierten Pufferbeschreiber auf einen entspre chenden der identifizierten Puffer (616, 408, 412).
Bestimmen, auf welchen der identifizierten Puffer von jedem der identifizierten Pufferbeschreiber verwiesen wird (608); und
Anzeigen von Anzeichen eines Verweises von jedem der identifizierten Pufferbeschreiber auf einen entspre chenden der identifizierten Puffer (616, 408, 412).
8. Verfahren gemäß Anspruch 6 oder 7, das folgenden
Schritt aufweist:
Erfassen von wahrscheinlichen Datenzerstörungsfehlern in Zeitstreuungscharakteristika von Verweisen auf identifizierte Puffer und identifizierte Pufferbe schreiber (618).
Erfassen von wahrscheinlichen Datenzerstörungsfehlern in Zeitstreuungscharakteristika von Verweisen auf identifizierte Puffer und identifizierte Pufferbe schreiber (618).
9. Verfahren gemäß Anspruch 8, bei dem der Schritt des
Anzeigens ferner folgenden Schritt aufweist:
Anzeigen von identifizierten Puffern und identifizier ten Pufferbeschreibern, die den erfaßten wahrscheinli chen Datenzerstörungsfehlern entsprechen, auf eine Art und Weise, die von anderen der identifizierten Puffer und anderen der identifizierten Pufferbeschreiber un terscheidbar ist (618).
Anzeigen von identifizierten Puffern und identifizier ten Pufferbeschreibern, die den erfaßten wahrscheinli chen Datenzerstörungsfehlern entsprechen, auf eine Art und Weise, die von anderen der identifizierten Puffer und anderen der identifizierten Pufferbeschreiber un terscheidbar ist (618).
10. Verfahren gemäß einem der Ansprüche 1 bis 4, bei dem
der Schritt des Korrelierens folgende Schritte auf
weist:
Identifizieren zumindest eines Puffers in den Zustands logikdaten, wobei der zumindest eine Puffer Zustände aufweist, die in den Zustandslogikdaten gestreut sind, die eine Sequenz von Speicherzugriffen auf benachbarte Speicheradressen darstellen (606-610).
Identifizieren zumindest eines Puffers in den Zustands logikdaten, wobei der zumindest eine Puffer Zustände aufweist, die in den Zustandslogikdaten gestreut sind, die eine Sequenz von Speicherzugriffen auf benachbarte Speicheradressen darstellen (606-610).
11. Verfahren gemäß Anspruch 10, bei dem der Schritt des
Korrelierens folgende Schritte aufweist:
Identifizieren des zumindest einen Puffers in den Speicherzugriffen in den Zustandslogikdaten als eine Anzahl von benachbarten der Speicherzugriffe in den Zustandslogikdaten (606, 610); und
Identifizieren zumindest eines Pufferbeschreibers in den Speicherzugriffen in den Zustandslogikdaten als eine Anzahl von benachbarten der Speicherzugriffe in den Zustandslogikdaten, der einen Zeiger auf einen des zumindest einen Puffers (606, 608) umfaßt.
Identifizieren des zumindest einen Puffers in den Speicherzugriffen in den Zustandslogikdaten als eine Anzahl von benachbarten der Speicherzugriffe in den Zustandslogikdaten (606, 610); und
Identifizieren zumindest eines Pufferbeschreibers in den Speicherzugriffen in den Zustandslogikdaten als eine Anzahl von benachbarten der Speicherzugriffe in den Zustandslogikdaten, der einen Zeiger auf einen des zumindest einen Puffers (606, 608) umfaßt.
12. Verfahren gemäß Anspruch 11, bei dem der Schritt des
Anzeigens ferner folgende Schritte aufweist:
graphisches Anzeigen des zumindest einen Puffers auf dem Computeranzeigebildschirm (614, 422, 424); und
graphisches Anzeigen des zumindest einen Pufferbe schreibers auf dem Computeranzeigebildschirm auf eine Art und Weise, die von der Anzeige der identifizierten Puffer unterscheidbar ist (616, 408, 412).
graphisches Anzeigen des zumindest einen Puffers auf dem Computeranzeigebildschirm (614, 422, 424); und
graphisches Anzeigen des zumindest einen Pufferbe schreibers auf dem Computeranzeigebildschirm auf eine Art und Weise, die von der Anzeige der identifizierten Puffer unterscheidbar ist (616, 408, 412).
13. Verfahren gemäß Anspruch 12, bei dem der Schritt des
Anzeigens ferner folgende Schritte aufweist:
Bestimmen, auf welchen des zumindest einen Puffers von dem zumindest einen Pufferbeschreiber verwiesen wird (608); und
Anzeigen von Anzeichen eines Verweises von jedem des zumindest einen Pufferbeschreibers auf einen entspre chenden des zumindest einen Puffers (616, 408, 412).
Bestimmen, auf welchen des zumindest einen Puffers von dem zumindest einen Pufferbeschreiber verwiesen wird (608); und
Anzeigen von Anzeichen eines Verweises von jedem des zumindest einen Pufferbeschreibers auf einen entspre chenden des zumindest einen Puffers (616, 408, 412).
14. Verfahren gemäß Anspruch 12 oder 13, das ferner fol
genden Schritt aufweist:
Erfassen von wahrscheinlichen Datenzerstörungsfehlern in Zeitstreuungscharakteristika der Verweise auf den zumindest einen Puffer und den zumindest einen Puffer beschreiber (618).
Erfassen von wahrscheinlichen Datenzerstörungsfehlern in Zeitstreuungscharakteristika der Verweise auf den zumindest einen Puffer und den zumindest einen Puffer beschreiber (618).
15. Verfahren gemäß Anspruch 14, bei dem der Schritt des
Anzeigens ferner folgenden Schritt aufweist:
Anzeigen des zumindest einen Puffers und des zumindest einen Pufferbeschreibers, der den erfaßten wahrschein lichen Datenzerstörungsfehlern entspricht, auf eine Art und Weise, die von anderen des zumindest einen Puffers und anderen des zumindest einen Pufferbe schreibers (618) unterscheidbar ist.
Anzeigen des zumindest einen Puffers und des zumindest einen Pufferbeschreibers, der den erfaßten wahrschein lichen Datenzerstörungsfehlern entspricht, auf eine Art und Weise, die von anderen des zumindest einen Puffers und anderen des zumindest einen Pufferbe schreibers (618) unterscheidbar ist.
16. Verfahren gemäß einem der Ansprüche 1 bis 15, das fer
ner folgenden Schritt aufweist:
textliches Anzeigen von Daten, die in einer ausgewähl ten der Mehrzahl von Datenstrukturen enthalten sind, als Reaktion auf eine Benutzeranforderung (632, 634, 502).
textliches Anzeigen von Daten, die in einer ausgewähl ten der Mehrzahl von Datenstrukturen enthalten sind, als Reaktion auf eine Benutzeranforderung (632, 634, 502).
17. Verfahren gemäß einem der Ansprüche 1 bis 16, das fer
ner folgenden Schritt aufweist:
textliches Anzeigen von Kommunikationsprotokolldaten, die in zumindest einer ausgewählten Datenstruktur der Mehrzahl von Datenstrukturen enthalten sind, als Reak tion auf eine Benutzeranforderung (636, 638, 500).
textliches Anzeigen von Kommunikationsprotokolldaten, die in zumindest einer ausgewählten Datenstruktur der Mehrzahl von Datenstrukturen enthalten sind, als Reak tion auf eine Benutzeranforderung (636, 638, 500).
18. Verfahren gemäß einem der Ansprüche 1 bis 17, das fer
ner folgenden Schritt aufweist:
Durchsuchen von Daten, die in der Mehrzahl von Daten strukturen enthalten sind, nach einer spezifizierten Datensequenz als Reaktion auf eine Benutzeranforderung (644, 646).
Durchsuchen von Daten, die in der Mehrzahl von Daten strukturen enthalten sind, nach einer spezifizierten Datensequenz als Reaktion auf eine Benutzeranforderung (644, 646).
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US08/708,142 US5737520A (en) | 1996-09-03 | 1996-09-03 | Method and apparatus for correlating logic analyzer state capture data with associated application data structures |
Publications (2)
Publication Number | Publication Date |
---|---|
DE19729180A1 DE19729180A1 (de) | 1998-03-12 |
DE19729180C2 true DE19729180C2 (de) | 2002-05-02 |
Family
ID=24844544
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE19729180A Expired - Fee Related DE19729180C2 (de) | 1996-09-03 | 1997-07-08 | Verfahren zum Korrelieren von Logikanalysatorzustandserfassungsdaten mit zugeordneten Anwendungsdatenstrukturen |
Country Status (4)
Country | Link |
---|---|
US (1) | US5737520A (de) |
JP (1) | JPH10105427A (de) |
DE (1) | DE19729180C2 (de) |
GB (1) | GB2317247B (de) |
Families Citing this family (47)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5905905A (en) * | 1997-08-05 | 1999-05-18 | Adaptec, Inc. | System for copying IOBS from FIFO into I/O adapter, writing data completed IOB, and invalidating completed IOB in FIFO for reuse of FIFO |
US6148420A (en) * | 1997-10-17 | 2000-11-14 | Agilent Technologies | Method and apparatus for analyzing serial data |
US6311327B1 (en) * | 1998-03-02 | 2001-10-30 | Applied Microsystems Corp. | Method and apparatus for analyzing software in a language-independent manner |
US6687865B1 (en) | 1998-03-25 | 2004-02-03 | On-Chip Technologies, Inc. | On-chip service processor for test and debug of integrated circuits |
US6904519B2 (en) * | 1998-06-12 | 2005-06-07 | Microsoft Corporation | Method and computer program product for offloading processing tasks from software to hardware |
US6141705A (en) * | 1998-06-12 | 2000-10-31 | Microsoft Corporation | System for querying a peripheral device to determine its processing capabilities and then offloading specific processing tasks from a host to the peripheral device when needed |
US6182280B1 (en) | 1998-07-10 | 2001-01-30 | Agilent Technologies | Inverse assembler with reduced signal requirements with a user supplied memory map |
US6110225A (en) * | 1998-07-10 | 2000-08-29 | Agilent Technologies | Inverse assembler with reduced signal requirements using a trace listing |
US6175955B1 (en) * | 1998-07-31 | 2001-01-16 | Agilent Technologies | Method for retrieving selected data values in a processor using data visibility macros |
US6345295B1 (en) | 1999-01-22 | 2002-02-05 | International Business Machines Corporation | Conducting traces in a computer system attachment network |
US6351845B1 (en) * | 1999-02-04 | 2002-02-26 | Sun Microsystems, Inc. | Methods, apparatus, and articles of manufacture for analyzing memory use |
US7080319B1 (en) | 1999-09-29 | 2006-07-18 | Lucent Technologies Inc. | Technology to translate non-text display generation data representing an indicator into text variables |
US6678803B2 (en) * | 1999-11-03 | 2004-01-13 | Micron Technology, Inc. | Method and device to use memory access request tags |
US6973417B1 (en) | 1999-11-05 | 2005-12-06 | Metrowerks Corporation | Method and system for simulating execution of a target program in a simulated target system |
US6691249B1 (en) * | 2000-03-22 | 2004-02-10 | Agilent Technologies, Inc. | Probabilistic diagnosis, in particular for embedded and remote applications |
US6745351B1 (en) * | 2000-05-26 | 2004-06-01 | I-Tech Corporation | Indexing system for protocol analyzers |
US7039834B1 (en) * | 2000-12-21 | 2006-05-02 | Unisys Corporation | High speed processor interconnect tracing compaction using selectable triggers |
EP2469850A3 (de) | 2001-02-21 | 2013-07-10 | United Video Properties, Inc. | Systeme und Verfahren für interaktive Programmführer mit persönlichen Videoaufzeichnungsfunktionen |
US20020174387A1 (en) * | 2001-03-29 | 2002-11-21 | Vance Lohoff | Stealth module for bus data analyzer |
US6954746B1 (en) * | 2001-06-01 | 2005-10-11 | Oracle International Corporation | Block corruption analysis and fixing tool |
US20030023901A1 (en) * | 2001-07-27 | 2003-01-30 | Hack Stephen Patrick | Method for analyzing serial bus traffic for debugging systems |
US6883117B2 (en) * | 2001-11-15 | 2005-04-19 | International Business Machines Corporation | Bus trace analysis a posteriori |
WO2003102241A1 (en) * | 2002-05-29 | 2003-12-11 | Autogenomics, Inc. | Integrated micro array system and methods therefor |
US8260906B1 (en) | 2002-07-26 | 2012-09-04 | Mcafee, Inc. | System and method for heuristic determination of network protocols |
US7219333B2 (en) * | 2002-11-22 | 2007-05-15 | Texas Instruments Incorporated | Maintaining coherent synchronization between data streams on detection of overflow |
US6879939B1 (en) * | 2002-12-27 | 2005-04-12 | Unisys Corporation | Control of distribution of input/output operations during system testing |
US7370082B2 (en) * | 2003-05-09 | 2008-05-06 | Microsoft Corporation | Remote invalidation of pre-shared RDMA key |
US7095416B1 (en) * | 2003-09-22 | 2006-08-22 | Microsoft Corporation | Facilitating performance analysis for processing |
US6957162B2 (en) * | 2003-11-10 | 2005-10-18 | Lsi Logic Corporation | Low-impact analyzer interface |
US7356455B2 (en) | 2003-11-18 | 2008-04-08 | Quickturn Design Systems, Inc. | Optimized interface for simulation and visualization data transfer between an emulation system and a simulator |
US7191257B2 (en) * | 2003-12-22 | 2007-03-13 | National Instruments Corp. | System and method for real-time processing of nondeterministic captured data events |
US7200691B2 (en) * | 2003-12-22 | 2007-04-03 | National Instruments Corp. | System and method for efficient DMA transfer and buffering of captured data events from a nondeterministic data bus |
US7111092B1 (en) * | 2004-04-16 | 2006-09-19 | Cisco Technology, Inc. | Buffer management technique for a hypertransport data path protocol |
GB0412104D0 (en) * | 2004-05-29 | 2004-06-30 | Ibm | Apparatus method and program for recording diagnostic trace information |
US7738399B2 (en) * | 2004-06-01 | 2010-06-15 | Quickturn Design Systems Inc. | System and method for identifying target systems |
US7353437B2 (en) * | 2004-10-29 | 2008-04-01 | Micron Technology, Inc. | System and method for testing a memory for a memory failure exhibited by a failing memory |
US20060161733A1 (en) * | 2005-01-19 | 2006-07-20 | Emulex Design & Manufacturing Corporation | Host buffer queues |
US7992049B2 (en) * | 2005-05-16 | 2011-08-02 | Texas Instruments Incorporated | Monitoring of memory and external events |
US8001427B2 (en) * | 2005-05-16 | 2011-08-16 | Texas Instruments Incorporated | Method and system of indexing into trace data based on entries in a log buffer |
US7987393B2 (en) * | 2005-05-16 | 2011-07-26 | Texas Instruments Incorporated | Determining operating context of an executed instruction |
US7774652B2 (en) * | 2006-09-19 | 2010-08-10 | Hewlett-Packard Development Company, L.P. | Circuitry and method to detect conditions of data |
US8370405B2 (en) * | 2009-01-19 | 2013-02-05 | International Business Machines Corporation | Variable-length record, corruption recovery apparatus, system, and method |
JP5542398B2 (ja) * | 2009-09-30 | 2014-07-09 | 株式会社日立製作所 | 障害の根本原因解析結果表示方法、装置、及びシステム |
US8589730B2 (en) * | 2010-08-31 | 2013-11-19 | Apple Inc. | Handling errors during device bootup from a non-volatile memory |
US8706955B2 (en) | 2011-07-01 | 2014-04-22 | Apple Inc. | Booting a memory device from a host |
US9063884B2 (en) * | 2012-10-23 | 2015-06-23 | Hewlett-Packard Development Company, L.P. | Analysis of health indicators of a system |
CN108768730B (zh) * | 2018-05-31 | 2022-05-31 | 北京百度网讯科技有限公司 | 用于操作智能网卡的方法和装置 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE3218277A1 (de) * | 1982-05-14 | 1983-11-17 | Siemens AG, 1000 Berlin und 8000 München | Schaltungsanordnung fuer fernmeldevermittlungsanlagen, insbesondere fernsprechvermittlungsanlagen, mit einer abwicklung der vermittlungsschaltvorgaenge dienenden multirechnersystemen |
US5408650A (en) * | 1993-06-29 | 1995-04-18 | Digital Equipment Corporation | Memory analysis system for dynamically displaying memory allocation and de-allocation events associated with an application program |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US3826908A (en) * | 1973-02-05 | 1974-07-30 | Paradyne Corp | Data telecommunications analyzer |
US4517671A (en) * | 1982-11-30 | 1985-05-14 | Lewis James D | Apparatus for operational analysis of computers |
US4641348A (en) * | 1983-11-09 | 1987-02-03 | Hewlett-Packard Company | Timing or logic state analyzer with automatic qualified inferential marking and post processing of captured trace data |
US4696004A (en) * | 1984-05-28 | 1987-09-22 | Takeda Riken Kogyo Kabushikikaisha | Logic analyzer |
US4965765A (en) * | 1986-05-16 | 1990-10-23 | International Business Machines Corp. | Distinguishing nested structures by color |
US5282213A (en) * | 1991-01-02 | 1994-01-25 | Compaq Computer Corporation | Computer-based logic analyzer timing and analysis system |
US5428766A (en) * | 1992-12-01 | 1995-06-27 | Digital Equipment Corporation | Error detection scheme in a multiprocessor environment |
US5613063A (en) * | 1994-07-01 | 1997-03-18 | Digital Equipment Corporation | Method and apparatus for checking validity of memory operations |
US6044477A (en) * | 1996-01-31 | 2000-03-28 | International Business Machines Corporation | System and method for auditing buffer usage in a data processing system |
-
1996
- 1996-09-03 US US08/708,142 patent/US5737520A/en not_active Expired - Lifetime
-
1997
- 1997-07-08 DE DE19729180A patent/DE19729180C2/de not_active Expired - Fee Related
- 1997-08-21 GB GB9717760A patent/GB2317247B/en not_active Expired - Fee Related
- 1997-09-02 JP JP9236829A patent/JPH10105427A/ja active Pending
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE3218277A1 (de) * | 1982-05-14 | 1983-11-17 | Siemens AG, 1000 Berlin und 8000 München | Schaltungsanordnung fuer fernmeldevermittlungsanlagen, insbesondere fernsprechvermittlungsanlagen, mit einer abwicklung der vermittlungsschaltvorgaenge dienenden multirechnersystemen |
US5408650A (en) * | 1993-06-29 | 1995-04-18 | Digital Equipment Corporation | Memory analysis system for dynamically displaying memory allocation and de-allocation events associated with an application program |
Non-Patent Citations (2)
Title |
---|
BECKERS, Frank, Von Pontius zu Pilatus, in: Elektronik 7/1996, S. 92-95 * |
IBM Technical Disclosure Bulletin, Vol. 38, No. 3, März 1995, S. 67-69 * |
Also Published As
Publication number | Publication date |
---|---|
JPH10105427A (ja) | 1998-04-24 |
US5737520A (en) | 1998-04-07 |
GB2317247A (en) | 1998-03-18 |
GB9717760D0 (en) | 1997-10-29 |
DE19729180A1 (de) | 1998-03-12 |
GB2317247B (en) | 2001-01-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE19729180C2 (de) | Verfahren zum Korrelieren von Logikanalysatorzustandserfassungsdaten mit zugeordneten Anwendungsdatenstrukturen | |
DE69911266T2 (de) | Computerprogrammprofiler | |
DE2914106C2 (de) | Prüfgerät zum Prüfen gedruckter Schaltungskarten | |
DE2914128C2 (de) | Verfahren zur Fehlerortung in einer digitalen Schaltung und Prüfgerät zur Durchführung des Verfahrens | |
DE4108590C2 (de) | Verfahren zum Benchmark-Testen der Arbeitsgeschwindigkeit eines Computersystem | |
US6226407B1 (en) | Method and apparatus for analyzing computer screens | |
DE19747396C2 (de) | Verfahren und Anordnung zur Schaffung einer Ferndiagnose für ein elektronisches System über ein Netz | |
US5847972A (en) | Method and apparatus for graphically analzying a log-file | |
DE10063662B4 (de) | Logikanalysator mit gemischter textlicher und graphischer Trigger-Spezifikation | |
DE2515297A1 (de) | Pruefsystem fuer logische netzwerke mit simulatororientiertem fehlerpruefgenerator | |
DE112005001790B4 (de) | Programmerstellungseinrichtung für eine programmierbare Steuervorrichtung, Programmerstellungsverfahren für eine programmierbare Steuervorrichtung und Aufzeichnungsmedium mit darauf aufgezeichnetem Programm | |
DE102005025744A1 (de) | Verfahren und Vorrichtung zum automatisierten Testaufbau | |
DE10204657A1 (de) | Nachrichtenanalyseeinrichtung und Verfahren zum Anzeigen von Nachrichten | |
DE102012216841A1 (de) | Verfahren und Vorrichtung zur Durchführung von Sicherheitstests hinsichtlich von Protokollimplementierungen | |
DE112010003948T5 (de) | Auswerten von Objekten einer Grafischen Benutzeroberfläche zur Überprüfung von Standards | |
DE112008004025T5 (de) | Analysieren von Ereignissen | |
US8780098B1 (en) | Viewer for multi-dimensional data from a test environment | |
DE10047612A1 (de) | Logikanalysator mit durch ein Signalformexemplar definierter Trigger-Spezifikation | |
EP0104635A2 (de) | Verfahren und Anordnung zum Prüfen eines digitalen Rechners | |
DE112014001997T5 (de) | Kennzeichnen von Client-Zuständen | |
DE112011100168B4 (de) | Erfassen von Diagnosedaten in einer Datenverarbeitungsumgebung | |
DE10038499A1 (de) | Verfahren und System für die verbesserte Entwicklungsprüfung mittels angepasster Ablaufverfolgung | |
DE69814750T2 (de) | Logikanalysator zur Erkennung der Übereinstimmung einer Abtastungsprobe mit einem Quellcodebefehl | |
DE102004008215A1 (de) | Vorrichtung und Verfahren zur Taktwiedergewinnung und Augendiagrammerzeugung | |
DE10255142A1 (de) | Diagnose von Datenpaketübertragungs-Fehlern unter Verwendung von Einschränkungen |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
OP8 | Request for examination as to paragraph 44 patent law | ||
8127 | New person/name/address of the applicant |
Owner name: HEWLETT-PACKARD CO. (N.D.GES.D.STAATES DELAWARE), |
|
8127 | New person/name/address of the applicant |
Owner name: AGILENT TECHNOLOGIES, INC. (N.D.GES.D.STAATES DELA |
|
D2 | Grant after examination | ||
8364 | No opposition during term of opposition | ||
8339 | Ceased/non-payment of the annual fee |