DE102009009172A1 - Abbildung von Adressen eines Programmcodes und von Adressen von Daten in einem Speicher - Google Patents

Abbildung von Adressen eines Programmcodes und von Adressen von Daten in einem Speicher Download PDF

Info

Publication number
DE102009009172A1
DE102009009172A1 DE102009009172A DE102009009172A DE102009009172A1 DE 102009009172 A1 DE102009009172 A1 DE 102009009172A1 DE 102009009172 A DE102009009172 A DE 102009009172A DE 102009009172 A DE102009009172 A DE 102009009172A DE 102009009172 A1 DE102009009172 A1 DE 102009009172A1
Authority
DE
Germany
Prior art keywords
memory
addresses
information
unique
program code
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.)
Granted
Application number
DE102009009172A
Other languages
English (en)
Other versions
DE102009009172B4 (de
Inventor
Albrecht Dr. Mayer
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Infineon Technologies AG
Original Assignee
Infineon Technologies AG
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Infineon Technologies AG filed Critical Infineon Technologies AG
Publication of DE102009009172A1 publication Critical patent/DE102009009172A1/de
Application granted granted Critical
Publication of DE102009009172B4 publication Critical patent/DE102009009172B4/de
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Debugging And Monitoring (AREA)

Abstract

Es wird ein System zum Abbilden von Informationsadressen in einem Speicher offenbart. Das System umfasst einen Speicher, wobei jedes Byte auf eine Vielzahl von eindeutigen Adressen abgebildet wird, und einen Mikroprozessor zum Zuweisen von wenigstens einer der eindeutigen Adressen zu den Informationen. Die Informationen können Programmcodefragmente und/oder Daten sein. Ebenfalls offenbart wird ein Verfahren zum Abbilden von Informationsadressen in einem Speicher unter Verwendung eines solchen Systems. Das Verfahren umfasst das Abbilden jedes Byte des Speichers in eine Vielzahl von eindeutigen Adressen und das Zuweisen wenigstens einer der eindeutigen Adressen zu den Informationen.

Description

  • Die vorliegende Erfindung betrifft allgemein das Debugging (die Fehlerbereinigung) von Benutzerprogrammen, die von einem Prozessor ausgeführt werden.
  • Ein RAM kann Informationen gespeichert halten, die mehrere Stücke von Programmcode- oder Datenfragmenten umfassen. Typischerweise kann auf jedes Byte des RAM zugriffen werden, indem eine eindeutige Adresse verwendet wird. Während der Ausführung eines Programms kann ein oder können verschiedene Codefragmente in der gleichen RAM-Speicherposition gespeichert werden. Welches Codefragment im Augenblick vorliegt, kann von dem Programm selber festgestellt werden oder kann von einer anderen Bedingung abhängen. Während das Programm einem Debugging unterzogen wird, können Haltepunkte (Breakpoints) in dem Code gesetzt sein. Ein Haltepunkt ist eine beabsichtigte Anhaltestelle oder Unterbrechung in einem Programm zur Unterstützung des Debugging des Programms. Nachdem ein Haltepunkt erreicht ist, kann ein Programmierer während der Pause die Prüfungsumgebung (Protokolle, Speicher, Dateien, etc.) inspizieren, um festzustellen, ob das Programm auch so funktioniert, wie dies erwartet wird. Wenn ein Haltepunkt an einer bestimmten Adresse in dem RAM gesetzt ist, dann weiß man dann, wenn dieser Haltepunkt erreicht wird, nicht unbedingt, welcher Programmcode gerade ausgeführt wird, wenn sich mehr als ein Codefragment die gleiche RAM-Adresse teilen können. Ein Programm, das in dem RAM gespeichert gehalten wird, kann dynamisch von einer Speicherverwaltungseinheit (MMU; memory management unit) eines Betriebssystems oder explizit von einem Benutzerprogramm ausgetauscht werden. Zu diesem Zweck kann der Mikroprozessor mit einem internen Notizblock-RAM versehen sein.
  • Typischerweise wird eine Haltepunktlogik als ein Komparator implementiert, der auf der Basis einer Abrufadresse arbeitet, die von dem Prozessor ausgegeben wird. Wenn die Abrufadresse in dem hier betrachteten Kontext nicht eindeutig ist, dann fehlt eine Verbindung zu dem augenblicklich ausgeführten Codefragment, und falsche Steuerimpulsauslöser können auftreten, die ignoriert werden müssen. Dieses Problem existiert sowohl für physikalische als auch für virtuelle Adressen. Dies beeinträchtigt das Laufzeitverhalten bis zu dem ersten „echten” Haltepunkt.
  • Eine Lösung, um mit diesem Problem fertig zu werden, liegt darin, das System anzuhalten und den Programm-RAM-Inhalt zu lesen. Aber diese Lösung ist nicht anwendbar, wenn das ins Auge gefasste Zielobjekt nicht angehalten werden kann oder der RAM-Inhalt wiederholte Male ein- und ausgelagert wird. Außerdem ist sie uneffizient in Bezug auf die Analysierung längerer Programmverfolgungen.
  • Eine andere Lösung liegt darin, das Laden des RAM zu überprüfen bzw. zu verfolgen. Dies wird dadurch erzielt, dass der Inhalt einer bestimmten „Markierungs”-Stelle ablaufmäßig verfolgt bzw. überwacht wird oder in Erinnerung behalten wird. Dieser Lösungsweg schlägt fehl, wenn die Anzahl an RAM-Fragmenten, die unabhängig voneinander geschrieben werden (ein „Heap” (Haldenspeicher) von modernen Betriebssystemen), anwächst oder wenn es nicht erzwungen werden kann, dass die Markierungsstelle von der Tool-Kette (z. B. Kompilierer, Programmverknüpfer, Lokalisator, Lader, etc.) bedient wird. Außerdem erfordert dieses Verfahren eine zusätzliche Logik und Synchronisierung, um das Laden zu verfolgen, wenn dies nicht von dem Prozessor selber durchgeführt wird, sondern zum Beispiel von einem DMA-Kontroller.
  • Die Erfindung löst dieses und andere Probleme durch den Gegenstand der Ansprüche 1, 11, 23, 24, 25.
  • Vorteilhafte Weiterbildungen sind in den Unteransprüchen angegeben.
  • Gemäß einem Aspekt der Erfindung wird ein System zum Abbilden bzw. Mapping von Informationsadressen in einem Speicher bereitgestellt. Das System umfasst einen Speicher, wobei auf jedes Byte über eine Vielzahl von unterschiedlichen Adressen zugegriffen werden kann, und einen Mikroprozessor zum Zuweisen von wenigstens einer der Adressen zu Informationen. Die Informationen können Programmcodefragmente und/oder Daten sein. Ebenfalls offenbart wird ein Verfahren zum Abbilden bzw. Mapping von Informati onsadressen in einem Speicher unter Verwendung eines solchen Systems. Das Verfahren umfasst das Abbilden des gleichen physikalischen Speichers in eine Vielzahl von eindeutigen Adressen und das Zuweisen von wenigstens einer der eindeutigen Adressen zu den Informationen.
  • Das Verfahren umfasst das Laden der Informationen in den Speicher unter Verwendung einer Software, die so konfiguriert ist, dass sie die Informationen in dem Speicher austauscht, wie dies von einem Programm benötigt wird. Informationen, die wieder verwendet werden, werden in dem Speicher gespeichert gelassen, und jeder Adressbereich repräsentiert ein anderes Programmcode- oder Datenfragment. Das offenbarte Verfahren erzeugt eine eineindeutige Beziehung zwischen dem Programmcodefragment und seinem Adressbereich.
  • Diese und weitere Aufgaben, Merkmale und Vorteile der vorliegenden Erfindung werden aus der nachfolgenden Beschreibung viel offensichtlicher werden, wenn diese in Verbindung mit den beigefügten Zeichnungen betrachtet wird, die lediglich zu Illustrationszwecken ein Ausführungsbeispiel in Übereinstimmung mit der vorliegenden Erfindung zeigen.
  • KURZE BESCHREIBUNG DER ZEICHNUNGEN
  • 1 ist ein System, das die vorliegende Erfindung verkörpert;
  • 2 und 3 veranschaulichen ein beispielhaftes Adressenabbildungsschema in Übereinstimmung mit einem Ausführungsbeispiel der vorliegenden Erfindung; und
  • 4 ist ein Verfahren zum Abbilden von Informationsadressen in einem Speicher.
  • AUSFÜHRLICHE BESCHREIBUNG EINES BEVORZUGTEN AUSFÜHRUNGSBEISPIELS DER ERFINDUNG
  • Überblicksmäßig gesehen sorgt die vorliegende Erfindung für die effiziente Verwendung eines RAM durch Betriebssysteme und Programme, um die Effizienz bei dem Debugging eines Programmcodes zu steigern. Eine besondere Anwendung der vorliegenden Erfindung liegt darin, einen Programmfluss während des Debugging ablaufmäßig zu verfolgen. Bereitgestellt wird ein System und ein Verfahren zum Schreiben eines Programmcodes oder von Daten in einen RAM, um so für eine effizientere Abrufung solcher Informationen während Debugging- und Prüfanwendungen zu sorgen. Das Debugging, die Programm- und die Datenablaufverfolgung können schneller und effizienter durchgeführt werden, wenn ein unzweideutiger Abruf verwendet wird, weil der kritische Code oder die kritischen Daten sofort identifiziert werden können. Die Verwendung des Begriffs ,Informationen' soll sich sowohl auf Programmcode- als auch auf Datenfragmente beziehen.
  • 1 zeigt ein beispielhaftes System 50 zum Abbilden von Programmcodeadressen in einem Speicher. Der Speicher 20 ist ein Aufzeichnungsmedium, das digitale Daten, die für die Informationsverarbeitung verwendet werden, einen gewissen Zeitraum hindurch gespeichert lässt. Der Speicher 20 ist vorzugsweise ein Direktzugriffsspeicher (Random Access Memory; RAM), kann aber jede Art von Speicher sein und kann auch die Form von integrierten Schaltungen annehmen, die es erlauben, dass auf gespeicherte Daten in jeder beliebigen Reihenfolge zugegriffen werden kann. Jedes Byte in dem Speicher 20 wird auf eine Vielzahl von eindeutigen Adressen abgebildet. Der Begriff „Byte” wird in der vorliegenden Beschreibung als ein allgemeiner Begriff für die kleinste adressierbare Einheit oder Speicherstelle in dem Speicher 20 verwendet. Für Gewöhnlich ist die kleinste adressierbare Einheit 1 Byte, das acht Bits umfasst.
  • Der Mikroprozessor 10 ist ein programmierbares digitales elektronisches Bauteil. Der Mikroprozessor 10 weist jede der Adressen einem Programmcodefragment zu. Eine Eingabe-/Ausgabe-(E/A)-Vorrichtung 30 ist jede Vorrichtung, die verwendet wird, um Informationen und Anweisungen in einen Computer zur Speicherung in einem Speicher 20 oder zur Verarbeitung durch einen Mikroprozessor 10 einzugeben. Die E/A-Vorrichtung 30 liefert auch verarbeitete Daten an einen menschlichen Bediener oder an eine Maschine, die von dem Mikroprozessor 10 gesteuert wird. Der Mikroprozessor 10, der Speicher 20 und die E/A-Vorrichtung 30 sind durch einen Systembus 40 miteinander verbunden.
  • Das System 50 ist in der Lage, Informationsadressen in einem Speicher 20 abzubilden. Jedes Byte des Speichers 20 wird auf eine Vielzahl von eindeutigen Adressen abgebildet. Der Mikroprozessor 10 weist jede der Adressen zu Informationen zu. Somit ist die Anzahl an Adressen, die von dem Mikroprozessor 10 adressierbar ist, höher als die Anzahl an Bytes in dem Speicher 20. Die Adressen, die von dem Mikroprozessor 10 adressierbar sind, sind die Abrufadressen, die verwendet werden, um auf die unterschiedlichen Bytes der Informationen in dem Speicher 20 zuzugreifen. Da jedes Byte des Speichers 20 auf eine Vielzahl von eindeutigen Abrufadressen abgebildet ist, kann der Mikroprozessor 10 auf ein spezifisches Byte mit wenigstens zwei Abrufadressen zugreifen. Dies kann sehr leicht durch das Ignorieren der höheren Adressbits erzielt werden.
  • Das System 50 umfasst eine Computersoftware (nicht gezeigt), die so konfiguriert ist, dass sie die Programmcodefragmente in den Speicher 20 lädt. Die Software ist des Weiteren so konfiguriert, dass sie Programmcodefragmente in dem Speicher 20 austauscht, wie sie von einem Programm benötigt werden. Der Speicher 20 kann Programmcodefragmente, die wieder verwendet werden, gespeichert lassen, und jeder Adressbereich repräsentiert ein anderes Programmcodefragment. Die Fachleute auf dem Gebiet sollten erkennen, dass der Mikroprozessor 10, obwohl er so angegeben ist, dass er jede der Adressen den Informationen zuweist, auch so konfiguriert sein könnte, dass er die Informationen einer der Adressen zuweist.
  • 2 und 3, die unten erörtert werden, werden verwendet, um ein Ausführungsbeispiel der vorliegenden Erfindung lediglich zu Illustrationszwecken zu beschreiben und sollen in keiner Weise so ausgelegt werden, dass sie den Schutzumfang der vorliegenden Erfindung einschränken. Gewisse Einzelheiten, die die Speicheradressierung und die Programmcode- und Datenfragmente betreffen, die hier beschrieben werden, sind weggelassen worden, da sie außerhalb des Schutzumfangs der vorliegenden Erfindung liegen. In Übereinstimmung mit der vorliegenden Erfindung werden Informationen in einem Speicher gespeichert. Diese Informationen können in der Form von Programmcode- oder Datenfragmenten vorliegen, und es sollte selbstverständlich sein, dass jede Bezugnahme auf das Speichern von Informationen in der vorliegenden Beschreibung entweder auf Programmcode- oder Datenfragmente anwendbar ist.
  • In Übereinstimmung mit einem bevorzugten Ausführungsbeispiel der vorliegenden Erfindung wird jedes Byte des RAM auf verschiedene Adressen derart abgebildet, dass es mehrere eindeutige Adressen für jedes Byte gibt. Der physikalische RAM wird auf mehr als eine Speicherposition, die jeweils ihren eigenen Adressbereich aufweist, und vorzugsweise auf weniger als 100 Speicherpositionen abgebildet. Somit kann für jeden Speicherplatz in Verbindung mit spezifischen Informationen eine eindeutige Adresse zugewiesen werden. Die spezifischen Informationen können zum Beispiel die höheren Adressbits sein, die für das Zugreifen auf die Bytes des Speichers 20 ignoriert werden. Diese höheren Adressbits sind dann die spezifischen Informationen, die zum Beispiel den Typ des Code- oder Datenfragments repräsentieren können, das in dem Speicher 20 gespeichert ist. Die Adressbits einer solchen eindeutigen Abrufadresse, die von dem Mikroprozessor 10 ausgegeben wird, können in einen niedrigeren Teil für das Zugreifen auf die Bytes in dem Speicher 20 und einen höheren Teil getrennt werden, der die unterschiedlichen Basisadressen repräsentiert, unter denen auf die Bytes in dem Speicher 20 zugegriffen werden kann. Der niedrigere Teil der Adressbits kann den Adressraum für die verfügbaren Bytes in dem Speicher 20 abdecken, und der höhere Teil der Adressbits kann einen Positionsbereich repräsentieren. Der Bereich der Bytes des Speichers 20 erscheint mehrere Male in unterschiedlichen Adressbereichen in dem Adressraum der eindeutigen Adressen. Die unterschiedlichen Adressbereiche werden von dem höheren Teil der Adressbits bestimmt und können Positionsbereiche genannt werden.
  • Durch die Verwendung solcher eindeutigen Adressen ist es leichter zu identifizieren, welches Code- oder Datenfragment in dem RAM gespeichert ist. In Übereinstimmung mit einem Ausführungsbeispiel der Erfindung wird das Byte auf unterschiedliche eindeutige Adressen abgebildet. Ein Codefragment wird einem Positionsbereich zugewiesen, welcher ein Teil der eindeutigen Adresse des Byte des RAM ist, in dem das Codefragment gespeichert ist. Anstatt dass man nur eine einzelne Adresse für jedes Byte des RAM hat, wird die Adresse des Byte des RAM zusammen mit dem Positionsbereich, in dem der Code gespeichert ist, zu einer eindeutigen Adresse. Somit kann ein Byte eines RAM eine Vielzahl von eindeutigen Adressen aufweisen, und jedes gespeicherte Codefragment weist einen spezifischen Bereich von einzelnen eindeutigen Adressen auf. Jede eindeutige Adresse bezieht sich eindeutig auf ein spezifisches Byte in dem Speicher 20 und auf das spezifische Codefragment, das in dem Speicher 20 gespeichert ist.
  • Wenn ein Haltepunkt an einer Adresse gesetzt ist, dann kann der Code, der gerade ausgeführt wird, leicht identifiziert werden, weil nur ein Stück eines Codes dieser eindeutigen Adresse zugewiesen ist.
  • Eine Softwarekomponente ist so konfiguriert, dass sie die Codefragmente erkennt und die Codefragmente in den RAM lädt. Von der Software-Seite her sind mehr eindeutige Adressen erzeugt worden, und der physikalische RAM wird größer erscheinen, was bedeutet, dass der logische Adressraum der eindeutigen Adressen größer als der physikalische Adressraumspeicher 20 ist. Unter Bezugnahme auf 2 weist der physikalische RAM 5 KB auf, und es sind vier Codestücke vorhanden, die in den RAM geladen werden sollen. Die gesamte Größe aller vier Codestücke zusammen ist größer als der Platz von 5 KB, der in dem physikalischen RAM zur Verfügung steht. In Abhängigkeit von ihrer Größe müssen die verschiedenen Codestücke sequentiell geladen werden. Wenn die ersten beiden Codefragmente I, II jeweils 2 KB betragen, das dritte III 5 KB aufweist und das vierte IV 1 KB aufweist, dann muss das vierte Codefragment IV alleine in diesen physikalischen RAM geladen werden und die anderen Fragmente können gleichzeitig in den RAM geladen werden. Im Folgenden wird angenommen, das alle vier Fragmente allein in den RAM, also eines zur gleichen Zeit, geladen werden.
  • Auf den physikalischen RAM kann durch eindeutige Adressen zugegriffen werden, die von dem Mikroprozessor 10 als Abrufadressen ausgegeben werden. Die eindeutigen Adressen enthalten jedoch zusätzlich zu den Adressbits, die notwendig sind, um jedes Byte in den 5 KB des RAM zu adressieren, vier weitere Adressbits, die verwendet werden, um das Fragment zu bestimmen, das derzeitig in den RAM geladen wird. Diese zusätzlichen vier Adressbits werden nicht verwendet, um den RAM zu adressieren. Die Größe von logischen Adressen von eindeutigen Adressen beträgt 16 × 5 KB. Die 5 KB des physikalischen RAM erscheinen sechzehn mal mit sechzehn verschiedenen Basisadressen in dem Raum der logischen Adressen von eindeutigen Adressen, und jedes Mal dann, wenn Code- oder Datenfragmente geladen werden, wird jedes Byte des RAM zu 16 verschiedenen eindeutigen Adressen zugewiesen. Dem entsprechend weist jedes Byte von jedem Codefragment eine eindeutige Adresse auf. Aber zur Ausführung muss das entsprechende Codefragment in den RAM geladen werden. Die Codefragmente können in einer weiteren Speichervorrichtung gehalten werden, von der aus sie für die Ausführung in den RAM geladen werden.
  • Die eindeutigen Adressen werden für die Haltepunktlogik verwendet, um zu gewährleisten, dass ein Haltepunkt nur in dem überwachten Codefragment auftritt. Wenn die Haltepunktlogik einen Komparator zum Vergleichen der Abrufadresse, die von dem Mikroprozessor 10 ausgegeben wird, mit Haltepunktadressen umfasst, dann wird die gesamte eindeutige Adresse für diesen Vergleich verwendet. Im Gegensatz dazu wird nur ein Teil der eindeutigen Adresse für die Adressierung des RAM verwendet. In dem vorliegenden Ausführungsbeispiel werden die höchsten vier Adressbits nur für die Haltepunktlogik verwendet.
  • Das oben beschriebene Ausführungsbeispiel kann in gleicher Weise auf Datenfragmente angewendet werden. Programme manipulieren und speichern Daten, während sie laufen, und die vorliegende Erfindung kann verwendet werden, um Daten in der gleichen Art und Weise ablaufmäßig zu verfolgen, wie diese verwendet wird, um einen Programmcode ablaufmäßig zu verfolgen. Der oben beschriebene Lösungsweg kann angewendet werden, wenn Datenstrukturen dynamisch in eine Hardware geladen werden. Durch die Verwendung von Software zum Laden der Daten in den RAM kann der Programmfluss überwacht werden und die Datenseite kann einem Debugging und einer Ablaufverfolgung unterzogen werden.
  • Der Softwareprozess, der Daten lädt, ist geringfügig anders als der Prozess, der Programmcodefragmente lädt. Die gleichen Daten können an verschiedenen Punkten während der Programmausführung verwendet werden und können während der gesamten Programmausführung manipuliert und geändert werden. Somit wird eine zusätzliche Logik innerhalb der Software notwendig, um zu bestimmen, wo die Daten für die maximale Leistung lokalisiert werden sollen. Aber der Mechanismus für das Speichern von Daten bleibt unverändert.
  • In Übereinstimmung mit einem Ausführungsbeispiel der vorliegenden Erfindung kann die Software Codefragmente und Daten in dem RAM austauschen, wie sie von einem Programm benötigt werden. Die Software lädt Fragmente logisch und tauscht Programmcodefragmente oder Daten in den bzw. dem RAM und aus dem RAM aus, während die eindeutigen Adressen der verschiedenen Codefragmente und Daten aufrecht erhalten werden.
  • Unter Bezugnahme auf 3 kann die Software während der Ausführung ein Codefragment oder Stücke von Daten, die die Größenordnung von 2 KB aufweisen, mit zwei Codefragmenten oder Stücken von Daten austauschen, die jeweils eine Größe von 1 KB aufweisen. Während das ursprüngliche Codestück eine Adresse aufwies, die auf dem Bereich 0–2 basierte, weist das erste neue Codestück eine Adresse von 0–1 auf und das zweite neue Codestück weist eine Adresse von 1–2 auf. Somit können die eindeutigen Adressen für ein Codestück dynamisch auf der Grundlage der Position geändert werden, an der die Daten oder das Codefragment von der Software geladen werden. Die Hardware und der RAM können beide so konfiguriert sein, dass sie diese dynamische Änderung von Adressen unterstützen. Das Gleiche trifft zu, wenn aus irgendeinem anderen Grund ein Codefragment in den RAM an einer Position geladen wird, die nicht an dem Anfang des RAM lokalisiert ist. Wenn in solchen Fällen die Speicherposition eines Code- oder Datenfragments innerhalb des RAM variieren kann, dann müssen Vorkehrungen dafür getroffen werden, dass die eindeutigen Adressen, die von dem Mikroprozessor 10 ausgegeben werden, in Adressen umgewandelt werden, die für den Zugriff auf den RAM an der korrekten Position geeignet sind.
  • Wenn ein Codefragment oder Daten irgendwann in der Zukunft benötigt wird bzw. werden, ist es möglich, diese nicht auszutauschen, sondern in dem RAM zu behalten. Mit anderen Worten, ein Codefragment oder Daten, das bzw. die wieder benötigt wird/werden, werden für die zukünftige Verwendung in dem RAM gespeichert gelassen, während andere ausgetauscht werden.
  • Jedes Codefragment wird auf eine eindeutige Adresse abgebildet. Eine Software ist verantwortlich für die Verifizierung, dass der Code in diese Adressen geladen wird. Dies macht es möglich, während der Ablaufverfolgung den ausgeführten Code oder die verwendeten Daten direkt vor einem Haltepunkt auf der Grundlage der Speicherposition des Codes in dem RAM zu identifizieren. Somit gibt es eine eindeutige Adresse für jedes Codefragment und Datenstück.
  • 4 veranschaulicht die Schritte für das Abbilden von Informationsadressen in einem Speicher in Übereinstimmung mit einem Ausführungsbeispiel der vorliegenden Erfindung. Im Schritt 100 wird der gleiche physikalische Speicher auf eine Vielzahl von eindeutigen Adressen abgebildet. Dann wird beim Schritt 200 jede der Adressen einem Programmcode- oder Datenfragment zugewiesen. Alternativ dazu kann beim Schritt 200 ein Programmcode- oder Datenfragment einem Adressbereich zugeordnet werden.
  • Der einzelne physikalische Speicher (RAM), in dem die eindeutigen Programmcodes gespeichert sind, wird in den Adressraum mit vielen verschiedenen Basisadressen abgebildet. Höhere Adressbits, die nicht mit eindeutigen Codefragmenten oder Daten koordinieren, werden ignoriert. Die eindeutigen Programmcodes können dann in diesen Speicher mit verschiedenen Basisadressen verschoben werden. Folglich besteht eine eineindeutige Beziehung zwischen einem spezifischen Programmcodefragment und seiner Adresse. Diese Anordnung erfüllt die Voraussetzung für eine unzweideutige Ablaufverfolgung und Auslösung.
  • In einem Ausführungsbeispiel wird der RAM verwendet, um eine Vielzahl von dynamisch geladenen Programmcodes parallel zu speichern. Der Benutzer muss/die Werkzeuge müssen nur sicherstellen, dass keine Adressenüberlappung vorliegt. Dies unterscheidet sich nicht von dem Fall, bei dem der RAM in den Adressraum an nur einer Basisadresse abgebildet wird. Wenn un ter der vorliegenden Erfindung auf den RAM unter 16 verschiedenen Basisadressen zugegriffen werden kann, werden 4 höhere Address Lines ignoriert werden. Die Fachleute auf dem Gebiet werden erkennen, dass eine MMU genau das Gegenteil macht. In dem Fall einer MMU kann ein anderer Code von dem Gesichtspunkt der Software und der Hardware aus die gleiche Adresse aufweisen.
  • Die eineindeutige Beziehung zwischen einem spezifischen Codefragment oder zwischen spezifischen Daten und seiner bzw. ihrer Adresse macht es leicht, Abschnitte eines Programmcodes oder von Daten in einem RAM zu finden, ohne dass eine Markierung oder ein vollständiges Abtasten benötigt werden. Anders als bei herkömmlichen MMUs können verschiedene Programme nicht die gleichen lokalen Adressen verwenden.
  • Die vorliegende Erfindung erzeugt einen virtuellen Speicher von eindeutigen Adressen mit mehr Basisadressen und speichert die Informationen in einer unzweideutigen Weise (eineindeutig). Weniger Bits werden benötigt, um die Speicherposition innerhalb des physikalischen RAM zu beschreiben. Die Speicherposition in dem RAM, an der sich der Programmcode oder die Daten befindet bzw. befinden, ist auf der Grundlage des oben beschriebenen Abbildens der Basisadresse begrenzt. Somit werden weniger Bits benötigt, um diese Speicherstelle zu beschreiben, da die mögliche Speicherstelle kleiner ist.
  • Das oben beschriebene Ausführungsbeispiel der vorliegenden Erfindung ist rückwärts kompatibel, solange die zusätzlichen Adressen für den gleichen physikalischen RAM nicht aufgebraucht sind.
  • Einem Fachmann auf dem Fachgebiet wird klar sein, dass zusätzliche Variationen bei dem oben beschriebenen Ausführungsbeispiel der vorliegenden Erfindung durchgeführt werden können, ohne dass von dem Erfindungsgedanken und dem Schutzumfang der Erfindung abgewichen wird, die von den nachfolgenden Ansprüchen definiert wird.
  • Die Erfindung kann auch in einem System realisiert werden, das einen Mikroprozessor, eine Haltepunktlogik, eine Speicherschnittstelle und einen Adressbus umfasst, der all diese Systemkomponenten miteinander koppelt. Der Adressbus ist so konfiguriert, dass er Adressen, die von dem Mikroprozessor ausgegeben werden, mit einer hohen Breite zu der Haltepunktlogik und mit einer reduzierten Breite zu der Speicherschnittstelle überträgt. Die Breite der Adressen kann die Anzahl an Adressbits sein, so dass mehr Adressbits der Adressen der Haltepunktlogik als der Speicherschnittstelle bereitgestellt werden. Die Adressen, die zu der Speicherschnittstelle übertragen werden, dienen dazu, einen angeschlossenen Speicher, der Code- oder Datenfragmente hält, zu adressieren. Insbesondere kann der Adressbus so konfiguriert sein, dass er Adressen, die von dem Mikroprozessor ausgegeben werden, mit einer hohen Breite zu der Haltepunktlogik und mit einer reduzierten Breite zu der Speicherschnittstelle überträgt.

Claims (25)

  1. System zum Abbilden von Informationsadressen in einem Speicher, das Folgendes umfasst: einen Speicher, wobei jedes Byte auf eine Vielzahl von eindeutigen Adressen abgebildet wird; und einen Mikroprozessor zum Zuweisen wenigstens einer der Adressen zu Informationen.
  2. System nach Anspruch 1, wobei die Informationen ein Programmcodefragment umfassen.
  3. System nach Anspruch 2, das des Weiteren eine Software umfasst, die so konfiguriert ist, dass sie die Programmcodefragmente in den Speicher lädt, wie sie von einem Programm benötigt werden.
  4. System nach Anspruch 2 oder 3, wobei der Speicher so konfiguriert ist, dass er Programmcodefragmente, die wieder verwendet werden, gespeichert lässt.
  5. System nach einem der Ansprüche 2 bis 4, wobei jeder eindeutige Adressbereich ein anderes Programmcodefragment repräsentiert.
  6. System nach einem der vorhergehenden Ansprüche, wobei der Speicher in eine Vielzahl von eindeutigen Adressen derart unterteilt wird, dass es eine eindeutige Adresse für jede Speicherstelle gibt.
  7. System nach einem der vorhergehenden Ansprüche, wobei der Speicher ein Direktzugriffsspeicher (RAM) ist.
  8. System nach einem der vorhergehenden Ansprüche, wobei die Informationen Daten sind.
  9. System nach Anspruch 8, das des Weiteren eine Software umfasst, die so konfiguriert ist, dass sie die Daten in den Speicher lädt, wie sie von einem Programm benötigt werden.
  10. System nach Anspruch 8 oder 9, wobei jeder eindeutige Adressbereich unterschiedliche Daten repräsentiert.
  11. Verfahren zum Abbilden von Informationsadressen in einem Speicher, das Folgendes umfasst: Abbilden jedes Byte des Speichers auf eine Vielzahl von eindeutigen Adressen; und Zuweisen wenigstens einer der eindeutigen Adressen zu den Informationen.
  12. Verfahren nach Anspruch 11, das des Weiteren das Laden der Informationen in den Speicher umfasst, wobei der Schritt des Ladens eine Software verwendet, die so konfiguriert ist, dass sie die Informationen in dem Speicher ausgetauscht, wie diese von einem Programm benötigt werden.
  13. Verfahren nach Anspruch 11, wobei die Informationen ein Programmcodefragment umfassen.
  14. Verfahren nach Anspruch 11 oder 12, wobei die Informationen Daten umfassen.
  15. Verfahren nach einem der Ansprüche 11 bis 14, das des Weiteren das Gespeichertlassen von Informationen umfasst, die wieder verwendet werden.
  16. Verfahren nach einem der Ansprüche 13 bis 15, wobei wenigstens ein eindeutiger Adressbereich ein anderes Programmcodefragment repräsentiert.
  17. Verfahren nach einem der Ansprüche 13 bis 16, das des Weiteren das Erzeugen einer eineindeutigen Beziehung zwischen dem Programmcodefragment und seinem eindeutigen Adressbereich umfasst.
  18. Verfahren nach einem der Ansprüche 11 bis 17, wobei das Byte des Speichers in eine Vielzahl von eindeutigen Adressen derart aufgeteilt wird, dass es eine eindeutige Adresse für jede Speicherstelle gibt.
  19. Verfahren nach einem der Ansprüche 11 bis 18, wobei es 16 eindeutige Adressen in dem Byte des Speichers gibt.
  20. Verfahren nach einem der Ansprüche 11 bis 19, wobei der Speicher ein Direktzugriffsspeicher (RAM) ist.
  21. Verfahren nach einem der Ansprüche 14 bis 20, wobei jeder eindeutige Adressbereich unterschiedliche Daten repräsentiert.
  22. Verfahren nach einem der Ansprüche 14 bis 21, das des Weiteren das Erzeugen einer eineindeutigen Beziehung zwischen den Daten und ihrem eindeutigen Adressbereich umfasst.
  23. Verfahren zum Identifizieren eines Programmcodes in einem Speicher, das Folgendes umfasst: Verwenden einer eindeutigen Basisadresse zum Identifizieren eines Programmcodefragments, welches dynamisch in den Speicher geladen wird; und Identifizieren einer exakten Position eines Haltepunkts auf der Grundlage der Speicherposition des Codefragments in dem Speicher, wobei dieser Schritt des Identifizierens das Ignorieren von höherwertigen Adressbits umfasst.
  24. System zum Abbilden von Informationsadressen in einem Speicher, das Folgendes umfasst: einen Speicher, wobei jedes Byte auf eine Vielzahl von eindeutigen Adressen abgebildet wird; und einen Mikroprozessor zum Zuweisen von Informationen zu wenigstens einer der Adressen.
  25. Verfahren zum Abbilden von Informationsadressen in einem Speicher, das Folgendes umfasst: Abbilden jedes Byte des Speichers auf eine Vielzahl von eindeutigen Adressen; und Zuweisen der Informationen zu wenigstens einer der eindeutigen Adressen.
DE102009009172.6A 2008-02-20 2009-02-16 Abbildung von Adressen eines Programmcodes und von Adressen von Daten in einem Speicher Active DE102009009172B4 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US12/034,270 US8352703B2 (en) 2008-02-20 2008-02-20 Address mapping of program code and data in memory
US12/034,270 2008-02-20

Publications (2)

Publication Number Publication Date
DE102009009172A1 true DE102009009172A1 (de) 2009-09-03
DE102009009172B4 DE102009009172B4 (de) 2018-09-06

Family

ID=40911520

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102009009172.6A Active DE102009009172B4 (de) 2008-02-20 2009-02-16 Abbildung von Adressen eines Programmcodes und von Adressen von Daten in einem Speicher

Country Status (2)

Country Link
US (1) US8352703B2 (de)
DE (1) DE102009009172B4 (de)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20140100752A (ko) 2013-02-07 2014-08-18 삼성전자주식회사 메모리 모듈 및 이를 포함하는 메모리 시스템
US9998284B2 (en) 2015-09-24 2018-06-12 Intel Corporation Methods and apparatus to provide isolated execution environments
CN106940649A (zh) * 2016-01-04 2017-07-11 希姆通信息技术(上海)有限公司 移动终端升级的方法

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH10124327A (ja) * 1996-10-16 1998-05-15 Nec Corp インストラクションキャッシュミス率削減方法
US7430670B1 (en) * 1999-07-29 2008-09-30 Intertrust Technologies Corp. Software self-defense systems and methods
US6658553B1 (en) * 2000-04-14 2003-12-02 Koninklijke Philips Electronics N.V. Universal pointer implementation scheme for uniformly addressing distinct memory spaces in a processor's address space
US20060184718A1 (en) * 2005-02-16 2006-08-17 Sinclair Alan W Direct file data programming and deletion in flash memories
US7886198B2 (en) * 2005-05-16 2011-02-08 Texas Instruments Incorporated Method and system of identifying overlays used by a program

Also Published As

Publication number Publication date
US20090210638A1 (en) 2009-08-20
DE102009009172B4 (de) 2018-09-06
US8352703B2 (en) 2013-01-08

Similar Documents

Publication Publication Date Title
EP0689694B1 (de) Verfahren zur maschinellen erzeugung von nebenläufig bearbeitbaren befehlsgruppen aus einem programm für superskalare mikroprozessoren
DE69831732T2 (de) Verfahren und gerät zum korrigieren von fehlern in einem rechnersystem
DE3932675C2 (de)
DE60210633T2 (de) Verfahren und vorrichtungen zur verbesserung des durchsatzes von eingebetteten prozessoren auf cache-basis durch umschalten von tasks als reaktion auf eine cache-verfehlung
DE10039538A1 (de) Vorrichtung und Methode zum Analysieren der Leistung eines Computerprogramms
DE102006019292A1 (de) Modellieren programmierbarer Einrichtungen
DE112012004629T5 (de) Dynamischer Speicheraffinitätsanpasser auf Prozess/Objektebene
DE2164793A1 (de) Verfahren und Datenverarbeitungsanlage zur Steuerung einer Vielzahl von Eingabe/ Ausgabe-Einheiten mittels eine Zentraleinheit
EP0500973A1 (de) Initialisierungsroutine im EEPROM
DE112018002316T5 (de) Codeabdeckungsverfolgung für ein mikrocontroller-programm
DE102009009172B4 (de) Abbildung von Adressen eines Programmcodes und von Adressen von Daten in einem Speicher
DE2433436A1 (de) Verfahren und anordnung zum mehrfachverzweigen des programms in einem digitalen computer
DE19919388B4 (de) Programmprüfverfahren, Programmprüfvorrichtung und computerlesbares Aufzeichnungsmedium zum Aufzeichnen eines Zielprogramm-Prüfprogramms, das die Ablaufverfolgungsunterbrechungszeit reduzieren kann
DE112019000460T5 (de) Adapter für direkten speicherzugriff
DE102019103279A1 (de) Techniken zur informationsgraphenkomprimierung
DE60010847T2 (de) Verfahren zur Fehlerbeseitigung in einem Thread-Programm
EP3080668A1 (de) Verfahren zur beeinflussung eines steuerprogramms eines steuergeräts
DE3410497A1 (de) Rechneranordnung
DE2717700C2 (de) Speicherzugriffsanordnung
DE102016101871A1 (de) Nicht initialisierte Arbeitsspeicherverweise erfassen
DE2102935A1 (de) Verfahren und Vorrichtung zur Be Stimmung der Leistungsfähigkeit von Maschinenprogrammen
EP0560342B1 (de) Verfahren zum Untersuchen des Ablaufs eines in einer Hardware-Beschreibungssprache geschriebenen Programms
DE10065754B4 (de) Verfahren zur Steuerung eines Computersystems, Computersystem mit einer Ausführungsumgebung und Computerprogrammprodukt
DE112021004460T5 (de) Arbeitsübernahme bei einer speicherbereinigung mit gleichzeitigem markieren mit fingerzeiger
DE2026718A1 (de) Verfahren und Vorrichtung zum Speichern von Wörtern im Speicher einer Datenverarbeitungsanlage

Legal Events

Date Code Title Description
OP8 Request for examination as to paragraph 44 patent law
R016 Response to examination communication
R018 Grant decision by examination section/examining division
R020 Patent grant now final
R082 Change of representative