Harvard Architektur

Das Harvard Architektur ist ein Rechnerarchitektur mit separat Lagerung und Signalwege für Anweisungen und Daten. Es steht im Gegensatz zu dem Von Neumann Architektur, wo Programmanweisungen und Daten den gleichen Speicher und die gleichen Pfade teilen.
Der Begriff stammt aus dem Harvard Mark i Relaisbasierter Computer, der Anweisungen auf speicherte Stempelband (24 Bit breit) und Daten in elektromechanisch Zähler. Diese frühen Maschinen hatten Datenspeicher vollständig in der enthalten Zentrale Verarbeitungseinheitund lieferte keinen Zugriff auf die Anweisungsspeicherung als Daten. Programme mussten von einem Bediener geladen werden; Der Prozessor konnte nicht initialisieren selbst.
Moderne Prozessoren erscheinen dem Benutzer von Neumann -Maschinen, wobei der Programmcode im selben gespeichert ist Haupterinnerung als Daten. Aus den interne und weitgehend unsichtbaren Leistungsgründen für den Benutzer haben die meisten Designs getrennt Prozessor Caches für die Anweisungen und Daten mit separaten Wegen in den Prozessor für jeden. Dies ist eine Form der sogenannten als die Modifizierte Harvard -Architektur.
Speicherdetails
In einer Harvard -Architektur müssen die beiden Erinnerungen keine Merkmale teilen. Insbesondere die Wort Breite, Timing, Implementierungstechnologie und Speicheradresse Struktur kann unterschiedlich sein. In einigen Systemen können Anweisungen für vorprogrammierte Aufgaben gespeichert werden Nur-Lese-Speicher während der Datenspeicher im Allgemeinen erfordert Speicher des Schreibens. In einigen Systemen gibt es viel mehr Anweisungsspeicher als Datenspeicher, sodass die Anweisungsadressen breiter sind als Datenadressen.
Kontrast zu von Neumann -Architekturen
In einem System mit einem reinen Von Neumann Architektur, Anweisungen und Daten werden im selben Speicher gespeichert, sodass die Anweisungen über denselben Datenpfad abgerufen werden, der zum Abrufen von Daten verwendet wird. Das bedeutet, dass a Zentralprozessor Kann keine Anweisung gleichzeitig lesen und Daten aus oder aus dem Speicher lesen oder schreiben. In einem Computer, der die Harvard -Architektur verwendet, kann die CPU sowohl einen Anweisungen lesen als auch gleichzeitig einen Datenspeicherzugriff ausführen.[1] Auch ohne Cache. Ein Harvard -Architektur -Computer kann somit für eine bestimmte Schaltungskomplexität schneller sein, weil Anweisungen holt sich und Datenzugriff kämpfen nicht für einen einzelnen Speicherweg.
Außerdem verfügt eine Harvard -Architekturmaschine über einen unterschiedlichen Code- und Datenadressbereich: Die Anweisungsadresse Null ist nicht mit der Datenadresse Null. Die Anweisungsadresse Null kann einen vierundzwanzig-Bit-Wert identifizieren, während die Datenadresse Null auf ein acht-Bit-Byte hinweisen könnte, das nicht Teil dieses viert-4-Bit-Werts ist.
Kontrast zur modifizierten Harvard -Architektur
A Modifizierte Harvard -Architektur Die Maschine ist einer Harvard -Architekturmaschine sehr ähnlich, entspannt jedoch die strikte Trennung zwischen Befehl und Daten, während die CPU gleichzeitig auf zwei (oder mehr) Speicherbusse zugreifen kann. Die häufigste Änderung umfasst separate Anweisungen und Daten Caches unterstützt durch einen gemeinsamen Adressraum. Während die CPU aus Cache ausführt, wirkt sie als reine Harvard -Maschine. Bei dem Zugriff auf den Hintergrund wirkt es sich wie eine von Neumann -Maschine (wobei Code wie Daten umgezogen werden kann, was eine leistungsstarke Technik ist). Diese Modifikation ist in modernen Prozessoren weit verbreitet, wie die Armarchitektur, Macht ISA und x86 Prozessoren. Es wird manchmal locker als Harvard -Architektur bezeichnet, die die Tatsache übersieht, dass es tatsächlich "modifiziert" ist.
Eine andere Änderung liefert einen Weg zwischen dem Befehlsgedächtnis (wie ROM oder Flash-Speicher) und die CPU, damit Wörter aus dem Befehlsgedächtnis als schreibgeschützte Daten behandelt werden können. Diese Technik wird in einigen Mikrocontrollern verwendet, einschließlich der Atmel Avr. Dies ermöglicht konstante Daten, wie z. Textzeichenfolgen oder Funktionstabellenzugegriffen werden, ohne zuerst in den Datenspeicher kopiert werden zu müssen, wodurch knapp (und leistungsstarke) Datenspeicher für Lese-/Schreibvariablen erhalten bleibt. Speziell Maschinensprache Anweisungen zum Lesen von Daten aus dem Befehlsspeicher, oder auf den Anweisungsspeicher kann mit einer peripheren Schnittstelle zugegriffen werden.[a] (Dies unterscheidet sich von Anweisungen, die selbst konstante Daten einbetten, obwohl für einzelne Konstanten die beiden Mechanismen gegenseitig ersetzen können.)
Geschwindigkeit
In den letzten Jahren ist die Geschwindigkeit der CPU im Vergleich zur Zugangsgeschwindigkeit des Hauptspeichers um ein Vielfaches gewachsen. Es muss darauf geachtet werden, dass die Anzahl der Hauptspeicher zugegriffen wird, um die Leistung aufrechtzuerhalten. Wenn beispielsweise für jede in der CPU ausgeführte Anweisung einen Zugriff auf den Speicher erforderlich ist, erhält der Computer nichts für eine erhöhte CPU -Geschwindigkeit - ein Problem, das als Sein bezeichnet wird Speichergebunden.
Es ist möglich, ein extrem schnelles Gedächtnis zu erzielen, aber dies ist nur für kleine Mengen an Speicher aus Gründen, Strom- und Signalrouting -Gründen praktisch. Die Lösung besteht darin, eine kleine Menge sehr schneller Speicher zu liefern, das als a bekannt ist CPU -Cache Dies gilt kürzlich auf Daten. Solange die Daten, die die CPU benötigt, im Cache liegt, ist die Leistung viel höher als wenn die CPU die Daten aus dem Hauptspeicher abrufen muss. Auf der anderen Seite kann es jedoch weiterhin darauf beschränkt sein, sich wiederholende Programme oder Daten zu speichern, und weist dennoch Speichergrößeneinschränkungen und andere damit verbundene potenzielle Probleme auf.[b]
Internes vs. externes Design
Moderne Hochleistungs -CPU -Chip -Designs enthalten Aspekte sowohl der Architektur von Harvard als auch der von Neumann. Insbesondere die "geteilte Cache" -Version der " Modifizierte Harvard -Architektur ist sehr üblich. Der CPU -Cache -Speicher wird in einen Befehlscache und einen Datencache unterteilt. Die Harvard -Architektur wird verwendet, wenn die CPU auf den Cache zugreift. Bei einem Cache -Fehl ) Flash-Speicher.
Während eine von Neumann -Architektur in einigen Kontexten sichtbar ist, z. B. wenn Daten und Code durch denselben Speichercontroller erfolgen, gewinnt die Hardware -Implementierung die Effizienz der Harvard -Architektur für Cache -Zugriffe und zumindest einige Hauptspeicherzugriffe.
Darüber hinaus hat CPUs häufig Schreibpuffer, mit denen CPUs nach Schreibvorgängen in nicht geschnittene Regionen vorgehen können. Die von Neumann-Natur des Speichers ist dann sichtbar, wenn Anweisungen von der CPU als Daten geschrieben werden, und die Software müssen sicherstellen, dass die Caches (Daten und Anweisungen) und das Schreibpuffer synchronisiert werden, bevor sie versuchen, diese gerade geschriebenen Anweisungen auszuführen.
Moderne Verwendungen der Harvard -Architektur
Der Hauptvorteil der reinen Harvard -Architektur - simultaner Zugang zu mehr als einem Speichersystem - wurde von modifizierten Harvard -Prozessoren mit modernen Reduzierung reduziert CPU -Cache Systeme. Relativ reine Harvard-Architekturmaschinen werden hauptsächlich in Anwendungen verwendet, in denen Kompromisse wie die Kosten- und Stromeinsparungen durch weggelassene Caches die Programmierstrafen mit unterschiedlichen Code- und Datenadressenräumen überwiegen.
- Digitale Signalprozessoren (DSPs) führen im Allgemeinen kleine, hoch optimierte Audio- oder Videoverarbeitungsalgorithmen aus. Sie vermeiden Caches, weil ihr Verhalten äußerst reproduzierbar sein muss. Die Schwierigkeiten bei der Bewältigung mehrerer Adressräume sind für die Ausführung der Ausführung von sekundärem Anliegen. Infolgedessen verfügen einige DSPs mehrere Datenerinnerungen in verschiedenen Adressräumen, die er erleichtern können Simd und VLIW wird bearbeitet. Texas Instrumente TMS320 C55X -Prozessoren verfügen über ein Beispiel für mehrere parallele Datenbusse (zwei schreiben, drei lesen) und einen Befehlsbus.
- Mikrocontroller sind gekennzeichnet durch kleine Mengen an Programmen (Flash -Speicher) und Daten (Daten (Sram) Speicher und nutzen Sie die Harvard -Architektur zur Geschwindigkeitsverarbeitung durch gleichzeitige Anweisung und Datenzugriff. Das separate Speicher bedeutet, dass das Programm und die Datenerinnerungen unterschiedliche Bitbreiten aufweisen können, beispielsweise mit 16-Bit-weiten Anweisungen und 8-Bit-breiten Daten. Sie bedeuten auch das Anweisungen vorab kann parallel zu anderen Aktivitäten durchgeführt werden. Beispiele sind die Bild durch Microchip Technology, Inc. und die Avr durch Atmel Corp (Jetzt Teil der Mikrochip -Technologie).
Selbst in diesen Fällen ist es üblich, spezielle Anweisungen zu verwenden, um auf den Programmspeicher zuzugreifen, als ob es sich um Daten für nur schreibgeschützte Tabellen oder zur Neuprogrammierung handelt. Diese Prozessoren sind Modifizierte Harvard -Architektur Prozessoren.
Anmerkungen
- ^ Die IAP-Linien von 8051-kompatiblen Mikrocontrollern von STC haben einen Dual-Ported-Flash-Speicher, wobei einer der beiden Ports an den Befehlsbus des Prozessorkerns angeschlossen ist und der andere Port im Bereich der speziellen Funktionsregister zur Verfügung gestellt wurde.
- ^ Wie in einem gut beschriebenen Fall von Intel 80486.[2]: 26–34[3]
Verweise
- ^ "386 vs. 030: Die überfüllte schnelle Spur". Dr. Dobbs Journal, Januar 1988.
- ^ Brown, John Forrest (1994). Programmierung eingebetteter Systeme in C und Montage. New York: Van Nostrand Reinhold. ISBN 0-442-01817-7. OCLC 28966593.
- ^ "Programmierung eingebetteter Systeme: Gefahren des PC -Cache". user.ece.cmu.edu. Archiviert von das Original am 15. Januar 2022. Abgerufen 2022-05-26.