Heim / Sonstig / Was ist ECC-RAM? Gepufferter RAM – was ist das? Sequentielle Funktionseinheiten. Register und Registerspeicher Registerspeicher

Was ist ECC-RAM? Gepufferter RAM – was ist das? Sequentielle Funktionseinheiten. Register und Registerspeicher Registerspeicher

Jeder weiß, dass moderne Computergeräte haben Rom, wo Informationen nur während des Betriebs gespeichert werden. RAM wird in Form von Modulen mit Mikroschaltungen (Chips) mit einem Satz von Zellen zum Speichern von Bitinformationen hergestellt. Jede Speicherzelle ist dafür ausgelegt, Null oder Eins zu speichern. 8 solcher Zellen speichern 8 Bit (das ist bereits 1 Byte). Solche Chips werden auf der Basis von Halbleitern hergestellt. Die Implementierung von Modulen und PC weist jedoch eine Reihe gravierender Unterschiede auf, die wir in diesem Artikel betrachten werden.

Paritätsspeicher.

In einem frühen Stadium der Entwicklung der Computertechnologie war die Technologie zur Herstellung von Halbleiterelementen noch nicht sehr weit entwickelt. Daher bestand beim Schreiben in eine Speicherzelle die Möglichkeit eines Informationsverlusts: Eins wurde hineingeschrieben, aber nicht aufgezeichnet (Null blieb). Um den Vorgang des Schreibens in den Speicher irgendwie zu steuern, wurde eine einfache Datenüberprüfungstechnologie erfunden.

Vor dem Schreiben eines Bytes (8 Bits) wurde die Summe aller Bits in diesem Byte berechnet. Es wurde jedoch nicht die gesamte Prüfsumme gespeichert (um Speicher zu sparen), sondern nur ihr letztes Bit, dessen Wert (Null oder Eins) an einer speziell dafür vorgesehenen Stelle gespeichert wurde. Der Wert dieses Bits (0 oder 1) hing davon ab, ob die Summe der Bits beim Addieren gerade oder ungerade war. Daher wurde dieses Bit als Paritätsbit bekannt.

Nach dem Schreiben des ursprünglichen Bytes in die Speicherzellen wurde die Summe der Bits eines solchen gespeicherten Bytes berechnet und die Parität dieser Summe mit der vorherigen verglichen (deren Wert im Paritätsbit gespeichert wurde). Wenn die Paritäten der Prüfsummen übereinstimmten, wurde davon ausgegangen, dass das Schreiben in den Speicher erfolgreich war. Und wenn sie nicht übereinstimmten, wurde eine Fehlermeldung generiert. Diese Technologie wird als Paritätskontrolle bezeichnet.

Speicher ohne Parität.

Im Laufe der Zeit tauchten zuverlässigere Mikroschaltkreise auf. Die Wahrscheinlichkeit von Fehlern in ihnen wurde geringer. Gleichzeitig wurden die Kosten für elektronische Komponenten gesenkt. Produktion und Verkauf von Computern sind massiv geworden. Für einige Benutzer waren Fehler beim Betrieb von Computern nicht kritisch. Daher wurden auf dem Markt Modelle hergestellt, die Speicher ohne Parität verwendeten. Durch die Abschaffung des "zusätzlichen" neunten Bits (für jedes Byte) und der "exzessiven" Kosten für die Berechnung von Prüfsummen konnten die Kosten für Computer etwas gesenkt und sie der Masse der Verbraucher zugänglich gemacht werden. Solche Computer sind unter Desktop-(Desktop-)Systemen sehr populär geworden.

In bestimmten Industrien, Systemen mit militärisch-verteidigungstechnischer Bedeutung und im Bankensektor bleibt jedoch die Unzulässigkeit von Fehlern in Rechensystemen eine der wichtigsten Aufgaben.

Speicher mit Kontrolle und Fehlerkorrektur.

Die Paritätskontrolltechnologie ist nicht perfekt. Es ist beispielsweise nicht möglich, das "Verschwinden" von 2 Bits gleichzeitig zu erkennen (die Parität ändert sich in diesem Fall nicht). Daher wurde entschieden, dass jedes in den Speicher geschriebene Datenbit nicht in einer Prüfsumme, sondern in mehreren enthalten sein sollte. Mit einem solchen Steuersystem wurde es möglich, gleichzeitig mehrere Fehler und ihre Adressen zu erkennen und diese Fehler zusätzlich zu korrigieren. Diese Technologie wurde Error Correction Code (ECC) genannt, da ein Code berechnet wurde, der eine Fehlerkorrektur erlaubte.

Natürlich sind zusätzliche Register erforderlich, um Prüfsummen zu speichern, was solche Speichermodule teurer macht, aber im Allgemeinen sind Systeme, die auf ECC-Speicher basieren, fehlertoleranter. Solche Speichermodule werden am häufigsten in Serversystemen verwendet.

Speicher mit Parität und ECC-Technologie können sowohl in Server- als auch in Desktop-Systemen verwendet werden. Im ersten Fall ist dies durch die Wichtigkeit der zu lösenden Aufgaben gerechtfertigt (wo der Preis für den kleinsten Fehler sehr hoch ist), im zweiten Fall nicht immer sinnvoll (aus wirtschaftlicher Sicht: schließlich Um Module mit Fehlerkontrolle zu verwenden, müssen Sie ein teureres Motherboard haben, das diese Technologie unterstützt, sonst funktioniert die Fehlerkontrolle einfach nicht).

gepufferter Speicher.

In Computersystemen wird die Steuerung des Schreibens/Lesens in und aus dem Speicher durch einen speziellen Speichercontroller ausgeführt. Dieser Controller muss Zugriff auf alle Speicherzellen haben und die Übertragung von Informationen vom Bus zum Speicher und umgekehrt sicherstellen. Desktop-Systeme verwenden häufig Prozessoren mit integriertem Speichercontroller. Einige Nachteile dieser Implementierung sind die folgenden:

Es gibt nur einen Controller, aber viele Speicherzellen müssen gesteuert werden - es gibt eine Grenze für die Anzahl gleichzeitig bedienter Speicherbänke bei gleichzeitiger Beibehaltung einer hohen Leistung;

Auf einem Datenbus vom Prozessor oder anderen Computerkomponenten müssen sowohl Steuerbefehle als auch Daten an alle verwendeten Speichermodule übertragen werden (die Belastung des Busses steigt).

Um die Situation zu verbessern, wurde entschieden, einen Teil der Funktionen des Controllers in jedem Speichermodul zu implementieren. Dazu wird in das Speichermodul ein spezieller Chip integriert, der als Puffer fungiert und Steuer- und Adresseinstellungsbefehle vom zentralen Prozessor erhält (in diesem Fall geht der Datenfluss zum Speicher parallel zum Befehl über den Bus Fluss). So wurde der gepufferte Speicher geboren.

Später wurden Fehlerkorrekturfunktionen (ECC) in diesen Puffer implementiert, und es wurde auch möglich, den Speicher ohne zusätzliche Belastung des Datenbusses zu erhöhen. Zusätzliche Chips zum Implementieren des Puffers wurden als Register bekannt, und der Speicher selbst wurde als registrierter Speicher bekannt.

Im Laufe der Zeit erschienen auch vollständig gepufferte Speichermodule (FB - Fully Buffered), in deren Puffer (Register) nicht nur Steuersignale, sondern auch Daten nacheinander in einem Strom übertragen wurden. Bei Verwendung eines Zwischenpuffers kommt es zu einer gewissen Verlangsamung des Speicherbetriebs, da zum Schreiben in den Puffer ein Zwischenzyklus erforderlich ist.

Ein solcher Speicher kostet aufgrund des Vorhandenseins eines zusätzlichen Registerchips und der Verwendung komplexer Technologien viel mehr als nicht registrierter Speicher. Aber aufgrund seiner Ergonomie, der Möglichkeit der Lautstärkeerhöhung sowie der Fehlerkontrolle findet es breite Anwendung in Serversystemen, wo es auf stabiles und fehlerfreies Arbeiten mit großen Datenmengen ankommt.

Kompatibilitätsprobleme.

Gepufferte Speichermodule wurden in den frühen Stadien ihrer Entwicklung sowohl in Desktop- als auch in Serversystemen verwendet, aber das Aufkommen von registriertem Speicher beseitigte die Möglichkeit, sie in einem PC zu verwenden.

In Desktop-Systemen ist die Verwendung von registriertem Speicher unpraktisch (zu hohe Kosten) und oft unmöglich, da die meisten in Desktops verwendeten Motherboards keinen registrierten Speicher unterstützen. Motherboards, die in modernen Serversystemen verwendet werden, sind dagegen so konzipiert, dass sie nur mit registriertem Speicher arbeiten, da die Erhöhung der Kapazität (ohne die Plattform zu ändern) und die Fähigkeit, Fehler zu kontrollieren, wichtigere Faktoren für Server sind als die Kosten.

Sehr oft stoßen wir bei der Auswahl von Komponenten auf verschiedene unverständliche Begriffe und Konzepte. Bei der Auswahl von RAM kann es sich um DDR, DDR2, DDR3, DDR4, RDRAM, RIMM usw. handeln. Wenn bei den Haupttypen von RAM mehr oder weniger klar ist und die Unterstützung für jeden Typ in der Beschreibung des Motherboards angegeben ist, wirft ein Parameter wie ECC für viele einige Fragen auf. Was ist ECC-Speicher? Ist es möglich, ECC-RAM auf einem Heimcomputer zu verwenden, und was ist der Hauptunterschied zwischen ECC-RAM und Nicht-ECC-RAM?

Was ist ECC-Speicher?

Dies ist eine spezielle Art von RAM mit eingebauter Fehlerkorrekturhardware. Solche Speichermodule wurden speziell für Server entwickelt, bei denen die Anforderungen an die Korrektheit der Daten und die Zuverlässigkeit ihrer Verarbeitung wesentlich höher sind als bei Personal Computern.

ECC-Ram erkennt automatisch spontane Datenänderungen in Speicherblöcken, also aufgetretene Fehler. Regulärer Desktop-Speicher ohne Unterstützung von Korrekturmechanismen wird als Non-ECC bezeichnet.

Was kann ECC-Speicher und wie funktioniert er?

Der fehlerkorrigierende Speicher kann 1 Bit geänderter Daten in jedem Maschinenwort erkennen und korrigieren. Was bedeutet das? Wenn die Daten zwischen dem Schreiben und Lesen aus irgendeinem Grund geändert wurden (d. h. ein Fehler aufgetreten ist), korrigiert der ECC-RAM den Wert auf den richtigen Wert. Eine solche Funktionalität erfordert Unterstützung durch den RAM-Controller. Diese Unterstützung kann durch den Motherboard-Chipsatz, den eingebauten RAM-Controller in modernen Prozessoren, organisiert werden.

Der Fehlerkorrekturalgorithmus basiert auf dem Hamming-Code, aber andere Algorithmen werden verwendet, um mehr als einen Fehler zu korrigieren. In der Praxis werden Speichermodule verwendet, bei denen für jeweils 8 Speicherchips ein weiterer Chip hinzugefügt wird, der ECC-Codes speichert (8 Bit für jeweils 64 Bit des Hauptspeichers).

Warum ist der Wert in RAM-Speicherzellen verfälscht?

Eine der Hauptursachen für Datenverzerrungen sind kosmische Strahlen. Obwohl wir uns auf der Erde unter dem Schutz der Atmosphäre befinden, tragen kosmische Strahlen einige Elementarteilchen mit sich, die die Elektronik, einschließlich des Computerspeichers, beeinträchtigen können. Unter Einwirkung der Energie dieser Teilchen ist eine Zustandsänderung der Speicherzelle möglich, was zu Datenverfälschungen und Fehlern führt. Interessanterweise nimmt die Exposition gegenüber kosmischer Strahlung mit der Höhe zu, sodass Computersysteme in großer Höhe besser geschützt werden müssen.

Funktionsweise des ECC-Speichers

Einer der Fehlerkontrollmechanismen im RAM ist die Verwendung der Paritätstechnologie, mit der Sie die Tatsache eines Fehlers in den Daten beheben können, die Daten jedoch nicht korrigieren können.

Der Hamming-Code wird für die ECC-Korrektur verwendet. ECC schützt Computersysteme vor fehlerhaftem Betrieb aufgrund von Speicherbeschädigung und verringert die Wahrscheinlichkeit eines kritischen Systemausfalls. Speicher mit ECC-Unterstützung ist je nach Anwendung 2–3 % langsamer als Speicher ohne ECC.

Gründe für die Verwendung von ECC-Speicher

Es gibt keinen objektiven Grund, ECC-fähigen RAM in Desktop-Computern zu verwenden. Da die Wahrscheinlichkeit des Auftretens von Datenfehlern äußerst gering ist, ist es bei normalen PC-Nutzungsszenarien äußerst unwahrscheinlich, dass ein Fehler zu Problemen oder Abstürzen des PCs führt. Das schlimmste Szenario ist das Aussehen blauer Bildschirm BSOD-Tod. Darüber hinaus wird die Verwendung von ECC-RAM dadurch behindert, dass Desktop-Prozessoren und Motherboards Die meisten unterstützen diese Art von RAM nicht.

Die Verwendung von RAM mit ECC-Fehlerkorrektur ist für den Server- und Unternehmensbereich relevant, wo die Anforderungen an Fehlertoleranz und Zuverlässigkeit sehr hoch sind und die Korrektheit der Daten die Ergebnisse von Berechnungen und den Betrieb des Gesamtsystems beeinflussen kann .

Wie geht es Ihnen? -

Kann außeinandergehalten werden drei Hauptarten von Speicher, die in Mikrocontrollern verwendet werden:

● Speicher Programme, Dies ist ein Nur-Lese-Speicher zum Speichern von Programmcode und Konstanten. Dieser Speicher ändert seinen Inhalt während der Programmausführung nicht;

● Speicher Daten, entwickelt, um Variablen (Ergebnisse) während der Programmausführung zu speichern;

registrieren Speicher bestehend aus internen Registern des Mikrocontrollers. Betrachten Sie die Merkmale jeder dieser Arten von Gedächtnis.

Programmspeicher.

Die Notwendigkeit eines solchen Speichers ergibt sich aus der Tatsache, dass der Mikrocontroller keine Speichervorrichtungen wie eine Festplatte im Computer enthält, von der das ausführbare Programm geladen wird. Daher muss der Programmcode dauerhaft im Mikrocontroller gespeichert werden.

Alle Arten von Programmspeichern sind bis nichtflüchtig Speicher oder Nur-Lese-Speicher (ROM), dessen Inhalt erhalten bleibt, nachdem der Mikrocontroller ausgeschaltet wird.

Während der Ausführung wird das Programm aus diesem Speicher gelesen, und die Steuereinheit (Befehlsdecodierer) sorgt für dessen Decodierung und führt die erforderlichen Operationen durch. Der Inhalt des Programmspeichers kann während der Programmausführung nicht geändert (umprogrammiert) werden. Daher kann sich die Funktionalität des Mikrocontrollers nicht ändern, bis der Inhalt seines Programmspeichers gelöscht (wenn möglich) und neu programmiert (mit neuen Anweisungen gefüllt) wird.

Es sei darauf hingewiesen, dass die Bitzahl des Mikrocontrollers (8, 16 oder 32 Bit) entsprechend der Bitzahl seines Datenbusses angegeben wird.

Wenn ein Gerät als 8-Bit bezeichnet wird, bedeutet dies die Anzahl der Datenbits, die der Mikrocontroller verarbeiten kann.

In der Harvard-Architektur können Befehle größer als Daten sein, damit ein vollständiger Befehl in einem Taktzyklus gelesen werden kann. Beispielsweise verwenden PIC-Mikrocontroller je nach Modell Befehle mit einer Bitbreite von 12, 14 oder 16 Bit. BEIM AVR-Mikrocontroller Der Befehl ist immer 16 Bit breit. Alle diese Mikrocontroller haben jedoch einen 8-Bit-Datenbus.

Bei Geräten mit Princeton-Architektur bestimmt die Datenbreite normalerweise die Bitbreite (Anzahl der Leitungen) des verwendeten Busses. In Motorola 68HC05-Mikrocontrollern befindet sich ein 24-Bit-Befehl in drei 8-Bit-Programmspeicherzellen. Um einen solchen Befehl vollständig abzurufen, ist es notwendig, drei Lesezyklen dieses Speichers durchzuführen.

Schauen wir uns fünf an Typen nichtflüchtiger residenter Speicher oder Read Only Memory (ROM), der zum Speichern von Programmen verwendet wird.

Erinnerung maskieren.

Masken-ROMs (Mask-ROM oder einfach ROM) werden in der Phase der Mikrocontroller-Produktion für ein vollständig debuggtes Programm erstellt. Auf einer Glasfotomaske wird bei Verwendung des Programms ein Maskenmuster erstellt. Die resultierende Photomaske mit einer Maske wird verwendet, um Verbindungen zwischen den Elementen zu bilden, die den Programmspeicher bilden.

Die ersten Masken-ROMs erschienen in den frühen 1960er Jahren und werden dank solcher noch heute verwendet Tugenden B. niedrige Kosten bei der Massenproduktion von Produkten und hohe Zuverlässigkeit der Programmspeicherung.

Nachteile Masken-ROM - Jede Änderung des Anwendungsprogramms ist mit erheblichen Kosten und Zeit verbunden, um einen neuen Satz von Fotomasken zu erstellen und in die Produktion einzuführen.

Einmal programmierbarer Speicher.

Dieser Speicher (One-Time Program mable ROM – OTPROM) ist benutzerprogrammierbar und enthält anfänglich Zellen mit einzelnen Bits. Es werden nur solche Speicherzellen programmiert, deren Inhalt den Wert 0 annehmen muss. Dazu wird eine Folge von erhöhten Spannungsimpulsen an die Speicherzelle angelegt.

Die Spannungshöhe, die Anzahl der Impulse und deren Zeitparameter müssen genau den Spezifikationen entsprechen. Nach dem Schreiben von Null ist es unmöglich, einen einzelnen Wert wiederherzustellen. Aus diesem Grund wird Speicher genannt einmalig programmierbar ROM. Allerdings sollte man auf die Möglichkeit hinweisen zusätzliche Programmierung(unberührte) Zellen mit einzelnen Bits.

Mikrocontroller mit einmalig programmierbarem ROM werden in Produkten eingesetzt, die in Kleinserien hergestellt werden.

Reprogrammierbarer Speicher mit UV-Löschung.

Die Speicherzelle des löschbaren programmierbaren ROM (EPROM) ist ein LIPSMOS-Transistor (Floating Gate Avalanche Injection). Im Anfangszustand (vor dem Schreiben) wird beim Zugriff auf eine Zelle eine logische Einheit gelesen. Die Speicherprogrammierung läuft darauf hinaus, logische Nullen in die entsprechenden Zellen zu schreiben. EP-ROMs sind zur Mehrfachprogrammierung fähig, deren Technologie der Technologie der einmalig programmierbaren ROMs ähnlich ist.

Vor jeder Programmiersitzung Löschvorgang um den ursprünglichen Zustand der Speicherzellen wiederherzustellen. Dazu ist im Mikrocontrollergehäuse ein spezielles Fenster vorgesehen, das mit ultravioletten Strahlen bestrahlt wird. Die Anzahl der ROM-Lösch-/Programmiersitzungen beträgt 25–100 Mal, abhängig von der Programmiertechnologie (eingestellte Werte der Versorgungsspannungen, Anzahl und Dauer der Impulse) und der Löschtechnologie (Wellenlängenbereich der ultravioletten Strahlungsquelle).

Mikrocontroller mit EPROM-Speicher werden aufgrund ihrer hohen Kosten in Prototypen entwickelter Anwendungen verwendet.

Zur Kostenreduzierung sind EPROM-Chips in einem Gehäuse ohne Fenster beigelegt (EPROM-Version mit Einmalprogrammierung). Aus Kostengründen werden häufig EPROM-Versionen anstelle von maskenprogrammierbaren ROMs verwendet.

Reprogrammierbarer Speicher mit elektrischer Löschung.

Als Speicherelement mit elektrischer Löschung (Electrically Erasable Programmable ROM - EEPROM oder E2 PROM) wird ein Transistor mit der MNOS-Struktur (Metal, Silicon Nitride, Silicon Oxide, Semiconductor) verwendet, wodurch das ROM relativ kostengünstig ist (bezogen auf EPROM) und erlaubt eine maximale Anzahl von Lösch-/Programmierzyklen 10 4 -10 6 . Darüber hinaus können Sie mit der EEPROM-Speicherprogrammiertechnologie implementieren Byte löschen und Byte-Programmierung, ohne den Controller von der Platine zu entfernen, wodurch Sie ihn regelmäßig aktualisieren können Software.

Trotz dieser Vorteile wird dieser Speichertyp aus zwei Gründen nicht häufig zum Speichern von Programmen verwendet:

● EEPROMs haben eine begrenzte Kapazität;

● Es sind ROMs vom Typ FLASH erschienen, die ähnliche Benutzereigenschaften haben, aber zu geringeren Kosten.

Flash-Speicher.

Elektrisch programmierbare und elektrisch löschbare FLASH-Speicher (FLASH-ROM) wurden als Alternative zwischen billigen einmalig programmierbaren ROMs mit hoher Kapazität und teuren EEPROM-ROMs geschaffen. kleine Kapazität. FLASH-Speicher (wie EEPROM) behielten die Fähigkeit, wiederholt zu löschen und zu programmieren.

Der Adressierungstransistor jeder Zelle wurde aus der ROM-Schaltung entfernt, was es einerseits unmöglich machte, jedes Speicherbit separat zu programmieren, andererseits die Speichermenge zu erhöhen. Daher wird der FLASH-Speicher gelöscht und programmiert Seiten oder Blöcke.

Somit unterscheidet sich der FLASH-Speicher funktionell kaum vom EEPROM. Der Hauptunterschied besteht in der Methode zum Löschen der aufgezeichneten Informationen: Wenn im EEPROM-Speicher das Löschen für jede Zelle separat durchgeführt wird, dann im FLASH-Speicher - in ganzen Blöcken. Bei Mikrocontrollern mit EEPROM-Speicher müssen einzelne Programmteile geändert werden, ohne dass das gesamte Gerät neu programmiert werden muss.

Gegenwärtig beginnen MCUs mit FLASH, MCUs mit einmalig programmierbarem (und sogar maskiertem) ROM zu ersetzen.

ROM-Programmierung.

Beachten Sie, dass der Mask-ROM-Speicher nur im Werk während der Herstellung des MK programmiert wird. OTPROM- und EPROM-Speichertypen bieten dem Entwickler Programmiermöglichkeiten unter Verwendung eines Programmierers und einer Booster-Spannungsquelle, die mit den entsprechenden Ausgängen der MCU verbunden sind.

EEPROM und FLASH-Speicher bezieht sich auf reprogrammable, or umprogrammierbar Erinnerung. Die zum Löschen/Programmieren erforderliche erhöhte Leistung wird in den EEPROM- und FLASH-Speichermodulen moderner Steuerungen unter Verwendung von so genannten eingebauten Spannungsverstärkungsschaltungen erzeugt Pumpgeneratoren. Dank der Umsetzung Programmsteuerung Durch das Ein- und Ausschalten des Pumpgenerators wurde es im Rahmen des zu entwickelnden Systems prinzipiell möglich, FLASH- und EEPROM-Speicherzellen zu programmieren oder zu löschen. Diese Programmiertechnik wird aufgerufen Programmierung im System(In Systemprogrammierung - ISP).

Es erfordert keine spezielle Ausrüstung (Programmierer), was die Programmierkosten reduziert. Mikrocontroller mit ISP-Speicher können programmiert werden, nachdem sie auf der Platine des Endprodukts installiert wurden.

Betrachten wir, wie die Möglichkeit der Programmierung des EEPROM-Speichers unter der Kontrolle eines Anwendungsprogramms implementiert (und verwendet) wird. Wenn das Programm mit dem Programmieralgorithmus in einem separaten Speichermodul mit einer nominellen Versorgungsspannung gespeichert ist und der EEPROM-Speicher mit Pumpgeneratoren versehen ist, dann kann eine ISP-Programmierung des EEPROM-Speichers durchgeführt werden. Dieser Umstand macht den EEPROM-Speicher zu einem idealen nichtflüchtigen Speichergerät zum Speichern von Benutzereinstellungen, die während des Betriebs des Produkts geändert werden. Ein Beispiel ist ein moderner Fernseher, dessen Kanaleinstellungen beim Ausschalten gespeichert werden.

Daher war einer der Trends zur Verbesserung des residenten Speichers von 8-Bit-MKs die Integration von zwei nichtflüchtigen Speichermodulen auf dem MK-Chip: FLASH (oder OTP) - zum Speichern von Programmen und EEPROM - zum Speichern umprogrammierbarer Konstanten.

Betrachten Sie Technologie (re) FLASH-Programmierung–Speicher mit eingebautem Pumpgenerator, der von einem Anwendungsprogramm gesteuert wird. Zunächst stellen wir zwei Tatsachen fest:

● Wenn der EEPROM-Speicher zum Speichern umprogrammierbarer Konstanten in den MK eingebaut ist, dann macht das Programmieren mehrerer Bits des FLASH-Speichers während des Betriebs des fertigen Produkts keinen Sinn. Bei Bedarf ist es besser, sofort den Umprogrammierungsmodus zu verwenden;

● Das FLASH-Speicher-Programmierprogramm sollten Sie nicht im FLASH-Speicher selbst speichern, da ein Wechsel in den Programmiermodus ein weiteres Auslesen unmöglich macht. Das Programmierprogramm muss sich in einem anderen Speichermodul befinden.

Um die Programmiertechnik im System zu implementieren, wird einer der seriellen MC-Ports ausgewählt, der von einem speziellen bedient wird Kommunikationsüberwachungsprogramm, befindet sich im residenten Masken-ROM MK. Über die serielle Schnittstelle Persönlicher Computer lädt das Programm in den RAM Programmierung und angewandt Programm, das dann im FLASH-Speicher abgelegt wird. Da der residente RAM des MK eine kleine Menge hat, wird das Anwendungsprogramm in getrennten Blöcken (Teilen) geladen. Wenn ein Maskenspeichermodul mit einem Programmierprogramm in der MCU installiert ist, wird nur das Anwendungsprogramm in den RAM geladen.

Mikrocontroller, die Programmiertechnologie im System implementieren, umfassen häufig vier Speichertyp:

FLASH – Programmspeicher, Masken-ROM – Kommunikationsüberwachungsspeicher, EEPROM – Speicher zum Speichern variabler Konstanten und Zwischendaten-RAM.

Die Technologie der Programmierung im System wird nun zunehmend verwendet, um Anwendungsprogramme in Mikrocontroller einzugeben, die sich auf der Platine des Endprodukts befinden. Sie Würde- Fehlen eines Programmierers und hohe Zuverlässigkeit der Programmierung aufgrund der Stabilität der spezifizierten internen Modi des MC.

Als Beispiel stellen wir die Indikatoren des residenten FLASH-Speichers der MC HC08-Familie von Motorola vor:

● garantierte Anzahl von Lösch-/Programmierzyklen - 10 5 ;

● Garantierte Aufbewahrungszeit der aufgezeichneten Informationen – 10 Jahre, was praktisch dem Lebenszyklus des Produkts entspricht; FLASH-Speichermodule arbeiten und werden mit der MK-Versorgungsspannung von 1,8 bis 2,7 V programmiert;

● Die äquivalente Programmierzeit für 1 Byte Speicher beträgt 60 µs.

Datenspeicher.

Wird als residenter Datenspeicher verwendet statisch Random Access Memory (RAM), mit dem Sie die Taktfrequenz auf beliebig kleine Werte reduzieren können. Der Inhalt von RAM-Zellen wird (anders als beim dynamischen Speicher) bis zur Nullfrequenz gespeichert. Ein weiteres Merkmal des statischen RAM ist die Fähigkeit, die Versorgungsspannung auf ein bestimmtes minimal zulässiges Niveau zu reduzieren, bei dem das Mikrocontroller-Steuerprogramm nicht ausgeführt wird, aber der Inhalt im RAM gespeichert wird.

Der Speicherpegel hat einen Wert in der Größenordnung von einem Volt, der es ermöglicht, den MK bei Bedarf von einer autonomen Quelle (Batterie oder Akku) mit Strom zu versorgen, um Daten zu speichern. Einige MK (z. B. DS5000 von Dallas Semiconductor) haben eine autarke Stromversorgung im Gehäuse, die den Erhalt von Daten im RAM für 10 Jahre garantiert.

Ein charakteristisches Merkmal von Mikrocontrollern ist die relativ kleine Menge (Hunderte von Bytes) an Direktzugriffsspeicher (RAM), der zum Speichern von Variablen verwendet wird. Dies lässt sich durch mehrere Faktoren erklären:

● Streben nach Vereinfachung der MC-Hardware;

● Verwenden bestimmter Regeln beim Schreiben von Programmen, die darauf abzielen, die Größe des RAM-Speichers zu reduzieren (z. B. werden Konstanten nicht als Variablen gespeichert);

● Verteilung der Speicherressourcen in einer solchen Weise, dass anstelle der Speicherung von Daten im RAM die maximale Nutzung der Hardware (Timer, Indexregister usw.) erfolgt;

● Ausrichtung von Anwendungsprogrammen, um ohne die Verwendung großer Datenfelder zu arbeiten.

Stapelfunktionen.

In Mikrocontrollern ein Teil des RAM-Speichers, genannt Stapel. Während dieser Operationen werden die Inhalte des Programmzählers und der Hauptregister (Akkumulator, Statusregister, Index und andere Register) gespeichert und bei der Rückkehr zum Hauptprogramm wiederhergestellt. Denken Sie daran, dass der Stapel nach dem Prinzip funktioniert: zuletzt rein, zuerst raus(Last In, First Out-LIFO).

In der Princeton-Architektur wird RAM verwendet, um viele Hardwarefunktionen zu implementieren, einschließlich Stapelfunktionen. Im Speicheradressraum werden getrennte Bereiche für Befehle, Mehrzweckregister, Sonderfunktionsregister usw. zugewiesen. Dies verringert die Leistungsfähigkeit des Controllers, da Zugriffe auf verschiedene Speicherbereiche nicht gleichzeitig durchgeführt werden können.

Harvard-Mikroprozessoren können Programmspeicher, Datenspeicher (einschließlich E/A-Raum) und den Stapel parallel (gleichzeitig) adressieren.

Wenn zum Beispiel ein CALL-Unterprogrammbefehl aktiviert wird, werden mehrere Aktionen gleichzeitig ausgeführt.

In der Princeton-Architektur wird, wenn ein CALL-Befehl ausgeführt wird, der nächste Befehl erst abgerufen, nachdem der Inhalt des Programmzählers auf den Stapel geschoben wurde.

Aufgrund der geringen RAM-Kapazität in Mikrocontrollern beider Architekturen können Probleme bei der Ausführung des Programms auftreten:

● wird ein separater Stack belegt, so wird nach dessen Befüllung der Inhalt des Stackpointers zyklisch verändert, wodurch der Stackpointer auf die zuvor gefüllte Stackzelle zu verweisen beginnt. Daher wird nach zu vielen CALL-Befehlen die falsche Rücksprungadresse auf dem Stack sein, die anstelle der richtigen Adresse geschrieben wurde;

● Wenn der Mikroprozessor einen gemeinsamen Speicherbereich verwendet, um Daten und den Stapel aufzunehmen, dann werden die Daten durch den Stapelüberlauf überschrieben. Betrachten wir die Funktionen zum Speichern des Inhalts von Registern auf dem Stack aufgrund des Fehlens von Anweisungen zum Laden auf den Stack (PUSH) und zum Entnehmen aus dem Stack (POP). In solchen Mikrocontrollern werden statt der PUSH- und POP-Befehle zwei Befehle und ein Indexregister verwendet, das explizit auf den Stack-Bereich zeigt. Die Befehlsfolge muss so sein, dass eine Unterbrechung zwischen dem ersten und zweiten Befehl nicht zu Datenverlust führt. Das Folgende ist eine Simulation der PUSH- und POP-Befehle unter Berücksichtigung der angegebenen Anforderung.

DRÜCKEN ; Daten auf den Stack-Dekrement-Index laden; Zur nächsten Stapelposition verschieben move [index], ace; Speichere den Inhalt des Akkumulators auf dem Stack POP ; Pop-Daten vom Stack move ace, ; Schieben Sie den Stack-Wert in den Akkumulator-Inkrementindex ; Wechseln Sie zur vorherigen Stapelzelle

Wenn das Programm nach der ersten Anweisung unterbrochen wird, geht der Inhalt des Stacks nicht verloren, nachdem der Interrupt behandelt wurde.

Speicher registrieren.

Mikrocontroller (wie Computersysteme) haben viele Register, die verwendet werden Zum Fahren verschiedene interne Knoten und Externe Geräte. Diese beinhalten:

● Register Prozessorkern(Batterie, Statusregister, Indexregister);

● Register Management(Interrupt-Steuerregister, Timer-Steuerregister);

● Dateneingangs-/-ausgangsregister (Datenregister und parallele, serielle oder analoge Eingangs-/Ausgangssteuerregister).

Je nachdem, wie Register im Adressraum platziert werden, können wir unterscheiden:

● Mikrocontroller, in denen sich alle Register und Datenspeicher befinden ein Adressraum, d. h. Register sind mit dem Datenspeicher ausgerichtet. In diesem Fall werden E/A-Geräte dem Speicher zugeordnet;

● Mikrocontroller, in denen Ein-/Ausgabegeräte getrennt aus dem gesamten Speicheradressraum. Der Hauptvorteil des Verfahrens zum Platzieren von E / A-Registern in einem separaten Adressraum besteht darin, dass es das Schema zum Verbinden von Programmspeicher und Daten mit einem gemeinsamen Bus vereinfacht. Ein separater E/A-Raum bietet Prozessoren mit Harvard-Architektur einen zusätzlichen Vorteil, indem er ermöglicht, dass der Befehl gelesen wird, während auf das E/A-Register zugegriffen wird.

Wie auf Register zugegriffen wird, hat einen erheblichen Einfluss auf ihre Leistung. In Prozessoren mit einer RISC-Architektur befinden sich alle Register (häufig der Akkumulator) an expliziten Adressen, was eine größere Flexibilität bei der Organisation der Arbeit des Prozessors bietet.

Über externe Speicher.

In Fällen, in denen nicht genügend residenter Programmspeicher und Datenspeicher für die entwickelten Anwendungen vorhanden sind, wird zusätzlicher externer Speicher an den Mikrocontroller angeschlossen. bekannt zwei Hauptwege:

● Verbindung Externer Speicherüber eine Busschnittstelle (wie bei Mikroprozessorsystemen). Viele Mikrocontroller haben spezielle Hardware für diese Verbindung;

● Verbindung des Speichers mit Eingabe-Ausgabe-Geräten Gleichzeitig wird über diese Geräte auf den Speicher zugegriffen Software-Tools. Dieses Verfahren ermöglicht die Verwendung einfacher E/A-Geräte ohne die Implementierung komplexer Busschnittstellen. Die Wahl des Verfahrens hängt von der jeweiligen Anwendung ab.

Anmerkung: Es wird das Funktionsprinzip von Registern als Elemente des elektronischen Gedächtnisses betrachtet.

Das Register ist ein IC mit mittlerem Integrationsgrad, das zum Speichern und Speichern eines Mehrbitworts ausgelegt ist.

Registerverriegelung

Protozoen registrieren ist eine Parallelschaltung mehrerer Trigger (Abb. 8.1, a). Das UGO-Register-Latch ist in Abb. 2 dargestellt. 8.1, b. Wenn ein registrieren Auf Flip-Flops aufgebaut, heißt es registrieren-"verriegeln". Pufferverstärker und Steuerungen sind in der Regel Teil des Register-ICs, beispielsweise wie in Abb. 8.2, a. Hier ist ein Funktionsdiagramm eines 8-Bit D- Latch-Register KR580IR82 mit drei Ausgangszuständen. Sein UGO ist in Abb. 8.2, b.


Reis. 8.1. Vier-Bit-"Latch"-Register mit direkten Ausgängen: a - Funktionsdiagramm; b - UG

dritter Staat(die ersten beiden sind logisch 0 und logisch 1) ist der Zustand der Ausgänge des IC, in dem sie sowohl von der Stromquelle als auch vom gemeinsamen Punkt getrennt sind. Andere Namen für diesen Zustand sind hoher Widerstand, hochohmiger Zustand, Z-Zustand[ , mit. 61 - 63; , mit. 68-70].

Dies wird erreicht dritter Staat Sonderschaltungslösung [ , p. 117 – 118] im Ausgangsteil der Logikelemente, wenn die Ausgangstransistoren der Logikelemente gesperrt sind und weder die Versorgungsspannung noch das Massepotential (nicht 0 und nicht 1) an den Ausgang liefern.

Registrieren KR580IR82 besteht aus 8 Funktionsblöcken (Abb. 8.2, a). Jeder von ihnen beinhaltet D-Trigger-Latch mit Aufzeichnung an der Hinterkante und einem leistungsstarken 3-State-Output-Gate. STB- Strobe-Eingang, - Übertragungsfreigabe - ein Signal, das den dritten Zustand steuert: wenn , dann werden Informationen von den Eingängen zu den entsprechenden Ausgängen übertragen, wenn , werden alle Ausgänge in den dritten Zustand versetzt. Wenn und IS im Bus-Shaper-Modus arbeitet, werden die Informationen von den Eingängen unverändert an die Ausgänge übertragen.

Bei der Beantragung Hinterkante Es gibt einen "Snap" der übertragenen Informationen in Triggern, das heißt, es merkt sich, was zum Zeitpunkt der Einreichung war . Tschüss, Puffer registrieren speichert diese Informationen, unabhängig von den Informationen auf D-Eingänge. Beim Anlegen einer Vorderkante Beim Speichern ändert sich der Status der Ausgänge entsprechend der Änderung der entsprechenden Eingänge. Wenn , dann werden alle Ausgangsverstärker in den dritten Zustand überführt. In diesem Fall, unabhängig vom Zustand der Eingänge, alle Ausgänge registrieren in den Drittstaat überführt.

Alle Registerausgänge können einen aktiven Nullpegel haben, der auf dem UGO in Form von inversen Signalen und Ausgangsbezeichnungen angezeigt wird.

Es gibt viele Sorten registriert B. Schieberegister [ , Kapitel 8], bei denen Trigger so verschaltet sind, dass sie Informationen sequentiell von einem Trigger zum anderen übertragen [ , S. 109 - 122], aber hier konzentrieren wir uns auf das Latch-Register und seine Anwendung.

Speicher registrieren

Registrierter Speicher - Registerdatei - ist ein Speicher mit extrem wahlfreiem Zugriff (SRAM) - eine Schaltung aus mehreren Registern, die zum Speichern mehrerer Mehrbitwörter ausgelegt ist.

Auf Abb. 8.3 zeigt eine beispielhafte Implementierung SOZU, bestehend aus vier 8-Bit registriert(Der Anschluss von RG2 und RG3 ist nicht dargestellt, er erfolgt auf die gleiche Weise). Gegeben SOZU hat ein Informationsvolumen von 4x8 Bit - 4 Worte zu 8 Bit oder 4 Byte. Hier DI - Dateneingang- Eingangsdatenbus, DO-Datenausgabe- Ausgangsdatenbus, WR- Signal in SRAM schreiben, RD- Signal zum Lesen von Informationen aus SRAM, VSD - interner Datenbus.

Jedermann registrieren hat eine zweistellige Adresse, die den Eingängen des Decoders zugeführt wird. Zum Beispiel ganz links in Abb. 8.3 registrieren RG1 hat die Adresse , das nächste - (in der Figur nicht gezeigt), das nächste - (nicht gezeigt) und ganz rechts registrieren RG4 hat die Adresse .

Wenn ein aktives Schreibsignal vorhanden ist, gibt der Decoder in Übereinstimmung mit dem Adresscode eines aus registriert aktives Signal darüber, welche Informationen vom Eingangsdatenbus kommen DI wird in die ausgewählte geschrieben registrieren. Auf der Hinterkante die Informationen in diesem registrieren"schnappt".

Wenn zum Beispiel auf DIübermittelte Daten und Adresse registrieren gleich , dann wird das aktive Signal am Ausgang "3" des Decoders wie am Register RG4 angelegt. Zu diesem Zeitpunkt haben die verbleibenden Register einen inaktiven Signalpegel, daher werden Informationen vom Eingangsdatenbus in RG4 geschrieben, und die früher aufgezeichneten Informationen werden in den verbleibenden Registern gespeichert.

Bei einem aktiven Lesesignal werden alle 8 Multiplexer aktiviert (der erste, zweite und achte sind im Diagramm dargestellt, die restlichen sind ähnlich beschaltet), da an ihren Enable-Eingängen ein aktives Signal anliegt. Gemäß dem Adress-Decoder schalten Multiplexer Informationen von dem ausgewählten Register auf den Ausgangsdatenbus. Beispielsweise lautet die Registeradresse . Dann wird es bei allen Multiplexern so sein, dass sie alle beginnen, Informationen gemäß der Adresse auszuwählen. Daher auf dem Ausgangsbus TUN Bits des internen Busses mit den Nummern 25 - vom ersten Multiplexer, 26 - vom zweiten, 27 - vom dritten, 28 - vom vierten, 29 - vom fünften, 30 - vom sechsten, 31 - vom siebten und 32 - vom achten Multiplexer wird gegeben. Also Informationen, die eine Kopie des Inhalts sind registrieren RG 4 mit der Adresse wird auf den Ausgangsdatenbus übertragen DO - unveränderter Zustand des Multiplexerausgangs.

Es gibt zwei Haupttypen von Direktzugriffsspeichern (RAM); Sie sind gepufferter Speicher – oder registrierter Speicher – und ungepufferter Speicher. Ungepufferter Speicher ist schneller und oft viel billiger als gepufferter Speicher. Es handelt sich also um eine Art Modul, das in fast allen Heim-Desktop- und Laptop-Computern zu finden ist. Gepufferter Speicher ist teurer als der ungepufferte Typ und aufgrund der Art und Weise, wie er Datenspeicherung und -abruf handhabt, auch langsamer.
Gepufferter Speicher ist jedoch viel stabiler als ungepufferte Formen und wird daher hauptsächlich in Mainframe-Computern und Servern verwendet.

Ungepufferter Speicher ist bei weitem die häufigste Form von Computerspeichermodulen, die im täglichen Gebrauch zu finden sind. Diese Speichermodule sind im Vergleich zu gepufferten Speichermodulen billig herzustellen, teilweise aufgrund ihrer üblichen Verwendung in Heim- und kommerziellen Computern und auch, weil sie weniger verbrauchen Hardware-. Ein ungepuffertes Speichermodul hat keine eingebaute Hardware, die als Register für Anweisungen zwischen dem RAM-Chip und der Speichersteuerung des Computers dient. Dies führt zu einer schnelleren Leistung, erhöht jedoch das Risiko eines Gedächtnisverlusts, der sich aus der zufälligen Art der Informationsplatzierung und des Abrufs ergibt, insbesondere in Zeiten intensiver Aktivität.

Der am häufigsten als registrierter Speicher bezeichnete gepufferte Speicher. Ungepufferter Speicher behielt seltsamerweise seinen Namen und wurde nicht in nicht registrierten Speicher geändert. Gepufferter Speicher unterscheidet sich vom ungepufferten Typ darin, dass er ein Hardwareregister hat, das Informationen im Cache für einen Zyklus des Speicherchips speichert. Während dieser Vorgang zu einem langsameren Speicherchip führen kann, bietet er zusätzliche Stabilität und verringert das Risiko von Speicherfehlern.

Im allgemeinen Verbrauchergebrauch scheint der Geschwindigkeitsunterschied zwischen den beiden Arten von Speichermodulen vernachlässigbar zu sein. In Zeiten intensiven Informationsaustausches treten Latenzen auf, die anhand des Registers beobachtet werden. Gepufferter Speicher wird üblicherweise in Servercomputern und Mainframe-Systemen verwendet, um Stabilität und Schutz vor Schäden zu bieten, die in ungepufferten Modulen auftreten können, wenn sie einer konstanten starken Nutzung ausgesetzt sind. Obwohl gepufferte Module teurer und im Allgemeinen langsamer im Betrieb sind, machen die Speicherstabilität und Datensicherheit dies in einer Produktionsumgebung mehr als wett.