DE102014006998A1 - Korrektur eines programmierbaren Speichers - Google Patents

Korrektur eines programmierbaren Speichers Download PDF

Info

Publication number
DE102014006998A1
DE102014006998A1 DE102014006998.2A DE102014006998A DE102014006998A1 DE 102014006998 A1 DE102014006998 A1 DE 102014006998A1 DE 102014006998 A DE102014006998 A DE 102014006998A DE 102014006998 A1 DE102014006998 A1 DE 102014006998A1
Authority
DE
Germany
Prior art keywords
correction
location
data
correction code
value
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.)
Withdrawn
Application number
DE102014006998.2A
Other languages
English (en)
Inventor
Paul Hoayun
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.)
Qualcomm Technologies International Ltd
Original Assignee
Cambridge Silicon Radio Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Cambridge Silicon Radio Ltd filed Critical Cambridge Silicon Radio Ltd
Publication of DE102014006998A1 publication Critical patent/DE102014006998A1/de
Withdrawn legal-status Critical Current

Links

Images

Classifications

    • 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/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • G06F12/0638Combination of memories, e.g. ROM and RAM such as to permit replacement or supplementing of words in one module by words in another module
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/10Programming or data input circuits
    • G11C16/107Programming all cells in an array, sector or block to the same state prior to flash erasing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • G06F8/66Updates of program code stored in read-only memory [ROM]

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Stored Programmes (AREA)
  • Debugging And Monitoring (AREA)

Abstract

Ein programmierbarer Speicher 10 umfasst programmierbare Datenbitzellen. Ein Datenwort umfasst eine Gruppe der programmierbaren Datenbitzellen. Ein Verfahren zum Konfigurieren eines Korrekturcodes im Speicher 10 umfasst Identifizieren einer ersten Stelle (z. B. 0x1234) im programmierbaren Speicher 10, wo eine Korrektur erforderlich ist; Modifizieren eines Datenworts an der ersten Stelle zu einem vorbestimmten Datenwert (z. B. 0xFFFF); Schreiben eines Korrekturcodes für die Korrektur an einer Korrekturcodestelle (z. B. 0xABCD); und Speichern der Korrekturcodestelle. Der vorbestimmte Datenwert kann ein Wert aus einer Ausnahmeanweisung des Prozessors 20 sein oder auf diesen abgebildet sein, der den Prozessor 20 veranlasst, aus einer Korrekturtabelle 14 zu lesen. Der programmierbare Speicher 10 kann ein One Time Programmable (OTP) Speicher sein.

Description

  • Hintergrund
  • Die vorliegende Erfindung betrifft ein System und Verfahren für die Korrektur eines programmierbaren Speichers.
  • Häufig ist es wünschenswert, den Inhalt eines Programmspeichers nach der Herstellung einer Vorrichtung korrigieren zu können. Zum Beispiel kann eine Anforderung zur Aktualisierung einer Software vorliegen. Wenn Vorrichtungen einen Direktzugriffsspeicher (Random Access Memory – RAM), Flash- oder andere mehrfach beschreibbare Arten von Speicher verwenden, sind solche Korrekturen direkt, da der bestehende Inhalt einfach überschrieben werden kann. Bei einigen Vorrichtungsarten ist jedoch eine Korrektur schwieriger.
  • Eine Art von Speicher, für den eine Korrektur schwieriger ist, ist ein One Time Programmable (OTP) Speicher. Ein OTP-Speicher ist ein Computerspeicher, der nur einmal programmiert werden kann. Zum Beispiel ist in einem sogenannten Antifuse-Speicher bei der Herstellung der unprogrammierte Zustand jedes Bits '0' und es ist möglich, jedes Bit auf eine '1' zu programmieren, so dass der Speicher die notwendigen Daten enthält. Sobald ein Bit auf eine '1' geändert ist, sind bei diesem Bit keine weiteren Änderungen möglich. Ein weiteres Beispiel eines OTP ist ein einmal beschreibbarer CD-ROM. Eine bekannte Technik zur Korrektur eines OTP-Speichers ist die Eingliederung eines Komparators für einen Vergleich einer Adresse, die ein Prozessor anfordert, der den Speicher verwendet, mit einer Adresse, an der eine Korrektur erforderlich ist. Wenn der Komparator eine Anforderung für eine korrigierte Adresse identifiziert, wird ein Multiplexer am Speicherausgang gesteuert, den korrigierten Inhalt anstelle des ursprünglichen Speicherinhalts auszugeben. Dieses System erfordert jedoch zusätzliche Komponenten für den Komparator und Multiplexer, wobei typischerweise ein Komparator für jede korrigierte Adresse erforderlich ist. Die Verwendung dieser Technik erhöht daher Komplexität und Kosten von Vorrichtungen und kann auch zusätzliche Leistung zur Implementierung erfordern. Die Anzahl von Adressen, die korrigiert werden können, ist auch durch die Komparator- und Multiplexerkonfiguration beschränkt.
  • Eine weitere Technik, die angewendet wird, ist die Anordnung eines Cachespeichers vor dem OTP-Speicher und ein anschließendes Sperren eines Korrekturcodes in Cachespeicherleitungen. Wenn der Prozessor Daten aus der OTP-Speicheradresse abruft, stellt der Cachespeicher stattdessen die Daten aus den gesperrten Cachespeicherleitungen bereit. Dieses Schema hat einen Nachteil, dass ein Cachespeicher notwendig ist, was eine signifikante Menge an zusätzlicher Logik und zusätzlichem Energieverbrauch bedeuten kann, wenn er insbesondere für Korrekturzwecke bereitgestellt werden muss.
  • Es besteht daher ein Bedarf an einem verbesserten Verfahren und System zur Korrektur eines programmierbaren Speichers.
  • Kurzfassung
  • Diese Kurzdarstellung dient zur Vorstellung einer Auswahl von Konzepten in vereinfachter Form, die in der Folge unter ”Ausführliche Beschreibung” näher beschrieben sind. Diese Kurzdarstellung soll weder Schlüsselmerkmale oder wesentlichen Merkmale des beanspruchten Gegenstandes definieren, noch ist sie als Hilfe in der Festlegung des Schutzumfangs des beanspruchten Gegenstandes gedacht.
  • Es wird ein Verfahren zum Konfigurieren eines Korrekturcodes für einen programmierbaren Speicher bereitgestellt, wobei der programmierbare Speicher programmierbare Datenbitzellen umfasst, wobei ein Datenwort eine Gruppe der programmierbaren Datenbitzellen umfasst, wobei das Verfahren umfasst: Identifizieren einer ersten Stelle im programmierbaren Speicher, wo eine Korrektur erforderlich ist; Modifizieren eines Datenworts an der ersten Stelle zu einem vorbestimmten Datenwert; Schreiben eines Korrekturcodes für die Korrektur an einer Korrekturcodestelle; und Speichern der Korrekturcodestelle.
  • Der programmierbare Speicher kann mit einem Prozessor in Kommunikation stehen.
  • Der Schritt des Speicherns der Korrekturcodestelle kann ein Speichern der Korrekturcodestelle in einer Korrekturtabelle umfassen. Der vorbestimmte Datenwert kann ein Wert einer Ausnahmeanweisung des Prozessors sein, der den Prozessor veranlassen wird, aus der Korrekturtabelle zu lesen. Als Alternative kann der programmierbare Speicher mit einer Logik in Kommunikation stehen, um den vorbestimmten Datenwert auf einen Wert einer Ausnahmeanweisung des Prozessors abzubilden, die den Prozessor veranlassen wird, die Korrekturtabelle zu lesen.
  • Der Schritt des Speicherns der Korrekturcodestelle in einer Korrekturtabelle kann ein Speichern einer Entsprechung zwischen der Korrekturcodestelle und der ersten Stelle umfassen.
  • Der Schritt des Modifizierens eines Datenworts an der ersten Stelle zu einem vorbestimmten Datenwert kann ferner ein Modifizieren anschließender Datenworte an der ersten Stelle umfassen, um eine Position der Korrekturcodestelle in der Korrekturtabelle anzugeben.
  • Die Position der Korrekturcodestelle in der Korrekturtabelle kann durch eine variable Anzahl von Datenworten dargestellt sein und das Modifizieren anschließender Datenworte kann ein Modifizieren der Anzahl von Datenworten umfassen, so dass alle der Datenbitzellen der Anzahl von Datenworten in einem programmierten Zustand sind.
  • Eine Gruppe von Datenworten kann einen Indexwert darstellen, der die Position der Korrekturcodestelle in der Korrekturtabelle angibt, wobei jedes Bit des Indexwerts durch ein anderes Datenwort in der Gruppe von Datenworten codiert wird. Einer der binären Werte (z. B. ein binärer Wert '1') eines Bits des Indexwerts kann durch Modifizieren des Datenworts codiert werden, so dass alle Datenbitzellen des Datenworts in einem programmierten Zustand sind.
  • Der Schritt des Speicherns der Korrekturcodestelle kann ein Modifizieren anschließender Datenworte an der ersten Stelle umfassen, um die Korrekturcodestelle anzugeben, wobei jedes Bit der Korrekturcodestelle durch ein anderes bestehendes Datenwort codiert ist. Einer der binären Werte (z. B. ein binärer Wert '1') eines Bits der Korrekturcodestelle kann durch Modifizieren des bestehenden Datenworts codiert werden, so dass alle der Datenbitzellen des bestehenden Datenworts in einem programmierten Zustand sind.
  • Der Schritt des Modifizierens eines Datenworts an der ersten Stelle zu einem vorbestimmten Datenwert kann ein Modifizieren aller der Datenbitzellen des Datenworts zu einem programmierten Zustand umfassen.
  • Der Schritt des Schreibens eines Korrekturcodes für die Korrektur an einer Korrekturcodestelle kann den Korrekturcode im programmierbaren Speicher schreiben.
  • Es wird auch ein Verfahren zum Betreiben eines Systems bereitgestellt, das einen Prozessor und einen programmierbaren Speicher umfasst, wobei das Verfahren umfasst: Lesen eines Datenworts an einer ersten Stelle im programmierbaren Speicher und Bestimmen, ob ein Wert des Datenworts einer Ausnahmeanweisung des Prozessors entspricht. Falls bestimmt wird, dass der Wert des Datenworts der Ausnahmeanweisung des Prozessors entspricht, umfasst das Verfahren ferner ein Suchen in einer Korrekturtabelle nach einer Korrekturcodestelle und ein Lesen von Daten an der Korrekturcodestelle.
  • Das Verfahren kann ein Durchführen einer logischen Operation an dem Datenwort umfassen, das aus der ersten Stelle im programmierbaren Speicher gelesen wurde, zur Bildung eines abgebildeten Werts; und ein Anwenden des abgebildeten Werts auf den Prozessor. Der Schritt des Bestimmens, ob der Wert des Datenworts einer Ausnahmeanweisung des Prozessors entspricht, wird an dem abgebildeten Wert durchgeführt.
  • Die Korrekturtabelle kann eine Entsprechung zwischen der Korrekturcodestelle und der ersten Stelle umfassen.
  • Das Verfahren kann ferner ein Lesen anschließender Datenworte an der ersten Stelle umfassen, um eine Position der Korrekturcodestelle in der Korrekturtabelle zu bestimmen.
  • Die Position der Korrekturcodestelle in der Korrekturtabelle kann durch eine variable Anzahl von Datenworten dargestellt sein und das Verfahren kann ferner ein Bestimmen der Anzahl von Datenworten umfassen.
  • Eine Gruppe von Datenworten kann einen Indexwert darstellen, der die Position der Korrekturcodestelle in der Korrekturtabelle angibt, wobei jedes Bit des Indexwerts durch ein anderes Datenwort in der Gruppe von Datenworten codiert ist.
  • Es wird auch ein System bereitgestellt, das einen programmierbaren Speicher umfasst, der programmierbare Datenbitzellen umfasst, wobei ein Datenwort eine Gruppe der programmierbaren Datenbitzellen umfasst, und einen Prozessor, der für den Zugriff auf den programmierbaren Speicher ausgelegt ist, und der ausgelegt ist zum: Identifizieren einer ersten Stelle im programmierbaren Speicher, wo eine Korrektur erforderlich ist; Modifizieren eines Datenworts an der ersten Stelle zu einem vorbestimmten Datenwert; Schreiben eines Korrekturcodes für die Korrektur an einer Korrekturcodestelle; und Speichern der Korrekturcodestelle.
  • Der Prozessor kann ausgelegt sein zum: Lesen eines Datenworts an einer ersten Stelle im programmierbaren Speicher und Bestimmen, ob ein Wert des Datenworts einer Ausnahmeanweisung des Prozessors entspricht. Falls bestimmt wird, dass der Wert des Datenworts der Ausnahmeanweisung des Prozessors entspricht, kann der Prozessor zum Durchführen einer Suche in einer Korrekturtabelle nach einer Korrekturcodestelle und Lesen von Daten an der Korrekturcodestelle ausgelegt sein.
  • Der Prozessor kann zum Durchführen einer logischen Operation an dem Datenwort ausgelegt sein, das aus der ersten Stelle im programmierbaren Speicher gelesen wird, zur Bildung eines abgebildeten Datenwerts, und Anwenden eines abgebildeten Werts auf den Prozessor. Der Prozessor kann zum Verwenden des abgebildeten Werts beim Bestimmen, ob der Wert des Datenworts einer Ausnahmeanweisung des Prozessors entspricht, ausgelegt sein.
  • Vorteilhafterweise ist der programmierbare Speicher ein One Time Programmable (OTP) Speicher, in dem jede Datenbitzelle nur bei einer einzigen Gelegenheit programmiert werden kann.
  • Die bevorzugten Merkmale können wie angemessen kombiniert werden, wie für einen Fachmann offensichtlich ist, und können mit jedem der Aspekte der Erfindung kombiniert werden.
  • Kurze Beschreibung der Zeichnungen
  • Ausführungsformen der Erfindung werden als Beispiel unter Bezugnahme auf die folgenden Zeichnungen beschrieben, in welchen:
  • 1 ein Beispiel einer Korrektur eines OTP-Speichers zeigt;
  • 2 ein weiteres Beispiel einer Korrektur eines OTP-Speichers zeigt;
  • 3 eine Logik zeigt, die im Beispiel von 2 verwendet wird;
  • 4 ein Schema zum Codieren einer Korrekturnummer zeigt;
  • 5 ein weiteres Schema zum Codieren einer Korrekturnummer zeigt;
  • 6 binäre Datenworte vor und nach einem Programmieren einer Korrektur für das Schema von 5 zeigt;
  • 7 ein Verfahren zum Konfigurieren eines Korrekturcodes für einen programmierbaren Speicher zeigt;
  • 8 ein Verfahren zum Betreiben eines Systems zeigt, das einen Prozessor und einen programmierbaren Speicher umfasst.
  • In allen Figuren werden gemeinsame Bezugszeichen zur Angabe gleicher Merkmale verwendet.
  • Ausführliche Beschreibung
  • In der Folge sind Ausführungsformen der vorliegenden Erfindung nur als Beispiel beschrieben. Diese Beispiele stellen die besten Möglichkeiten dar, die Erfindung in die Praxis umzusetzen, die der Anmelderin derzeit bekannt sind, obwohl sie nicht die einzigen Möglichkeiten sind, um dies zu erreichen. Die Beschreibung zeigt die Funktionen des Beispiels und die Abfolge von Schritten zum Konstruieren und Ausführen des Beispiels. Es können jedoch dieselben oder gleiche Funktionen durch andere Beispiele erreicht werden.
  • In einem OTP-Speicher kann jede Datenzelle des Speichers, die ein Informations-Bit darstellt, einen binären Wert von '0' oder '1' haben. Der Einfachheit wegen wird in der folgenden Beschreibung angenommen, dass der unprogrammierte Zustand einer Datenbitzelle '0' ist. Es sollte klar sein, dass es auch OTP-Speicherarten gibt, wo der unprogrammierte Zustand einer Datenbitzelle '0' ist und die unten beschriebenen Prinzipien auch bei dieser Art von Speicher angewendet werden können.
  • Alle unprogrammierten Datenbitzellen haben anfangs einen binären Wert von '0'. Ein Datenwort umfasst eine Gruppe (einen Block) von Datenbitzellen. Zum Beispiel wird eine Gruppe von 16 (oder 32) Datenbitzellen zum Speichern eines 16 (oder 32) Bit Datenworts verwendet. Wenn ein Block von Datenbitzellen zum Speichern eines Datenworts programmiert ist, wird jede Datenbitzelle in dem Block auf einen Wert von '1' eingestellt (falls eine binäre '1' in dem Bit des Datenworts erforderlich ist) oder beim Wert von '0' belassen (falls eine binäre '0' im Bit des Datenworts erforderlich ist). Als ein einfaches Beispiel wird zum Speichern des 8 Bit Datenworts '0 0 0 0 1 1 1 1' in einem Block von Datenbitzellen jede der ersten vier Datenbitzellen bei ihrem Anfangswert '0' belassen und die nächsten vier Datenbitzellen werden von '0' zu '1' geändert, um den Datenwert darzustellen, der gespeichert werden muss. Es ist nur möglich, den Wert einer Datenbitzelle von '0' zu '1' zu ändern. Sämtliche Bits, die nicht programmiert werden müssen, werden bei '0' belassen, aber diese Bits können anschließend zu einem späteren Zeitpunkt zu '1' programmiert werden. Der OTP-Speicher kann ein Antifuse-OTP-Speicher sein, wo jede Datenbitzelle eine Antifuse hat, die aktiviert (programmiert) werden kann, um eine elektrische Verbindung in der Datenbitzelle zu schließen. Die Antifuse in jeder Datenbitzelle kann nur einmal während der Lebensdauer des OTP-Speichers betrieben werden. Die hier beschriebenen Techniken können für einen Solid-State-OTP angemessen sein, können aber auch bei jeder Art von OTP-Speicher wie Write-Once CD-ROMs verwendet werden.
  • 1 zeigt eine Korrektur eines OTP-Speichers gemäß einer Ausführungsform. In diesem Beispiel ist ein OTP-Speicher 10 mit drei allgemeinen Bereichen 11, 12, 13 bereitgestellt. Ein herkömmlicher Speicherbereich 11 ist zum Speichern eines Programmcodes bereitgestellt. Ein Korrekturcodebereich 12 ist zum Speichern von Codekorrekturen bereitgestellt. Ein Korrekturtabellenbereich 13 ist zum Speichern einer Korrekturtabelle 14 bereitgestellt. Die Korrekturtabelle 14 speichert eine Tabelle von Adressen, wo sich der Korrekturcode befindet. Anfangs wird der Speicherbereich 11 mit der Software für die Vorrichtung programmiert und der Korrekturcodebereich 12 und Korrekturtabellenbereich 13 sind unprogrammiert. 1 zeigt auch einen Prozessor 20 mit einer Funktionalität 21 zum Abrufen von Anweisungen aus dem OTP-Speicher 10 und Decodieren der Anweisungen. Ein flüchtiger Speicher, wie ein RAM 24, ist ebenso zum Speichern von Daten während des Betriebs des Prozessors 20 bereitgestellt. Im Betrieb geht der Prozessor 20 durch Stellen des OTP-Speichers 10 und liest Datenworte, die an jeder Stelle gespeichert sind. Wenn eine Änderung an dem Code, der im Speicher gespeichert ist, notwendig ist, muss der bestehende Code im Speicher 10 durch einen alternativen Code-Block ersetzt werden, was als Korrektur bezeichnet wird. Die Korrektur kann notwendig sein, um eine neue Funktionalität hinzuzufügen, einen Programmfehler zu berichtigen oder aus einem anderen Grund. In 1 sind der Korrekturcodebereich 12 und Korrekturtabellenbereich 13 innerhalb des OTP-Speichers dargestellt, aber diese Bereiche können in jeder geeigneten Speichervorrichtung bereitgestellt sein und müssen sich nicht unbedingt in derselben Vorrichtung wie der Bereich 11 befinden.
  • Eine Stelle im OTP-Speicher, wo eine Korrektur erforderlich ist, wird als Korrekturpunkt bezeichnet. Ein Datenwort am Korrekturpunkt kann zu einem vorbestimmten Wert modifiziert werden. Der vorbestimmte Wert kann den Prozessor 20 veranlassen, eine Korrektur auszuführen. In 1 ist der vorbestimmte Wert der 'Nur-Einser-'Zustand (0xFFFF). Es ist immer möglich, eine Datenbitzelle des OTP-Speichers 10 von '0' zu '1' zu programmieren. Daher kann der 'Nur-Einser-'Zustand (0xFFFF) immer an einer Stelle im Speicher programmiert werden, unabhängig vom bestehenden Wert des Datenworts an dieser Stelle.
  • Prozessoren haben typischerweise eine Ausnahmeanweisung, die den Prozessor veranlasst, auf eine bestimmte Adresse zuzugreifen, um eine Ausführung fortzusetzen. Der Prozessor 20 ist so konfiguriert, dass er die Anweisung 0xFFFF als Ausnahme behandelt und beim Decodieren dieser Anweisung zu einem vordefinierten 'Korrekturausnahme-'Code springt. Die Behandlung von 0xFFFF als Ausnahmeanweisung, die den Sprung zur Korrekturtabelle bewirkt, kann Teil der Prozessorstandardkonfiguration sein oder dieses Verhalten kann vom Hersteller programmiert werden.
  • In dem Beispiel von 1 ist eine Korrektur an Stelle 0x1234 im Speicher 10 erforderlich. Der Korrekturcode befindet sich an Adresse 0xABCD im Bereich 12 des OTP 10. Wenn der Prozessor die Stelle 0x1234 aus dem Speicher 10 liest 25, erkennt er den Wert 0xFFFF als Ausnahmeanweisung und schiebt den Programmzähler (PC) auf den Stapel im RAM 24. Der Programmzähler (PC) ist die Adresse der aktuellen Stelle im Speicher 10. Ein Ausnahmebearbeitungscode des Prozessors 20 veranlasst den Prozessor, die Adresse des Programmzählers/der letzten Speicherstelle zu lesen, die im RAM 24 gespeichert wurde. In diesem Beispiel ist der gespeicherte PC 0x1234. Der Prozessor 20 sucht die Korrekturtabelle 14 mit dem Wert ”0x1234” als Index. In diesem Beispiel speichert die Korrekturtabelle 14 einen Eintrag oder mehrere Einträge. Jeder Eintrag umfasst eine Entsprechung zwischen einer ”Korrektur von Adresse” 15 und einer ”Korrektur zu Adresse” 16. Der Prozessor findet einen Eintrag ”0x1234” und einen entsprechenden Wert ”0xABCD”, der die Adresse im OTP darstellt, wo sich der Korrekturcode befindet. Der Prozessor springt zur Adresse 0xABCD und lässt den korrigierten Code laufen. Das Ende der Codekorrektur kann eine geeignete Anweisung enthalten, zu einer Stelle innerhalb des herkömmlichen Speicherbereichs 11 oder zu einer anderen Adresse im Korrekturcodebereich 12 zurückzukehren. Weitere Korrekturen können dem Korrekturcodebereich 12 hinzugefügt werden. Für jede neue Korrektur wird der Korrekturtabelle 14 ein Eintrag hinzugefügt.
  • Für viele Prozessoren hat die Ausnahmeanweisung, die den Prozessor veranlasst, eine Ausnahme auszuführen, nicht den Wert 0xFFFF, sondern einen anderen Wert. 2 zeigt eine Ausführungsform, die dem Prozessor 20 ermöglicht, eine Ausnahmeanweisung mit einem Wert zu verwenden, der sich vom Wert 0xFFFF unterscheidet. Eine Logik 30 wird bereitgestellt, um einen Wert zu bearbeiten, der aus dem Speicher 10 ausgelesen wird. Die Logik empfängt den Wert von einer Adressenstelle an einem ersten Eingang 31 und einen programmierten Wert 32 an einem zweiten Eingang 32 und führt eine logische Operation an den Werten aus, die an den zwei Eingängen 31, 32 empfangen werden. Die Logik 30 hat die Wirkung, den aus dem Speicher ausgelesenen Datenwert auf einen erforderlichen Wert der Ausnahmeanweisung abzubilden. Ein Datenwert wird aus der Logik 30 ausgegeben 33. In diesem Beispiel ist der Wert 0xAAAA die Ausnahmeanweisung des Prozessors 20, die den Prozessor veranlassen wird, eine Suche in der Korrekturtabelle 14 auszuführen. Die Logik 30 und der Eingang 32 sind so ausgelegt, dass, sobald ein Wert 0xFFFF aus dem Speicher gelesen wird, die Ausnahmeanweisung 0xAAAA beim Prozessor 20 ausgegeben wird 33. In diesem Beispiel ist das gewünschte Verhalten möglich, indem eine Logik 30 bereitgestellt wird, die eine exklusive ODER (XODER) Funktion am Eingang 31 mit einem Wert 0x5555 am Eingang 32 ausführt. Dies ist bei einer Bit-Ebene in 3 dargestellt. Eine Exklusiv-ODER Operation an den Datenworten, die bei Eingängen 31, 32 empfangen werden, führt zum Ausgang 0xAAAA. So wird der Datenwert 0xFFFF, der im Speicher gespeichert ist, auf die Ausnahmeanweisung 0xAAAA abgebildet. Die logische Operation und/oder der Wert, die bzw. der beim Eingang 32 angewendet werden, können geändert werden, um jede gewünschte Abbildung zu erreichen, falls zum Beispiel 0x0000 die Ausnahmeanweisung war, kann eine Umkehr aller Bits verwendet werden, oder für andere Werte können nur gewisse Bits umgekehrt werden. Es ist möglich, eine zuvor unbenutzte Anweisungscodierung des Prozessors 20 als Ausnahmeanweisung zu verwenden oder eine bestehende Ausnahmecodierung zum Erreichen dieser Operation zu verwenden.
  • In der Konfiguration von 2 werden alle Daten, die aus dem Speicher 10 gelesen werden, der logischen Operation unterzogen und wenn daher 'normale' Daten programmiert werden, müssen sie durch die inverse logische Operation modifiziert werden, so dass die tatsächlich vom Prozessor empfangenen Daten der beabsichtigte Wert und nicht der umgekehrte Wert sind. Falls zum Beispiel eine Speicherstelle '1010' beim Prozessor bereitstellen soll und die logische Operation eine Umkehr aller Bits ist, sollte der Wert '0101' gespeichert werden, so dass '1010' beim Prozessor bereitgestellt wird, wenn die Stelle gelesen wird.
  • Weitere Merkmale von 2 funktionieren auf dieselbe Weise wie zuvor für 1 beschrieben.
  • In 1 und 2 ist eine Korrekturtabelle 14 bereitgestellt. Jeder Eintrag in der Korrekturtabelle 14 umfasst eine Adresse im Speicherbereich 11 (oder 12), wo eine Korrektur ausgeführt werden soll, und eine Adresse, wo ein Korrekturcode gespeichert wird. Ein möglicher Nachteil dieser Anordnung ist, dass, wenn mehr Einträge der Korrekturtabelle 14 hinzugefügt werden, die Suchzeit länger sein kann, um die ”Korrektur von Adresse” 15 zu finden, da die Korrekturtabelle 14 der Reihe nach durchsucht wird.
  • 4 und 5 zeigen einige alternative Implementierungen. In jeder dieser Alternativen kann ein Korrekturpunkt im Speicherbereich 11 (oder 12) mehrere Datenworte mit modifizierten Werten umfassen. 4 zeigt denselben Speicher 10 und eine Korrekturtabelle 14. Es sind drei Korrekturpunkte im Speicherbereich 11 dargestellt. Wie zuvor wird jeder Korrekturpunkt durch ein erstes Datenwort identifiziert, das auf einen vorbestimmten Wert 0xFFFF eingestellt ist, der sich auf eine Ausnahmeanweisung des Prozessors bezieht. In dieser Ausführungsform veranlasst die Ausnahme den Prozessor, eine vorbestimmte Anzahl von anschließenden Speichereinträgen zu lesen, um die Stelle in der Korrekturtabelle zu finden, auf die er für die Adresse der nächsten Anweisung Bezug nehmen sollte. In dem Beispiel von 4 gibt die Anzahl folgender 0xFFFF Einträge die Reihe der Korrekturtabelle an, auf die Bezug genommen wird. In diesem Beispiel kann der Prozessor drei Einträge lesen, was drei mögliche Reihen der Korrekturtabelle ergibt. Diese Anordnung hebt die Notwendigkeit auf, die Korrekturtabelle zu durchsuchen, da der korrigierte Speicher die erforderliche Reihe angibt.
  • In dem Beispiel von 4 umfasst ein erster Korrekturpunkt im Speicher 10 bei 0x1234 einen einzigen 0xFFFF Wert. Dies stellt einen ersten Eintrag (ENTRY #1) in der Korrekturtabelle 14 dar. Ein zweiter Korrekturpunkt im Speicher 10 bei 0x01352 umfasst zwei aufeinanderfolgende 0xFFFF Werte. Dies stellt einen zweiten Eintrag (ENTRY #2) in der Korrekturtabelle 14 dar. Ein dritter Korrekturpunkt im Speicher 10 bei 0x01678 umfasst drei aufeinanderfolgende 0xFFFF Werte. Dies stellt einen dritten Eintrag (ENTRY #3) in der Korrekturtabelle 14 dar, und so weiter.
  • In einer alternativen Implementierung kann die Korrekturtabelle eine einfache Liste von Korrektur-zu-Adressen umfassen. Die zu verwendende Korrektur-zu-Adresse wird durch Kombinieren der Eintragsnummer der Korrektur (wie in den vorangehenden Absätzen beschrieben) mit der Basisadresse der Korrekturtabelle identifiziert, die in einem Konfigurationsregister des Prozessors gespeichert sein kann. Wenn das oben beschriebene Verfahren verwendet wird und ein erster Korrekturpunkt auftritt, wird der Prozessor veranlasst, zum ersten Eintrag in der Korrekturtabelle bei der Basisadresse dieser Tabelle zu springen. Wenn ein zweiter Korrekturpunkt identifiziert wird, wird der Prozessor veranlasst, zum zweiten Eintrag in der Korrekturtabelle zu springen, die als die um eins höhere Speicherstelle als die Basisadresse identifiziert ist. Auf diese Weise kann die besondere erforderliche Korrektur-zu-Adresse identifiziert werden, ohne eine Suche der Tabelle auszuführen.
  • 5 zeigt eine weitere Alternative. Wie in 4 veranlasst die Ausnahmeanweisung das Lesen einer Anzahl von Speicherstellen. Die Werte, die in diesen Speicherstellen gespeichert sind, stellen einen Code für den Korrekturtabelleneintrag bereit. Zum Beispiel kann der Wert 0xFFFF eine binäre 1 angeben und jeder andere Wert kann eine binäre 0 angeben. In dem Beispiel von 5 enthält die Stelle 0x1352 den Ausnahmecode und die anschließenden vier Einträge, die den binären Wert 0101 codieren, geben Reihe 5 der Korrekturtabelle an. Die Verwendung von fünf Speicherstellen, wie in 5 dargestellt, ermöglicht somit die Codierung von 16 Korrekturstellen. Wie oben festgestellt, kann dies die Notwendigkeit beseitigen, die Korrekturtabellen zu durchsuchen.
  • 6 zeigt die Datenworte, in binärer Form, die vorliegen, bevor die Korrektur programmiert wird, und die Datenworte, die vorliegen, nachdem die Korrektur programmiert wurde, gemeinsam mit ihrer codierten Bedeutung.
  • Eine zusätzliche Hardware- oder Software-Funktion (40, 1, 2) kann zwischen dem Speicher 10 und dem Prozessor 20 bereitgestellt sein. Diese zusätzliche Funktion 40 überprüft sämtlichen Inhalt, der aus dem Speicher 10 gelesen wurde, und bricht die Weiterleitung des Werts beim Prozessor 20 ab, falls der Ausnahmecode (oder ein vorbestimmter Wert) identifiziert wird. Die Funktion 40 kann einfach darin bestehen, den Wert nicht zum Prozessor zu leiten oder eine Unterbrechung auszulösen, um sicherzustellen, dass nicht gegen Zeitsteuerungsregeln verstoßen wird. Die Funktion 40 liest dann die anschließenden Speichereinträge und empfängt die Werte. Die Funktion 40 decodiert diese Einträge wie oben beschrieben und gibt einen geeigneten Befehl (zum Beispiel einen besonderen Ausnahme-, Gehe-zu- oder Unterbrechungsbefehl) an den Prozessor aus, um diesen zu veranlassen, zur Korrekturstelle zu springen, die durch die gelesenen Werte identifiziert ist. Alternativ kann die Funktion 40 die Korrekturstelle gemeinsam mit jedem erforderlichen Befehl auf den Programmzähler schieben, so dass der Prozessor 20 veranlasst wird, zur Korrekturstelle zu springen (oder den nächsten Wert in der Korrekturtabelle zu suchen).
  • Das in einer von 4, 5 und 6 dargestellte Schema kann mit der Offenbarung von 2 kombiniert werden, so dass ein Wert 0xFFFF, der im Speicher gespeichert ist, in jeden erforderlichen Ausnahmewert des Prozessors 20 umgewandelt werden kann.
  • In jeder der oben beschriebenen Ausführungsformen ist eine Korrekturtabelle 14 bereitgestellt und die Korrekturtabelle wird verwendet, um eine Adresse zu finden, wo sich der Korrekturcode befindet. Eine weitere Alternative ist, dass die Korrektur-zu-Adresse direkt am Korrekturpunkt codiert ist. Zum Beispiel kann das oben beschriebene und in 5 gezeigte Codierschema zum Codieren der Korrektur-zu-Adresse verwendet werden, ohne die Korrekturtabelle 14 verwenden zu müssen. Dies erfordert eine größere Anzahl von Datenworten am Korrekturpunkt. Wie zuvor wird jeder Korrekturpunkt durch ein erstes Datenwort identifiziert, das auf einen vorbestimmten Wert (z. B. 0xFFFF) eingestellt ist, der sich auf eine Ausnahmeanweisung des Prozessors bezieht, oder einen Wert, der auf eine Ausnahmeanweisung des Prozessors abbildet.
  • In jeder der oben beschriebenen Ausführungsformen kann der Korrekturcode in einem Korrekturcodebereich 12 des OTP 10 gespeichert werden, wo der bestehende Code gespeichert ist, oder in einem separaten Speicher.
  • In jeder der oben beschriebenen Ausführungsformen kann die Korrekturtabelle 14 in einem Korrekturcode-Tabellenbereich 13 des OTP 10 gespeichert werden, wo der bestehende Code gespeichert ist, oder in einem separaten Speicher.
  • 7 zeigt ein Verfahren zum Konfigurieren eines Korrekturcodes für einen programmierbaren Speicher. Schritt 101 des Verfahrens umfasst ein Identifizieren einer ersten Stelle im programmierbaren Speicher, wo eine Korrektur erforderlich ist. Schritt 102 des Verfahrens umfasst ein Modifizieren eines Datenworts an der ersten Stelle zu einem vorbestimmten Datenwert. Dies kann der Nur-Einser-Zustand, 0xFFFF, sein. Schritt 103 des Verfahrens umfasst ein Schreiben des Korrekturcodes für die Korrektur an einer Korrekturcodestelle. Die Korrekturcodestelle kann ein anderer Bereich desselben OTP-Speichers 10 oder ein anderer Speicher sein. Schritt 104 des Verfahrens umfasst ein Speichern der Korrekturcodestelle in einer Korrekturtabelle. Die in 7 dargestellten Schritte sind nicht auf die dargestellte Reihenfolge beschränkt. Zum Beispiel kann es wünschenswert sein, zuerst Schritt 103 (Schreiben des Korrekturcodes) auszuführen und dann Schritt 104 (Speichern der Korrekturcodestelle) und Schritt 102 (Modifizieren des Datenworts im Speicher) auszuführen.
  • 8 zeigt ein Verfahren zum Betreiben eines Systems, das einen Prozessor und einen programmierbaren Speicher umfasst. Schritt 111 des Verfahrens umfasst ein Lesen eines Datenworts an einer ersten Stelle im programmierbaren Speicher. Ein optionaler Schritt 112 umfasst das Durchführen einer logischen Operation an dem Datenwort, das aus der ersten Stelle im programmierbaren Speicher gelesen wurde, um einen abgebildeten Datenwert zu bilden. Schritt 113 des Verfahrens umfasst ein Bestimmen, ob ein Wert des Datenworts (oder der abgebildete Wert) einer Ausnahmeanweisung des Prozessors entspricht. Falls der Wert des Datenworts der Ausnahmeanweisung des Prozessors nicht entspricht, fährt das Verfahren mit Schritt 114 fort und arbeitet weiterhin wie normal. Falls jedoch bestimmt wird, dass der Wert des Datenworts der Ausnahmeanweisung des Prozessors entspricht, fährt das Verfahren mit Schritt 115 fort und führt eine Suche in einer Korrekturtabelle nach einer Korrekturcodestelle aus und liest dann Daten an der Korrekturcodestelle.
  • Wie oben beschrieben, kann der Speicher 10 Teil eines Host-Systems mit einem Prozessor 20 bilden. Das Verfahren zum Konfigurieren des Korrekturcodes im Speicher 10 und das Verfahren zum Betreiben eines Systems können vom Prozessor 20 des Host-Systems ausgeführt werden. Zum Beispiel können Software-Aktualisierungen während der Lebensdauer des Host-Systems erfordern, dass der Prozessor Korrekturen konfiguriert. In einer alternativen Ausführungsform kann die Korrektur vor der Verteilung des Speichers 10 zum Host-System konfiguriert werden.
  • Ein Vorteil mindestens einer Ausführungsform ist, dass keine zusätzliche Logik erforderlich ist, falls der Datenwert 0xFFFF als Prozessor-Ausnahmeanweisung verwendet werden kann. Selbst wenn der Datenwert 0xFFFF nicht als Prozessor-Ausnahmeanweisung verwendet werden kann, ist es möglich, eine Ausführungsform mit einer geringen Menge an zusätzlicher Logik zu implementieren, wie einen Inverter für jedes Bit des Anweisungsworts, das umgekehrt werden muss. Ein Anweisungswort ist typischerweise 16 oder 32 Bits, so dass die zusätzliche Logik typischerweise 16 oder 32 Inverter enthält.
  • Ein Vorteil mindestens einer Ausführungsform ist eine unerhebliche Erhöhung im Leistungsverbrauch, da der bestehende Anweisungsdecodierer des Prozessors zum Erfassen von Adressen verwendet werden kann, die zur Korrektur markiert sind. Jede zusätzliche Leistung wird nur verbraucht, wenn eine Korrektur vorgenommen wird, und bezieht sich dann nur auf die Leistung, die zum Durchsuchen der Korrekturtabelle durch den Prozessor verbraucht wird.
  • Ein Vorteil mindestens einer Ausführungsform ist, dass eine unbegrenzte Anzahl von Korrekturpunkten bis zum Grenzwert der OTP Kapazität hinzugefügt werden kann.
  • Ein Vorteil mindestens einer Ausführungsform ist, dass sie mit jedem Prozessor kompatibel ist, der eine Ausnahmeanweisung verwendet (d. h., fast mit allen Prozessoren), da es möglich ist, das programmierte OTP-Wort (typischerweise 0xFFFF) auf jede Ausnahmeanweisung durch die Verwendung von Invertern an dem OTP-Lesedatenausgang abzubilden.
  • Jede der oben beschriebenen Techniken kann bei einem reprogrammierbaren Speicher, wie Flash, Compact Disc ReWritable (CD-RW) oder einer der Digital Versatile Disc Varianten (DVD–RW, DVD+RW, DVD-RAM) angewendet werden, wo es in gewissen Anwendungen nicht leicht ist, den reprogrammierbaren Speicher zu löschen, und eine Korrektur angemessener ist. In diesen Fällen wird der reprogrammierbare Speicher wie ein OTP-Speicher verwendet, insofern eine Korrektur betroffen ist. Der Speicher kann ein ”einige Mal programmierbarer Speicher”, wie ein Flash Speicher sein, der nur eine begrenzte Anzahl von Lösch/Programmierzyklen zulässt. Bei dieser Art von Speicher könnte die Notwendigkeit des Löschens und Reprogrammierens für jede Korrektur rasch die begrenzte Anzahl von Lösch/Programmierzyklen dieser Art von Speicher aufbrauchen. Eine Korrektur gemäß einer der oben beschriebenen Techniken stellt eine alternative Möglichkeit zur Korrektur bereit, die eine große Anzahl von Korrekturpunkten ermöglicht.
  • Jeder hier angeführte Bereich oder Vorrichtungswert kann erweitert oder verändert werden, ohne die gewünschte Wirkung zu verlieren, wie für einen Fachmann offensichtlich ist.
  • Es ist klar, dass die oben beschriebenen Nutzen und Vorteile eine Ausführungsform oder mehrere Ausführungsformen betreffen können. Die Ausführungsformen sind nicht auf jene beschränkt, die eines oder alle der genannten Probleme lösen oder die einen oder alle der genannten Nutzen und Vorteile haben.
  • Jede Bezugnahme auf 'ein' Element bezieht sich auf ein oder mehrere dieser Elemente. Der Begriff 'umfassend' wird hier in der Bedeutung verwendet, dass die genannten Verfahrensblöcke oder Elemente enthalten sind, dass aber solche Blöcke oder Elemente keine ausschließliche Liste umfassen und ein Verfahren oder eine Vorrichtung zusätzliche Blöcke oder Elemente enthalten kann.
  • Die Schritte der hier beschriebenen Verfahren können in jeder geeigneten Reihenfolge, oder falls angemessen gleichzeitig ausgeführt werden. Zusätzlich können einzelne Blöcke aus einem der Verfahren gelöscht werden, ohne vom Wesen und Schutzbereich des hier beschriebenen Gegenstands abzuweichen. Aspekte eines der zuvor beschriebenen Beispiele können mit Aspekten eines der anderen beschriebenen Beispiele kombiniert werden, um weitere Beispiele zu bilden, ohne die gewünschte Wirkung zu verlieren.
  • Es ist klar, dass die oben stehende Beschreibung einer bevorzugten Ausführungsform nur als Beispiel angeführt ist und dass verschiedene Modifizierungen von Fachleuten vorgenommen werden können. Obwohl verschiedene Ausführungsformen oben mit einem gewissen Grad an Besonderheit oder unter Bezugnahme auf eine oder mehrere einzelne Ausführungsformen beschrieben wurden, könnten Fachleute zahlreiche Änderungen an den offenbarten Ausführungsformen vornehmen, ohne vom Wesen und Schutzbereich dieser Erfindung abzuweichen.

Claims (20)

  1. Verfahren zum Konfigurieren eines Korrekturcodes für einen programmierbaren Speicher, wobei der programmierbare Speicher programmierbare Datenbitzellen umfasst, wobei ein Datenwort eine Gruppe der programmierbaren Datenbitzellen umfasst, wobei das Verfahren umfasst: Identifizieren einer ersten Stelle im programmierbaren Speicher, wo eine Korrektur erforderlich ist; Modifizieren eines Datenworts an der ersten Stelle zu einem vorbestimmten Datenwert; Schreiben eines Korrekturcodes für die Korrektur an einer Korrekturcodestelle; und Speichern der Korrekturcodestelle.
  2. Verfahren nach Anspruch 1, wobei der programmierbare Speicher mit einem Prozessor in Kommunikation steht.
  3. Verfahren nach Anspruch 2, wobei der Schritt des Speicherns der Korrekturcodestelle ein Speichern der Korrekturcodestelle in einer Korrekturtabelle umfasst und der vorbestimmte Datenwert ein Wert einer Ausnahmeanweisung des Prozessors ist, der den Prozessor veranlassen wird, aus der Korrekturtabelle zu lesen.
  4. Verfahren nach Anspruch 2, wobei der Schritt des Speicherns der Korrekturcodestelle ein Speichern der Korrekturcodestelle in einer Korrekturtabelle umfasst und wobei der programmierbare Speicher mit einer Logik in Kommunikation steht, um den vorbestimmten Datenwert auf einen Wert einer Ausnahmeanweisung des Prozessors abzubilden, die den Prozessor veranlassen wird, die Korrekturtabelle zu lesen.
  5. Verfahren nach Anspruch 3 oder 4, wobei der Schritt des Speicherns der Korrekturcodestelle in einer Korrekturtabelle ferner ein Speichern einer Entsprechung zwischen der Korrekturcodestelle und der ersten Stelle umfasst.
  6. Verfahren nach Anspruch 1, wobei der Schritt des Speicherns der Korrekturcodestelle ein Speichern der Korrekturcodestelle in einer Korrekturtabelle umfasst und wobei der Schritt des Modifizierens eines Datenworts an der ersten Stelle zu einem vorbestimmten Datenwert des Weiteren ein Modifizieren anschließender Datenworte an der ersten Stelle umfasst, um eine Position der Korrekturcodestelle in der Korrekturtabelle anzugeben.
  7. Verfahren nach Anspruch 6, wobei die Position der Korrekturcodestelle in der Korrekturtabelle durch eine variable Anzahl von Datenworten dargestellt ist und das Modifizieren anschließender Datenworte ein Modifizieren der Anzahl von Datenworten umfasst, so dass alle der Datenbitzellen der Anzahl von Datenworten in einem programmierten Zustand sind.
  8. Verfahren nach Anspruch 6, wobei eine Gruppe von Datenworten einen Indexwert darstellt, der die Position der Korrekturcodestelle in der Korrekturtabelle angibt, wobei jedes Bit des Indexwerts durch ein anderes Datenwort in der Gruppe von Datenworten codiert ist und wobei einer der binären Werte eines Bits des Indexwerts durch Modifizieren des Datenworts codiert ist, so dass alle der Datenbitzellen des Datenworts in einem programmierten Zustand sind.
  9. Verfahren nach Anspruch 1, wobei der Schritt des Speicherns der Korrekturcodestelle ein Modifizieren anschließender Datenworte an der ersten Stelle umfasst, um die Korrekturcodestelle anzugeben, wobei jedes Bit der Korrekturcodestelle durch ein anderes bestehendes Datenwort codiert ist und wobei einer der binären Werte eines Bits der Korrekturcodestelle durch Modifizieren des bestehenden Datenworts codiert ist, so dass alle der Datenbitzellen des bestehenden Datenworts in einem programmierten Zustand sind.
  10. Verfahren nach Anspruch 1, wobei der Schritt des Modifizierens eines Datenworts an der ersten Stelle zu einem vorbestimmten Datenwert ein Modifizieren aller der Datenbitzellen des Datenworts zu einem programmierten Zustand umfasst.
  11. Verfahren nach Anspruch 1, wobei der Schritt des Schreibens des Korrekturcodes für die Korrektur an einer Korrekturcodestelle den Korrekturcode im programmierbaren Speicher schreibt.
  12. Verfahren zum Betreiben eines Systems, das einen Prozessor und einen programmierbaren Speicher umfasst, wobei das Verfahren umfasst: Lesen eines Datenworts an einer ersten Stelle im programmierbaren Speicher; Bestimmen, ob ein Wert des Datenworts einer Ausnahmeanweisung des Prozessors entspricht; falls bestimmt wird, dass der Wert des Datenworts der Ausnahmeanweisung des Prozessors entspricht: Suchen in einer Korrekturtabelle nach einer Korrekturcodestelle; Lesen von Daten an der Korrekturcodestelle.
  13. Verfahren nach Anspruch 12, ferner umfassend: Durchführen einer logischen Operation an dem Datenwort, das aus der ersten Stelle im programmierbaren Speicher gelesen wird, zur Bildung eines abgebildeten Werts; Anwenden des abgebildeten Werts auf den Prozessor und wobei der Schritt des Bestimmens, ob der Wert des Datenworts einer Ausnahmeanweisung des Prozessors entspricht, an dem abgebildeten Wert durchgeführt wird.
  14. Verfahren nach Anspruch 12, wobei die Korrekturtabelle eine Entsprechung zwischen der Korrekturcodestelle und der ersten Stelle umfasst.
  15. Verfahren nach Anspruch 12, ferner umfassend ein Lesen anschließender Datenworte an der ersten Stelle, um eine Position der Korrekturcodestelle in der Korrekturtabelle zu bestimmen.
  16. Verfahren nach Anspruch 15, wobei die Position der Korrekturcodestelle in der Korrekturtabelle durch eine variable Anzahl von Datenworten dargestellt ist und das Verfahren ferner ein Bestimmen der Anzahl von Datenworten umfasst.
  17. Verfahren nach Anspruch 15, wobei eine Gruppe von Datenworten einen Indexwert darstellt, der die Position der Korrekturcodestelle in der Korrekturtabelle angibt, wobei jedes Bit des Indexwerts durch ein anderes Datenwort in der Gruppe von Datenworten codiert wird.
  18. System, umfassend: einen programmierbaren Speicher, der programmierbare Datenbitzellen umfasst, wobei ein Datenwort eine Gruppe der programmierbaren Datenbitzellen umfasst; einen Prozessor, der für einen Zugriff auf den programmierbaren Speicher ausgelegt ist und der ausgelegt ist zum: Identifizieren einer ersten Stelle im programmierbaren Speicher, wo eine Korrektur erforderlich ist; Modifizieren eines Datenworts an der ersten Stelle zu einem vorbestimmten Datenwert; Schreiben eines Korrekturcodes für die Korrektur an einer Korrekturcodestelle; und Speichern der Korrekturcodestelle.
  19. System nach Anspruch 18, wobei der Prozessor ausgelegt ist zum: Lesen eines Datenworts an einer ersten Stelle im programmierbaren Speicher; Bestimmen, ob ein Wert des Datenworts einer Ausnahmeanweisung des Prozessors entspricht; falls bestimmt wird, dass der Wert des Datenworts der Ausnahmeanweisung des Prozessors entspricht: Durchführen einer Suche in einer Korrekturtabelle nach einer Korrekturcodestelle; Lesen von Daten an der Korrekturcodestelle.
  20. System nach Anspruch 19, wobei der Prozessor ausgelegt ist zum: Durchführen einer logischen Operation an dem Datenwort, das aus der ersten Stelle im programmierbaren Speicher gelesen wird, zur Bildung eines abgebildeten Datenwerts; Anwenden des abgebildeten Werts auf den Prozessor; und Verwenden des abgebildeten Werts beim Bestimmen, ob der Wert des Datenworts einer Ausnahmeanweisung des Prozessors entspricht.
DE102014006998.2A 2013-08-07 2014-05-13 Korrektur eines programmierbaren Speichers Withdrawn DE102014006998A1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US13/960,940 US10453534B2 (en) 2013-08-07 2013-08-07 Patching of programmable memory
US13/960,940 2013-08-07

Publications (1)

Publication Number Publication Date
DE102014006998A1 true DE102014006998A1 (de) 2015-02-12

Family

ID=50390731

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102014006998.2A Withdrawn DE102014006998A1 (de) 2013-08-07 2014-05-13 Korrektur eines programmierbaren Speichers

Country Status (3)

Country Link
US (1) US10453534B2 (de)
DE (1) DE102014006998A1 (de)
GB (1) GB2519386A (de)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE102017102147A1 (de) 2016-10-11 2018-04-12 Elmos Semiconductor Aktiengesellschaft Nachträglich patch-barer Speicher (OTP) mit Bitspeicherzellen und Verfahren zum Patchen desselben

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8681569B2 (en) * 2012-02-22 2014-03-25 Silicon Motion, Inc. Method for reading data stored in a flash memory according to a threshold voltage distribution and memory controller and system thereof
CN108039202B (zh) * 2017-11-29 2021-12-10 上海联影医疗科技股份有限公司 一种校正表的升级方法、医学图像重建方法及系统

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4542453A (en) * 1982-02-19 1985-09-17 Texas Instruments Incorporated Program patching in microcomputer
US6049672A (en) * 1996-03-08 2000-04-11 Texas Instruments Incorporated Microprocessor with circuits, systems, and methods for operating with patch micro-operation codes and patch microinstruction codes stored in multi-purpose memory structure
US6298481B1 (en) * 1998-10-30 2001-10-02 Segasoft, Inc. System for modifying the functionality of compiled computer code at run-time
GB9825102D0 (en) * 1998-11-16 1999-01-13 Insignia Solutions Plc Computer system
DE10107102B4 (de) * 2001-02-14 2004-02-26 Systemonic Ag Verfahren und Anordnung zur Instruktionswortgenerierung bei der Ansteuerung von Funktionseinheiten in einem Prozessor
US6865667B2 (en) * 2001-03-05 2005-03-08 Freescale Semiconductors, Inc. Data processing system having redirecting circuitry and method therefor
US6920515B2 (en) * 2001-03-29 2005-07-19 Intel Corporation Early exception detection
US7039776B2 (en) * 2003-04-17 2006-05-02 Broadcom Corporation Patch memory system for a ROM-based processor
GB0424424D0 (en) * 2004-11-04 2004-12-08 St Microelectronics Belgium Nv A code patching device
US9348730B2 (en) 2007-01-31 2016-05-24 Standard Microsystems Corporation Firmware ROM patch method
KR100885914B1 (ko) * 2007-02-13 2009-02-26 삼성전자주식회사 독출동작 방식을 개선한 불휘발성 메모리 장치 및 그구동방법
US20090031103A1 (en) 2007-07-24 2009-01-29 Via Technologies Mechanism for implementing a microcode patch during fabrication
CN101794272B (zh) 2010-03-26 2012-07-25 成都市华为赛门铁克科技有限公司 为共享代码段打补丁的方法及装置
US8780620B2 (en) * 2010-09-20 2014-07-15 The Texas A&M University Information representation and coding for nonvolatile memories
EP2778905A1 (de) 2013-03-15 2014-09-17 Dialog Semiconductor B.V. Integrierte Schaltung mit Patchfunktion

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE102017102147A1 (de) 2016-10-11 2018-04-12 Elmos Semiconductor Aktiengesellschaft Nachträglich patch-barer Speicher (OTP) mit Bitspeicherzellen und Verfahren zum Patchen desselben
DE102017102147B4 (de) 2016-10-11 2018-09-20 Elmos Semiconductor Aktiengesellschaft Nachträglich patch-barer Speicher (OTP) mit Bitspeicherzellen und Verfahren zum Patchen desselben

Also Published As

Publication number Publication date
US10453534B2 (en) 2019-10-22
GB201402262D0 (en) 2014-03-26
GB2519386A (en) 2015-04-22
US20150046630A1 (en) 2015-02-12

Similar Documents

Publication Publication Date Title
DE69225622T2 (de) Adressenübersetzungspufferspeicher mit per Eingabe veränderlicher Seitengrösse
DE102010030745B4 (de) Nicht-flüchtiger Speicher zum Speichern von Speicher-Umabbildungs-Informationen
DE60211653T2 (de) Teildatenprogrammier- und leseoperationen in einem nichtflüchtigen speicher
DE112020006139B4 (de) Vor-lese-und lese-schwellenspannungsoptimierung
DE102009051862A1 (de) Speichervorrichtung und Speicherverfahren
DE68923433T2 (de) Einrichtung und Methode um Festwertspeicher in einem Rechnerspeicherbereich anzuordnen.
DE2328869A1 (de) Verfahren zur pruefung eines digitalen speichersystems sowie zur durchfuehrung dieses verfahrens dienendes selbstpruefendes digitales speichersystem
DE102015101414A1 (de) Verbesserter Rücksprungstapelpuffer
DE102009046444A1 (de) An die Software angepasste Abnutzungsausgleichung
DE112007003015T5 (de) Verfahren und Vorrichtung zur Cache-gestützten Fehlerdetektion und -korrektur in einem Speicher
DE102018123926A1 (de) Dynamische mehrstufige Decodierung
DE102009033961A1 (de) Emulation eines einmal programmierbaren Speichers
DE102018123961A1 (de) Gruppen-leseaktualisierung
DE102010037064A1 (de) Nichtflüchtige Speichervorrichtung und -system sowie Verfahren des Programmierens einer nichtflüchtigen Speichervorrichtung
DE102015209502A1 (de) Markierungsprogrammierung in nichtflüchtigen Speichern
DE10216602A1 (de) Optimierung von compilergeneriertem Programmcode
DE102014006998A1 (de) Korrektur eines programmierbaren Speichers
DE69119101T2 (de) Nichtflüchtiges Halbleiterspeichersystem
DE102016201340A1 (de) Konfigurierung serieller Geräte
DE102015102774A1 (de) Verfahren und vorrichtung zur verarbeitung eines löschzählers
DE102013108024A1 (de) Verfahren zum Implementieren eines binären Flags in einem Flashspeicher
DE112021004729T5 (de) Dreifarben-bitmap-array zur garbage-collection
DE10252059B3 (de) Verfahren zum Betreiben einer Speicheranordnung
DE102015114721A1 (de) Verfahren, Gerät und System zur Datenverarbeitung
DE10227256C1 (de) Verfahren zum Adressieren von blockweise löschbaren Speichern

Legal Events

Date Code Title Description
R081 Change of applicant/patentee

Owner name: QUALCOMM TECHNOLOGIES INTERNATIONAL, LTD., GB

Free format text: FORMER OWNER: CAMBRIDGE SILICON RADIO LIMITED, CAMBRIDGE, GB

R082 Change of representative

Representative=s name: MAUCHER JENKINS, DE

Representative=s name: OLSWANG GERMANY LLP, DE

Representative=s name: MAUCHER JENKINS PATENTANWAELTE & RECHTSANWAELT, DE

R082 Change of representative

Representative=s name: MAUCHER JENKINS, DE

Representative=s name: MAUCHER JENKINS PATENTANWAELTE & RECHTSANWAELT, DE

R119 Application deemed withdrawn, or ip right lapsed, due to non-payment of renewal fee