DE10103222B4 - Halbleiter-Speichereinrichtung und Programm-Unterscheidungssystem - Google Patents

Halbleiter-Speichereinrichtung und Programm-Unterscheidungssystem Download PDF

Info

Publication number
DE10103222B4
DE10103222B4 DE10103222A DE10103222A DE10103222B4 DE 10103222 B4 DE10103222 B4 DE 10103222B4 DE 10103222 A DE10103222 A DE 10103222A DE 10103222 A DE10103222 A DE 10103222A DE 10103222 B4 DE10103222 B4 DE 10103222B4
Authority
DE
Germany
Prior art keywords
address
program
data
control signal
program data
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Lifetime
Application number
DE10103222A
Other languages
English (en)
Other versions
DE10103222A1 (de
Inventor
Masaru Shimomura
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.)
Nintendo Co Ltd
Original Assignee
Nintendo Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Nintendo Co Ltd filed Critical Nintendo Co Ltd
Publication of DE10103222A1 publication Critical patent/DE10103222A1/de
Application granted granted Critical
Publication of DE10103222B4 publication Critical patent/DE10103222B4/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

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/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1408Protection against unauthorised use of memory or access to memory by using cryptography

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Storage Device Security (AREA)

Abstract

Halbleiter-Speichereinrichtung (18), in der durch eine Zentraleinheit (12) auszuführende Programmdaten fest gespeichert sind, und die die Programmdaten von Adressen, die durch Adreßdaten bestimmt sind, ausgibt, umfassend:
ein Programmdaten-Speichermittel (22) für das Festspeichern der Programmdaten;
ein Code-Erzeugungsmittel (26) für die Erzeugung eines Adreßrechencodes; und
ein Adressen-Verarbeitungsmittel (24), das erste Adreßdaten erhält, die von der Zentraleinheit (12) ausgegeben werden; wobei
das Adressen-Verarbeitungsmittel (24) neue zweite Daten ausgibt, die durch Ausführung eines Rechenschritts auf mindestens einem Teil der ersten Adreßdaten erhalten werden, auf der Grundlage des Adreßrechencodes, zu einem Zeitpunkt erfolgt, bei dem ein Steuersignal vorhanden ist, und
die zweiten Adreßdaten dem Programmdaten-Speichermittel (22) zuführt und zu einem Zeitpunkt, in dem kein Steuersignal vorhanden ist, die ersten Adreßdaten dem Programmdaten-Speichermittel (22) zuführt, und wobei
das Programmdaten-Speichermittel (22) bestimmte Programmdaten umfaßt, die eine Ausgabe des Steuersignals während der Programmausführung durch die Zentraleinheit (12) befehlen können.

Description

  • Die vorliegende Erfindung betrifft eine Halbleiter-Speichereinrichtung und ein Programm-Unterscheidungssystem hierfür. Insbesondere betrifft die Erfindung eine Halbleiter-Speichereinrichtung, wie einen Nur-Lese-Speicher, die ein Programm und dergleichen in eine Kassette für ein Spiele-Gerät speichert, und ein Unterscheidungssystem für das Programm.
  • Beispielsweise umfaßt eine Kassette für ein Spiele-Gerät eine Halbleiter-Speichereinrichtung, wie einen Nur-Lese-Speicher, in den ein Spielprogramm geschrieben ist, wobei die Kassette während der Benutzung in ein Spiele-Gerätegehäuse eingefügt ist. Besonders im Fall einer solchen Kassette für Spiele-Geräte ist der Markt mit Imitationen verseucht, in der Spielprogramme gesetzwidrig kopiert sind.
  • Wie in der japanischen Auslegeschrift Nr. 2-31256 [G06F 12/14] offenbart ist, schlägt der Anmelder ein System vor, das imstande ist, ein unerlaubtes Kopieren eines Spielprogramms oder eines anderen Programms zu verhindern, bzw. das imstande ist, ein Verändern der Daten durch Unterscheidung der Echtheit und durch Zugangsverhinderung zu dem Programmspeicher, im Falle, daß eine Kassette keine Originalkassette ist, zu verhindern.
  • In dem vorgenannten Stand der Technik, in dem die Adressendecodierungsmethode verwendet wird, wird die Echtheit durch Vergleich mit den von dem im Speicher tatsächlich gelesenen Programmdaten festgestellt. Daher ist es möglich, Raubkopien mit einer hohen Zuverlässigkeit und über einen gewissen Grad hinaus zu entfernen.
  • Jedoch ist es bei dem oben beschriebenen Stand der Technik erforderlich, eine Anzahl von Adressen zu decodieren, wobei ein zusätzlich zu lösendes Problem vorhanden war, und zwar, daß nicht nur die Chipgröße aufgrund der Anzahl der Verknüpfungsglieder zu lang wurde, sondern auch, wenn die Adressen, die zu decodieren waren, zu analysieren waren, ein Schutzeffekt gegen die gesetzwidrige Verwendung des Programms verloren ging.
  • Aus US 6,101,587 ist eine Datenschutzschaltung für einen Halbleiter-Speicher bekannt, mit der erreicht wird, daß nur der Nutzer, der Daten in den Speicher geschrieben hat, diese auch wieder auslesen kann. Dazu gibt der Nutzer einen Datenwert ein, der mit einem gespeicherten Datenwert verglichen wird; entsprechend dem Ergebnis des Vergleichs wird eine Speicheradresse ausgewählt.
  • Es ist daher die Aufgabe der Erfindung, eine Halbleiter-Speichereinrichtung anzugeben, die einen verbesserten Schutz gegen die Verwendung nicht autorisierter Speichereinrichtungen bietet, sowie ein entsprechendes Programm-Unterscheidungssystem.
  • Diese Aufgabe wird durch die in den Ansprüchen 1 und 8 definierte Erfindung gelöst. Ausgestaltungen der Erfindung sind in den Unteransprüchen definiert.
  • Weitere Einzelheiten, Aspekte und Vorteile der vorliegenden Erfindung werden anhand der detaillierten Beschreibung und der begleitenden Zeichnungen der vorliegenden Erfindung näher erläutert.
  • 1 ist ein Blockdiagramm, das eine Ausführungsform der vorliegenden Erfindung zeigt;
  • 2 ist ein Blockdiagramm, das ein Beispiel einer Adressen-Verarbeitungseinheit der Ausführung gemäß der 1 zeigt;
  • 3 zeigt eine Darstellung eines Speicherplans einer Zentraleinheit in 1;
  • 4 ist ein Flußdiagramm, das einen Ablauf der Ausführungsform gemäß der 1 zeigt;
  • 5 ist ein Flußdiagramm, das ein Prüfprogramm gemäß des Flußdiagramms in 4 zeigt;
  • 6 ist ein Blockdiagramm, das ein abgeändertes Beispiel der Adressen-Verarbeitungseinheit zeigt;
  • 7 ist ein Blockdiagramm, das ein anderes abgeändertes Ausführungsbeispiel der Adressenverarbeitungseinheit zeigt; und
  • 8 ist ein Blockdiagramm, das eine andere Ausführungsform gemäß der vorliegenden Erfindung zeigt.
  • Eine Informations-Verarbeitungsvorrichtung 10 einer Ausführungsform gemäß der vorliegenden Erfindung, die in 1 gezeigt ist, umfaßt eine Zentraleinheit 12 (CPU), die eine zentrale Verarbeitungseinheit ist. Eine Anzeigevorrichtung 14, die eine Ausgabeeinrichtung ist, und eine Eingabe-Bedieneinrichtung 16, die eine Eingabeeinrichtung ist, sind mit der Zentraleinheit 12 verbunden. Die Informations-Verarbeitungsvorrichtung 10 weist ein Programm-Unterscheidungssystem auf. Wenn die Informations-Verarbeitungsvorrichtung 10 ein Spieleprozessor ist, dann ist die Eingabe-Bedieneinheit 16 eine Steuereinheit für Spiele, wobei die Steuereinheit einen Steuerknüppel (joystick), ein Steuerkreuz (cross key) und einige Arten von Bedienknöpfen aufweist, wobei der Spieleprozessor, d. h. die Zentraleinheit 12, ein Spielprogramm verarbeitet, das in einem Programm-Nur-Lese-Speicher 18 als Folge einer Bedienung gespeichert ist, wobei die Bedienung durch eine Eingabe-Bedieneinrichtung 16 ausgeführt wird, um ein Spielebild in einer Anzeigevorrichtung 14 anzuzeigen, wobei die Anzeigevorrichtung 14 beispielsweise ein Fernsehbildschirm oder ein Flüssigkristallbildschirm sein kann. Weiterhin ist ein Arbeitsspeicher 20, der an der Zentraleinheit 12 angeschlossen ist, beispielsweise als ein Schreib-Lese-Speicher und dergleichen ausgeführt, wobei der Arbeitsspeicher 20 für den Betrieb der oben beschriebenen Programmverarbeitung benutzt wird und wobei der Arbeitsspeicher 20 für das temporäre Speichern eines Prüfprogramms und von Prüfdaten für eine später beschriebene Programmechtheitsunterscheidung benutzt wird.
  • Der Programm-Nur-Lese-Speicher 18, der wie eine Halbleiter-Speichereinrichtung oder eine Programmspeichereinheit funktioniert, ist ein Nur-Lese-Halbleiterspeicher, wie ein programmierbarer Nur-Lese-Speicher (PROM), ein Flash ROM, ein löschbarer Festwertspeicher (EPROM), ein elektrisch löschbarer Festwertspeicher (EEROM) und dergleichen, der die Programmdaten fest speichert. Der Programm-Nur-Lese-Speicher 18 weist zusätzlich zu einer Programmdaten-Speichereinheit 22 eine Adressen-Verarbeitungseinheit 24 und eine Code-Speichereinheit 26 auf, wobei die Programmdaten-Speichereinheit 22, die ein Speicherkern ist, ein konventioneller Programm-Nur-Lese-Speicher ist. Weiterhin sind, wie in dem Ausführungsbeispiel gezeigt, die Programmdaten-Speichereinheit 22, die Adressen-Verarbeitungseinheit 24 und die Code-Speichereinheit 26 in dem gleichen Halbleiterchip angeordnet. Weiterhin werden die von der Zentraleinheit 12 durch einen Adreßbus ausgegebenen Daten von der Adressen-Verarbeitungseinheit 24 verarbeitet. Die Adressen-Verarbeitungseinheit 24 legt die verarbeiteten Adreßdaten an die Programmdaten-Speichereinheit 22 an. Die Programmdaten-Speichereinheit 22 liest die Programmdaten aus gemäß der Adreßdaten, die durch die Adressen-Verarbeitungseinheit 24 verarbeitet worden sind. Die Programmdaten werden von der Zentraleinheit 12 durch einen Datenbus ausgegeben.
  • Weiterhin verarbeitet, wie später beschrieben, die Adressen-Verarbeitungseinheit 24 die Adreßdaten auf der Basis eines an einem Steuerbus der Zentraleinheit 12 angelegten Steuersignals und eines Codes (Daten), der von einer Code-Speichereinheit 26 angelegt ist.
  • Ein Ausführungsbeispiel der Adressen-Verarbeitungseinheit 24 ist in 2 gezeigt. Wie in 2 gezeigt ist, umfaßt die Adressen-Verarbeitungseinheit 24 ein Wählelement 30 und ein Rechenelement 28, das wie ein Rechenmittel arbeitet. Das Rechenelement 28 ist in dem Chip des Programm-Nur-Lese-Speichers 18 angeordnet und kann ein Multiplizierer, ein Dividierer, ein Subtrahierer, ein Addierer sein oder ein Verschiebe-Register oder ein anderes einfaches logisches Re chenelement (beispielsweise UND, Nicht-UND, ODER, Nicht-ODER, EXKLUSIV-ODER und dergleichen) sein.
  • Die oberen 8 Bits A8–A15, beispielsweise der ersten Adreßdaten A0–A15 von 16 Bits, die von der Zentraleinheit 12 ausgegeben werden, sind synthetisiert bzw. sind mit den Ausgabedaten A0'–A7' des Wählelementes 30 gekoppelt. Die unteren 8 Bits A0–A7 werden an einem Eingang des Rechenelements 28 und an einem Eingang (X) des Wählelementes 30 angelegt. An einem anderen Eingang des Rechenelements 28 wird ein Adreßrechencode a0–a7 von 8 Bits angelegt, wobei der Adreßrechencode a0–a7 in der Code-Speichereinheit 26, die wie ein Code-Erzeugungsmittel arbeitet, gesetzt wird. Das Rechenelement 28 führt jede der oben beschriebenen Operationen an zwei Eingängen aus. Ein Ausgang des Rechenelements 28 wird an einem anderen Eingang (Y) des Wählelementes 30 angelegt. Im Fall, daß das Rechenelement 28 beispielsweise ein UND ist, gibt das Rechenelement 28 ein logisches Summenergebnis A0'–A7' des Adreßrechencodes a0–a7 und der niedrigeren 8 Bits A0–A7 aus und legt dasselbe an dem oben beschriebenen einen Eingang des Wählelementes 30 an.
  • Das vorher beschriebene Steuersignal, beispielsweise ein Schreibsignal, wird an dem Wählelement 30 der Zentraleinheit 12 angelegt. Daher ersetzt das Wählelement 30 die niedrigeren 8 Bits A0–A7 der Adreßdaten mit dem Rechenergebnis A0'–A7' als Folge des Steuersignals, d. h. des Schreibsignals, und gibt die ausgetauschten Daten aus. Andererseits sind die oberen 8 Bits A8–A15 der Adreßdaten A0–A15 mit dem Ausgang des Wählelementes 30 gekoppelt. Als Ergebnis hiervon werden die zweiten Adreßdaten von insgesamt 16 Bits von A0'–A7' + A8–A15 von dem Wählelement 30, d. h. der Adressen-Verarbeitungseinheit 24 ausgegeben.
  • Weil die zweiten somit modifizierten bzw. durch die Adressen-Verarbeitungseinheit 24 verarbeiteten Adreßdaten in der Programmdaten-Speichereinheit 22 (1) in einem in 5 gezeigten und später beschriebenen Schritt S12 eingegeben werden, werden die Programmdaten gelesen von einer Adresse der Programmdaten-Speichereinheit 22, die nicht durch die Adreßdaten A0–A15, sondern durch die zweiten Adreßdaten A0'–A7' + A8–A15 bestimmt ist. Im Fall eines falschen Programm-Nur-Lese-Speichers, der nicht die Adressen-Verarbeitungseinheit 24 aufweist, werden die Programmdaten von einer durch die ersten Adreßdaten A0–A15 gezeigten Adresse gelesen. Daher werden die Programmdaten, die von der Programmdaten-Speichereinheit 22 gelesen worden sind, voneinander unterschiedlich. Im vorher erwähnten Fall stimmen die ausgelesenen Programmdaten mit den vorher gesetzten Prüfdaten überein. Im später beschriebenen Fall stimmen die Programmdaten aber nicht mit den Prüfdaten überein.
  • Weiterhin werden gemäß des Ausführungsbeispiels in 2 nur die niedrigeren 8 Bits der ersten Adreßdaten mit dem Rechencode durch das Rechenelement 28 berechnet. Die oberen 8 Bits werden so wie sie sind ausgegeben. Wie auch immer können alle 16 Bits der ersten Adresse in dem Rechenelement 28 berechnet werden. In einem solchen Fall, wie in der 2 mit Klammern dargestellt ist, werden alle 16 Bits der Adreßdaten A0–A15 an dem einen Eingang des Rechenelements 28 angelegt. An dem anderen Eingang des Rechenelementes 28 wird ein Adreßrechencode a0–a15 von 16 Bits von der Code-Speichereinheit 26 angelegt. Daher werden zweite Adreßdaten A0'–A15', von denen alle Bits modifiziert bzw. verarbeitet sind, von dem Rechenelement 28 ausgegeben. Die zweiten Adreßdaten A0'–A15' werden an dem einen Eingang (X) des Wählelementes 30 gelegt. Wie bei dem anderen Eingang (Y) des Wählelementes 30 auch, werden die Adreßdaten A0–A15, die von der Zentraleinheit 12 ausgegeben worden sind, angelegt. Deshalb werden von dem Wählelement 30 die zweiten Adreßdaten A0'–A15' ausgegeben, wenn das Steuersignal vorhanden ist. Wenn das Steuersignal nicht vorhanden ist, werden die zweiten Adreßdaten A0–A15 ausgegeben. Deshalb wird in einem Schritt S13 in 5 die Richtigkeit der gelesenen Programmdaten festgestellt, wobei die Programmdaten von einer Adresse gelesen werden, die durch die Adreßdaten A0'–A15' bestimmt wird.
  • Die Zentraleinheit 12 in 1 weist einen Speicherplan auf, der in 3 gezeigt ist. Ein Speicherraum, beispielsweise „0000h–DFFFh", ist ein Programmbereich, der dem Programm-Nur-Lese-Speicher 18 zugewiesen ist. Ein Speicherbereich von „E000h–FFFFh" ist ein Arbeitsbereich, der dem Arbeitsspeicher 20 zugewiesen ist.
  • Die Programmdaten-Speichereinheit 22 des Programm-Nur-Lese-Speichers ist ein Teil des oben beschriebenen Programmbereichs. Der Programmbereich ist weiterhin mit einem Programmbelegungsbereich oder einem Home-Bereich, einem Prüfprogrammbereich und einem Prüf-Startbefehlsbereich versehen.
  • Ein Prüfprogramm, das in einem Prüfprogrammbereich gespeichert ist, kann anhand des in der 4 und 5 gezeigten und später beschriebenen Flußdiagramms ausgeführt werden.
  • Weiterhin wird in dem Prüfprogramm eine oder mehrere der Prüfdaten gesetzt. Die Prüfdaten sind Daten zur Unterscheidung der Programmechtheit, wobei die Unterscheidung durch Vergleich mit den Daten, die durch das Ergebnis der Prüfprogrammausführung angezeigt werden, erfolgt. Beispielsweise wird in dieser gezeigten Ausführungsform, die Echtheit des Programms nur einmal geprüft, weshalb nur ein Satz Prüfdaten in dem Prüfprogramm gesetzt sind, wie in 3 gezeigt ist. Durch Setzen des Prüfstartbefehls, damit das Prüfprogramm gestartet wird, wobei das Prüfprogramm ein einziges Prüfdatenpaket in einer Mehrzahl von Plätzen des Hauptprogramms (beispielsweise ein Spielprogramm) verwendet, oder durch Setzen einer Mehrzahl von Prüfstartbefehlen, um jeweils eine Mehrzahl von Prüfprogrammen zu starten, wobei eine Mehrzahl von Prüfdaten in einer Mehrzahl von Plätzen benutzt wird, ist es möglich, die Schwierigkeit der Untersuchung des Programms zu erhöhen, durch die häufige Echtheitsprüfung des Programms.
  • Weiterhin ist es im Fall, daß das Prüfprogramm relativ klein (beispielsweise einige bis einige 10 Bytes) ist, es vorzuziehen zur Erhöhung der Schwierigkeit der Untersuchung des Prüfprogramms, daß das Prüfprogramm anstelle des Prüfstartbefehls in einer Mehrzahl von Plätzen des Hauptprogramms gesetzt wird.
  • Mit Bezug auf die 4 wird ein Schritt S1 zuerst durch die Zentraleinheit 12 ausgeführt, wenn eine (nicht gezeigte) Stromversorgung der Informations-Verarbeitungsvorrichtung 10 eingeschaltet wird. In dem Schritt S1 liest die Zentraleinheit 12 das in der Programmdaten-Speichereinheit 22 des Programm-Nur-Lese-Speichers 18 (1) gespeicherte Programm. In dem zweiten Schritt S2 wird festgestellt, ob die gelesenen Programmdaten bestimmte Programmdaten sind, wobei die bestimmten Programmdaten die Ausführung der Echtheitsprüfung festlegen.
  • Wenn „NICHT" in dem Schritt S2 festgestellt wird, d. h. wenn die Programmdaten, die die Echtheitsprüfung auslösen, keine bestimmten Programmdaten sind, dann wird in einem Schritt S3 eine Verarbeitung gemäß der zu dieser Zeit vorliegenden Programmdaten ausgeführt. In einem Schritt S4 nach dem Schritt S3 legt die Zentraleinheit 12 fest, ob das Programm beendet wird. Wenn „JA" festgestellt wird, dann wird die Verarbeitung beendet. Wenn jedoch „NEIN" festgestellt wird, dann springt die Verarbeitung zu dem vorherigen Schritt S1 zurück. Also wird durch Wiederholen der Schritte S1–S4 das in der Programmdaten-Speichereinheit 22 gespeicherte Programm der Reihe nach ausgeführt. In diesem Zustand wird das Steuersignal (beispielsweise das Schreibsignal) nicht an dem Wählelement 30 der Adressen-Verarbeitungseinheit 22 angelegt, wodurch ein Zustand, daß der Eingang X ausgesucht ist, in dem Wählelement 30 festgehalten wird. Demgemäß werden die von der Zentraleinheit 12 ausgegebenen ersten Adreßdaten der Programmspeichereinheit 22 ausgegeben.
  • Wenn der Befehl für das Ausführen des Prüfprogramms in der Zentraleinheit 12 während der Durchführung, wobei die jeweiligen Befehle der Durchführung in dem Programmbereich der Reihe nach durch Wiederholen der Schritte S1–S4 ausgeführt werden, wobei die im Schritt 2 bestimmt wird, eingegeben wird, dann geht die Verarbeitung zu dem Schritt S5 weiter. Im Fall, daß der Befehl, d. h. die bestimmten Programmdaten, in der Adresse „030Eh" gesetzt worden sind, wie in der 3 gezeigt ist, geht die Zentraleinheit 12 zu einem Zeitpunkt zu dem Schritt S5 weiter, bei dem die Adresse zu der Adresse „030Eh" heraufgesetzt worden ist.
  • In dem Schritt S5 liest die Zentraleinheit 12 das Prüfprogramm und die Prüfdaten ein, wobei beide in dem Programmbereich, der in 2 gezeigt ist, angeordnet sind. Die Zentraleinheit 12 schreibt bzw. kopiert beide in den Arbeitsspeicher 20. Hierfür wird ein Schritt S6 gemäß des Prüfprogramms und der Prüfdaten, die in dem Arbeitsspeicher 20 kopiert sind, durchgeführt. Wie auch immer wird das in dem Arbeitsspeicher 20 kopierte Prüfprogramm nach der Fertigstellung der Prüfung vernichtet.
  • Ein Unterprogramm des Schrittes S6 ist in der 5 im Detail gezeigt. In einem Schritt S11 der 5 erzeugt die Zentraleinheit 12 zuerst das Steuersignal mittels des Steuerbusses, um die in dem Programm-Nur-Lese-Speicher 18, der in 1 gezeigt ist, angeordnete Adressen-Verarbeitungseinheit 24 freizugeben. Insbesondere gibt die Zentraleinheit 12 das Schreibsignal (Steuersignal) dem Wählelement 30 des Programm-Nur-Lese-Speichers 18 durch den Steuerbus weiter. Das Schreibsignal wird normalerweise nicht einem Programm-Nur-Lese-Speicher (Nur-Lese-Speicher) während der Programmdurchführung des Nur-Lese-Speicher zugeführt, wobei durch Ausgeben des Schreibsignals zu dem Programm-Nur-Lese-Speicher 18 das Wählelement 30 der Adressen-Verarbeitungseinheit 24 veranlaßt wird, den Eingang Y auszuwählen. Der Schritt S11 stellt ein Steuersignal-Anlegungsmittel dar.
  • Weiterhin kann anstelle des oben beschriebenen, als Steuersignal verwendeten Schreibsignals, ein Steuersignal dem Wählelement 30 zugeführt werden, wenn die Zentraleinheit 12 eine bestimmte Adresse der Programmdaten-Speichereinheit 22 des Programm-Nur-Lese-Speicher 18 ausführt. In einem solchen Fall, obwohl nicht gezeigt, kann ein Adressenvergleichselement vorgesehen sein, wobei das Adressenvergleichselement der Reihe nach die über den Adreßbus vor der Zentraleinheit 12 ausgegebenen Adreßdaten mit den bestimmten Adressen vergleicht. Wenn durch das Adressenvergleichselement ermittelt wird, daß beide Adressen miteinander übereinstimmen, dann wird das Steuersignal an das Wählelement angelegt.
  • Bei einem nachfolgenden Schritt S12 gibt die Zentraleinheit 12 die Adreßdaten (die ersten Adreßdaten) aus, um die Programmdaten-Speichereinheit 22 des Programm-Nur-Lese-Speichers 18 zu lesen. Insbesondere werden genau nach dem Schritt S11, in dem die Steuerung ausgegeben wird, in dem Schritt S12, welcher als ein Adressen-Eingabemittel wirkt, die ersten Adreßdaten in der Adressen-Verarbeitungseinheit 24 eingegeben, wie eine Nur-Lese-Speicheradresse durch den Adreßbus der Zentraleinheit 12. Die Adressen-Verarbeitungseinheit 24 verarbeitet aber die ersten Adreßdaten, wie in dem Ausführungsbeispiel der 2 beschrieben ist, und führt ein verarbeitetes Adressenergebnis (zweite Adreßdaten) zu dem Programm-Nur-Lese-Speicher 18.
  • Anschließend wird in einem Schritt S13 festgelegt, ob die Programmdaten einem wahren Wert entsprechen, wobei die Programmdaten, gemäß der durch die Adressen-Verarbeitungseinheit 24 verarbeiteten zweiten Adreßdaten, von der Programmdaten-Speichereinheit 22 gelesen worden sind. Das bedeutet, daß der Schritt S13 Festlegungsmittel umfaßt, die bestimmen, ob die in dem Arbeitsspeicher 20 gelesenen Prüfdaten und die Programmdaten miteinander übereinstimmen, wobei beide Daten miteinander verglichen werden. Es wird angenommen, daß die aus der Adresse, welche gemäß einer in der Adressen-Verarbeitungseinheit 24 vorher bestimmten Regel verarbeitet worden ist, gelesenen Programmdaten mit den vorher gesetzten Prüfdaten übereinstimmen. Daher wird in diesem Fall „JA" bestimmt. Jedoch wird im Fall eines falschen Pro gramm-Nur-Lese-Speichers, der nicht mit der Adressen-Verarbeitungseinheit 24 versehen ist, oder eines falschen Nur-Lese-Speichers, in dem eine Einheit gleich der Adressen-Verarbeitungseinheit 24 existiert, aber die Adreßverarbeitung nicht konform zu der bestimmten Regel ist, im Schritt S13 „NEIN" bestimmt.
  • Weiterhin ist es im Fall, daß der echte bzw. wahre Programm-Nur-Lese-Speicher als „JA" in dem Schritt S13 bestimmt worden ist, so, daß die Verarbeitung zu einer normalen Programmverarbeitung zurückkehrt. Andererseits ist es im Fall eines nachgeahmten Programm-Nur-Lese-Speichers, der mit „NEIN" bestimmt worden ist, so, daß in einem nächsten Schritt S14 die Zentraleinheit 12 eine Warnmeldung, beispielsweise in der Anzeigevorrichtung 14 (1), anzeigt wird, wie „Dieser Programm-Nur-Lese-Speicher (Kassette) ist eine Fälschung und wird daher nicht in diesem Gerät verarbeitet", wodurch das Programm in dem Schritt S15 zwangsläufig beendet wird. Daher wird es im Fall einer Nachahmung unmöglich, das Programm ununterbrochen weiter zu verarbeiten. Das heißt, daß die Schritte S14 und S15 gleich den Mitteln zur zwangsläufigen Programmbeendigung sind.
  • Weiterhin wird in der Beschreibung oben, in dem Schritt S13, der ein Bestimmungsmittel ist, verglichen, ob die gemäß der zweiten Adreßdaten gelesenen Programmdaten mit den vorher gesetzten Prüfdaten miteinander übereinstimmen, wobei beide nicht miteinander übereinstimmen könnten, und wobei beide ein vorbestimmtes und vorher gesetztes Verhältnis (Zustand) zueinander haben könnten. Es kann ein willkürlich vorher festgesetztes Verhältnis gesetzt werden, wobei das Verhältnis, beispielsweise ein Verhältnis ist, das im gegenseitigen Vergleich, die einen größer oder kleiner um eine vorher festgesetzte Anzahl sind, bzw. ein Verhältnis ist, daß beide miteinander übereinstimmen, wenn eine im voraus festgelegte Berechnung auf die einen (und/oder die anderen) angewendet wird bzw. ein Verhältnis ist, bei dem die absoluten Werte der beiden einander gleich sind und so weiter.
  • In dem Ausführungsbeispiel der 2 können, wenn die passenden Instrumente verwendet werden, die Programmdaten vollständig von der Programmdaten-Speichereinheit 22 ausgelesen und kopiert werden. Jedenfalls ist es, auch wenn nur die Programmdaten von der Programmdaten-Speichereinheit 22 wiedergespeichert werden, unmöglich, daß das wiedergespeicherte Programm im Gegensatz zum echten Produkt ausgeführt wird.
  • Insbesondere kann der oben beschriebene Adressen-Modifikationsprozeß nicht ausgeführt werden, selbst wenn nur die Programmdaten wiedergespeichert sind, in dem Fall, daß die Adressen-Verarbeitungseinheit 24 und die Code-Speichereinheit 26 nicht in einem Speicher einer Person versehen sind, die versucht, die Programmdaten des Programm-Nur-Lese-Speichers 18 gesetzwidrig zu benutzen, wenn die die Programmprüfung bestimmenden Programmdaten ausgelesen werden. Daher werden die ersten, nicht identifizierten Adreßdaten A0–A15 in die Programmdaten-Speichereinheit 22 eingegeben. Auch wenn ein solcher Prüfbefehl besteht, werden die Programmdaten von der durch die ersten Adreßdaten A0–A15 festgelegten Adresse gelesen. In diesem Fall sind die Programmdaten unterschiedlich zu den Programmdaten, die aus einer durch die zweiten Adreßdaten A0'–A7' und A8–A5 erhalten in der Ausführungsform der 2, festgelegten Adresse gelesen worden sind. Nicht-Übereinstimmung wird durch Vergleichen mit den vorher in dem Schritt S13 gesetzten Prüfdaten ermittelt. Anschließend wird, wenn das Unterscheidungsergebnis der nicht Übereinstimmung erhalten ist, „NEIN" in dem Schritt S13 festgestellt, wodurch das Programm zwangsläufig beendet wird.
  • Um die derartige Zwangsbeendigung des Programms zu vermeiden, ist es erforderlich, die bestimmten Programmdaten, die den Prüfungsstart in dem Schritt S2 in 4 auslösen, und den Programmschritt (Adresse) hiervon zu analysieren. Weiter ist es erforderlich, alle Elemente, solche wie eine Operationsart in dem Rechenelement 28 und den Adreßrechencode, die in dem Prüfprogramm (2) gesetzten Prüfdaten usw., zu analysieren. Im Fall, daß der Programm-Nur-Lese- Speicher 18 beispielsweise durch einen maskierten Nur-Lese-Speicher realisiert ist, ist es sehr schwer, ein derartiges Element zu untersuchen, und daher ist für die Untersuchung eine aufwendige Einrichtung und eine lange Zeit erforderlich.
  • Andererseits kann im Fall, daß die Elemente, wie die Operationsart in dem Rechenelement und die Adreßberechnung für jede Art des Programm-Nur-Lese-Speichers, Spieltitel im Fall einer Spielkassette, oder einer Programmversion geändert werden, ein Untersuchungsergebnis nicht auf andere Programm-Nur-Lese-Speicher angewendet werden, wobei dies gilt, selbst wenn alle Elemente eines vorhandenen Programm-Nur-Lese-Speichers untersucht worden sind. Daher ist es für eine Person, die versucht das Programm gesetzwidrig zu benutzen, erforderlich, daß alle Elemente zu jeder Zeit erneut untersucht werden. Nach dem gezeigten Ausführungsbeispiel, ist es also angesichts der Zeit und der erforderlichen Kosten für die Untersuchung möglich, die gesetzwidrige Benutzung des Programm-Nur-Lese-Speichers wirksam zu unterbinden.
  • 6 ist ein abgeändertes Beispiel des Ausführungsbeispiels in 2. In dem Ausführungsbeispiel in 6 weist das Rechenmittel der Adressen-Verarbeitungseinheit 24 eine Mehrzahl von (n) Rechenelementen 28128n auf. Die niedrigeren 8 Bits A0–A7 der ersten Adreßdaten des Adreßbusses werden an den entsprechenden Eingängen der entsprechenden Rechenelemente 28128n eingegeben. Entsprechenderweise empfangen andere Eingänge in der Regel den Adreßrechencode a0–a7 von 8 Bits, welcher von der Code-Speichereinheit 26 ausgegeben worden ist. Weiterhin wird an dem Wählelement 30 ein vorher in der Code-Speichereinheit 26 gesetzter Rechenwahlcode c0–cX zusammen mit dem Steuersignal zugeführt. Die Anzahl der Bits des Rechenwahlcodes c0–cX kann entsprechend der Anzahl der Rechenelemente (n) gesetzt werden. Im Fall, daß vier (4) Rechenelemente 28 vorhanden sind, beträgt die Anzahl der Bits 2. Im Fall, daß acht (8) Rechenelemente vorhanden sind, können 3 Bits verwendet werden. Weiterhin ist der Rechenwahlcode c0–cX gesetzt worden, um jedes von mehreren Rechenelementen 28128n auszuwählen.
  • In dem Ausführungsbeispiel der 6 berechnen bzw. verändern, ähnlich dem Rechenelement 28 des Ausführungsbeispiels in 2, die entsprechenden Rechenelemente 28128n die Adresse, weshalb eine bestimmte Beschreibung einer solchen Adressenberechnung weggelassen werden kann. Jedenfalls wird in dem Ausführungsbeispiel der 6 vorausgesetzt, daß die entsprechenden Rechenelemente 28128n verschiedene Arten von Rechenoperationen durchführen können. Wenn verschiedene Rechenelemente durch den Rechencode c0–cX für jede Art von Programm-Nur-Lese-Speicher (Spieltitel) bzw. einer Programmversion ausgewählt werden können, dann wachst der Schwierigkeitsgrad der Programm-Untersuchung, die in der 2 beschrieben ist. Die gesetzwidrige Benutzung wird daher erschwert.
  • Das Ausführungsbeispiel gemäß der 6 bietet weitere Vorteile. Insbesondere im Fall, daß nur ein Rechenelement in einem Chip, wie in der 2 gezeigt ist, angeformt ist und das Rechenelement gemäß der Produktart oder Programmversion ausgewechselt worden ist, dann ist in der Zeit, in der das Rechenelement ausgetauscht ist, ein Auswechseln einer Druckmaske erforderlich. Wenn die Mehrzahl der Rechenelemente 28128n eingebettet sind, wie in der 6 gezeigt ist, ist es im Gegensatz möglich, das Rechenelement auszuwählen, wobei die Auswahl der Art der Rechenoperation nur durch Verändern des Rechenwahlcodes ermöglicht wird. Andererseits kann der Rechenwahlcode in dem gleichen Druckverfahrensschritt des Adreßrechencodes hergestellt werden. Gemäß des Ausführungsbeispiels in 6 ist es möglich, den Programm-Nur-Lese-Speicher zu niedrigen Kosten herzustellen, wenn das Rechenelement geändert wird.
  • In dem Ausführungsbeispiel der 6 wählt das Wählelement 30 den Eingang X, wenn das Steuersignal vorhanden ist. Das Wählelement wählt den Eingang Y, wenn kein Steuersignal vorhanden ist, wodurch die ersten Adreßdaten oder die zweiten Adreßdaten entsprechend der An- oder Abwesenheit des Steuersignals ausgegeben werden. Weiterhin wird in der 6 in Klammern ein Fall gezeigt, bei dem alle Bits der Adreßdaten A0–A15 abgeändert und verarbeitet worden sind. Eine Abarbeitung in einem derartigen Fall kann in einfacher Weise anhand der vorherigen Beschreibung für das Ausführungsbeispiel in 2 nachvollzogen werden und kann daher hier ausgelassen werden.
  • Weiterhin werden in den vorher beschriebenen Ausführungsbeispielen die durch Berechnung eines Teiles oder der gesamten Teile durch das Rechenelement 28 (28128n) entstandenen Adreßdaten (zweite Adreßdaten) durch die Adressen-Verarbeitungseinheit 24 ausgegeben. Wenn das Steuersignal nicht vorhanden ist, dann werden die von der Zentraleinheit 12 (die ersten Adreßdaten) ausgegebenen Adreßdaten von der Adressen-Verarbeitungseinheit 24 ausgewählt und ausgegeben. Wenn kein Steuersignal besteht, können dritte, durch einen zweiten Rechenschritt entstandene, Adreßdaten ausgegeben werden, wobei der zweite Rechenschritt zu dem Rechenschritt der zweiten Adreßdaten in den ersten Adreßdaten unterschiedlich ist.
  • Ein derartiges Ausführungsbeispiel ist in 7 gezeigt. In dem Ausführungsbeispiel in 7 ist ein derartiges Rechenelement 28' zusätzlich zu dem Rechenelement 28 und dem Wählelement 30 des Ausführungsbeispieles in 2 in der Adressen-Verarbeitungseinheit 24 angeordnet. Weiterhin werden zu dem jeweiligen Eingang der Rechenelemente 28 und 28' die unteren 8 Bits A0–A7 der Adreßdaten A0–A15 (erste Adreßdaten) von dem Adreßbus der Zentraleinheit 12, so wie sie sind, angelegt. Der Adreßrechencode a0–a7 von 8 Bits, die in der Code-Speichereinheit 26 gesetzt worden sind, wird an den jeweiligen anderen Eingängen der Rechenelemente 28 und 28' zusammen angelegt. Die Rechenelemente 28 und 28' werden in der Weise ausgewählt, daß die Rechenelemente 28 und 28' eine erste Rechenart, beziehungsweise eine zweite unterschiedliche Rechenart ausführen können.
  • Das Rechenelement 28 gibt ein erstes Rechenergebnis A0'–A7' des Adreßrechencodes a0–a7 und der niedrigeren 8 Bits A0–A7 aus, wobei das Rechenele ment 28 sie an einen Eingang X des Wählelementes 30 legt. Das Rechenelement 28' gibt ein zweites Rechenergebnis A0''–A7'' des Adreßrechencodes a0–a7 und der niedrigeren 8 Bits A0–A7 aus, um diese an den anderen Eingang Y des Wählelementes 30 zu legen. Einer dieser Eingänge A0'–A7' und A0''–A7'' des Rechenelementes 28 und 28' wird durch das Wählelement 30 ausgewählt. An dem Wählelement 30 wird das Steuersignal, d. h. beispielsweise das Schreibsignal, von der Zentraleinheit 12 angelegt und der Rechenwahlcode c0–cX, das in der Code-Speichereinheit 26 gespeichert ist, angelegt. Daher wählt das Wählelement 30 den Ausgang des Rechenelementes 28, d. h. den Eingang X, wenn das Steuersignal existiert, damit die Adreßdaten A0'–A7' der durch das Rechenelement 28 verarbeiteten niedrigeren 8 Bits ausgegeben werden. Das Wählelement 30 wählt den Ausgang des Rechenelementes 28', d. h. den Eingang Y, wenn das Steuersignal nicht vorliegt, damit die Adreßdaten A0''–A7'' der niedrigeren 8 Bits durch das Rechenelement 28' verarbeitet werden können.
  • Andererseits sind die oberen 8 Bits A8–A15 der Adreßdaten mit dem Ausgang des Wählelementes 30 gekoppelt, wodurch, wenn das Steuersignal angelegt wird, die Adreßdaten (zweite Adreßdaten) von insgesamt 16 Bits (A0'–A7' + A8–A15) von dem Wählelement 30 bzw. der Adressen-Verarbeitungseinheit 24 ausgegeben. Wenn das Steuersignal nicht von dem Wählelement 30 angelegt wird, dann werden die Adreßdaten (die dritten Adreßdaten) von 16 Bits (A0''–A7'' + A8–A15) ausgegeben.
  • Weiterhin können in dem Ausführungsbeispiel der 7, wie in der 7 in Klammern dargestellt ist, alle Bits der Adreßdaten A0–A15 durch das Rechenelement 28 und das Rechenelement 28' logisch verarbeitet werden.
  • In dem Ausführungsbeispiel der 7 sind die ersten Adreßdaten A0–A15 der Zentraleinheit 12 nicht die Adreßdaten, bei denen die Programmdaten ausgelesen werden können, wobei normalerweise die Zentraleinheit versucht diese auszuführen. Das bedeutet, daß die ersten Adreßdaten bloß falsche Adreßdaten sind. Das erste Rechenelement 28 und das zweite Rechenelement 28' vertauscht bzw. wandelt die ersten Adreßdaten A0–A15 derart um, daß die Programmdaten, die die Zentraleinheit 12 normalerweise versucht auszuführen, korrekt ausgelesen werden können. Das ist der Fall, wenn die zweiten Adreßdaten und die dritten Adreßdaten korrekte Adreßdaten sind.
  • In dem Ausführungsbeispiel der 7 ist es im Fall, wenn versucht wird, das Programm gesetzwidrig zu benutzen, erforderlich, nicht nur das erste Rechenelement 28 sondern auch das zweite Rechenelement 28' zu untersuchen, wodurch der Schwierigkeitsgrad der Untersuchung weiterhin erhöht wird.
  • Die oben beschriebenen Ausführungsbeispiele sind mit der Adressen-Verarbeitungseinheit 24 in dem Nur-Lese-Speicher 18 versehen, um die Adressen zu verarbeiten bzw. abzuändern, damit sie an der Programmdaten-Speichereinheit 22 angelegt werden können. Wie auch immer ist es möglich, ausgegebene Programmdaten zu verarbeiten, bzw. abzuändern, ebenso auch bei den Adreßdaten, wenn die gleiche Idee bei den aus der Programmdaten-Speichereinheit 22 ausgelesenen Programmdaten angewendet wird.
  • Ein derartiges Ausführungsbeispiel ist in 8 gezeigt. Insbesondere in dem Ausführungsbeispiel der 8 umfaßt der Nur-Lese-Speicher 18, zusätzlich zu der Programmdaten-Speichereinheit 22, die Adressen-Verarbeitungseinheit 24 und die Code-Speichereinheit 26 des Ausführungsbeispiels gemäß 1. Weiterhin ist der Nur-Lese-Speicher mit einer Ausgabedaten-Verarbeitungseinheit 32 versehen, wobei die Ausgabedaten-Verarbeitungseinheit 32 die Programmdaten empfängt, die von der Programmdaten-Speichereinheit 22 ausgegeben werden, und wobei die Ausgabedaten-Verarbeitungseinheit 32 eine vorher festgelegte Programmdatenverarbeitung ausführt. Insbesondere führt die Ausgabedaten-Verarbeitungseinheit 32 eine zu der oben beschriebenen Adressen-Verarbeitungseinheit 24 ähnliche Operation aus, um die aus der Programmdaten-Speichereinheit 22 gelesenen Programmdaten zu verarbeiten, bzw. zu verändern.
  • In diesem Fall wird das Steuersignal von der Zentraleinheit 12 an die Adressen-Verarbeitungseinheit 24 und die Ausgabedaten-Verarbeitungseinheit 32 angelegt, wobei die beiden Einheiten 24 und 32 in dem Schritt S11 in 5 freigegeben werden.
  • Zusätzlich wird in jedem der Ausführungsbeispiele die Code-Speichereinheit 26, wie das Code-Erzeugungsmittel auch, auf dem gleichen Chip des Nur-Lese-Speichers 18 angeordnet. Das Code-Erzeugungsmittel kann fähig sein, einen willkürlichen Code (Daten) an das Rechenmittel zu legen, wodurch die Code-Speichereinheit 26 mit einer Struktur ersetzt werden kann, bei der willkürliche Daten durch einen DIP-Schalter und dergleichen oder einem externen Flash ROM, der willkürliche Daten in einer Art und Weise speichert, daß die Daten von außen neu geschrieben werden können, gesetzt werden können.
  • Weiterhin ist es in den oben beschriebenen Ausführungsbeispielen im Fall eines falschen Programms so, daß die Ausführung des Programms nach einer vorher festgelegten Zeit zwangsläufig beendet wird. Jedenfalls kann das Programm nach einer vorher festgelegten Zeit beendet werden, bzw. kann im Falle eines Spiels die zwangsläufige Beendigung durch andere Verarbeitungen, wie Parameterwechsel von Zeichen oder löschgesicherten Daten des Spieles oder durch Umkehrung des Spieles zu einem Anfangsstadium, ersetzt werden.
  • Obwohl die vorliegende Erfindung im Detail gezeigt und beschrieben worden ist, ist es selbstverständlich, daß sie durch die Art der Darstellung und Beispiele nicht auf diese Lösungen beschränkt ist. Der Erfindungsgedanke und der Schutzbereich der Erfindung sind nur durch den Wortlaut der anliegenden Ansprüche begrenzt.

Claims (12)

  1. Halbleiter-Speichereinrichtung (18), in der durch eine Zentraleinheit (12) auszuführende Programmdaten fest gespeichert sind, und die die Programmdaten von Adressen, die durch Adreßdaten bestimmt sind, ausgibt, umfassend: ein Programmdaten-Speichermittel (22) für das Festspeichern der Programmdaten; ein Code-Erzeugungsmittel (26) für die Erzeugung eines Adreßrechencodes; und ein Adressen-Verarbeitungsmittel (24), das erste Adreßdaten erhält, die von der Zentraleinheit (12) ausgegeben werden; wobei das Adressen-Verarbeitungsmittel (24) neue zweite Daten ausgibt, die durch Ausführung eines Rechenschritts auf mindestens einem Teil der ersten Adreßdaten erhalten werden, auf der Grundlage des Adreßrechencodes, zu einem Zeitpunkt erfolgt, bei dem ein Steuersignal vorhanden ist, und die zweiten Adreßdaten dem Programmdaten-Speichermittel (22) zuführt und zu einem Zeitpunkt, in dem kein Steuersignal vorhanden ist, die ersten Adreßdaten dem Programmdaten-Speichermittel (22) zuführt, und wobei das Programmdaten-Speichermittel (22) bestimmte Programmdaten umfaßt, die eine Ausgabe des Steuersignals während der Programmausführung durch die Zentraleinheit (12) befehlen können.
  2. Halbleiter-Speichereinrichtung (18) nach Anspruch 1, in der das Adressen-Verarbeitungsmittel (24) ein Rechenmittel (28) zur Berechnung von mindestens einem Teil der ersten Adreßdaten umfaßt, wobei der Adreßrechencode verwendet wird, um die zweiten Adreßdaten auszugeben, und ein Wählelement (30), das zweite Adreßdaten zu einem Zeitpunkt ausgibt, in dem das Steuersignal daran angelegt wird, und die ersten Adreßdaten zu einem Zeitpunkt ausgibt, in dem das Steuersignal nicht daran angelegt wird.
  3. Halbleiter-Speichereinrichtung (18) nach Anspruch 2, bei der das Rechenmittel eine Mehrzahl von Rechenelementen (28) umfaßt, die jeweils durch Empfangen der ersten Adreßdaten und des Adreßrechencodes verschiedene Arten von Rechenoperationen ausführen können und die Rechenelemente unterschiedliche zweite Adreßdaten ausgeben, wobei das Code-Erzeugungsmittel (26) weiterhin einen Rechenwahlcode für die Auswahl eines von mehreren Rechenelementen erzeugt, und wobei das Wählelement (30) die zweiten Adreßdaten auswählt, die mit demjenigen Rechenelement in Verbindung stehen, das durch den Rechenwahlcode oder durch die ersten Adreßdaten ausgewählt worden ist.
  4. Halbleiter-Speichereinrichtung (18) nach einem der Ansprüche 1 bis 3, bei der das Programmdaten-Speichermittel (22), das Code-Erzeugungsmittel (26) und das Adressen-Verarbeitungsmittel (24) in einem einzigen Halbleiterchip ausgeführt sind.
  5. Halbleiter-Speichereinrichtung (18) nach einem der Ansprüche 1 bis 4, bei der das Programmdaten-Speichermittel (22) und das Code-Erzeugungsmittel (26) durch einen Flash-Speicher gebildet werden.
  6. Halbleiter-Speichereinrichtung (18), in der durch eine Zentraleinheit (12) auszuführende Programmdaten festgespeichert sind, und die die Programmdaten von Adressen, die durch Adreßdaten bestimmt sind, ausgibt, umfassend: ein Programmdaten-Speichermittel (22) für das Festspeichern der Programmdaten; ein Code-Erzeugungsmittel (26) für die Erzeugung eines Adreßrechencodes; und ein Adressen-Verarbeitungsmittel (24), das erste Adreßdaten erhält, die von der Zentraleinheit (12) ausgegeben werden; wobei das Adressen-Verarbeitungsmittel (24) neue zweite Daten ausgibt, die durch Ausführung eines Rechenschritts auf mindestens einem Teil der ersten Adreßdaten erhalten werden, auf der Grundlage des Adreßrechencodes, zu einem Zeitpunkt erfolgt, bei dem ein Steuersignal vorhanden ist, und die zweiten Adreßdaten dem Programmdaten-Speichermittel (22) zuführt, dritte Adreßdaten dem Programmdaten-Speichermittel (22) zuführt, die durch eine Durchführung eines zu dem ersten Rechenschritt unterschiedlichen zweiten Rechenschritts, geschaffen werden, auf mindestens einem Teil der ersten Adreßdaten auf der Grundlage des Adreßrechencodes zu einem Zeitpunkt erfolgt, bei dem kein Steuersignal vorhanden ist, und wobei das Programmdaten-Speichermittel (22) bestimmte Programmdaten umfaßt, die eine Ausgabe des Steuersignals während der Programmausführung durch die Zentraleinheit (12) befehlen können.
  7. Halbleiter-Speichereinrichtung (18) nach Anspruch 6, bei der ein erster und ein zweiter Rechenschritt des Adressen-Verarbeitungsmittels (24) die ersten Adreßdaten in Adreßdaten umwandelt, um Programmdaten auszugeben, die normalerweise durch die Zentraleinheit (12) ausgeführt werden.
  8. Programm-Unterscheidungssystem, umfassend: eine Nur-Lese-Programmspeichereinheit (18), die die Programmdaten fest speichert, und eine Zentraleinheit (12), die die Programmdaten durch Lesen der Programmdaten von der Programmspeichereinheit (18) ausführt und die unterscheidet, ob das Programm ein ordnungsgemäßes Programm ist oder nicht, wobei die Programmspeichereinheit (18) umfaßt: ein Programmdaten-Speichermittel (22) für das Festspeichern der Programmdaten; ein Code-Erzeugungsmittel (26) für das Erzeugen eines Adreßrechencodes; und ein Adressen-Verarbeitungsmittel (24) für das Empfangen von ersten Adreßdaten, die von der Zentraleinheit (12) ausgegeben werden, wobei das Adressen-Verarbeitungsmittel (24) neue zweite Adreßdaten ausgibt, die durch Ausführung eines Rechenschritts auf mindestens einem Teil der ersten Adreßdaten erhalten werden, auf der Grundlage des Adreßrechencodes, wenn ein Steuersignal von der Zentraleinheit (12) eingesetzt wird, und die zweiten Adreßdaten dem Programmdaten-Speichermittel (22) zuführt, und die ersten Adreßdaten zu dem Programmdaten-Speichermittel (22) führt, wenn kein Steuersignal vorhanden ist, und wobei die Zentraleinheit (12) umfaßt: ein Steuersignal-Anlegungsmittel, um das Steuersignal dem Adressen-Verarbeitungsmittel (24) der Programmspeichereinheit (18) zuzuführen, ein Adressen-Ausgabemittel für die Ausgabe der ersten Adreßdaten, um die ersten Adreßdaten kurz nach dem das Steuersignal vorliegt in dem Adressen-Verarbeitungsmittel (24) anzulegen, und ein Entscheidungsmittel für die Entscheidung der Echtheit der Programmspeichereinheit, in dem entschieden wird, ob eine vorher festgesetzte Beziehung zwischen den Programmdaten, die durch das Programmdaten-Speichermittel (22) in Übereinstimmung mit den zweiten Adreßdaten gelesen werden, und zwischen im voraus gesetzten Prüfdaten besteht oder nicht, und wobei das Steuersignal-Anlegungsmittel ein bestimmtes vorher in dem Programm-Speichermittel (18) festgelegtes Programm umfaßt, und bei dem das Steuersignal zu einem Zeitpunkt angelegt wird, bei dem das bestimmte Programm ausgelesen wird.
  9. Programm-Unterscheidungssystem nach Anspruch 8, bei dem die Zentraleinheit (12) zusätzlich ein Programm-Beendigungsmittel umfaßt, um das Programm zwangsweise zu beenden, wenn ein Unterscheidungsergebnis des Entscheidungsmittels eine falsche Programmspeichereinheit (18) anzeigt.
  10. Adressensteuerungsverfahren für eine Halbleiter-Speichereinrichtung (18), die einen Programm-Nur-Lese-Speicher (22) umfaßt, der durch eine Zentraleinheit (12) auszuführende Programmdaten festspeichert, mit den Schritten: (a) Erzeugen eines Adreßrechencodes; (b) Ausgeben zweiter Adreßdaten, die durch Anwenden eines Rechenschritts an mindestens einem Teil der von der Zentraleinheit (12) ausgegebenen ersten Adreßdaten erhalten werden auf der Basis des Adreßrechencodes zu einer Zeit, wenn ein Steuersignal existiert, um die zweiten Adreßdaten dem Programmspeichermittel zuzuführen; und (c) Anlegen der ersten Adreßdaten an die Programmdaten-Speichermittel (22) zu einem Zeitpunkt, bei dem das Steuersignal nicht besteht, wobei das Programmdaten-Speichermittel (22) bestimmte Programmdaten umfaßt, die eine Ausgabe des Steuersignals während der Programmausführung durch die Zentraleinheit (12) befehlen können.
  11. Adressensteuerungsverfahren für eine Halbleiter-Speichereinrichtung (18), die einen Programm-Nur-Lese-Speicher (22) umfaßt, der durch eine Zentraleinheit (12) auszuführende Programmdaten fest speichert, mit den Schritten: (a) Erzeugen eines Adreßrechencodes; (b) Ausgeben von neuen zweiten Adreßdaten, die durch Anwenden eines ersten Rechenschritts an mindestens einem Teil der ersten Adreßdaten erhalten werden, wobei die Adreßdaten von der Zentraleinheit (12) auf der Basis des Adreßrechencodes zu einem Zeitpunkt ausgegeben werden, bei dem ein Steuersignal vorhanden ist, um die zweiten Adreßdaten an dem Programmdaten-Speichermittel (22) anzulegen; und (c) Ausgeben neuer dritter Adreßdaten, die durch Anwenden eines zweiten Rechenschritts, der unterschiedlich zu dem ersten Rechenschritt ist, an mindestens einem Teil der ersten Adreßdaten erhalten werden, auf der Grundlage des Adreßrechencodes zu einem Zeitpunkt, bei dem das Steuersignal nicht vorhanden ist, um die zweiten Adreßdaten dem Programmdaten-Speichermittel (22) anzulegen, wobei das Programmdaten-Speichermittel (22) bestimmte Programmdaten umfaßt, die eine Ausgabe des Steuersignals während der Programmausführung durch die Zentraleinheit (12) befehlen können.
  12. Verfahren zur Programm-Unterscheidung in einer Informationsverarbeitungsvorrichtung, die mit einer Nur-Lese-Programm-Speichereinrichtung (22) versehen ist, die Programmdaten fest speichert, wobei die Informationsverarbeitungsvorrichtung mit einer Zentraleinheit (12) versehen ist, die ein Programm durch Lesen der Programmdaten von der Programmspeicher-Einrichtung ausführt, mit den Schritten: (a) Erzeugen eines Adreßrechencodes; (b) Ausgeben eines Steuersignals, wobei das Programmdaten-Speichermittel (22) bestimmte Programmdaten umfaßt, die eine Ausgabe des Steuersignals während der Programmausführung durch die Zentraleinheit (12) befehlen können; (c) Ausgeben einer ersten Adresse von der Zentraleinheit (12) kurz nach Schritt (b); (d) Ausgeben neuer zweiter Adreßdaten, die durch Ausführung eines Rechenschritts an mindestens einem Teil der von der Zentraleinheit (12) ausgegebenen ersten Adreßdaten erhalten werden, auf der Grundlage des Adreßrechencodes zu einem Zeitpunkt, an dem ein Steuersignal vorhanden ist, um die zweiten Adreßdaten dem Programmdaten-Speichermittel (22) zuzuführen; (e) Anlegen der ersten Adreßdaten an die Programmdaten-Speichermittel (22) zu einem Zeitpunkt, bei dem das Steuersignal nicht besteht; und (f) Entscheiden, ob die von dem Programmdaten-Speichermittel (22) ausgelesenen Programmdaten gemäß der zweiten Adreßdaten und vorher gesetzten Prüfdaten einen vorher festgelegten Zusammenhang in der Zentraleinheit (12) aufweisen.
DE10103222A 2000-01-25 2001-01-25 Halbleiter-Speichereinrichtung und Programm-Unterscheidungssystem Expired - Lifetime DE10103222B4 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2000-15227 2000-01-25
JP2000015227A JP2001209531A (ja) 2000-01-25 2000-01-25 半導体記憶装置およびプログラム判別システム

Publications (2)

Publication Number Publication Date
DE10103222A1 DE10103222A1 (de) 2001-07-26
DE10103222B4 true DE10103222B4 (de) 2008-11-20

Family

ID=18542560

Family Applications (1)

Application Number Title Priority Date Filing Date
DE10103222A Expired - Lifetime DE10103222B4 (de) 2000-01-25 2001-01-25 Halbleiter-Speichereinrichtung und Programm-Unterscheidungssystem

Country Status (7)

Country Link
US (1) US6578132B1 (de)
JP (1) JP2001209531A (de)
KR (1) KR100591444B1 (de)
CN (1) CN1286021C (de)
DE (1) DE10103222B4 (de)
GB (1) GB2366025B (de)
TW (1) TW587210B (de)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE10115118A1 (de) * 2001-03-27 2002-10-10 Philips Corp Intellectual Pty Verfahren zur Übertragung von Daten über einen Datenbus
US6966837B1 (en) 2001-05-10 2005-11-22 Best Robert M Linked portable and video game systems
US7350081B1 (en) 2002-04-29 2008-03-25 Best Robert M Secure execution of downloaded software
TWI243994B (en) * 2003-09-08 2005-11-21 Mediatek Inc Method and apparatus for protecting a specific memory section
JP4364077B2 (ja) * 2004-06-30 2009-11-11 富士通株式会社 演算装置及び演算装置の制御方法
US11266911B1 (en) * 2020-09-21 2022-03-08 Nintendo Co., Ltd. Systems and method for identifying modified program data

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0231256A (ja) * 1988-07-21 1990-02-01 Nintendo Co Ltd 外部メモリとそれを用いる情報処理装置
JPH11154395A (ja) * 1997-09-30 1999-06-08 Lg Semicon Co Ltd 半導体メモリ装置のデータ保護回路

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2885600B2 (ja) * 1993-03-29 1999-04-26 株式会社東芝 半導体集積回路
JP3625340B2 (ja) * 1996-09-19 2005-03-02 株式会社東芝 セキュリティシステム
JPH1165936A (ja) * 1997-06-12 1999-03-09 Oki Micro Design Miyazaki:Kk メモリ装置
KR100253310B1 (ko) * 1997-08-26 2000-05-01 김영환 반도체 메모리 장치의 프로그램 데이타 보호 회로
JP3793629B2 (ja) * 1997-10-30 2006-07-05 沖電気工業株式会社 メモリカードとメモリカード装置
KR100295647B1 (ko) * 1998-03-28 2001-08-07 김영환 메모리데이터보호회로
JP2000082010A (ja) * 1998-09-04 2000-03-21 Sharp Corp アドレス変換を有するデータ処理方法および装置
KR200312371Y1 (ko) * 1998-10-29 2003-07-16 주식회사 하이닉스반도체 불휘발성 메모리의 프로그램 프로텍션장치

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0231256A (ja) * 1988-07-21 1990-02-01 Nintendo Co Ltd 外部メモリとそれを用いる情報処理装置
JPH11154395A (ja) * 1997-09-30 1999-06-08 Lg Semicon Co Ltd 半導体メモリ装置のデータ保護回路
US6101587A (en) * 1997-09-30 2000-08-08 Lg Semicon Co., Ltd. Data protection circuit for semiconductor memory device

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
JP 02031256 A in: Patent Abstracts of Japan *
JP 02031256 A. Patent Abstracts of Japan

Also Published As

Publication number Publication date
US6578132B1 (en) 2003-06-10
CN1286021C (zh) 2006-11-22
GB2366025B (en) 2004-07-21
DE10103222A1 (de) 2001-07-26
GB0101741D0 (en) 2001-03-07
CN1316697A (zh) 2001-10-10
GB2366025A (en) 2002-02-27
KR100591444B1 (ko) 2006-06-22
KR20010076275A (ko) 2001-08-11
TW587210B (en) 2004-05-11
JP2001209531A (ja) 2001-08-03

Similar Documents

Publication Publication Date Title
DE3700663C2 (de)
DE69214080T2 (de) Verfahren zum Schutz von Programmen durch Verwendung verschiedener Schlüssel gegen unberechtigte Durchführung
DE10241400B4 (de) Verfahren zum Verwalten eines sequentiellen Prozesses unter Verwendung einer graphischen Benutzerschnittstelle
DE3780070T2 (de) Pin-pruefungszeit-bestimmungsmittel umfassendes chipkartenidentifikationssystem.
DE602004003478T2 (de) Virtuelle tastatur
DE10000503A1 (de) Datenverarbeitungseinrichtung und Verfahren zu dessen Betrieb
DE3316414A1 (de) Geraet und verfahren zum sicherstellen der unversertheit eines spielgeraets
EP1611510B1 (de) Kontrollierte ausführung eines für eine virtuelle maschine vorgesehenen programms auf einem tragbaren datenträger
DE60131872T2 (de) Verfahren und gerät zur fälschungssicherung in einem netzwerk bei auswahl eines icons
DE3835479C2 (de)
DE10103222B4 (de) Halbleiter-Speichereinrichtung und Programm-Unterscheidungssystem
DE4100151A1 (de) Ic-karte
DE102011010737A1 (de) Verfahren zur Verbesserung des Manipulationsschutzes von Geldautomaten, sowie Geldautomat zur Durchführung des Verfahrens
DE69101099T2 (de) Verfahren zum Bestätigen geheimer Kodes in Speicherkarten.
EP2210241B1 (de) Daten verarbeitende vorrichtung und verfahren zum betreiben einer daten verarbeitenden vorrichtung
DE19841893B4 (de) Mikrokontroller
DE102018113688A1 (de) Verfahren für eine Gefährdungsanalyse und Risikobeurteilung
DE10254657A1 (de) Mikrocontroller und zugeordnetes Verfahren zum Abarbeiten der Programmierung des Mikrocontrollers
DE60019833T2 (de) Auswahlsystem für ausführbare Programme
DE60114416T2 (de) Vorrichtung und verfahren zur bewertung von algorithmen
DE3149279A1 (de) Programmverschluesselung
DE10310781A1 (de) Verfahren zum Betreiben eines Mikroprozessors und eine Mikroprozessoranordnung
DE102009021011A1 (de) Elektronischer Schlüssel zur Authentifizierung
DE10130493B4 (de) Verfahren zur Freigabe eines Zugriffs auf ein elektronisches Steuergerät
WO2000019367A1 (de) Datenverarbeitungseinrichtung und verfahren zu dessen betrieb zum verhindern einer differentiellen stromverbrauchanalyse

Legal Events

Date Code Title Description
8110 Request for examination paragraph 44
8364 No opposition during term of opposition
R071 Expiry of right