0% fanden dieses Dokument nützlich (0 Abstimmungen)
2 Ansichten13 Seiten

Cos 141 CompArchInstrnForrmat

Das Dokument behandelt die Grundlagen der Computerarchitektur, einschließlich der von Neumann Architektur und der grundlegenden Komponenten eines Computers wie Eingabe-, Verarbeitungs-, Speicher- und Ausgabeeinheiten. Es wird erläutert, wie Anweisungen und Daten im Speicher gespeichert werden und wie der Prozessor diese Anweisungen abruft und ausführt. Zudem werden verschiedene Computersysteme und technologische Fortschritte in der Computertechnik seit 1951 diskutiert.

Hochgeladen von

ScribdTranslations
Copyright
© © All Rights Reserved
Wir nehmen die Rechte an Inhalten ernst. Wenn Sie vermuten, dass dies Ihr Inhalt ist, beanspruchen Sie ihn hier.
Verfügbare Formate
Als PDF, TXT herunterladen oder online auf Scribd lesen
0% fanden dieses Dokument nützlich (0 Abstimmungen)
2 Ansichten13 Seiten

Cos 141 CompArchInstrnForrmat

Das Dokument behandelt die Grundlagen der Computerarchitektur, einschließlich der von Neumann Architektur und der grundlegenden Komponenten eines Computers wie Eingabe-, Verarbeitungs-, Speicher- und Ausgabeeinheiten. Es wird erläutert, wie Anweisungen und Daten im Speicher gespeichert werden und wie der Prozessor diese Anweisungen abruft und ausführt. Zudem werden verschiedene Computersysteme und technologische Fortschritte in der Computertechnik seit 1951 diskutiert.

Hochgeladen von

ScribdTranslations
Copyright
© © All Rights Reserved
Wir nehmen die Rechte an Inhalten ernst. Wenn Sie vermuten, dass dies Ihr Inhalt ist, beanspruchen Sie ihn hier.
Verfügbare Formate
Als PDF, TXT herunterladen oder online auf Scribd lesen
Sie sind auf Seite 1/ 13

COMPUTERARCHITEKTUR

1 Computerarchitektur:

Einführung

Die Ziele dieses Moduls sind es, die Bedeutung des Studiums der Computerarchitektur zu verstehen, zu kennzeichnen die
Grundlegende Komponenten und Funktionsweise der traditionellen von Neumann Architektur, diskutiere die verschiedenen Arten von
Computersysteme, die heute vorhanden sind, betrachten die verschiedenen Arten von Parallelismus, die Programme zeigen, und wie
Die Architekturen nutzen diese verschiedenen Arten von Parallelismus aus.

Der erste und wichtigste Grund ist, dass Computerarchitektur ein spannendes Thema ist. Sie werden viele interessante Dinge finden.
Fakten über die Maschine, die Sie verwenden, werden Ihnen offenbart, und Sie werden feststellen, dass es ein sehr interessanter Kurs ist. Jeder
Ein Computeringenieur oder -wissenschaftler sollte grundsätzlich die grundlegenden Details der Maschine kennen, mit der er oder sie arbeiten wird.

use. You may be an application programmer, a compiler writer or any software designer. Only if you know the
Durch die zugrunde liegende Architektur werden Sie die Maschine viel effektiver nutzen können und Ihre Leistung wird
Verbessern. Um ein Experte für Computerhardware zu werden, müssen Sie die zugrunde liegenden Konzepte von Computern kennen.
architecture. Even if you’re only looking at becoming a software designer, you need to understand the internals of
die Maschine, um die Codeleistung zu verbessern. Um neue Möglichkeiten zu erkunden, müssen Sie auch bereit sein
Aktualisiert über die neuesten technologischen Fortschritte, die stattfinden. Nur wenn Sie über die neuesten Informationen verfügen.

Technologische Verbesserungen, die Sie zu Ihrem Vorteil nutzen können. Dies


Das Fachgebiet hat einen Einfluss auf alle Bereiche des Ingenieurwesens und der Wissenschaft, da Computer überall präsent sind und
whatever field of engineering and science you are at, you know that computers are very predominantly used and
Das Studium der Computerarchitektur wird sehr nützlich sein, um Ihre Maschine effektiver zu nutzen.

Ein Computer ist per Definition eine ausgeklügelte elektronische Rechenmaschine, die Eingabedaten annimmt,
verarbeitet die Informationen gemäß einer Liste gespeicherter Anweisungen und erzeugt schließlich die resultierende Ausgabe
Information.

Basierend auf den Funktionen, die der Computer ausführt, können wir die Komponenten eines digitalen identifizieren.
Computer als der:

Eingabeeinheit, die Informationen aufnimmt,

Verarbeitungseinheit, die die Informationen verarbeitet,

Speichereinheit, die die Informationen speichert und

Ausgabeeinheit, die die Daten anzeigt.

Der Datenpfad ist der Pfad, durch den Informationen fließen, sagen wir, Sie haben eine arithmetische und logische Einheit, die genannt wird
ALU, die funktionale Einheiten wie Addierer, Subtrahierer, Multiplikatoren, Verschieber usw. umfasst, und Sie haben auch Register.
die als Speichermedien innerhalb des Prozessors verwendet werden, da die Daten irgendwo gespeichert werden müssen für
Verarbeitung.

Register sind integrierte Speichermethoden, die im Prozessor verfügbar sind, und die Rechen- und Logik-Einheit (ALU) wird verwendet.
für die Durchführung aller arithmetischen und logischen Operationen.

Für den Steuerungsweg benötigen Sie eine Einheit, die die Aktivitäten der verschiedenen Einheiten koordiniert.
sollte wissen, wann Daten von einem Punkt zu einem anderen Punkt fließen, wann eine Additionsoperation stattfinden muss,
Wenn eine Subtraktionsoperation durchgeführt werden muss, usw. Koordiniert der Steuerpfad die Aktivitäten der verschiedenen
Einheiten des Computersystems.
Der Datenpfad und der Steuerpfad zusammen werden als zentrale Verarbeitungseinheit bezeichnet oder populär abgekürzt als
CPU.

Die Datenspeicherung besteht aus der Speichereinheit, die alle Informationen speichert, die für die Verarbeitung erforderlich sind.
Daten sowie das Programm. Das Programm ist nichts anderes als eine Liste von Anweisungen.

Computer sind nur dumme Maschinen, die nach den gegebenen Anweisungen arbeiten. Wenn Sie ihm anweisen, zu addieren,
Es wird hinzufügen.

Initially the program is stored in memory, it take instructions from there, execute them and output the results to
die Außenwelt, mit Geräten wie einem Monitor oder Drucker.

Neben diesen klassischen Komponenten hat jede Maschine typischerweise ein Netzwerkkomponent für die Kommunikation.
mit den anderen Maschinen. Wir wissen, dass wir sie nicht nur als eigenständige Maschine betreiben und wir müssen
von einer Maschine zu einer anderen Maschine kommunizieren, entweder über eine sehr kurze Distanz oder über den Globus.

Daher besteht die Computerarchitektur aus: Computerorganisation und der Befehlssatzarchitektur, ISA.
Die ISA gibt eine logische Sicht darauf, was ein Computer leisten kann, und wenn man sich die Computerorganisation ansieht,
Es geht im Grunde darum, wie die ISA implementiert wird. Diese beiden zusammen werden normalerweise als Computerarchitektur bezeichnet.
Und in diesem Kurs versuchen wir, sowohl den Teil der Computerorganisation als auch den Teil der ISA abzudecken.

Um eine grundlegende Vorstellung davon zu vermitteln, was eine Anweisung ist, werden wir uns einige Beispielanweisungen ansehen. Anweisungen im Grunde
Befehle an den Prozessor angeben, wie das Übertragen von Informationen von einem Punkt zum anderen innerhalb eines Computers.
Sagen wir beispielsweise, von einem Register zu einem anderen Register, von einem Speicherort zu einem Register oder Ein- und Ausgabegerät.
Gerät. Sie werden spezifische Anweisungen erhalten, die sagen, übertragen Sie die Informationen von dieser Quelle zu dieser.
Ziel.

Anweisungen geben im Grunde genommen Befehle an, um Informationen von einem Punkt zum anderen zu übertragen.
Computer, weise den Computer an, arithmetische und logische Operationen durchzuführen, wie zum Beispiel diese beiden Zahlen zu multiplizieren.

usw. Sie müssen auch einige Anweisungen haben, um den Ablauf des Programms zu steuern. Nehmen wir an, ich versuche zu
Addiere zwei Zahlen, und wenn das Ergebnis größer als etwas ist, möchte ich eine Handlung ergreifen, und wenn das Ergebnis...
ist weniger als etwas, ich möchte einen anderen Kurs einschlagen. Diese Anweisungen ermöglichen es Ihnen, die Kontrolle zu übernehmen über die
Ablauf des Programms. Sprunganweisungen sorgen dafür, dass die Steuerung an einen anderen Punkt übertragen wird. Möglicherweise haben Sie ein
Unterprogrammaufruf, ein Funktionsaufruf. Wenn wir modulare Programmierung machen, wenn Sie etwas ausführen, benötigen Sie
um gezielt eine Funktion auszuführen, das Ergebnis zu erhalten und dann mit dem Hauptprogramm fortzufahren. Diese
Anweisungen sind Beispiele für Kontrollflussanweisungen.

Wenn Sie eine Reihe von Anweisungen haben, um eine bestimmte Aufgabe auszuführen, wird dies als Programm bezeichnet, das gespeichert ist in
Speicher. Nehmen wir zum Beispiel an, ich muss zwei Zahlen addieren, und diese Zahlen sind im Speicher gespeichert. Aus dem Speicher,
Sie müssen die Zahlen in die Adder-Einheit bringen und addieren. Daher benötigen wir Datenübertragungsanweisungen, um die zu übertragen.
Daten vom Speicher zum Prozessor und eine Additionsanweisung zum Addieren. Der Prozessor holt sich Anweisungen, die machen
Ein Programm aus dem Speicher abrufen und die darin angegebenen Vorgänge genau in dieser Reihenfolge ausführen.
Angenommen, Sie haben eine Steuerflussanweisung dazwischen, und sie sagt, führen Sie die nächste Anweisung nicht aus, sondern springen Sie zu
An einen anderen Ort und führe diese Anweisung aus, wird die Kontrolle an diesen Punkt übertragen.

Sobald wir eine Vorstellung davon haben, was diese Anweisungen sind, müssen wir auch wissen, auf welchen Daten diese Anweisungen basieren.

betreiben. Die Daten könnten Dezimalzahlen, Binärzahlen oder Oktalzahlen oder kodierte Zeichen sein. Die
Der Speicher speichert Instruktionen sowie Daten als eine Sequenz von Bits. Gruppen von Bits werden gleichzeitig gespeichert oder abgerufen.
und wird normalerweise ein Wort genannt. Die Wortlänge des Prozessors hängt von dem Prozessor ab, der
Wenn Sie sich einen 8-Bit-Prozessor ansehen, beträgt die Wortlänge acht. Wenn es sich um einen 64-Bit-Prozessor handelt, spricht man von einem
Wortlänge von 64.
Um aus dem Speicher zu lesen und in den Speicher zu schreiben, sollten wir wissen, wie man auf den Speicher zugreift. Der Speicher

besteht aus einer Anzahl von Speicherorten, zum Beispiel, wenn ich mir 1K Speicher ansehe, habe ich 1024 Speicher
Standorte. Genau wie wir einzigartige Adressen haben, um unsere Häuser zu identifizieren, hat jeder Speicherort eine einzigartige Adresse.
von 10 Bit in diesem Fall. Um auf den Speicherort zuzugreifen, müssen wir die eindeutige Adresse des
Speicherort und der Prozessor liest oder schreibt basierend auf dieser Speicheradresse in den Speicher und aus dem Speicher.
Der Arbeitsspeicher bietet feste Zugriffszeiten, unabhängig vom Speicherort des Wortes.

Wir definieren die Zugriffszeit auf den Speicher als die Zeit, die zwischen dem Beginn einer Anfrage und der Erfüllung vergangen ist.
die Anfrage. Sagen wir zum Beispiel, ich habe eine Speicherausleseanfrage gestellt, also die Zeit zwischen der Anforderung, die
wurde platziert und die Zeit, in der die Daten tatsächlich ankommen, wird als Zugriffszeit auf den Speicher bezeichnet. Der Speicherzugriff
Die Zeit hängt von der Geschwindigkeit des Speicherelements ab – ein langsamer Speicher hat längere Zugriffszeiten und ein schneller Speicher.

hat langsamere Zugriffszeiten.

Wenn Sie sich den Speicher ansehen, benötigen wir, dass der Speicher schnell und groß genug ist, um umfangreiche Daten unterzubringen.
auch erschwinglich. Jetzt kommt das alles nicht zusammen. Wir betrachten also kein flaches Speichersystem, sondern haben einen
hierarchisches Gedächtnissystem. Der Prozessor und der Speicher müssen miteinander kommunizieren, um
Informationen zu lesen und zu schreiben. Um mit der Prozessor Geschwindigkeit Schritt zu halten und die Kommunikation zu reduzieren
Zeit, eine kleine Menge RAM, normalerweise als der Cache bekannt, ist eng mit dem Prozessor gekoppelt, und modern
Computer haben mehrere Ebenen von Caches. Dann haben wir den Hauptspeicher und dann den sekundären Speicher.

Der schnellste Speicher, der dem Prozessor am nächsten ist, erfüllt die Geschwindigkeitsanforderungen, und der entfernteste Speicher erfüllt
die Kapazitätsanforderungen. Die Kosten sinken ebenfalls, je weiter wir uns vom innersten Niveau entfernen. Obwohl wir betrachten
Bei einem sehr hohen Hauptspeicher in diesen Tagen reicht der Hauptspeicher offensichtlich nicht aus, um alles zu speichern.
Programme und Daten, daher müssen Sie sich die Sekundärspeicherung ansehen, die in der Lage ist, große Mengen an Daten zu speichern. Beispiele
sind magnetische Platten und Bänder, optische Discs, CDs usw. Der Zugang zu den in Sekundärspeichern gespeicherten Daten ist
definitiv langsamer, aber Sie nutzen den Vorteil, dass die am häufigsten abgerufenen Daten näher platziert sind zu
der Prozessor.

Nachdem wir die grundlegenden Komponenten eines digitalen Computers betrachtet haben, sollten wir auch einige Möglichkeiten haben, um zu verbinden.

diese Komponenten zusammen und kommunizieren miteinander. Die Verbindung erfolgt mittels Kabel, die genannt werden
abus. The bus is nothing but an interconnection of wires, capable of carrying bits of information. Functional units
sind durch eine Gruppe von parallelen Drähten verbunden, wobei jeder Draht in einem Bus ein einzelnes Bit Information übertragen kann und
Die Anzahl der parallelen Drähte im Bus entspricht normalerweise der Wortlänge des Computers. Wenn Sie sprechen
Bei einem Prozessor mit einer Wortlänge von beispielsweise 64 Bit bedeutet dies normalerweise, dass der Prozessor mit 64 Bit arbeitet.
Daten. Es ist also nur sinnvoll, dass wir auch einen Bus haben, der 64 Bit Daten von einem Punkt zum anderen übertragen kann.
Computer zu einem anderen Punkt.

Sie wissen, dass die von einem Computer verarbeiteten Informationen entweder Anweisungen oder Daten sein können. Anweisungen oder Maschinen
Anweisungen sind explizite Befehle, die die Übertragung von Informationen innerhalb eines Computers sowie zwischen
der Computer und der Speicher und die I/O-Geräte und geben die auszuführenden arithmetischen und logischen Operationen an.

Eine Liste von Anweisungen, die eine Aufgabe ausführen, wird als Programm bezeichnet. Das Programm wird normalerweise im Speicher gespeichert und der

Der Prozessor holt diese Anweisungen nacheinander ab und führt sie aus. Die frühesten Rechenmaschinen hatten
feste Programme. Einige sehr einfache Computer verwenden dieses Design noch, entweder aus Einfachheits- oder Ausbildungsgründen. Für
Ein Tischrechner ist ein Computer mit festem Programm. Er kann grundlegende Mathematik machen, aber er kann nicht als ein
Textverarbeitung oder um Videospiele zu spielen. Um das Programm einer solchen Maschine zu ändern, müssen Sie die Verkabelung ändern oder
Die Maschine neu programmieren. Die Neuprogrammierung, wenn sie überhaupt möglich war, war ein sehr manueller Prozess, der begann mit
Flussdiagramme und Papiernotizen, gefolgt von detaillierten Ingenieurdesigns und dann der oft mühsamen Prozess von
die physischen Veränderungen umsetzen.

Die Idee des programmierten Computers änderte all das. Durch die Schaffung einer Instruktionssatzarchitektur und
Durch das Detaillieren der Berechnung als eine Reihe von Anweisungen (das Programm) wird die Maschine viel flexibler.
Indem man diese Anweisungen auf die gleiche Weise wie Daten behandelt, kann eine Speicherprogrammierte Maschine das Programm leicht ändern.
und kann dies unter Programmsteuerung tun. Die Begriffe "von-Neumann-Architektur" und "speicherprogrammierbarer Computer"
werden allgemein austauschbar verwendet.

Anweisungen sowie Daten werden im Speicher als eine Folge von Nullen und Einsen gespeichert, und der Prozessor führt aus
Diese Anweisungen werden sequenziell ausgeführt und der Programmfluss wird durch die Art der Anweisungen und andere gesteuert.
Faktoren wie Interrupts usw. Der Abruf- und Ausführungszyklus wird kontinuierlich wiederholt, sodass eine Anweisung abgerufen wird von
Speicher und ausgeführt und dann geht es weiter und ruft die nächste Anweisung aus dem Speicher ab. Das bedeutet, dass die
Abruf-Ausführungszyklus. Der Befehl wird mit der einzigartigen Adresse aus dem Speicher abgerufen, dekodiert und dann
ausgeführt. Die Anweisung ist schließlich eine Sequenz von Nullen und Einsen, und Sie müssen wissen, was mit
diese Nullen und Einsen – ob es eine Addition ist, die durchgeführt werden soll, oder welche Operation durchgeführt werden soll, wo
Die Operanden sind verfügbar und so weiter. Sobald die gesamten Informationen verfügbar sind, holen Sie die Operanden und machen Sie weiter.
mit der Ausführung und dann schließlich das Ergebnis speichern.

Der Vorteil des gespeicherten Programmkonzepts ist, dass Programme einfach als Dateien von Binärzahlen versendet werden können.
die die binäre Kompatibilität aufrechterhalten und Computer bereitgestellte fertige Software erben können, sofern sie
kompatibel mit der bestehenden ISA.

Die Computerorganisation, wie wir zuvor angemerkt haben, ist die Realisierung der Befehlssatzarchitektur. Du wirst
Muss die Merkmale der Hauptkomponenten betrachten, aus denen Ihr Computersystem besteht, Möglichkeiten in
Welche dieser Computersysteme sind miteinander verbunden und wie fließt die Information zwischen diesen Komponenten.

Es gab viele technologische Verbesserungen, die seit 1951 stattfinden, beginnend mit Staubsaugern.
Wir gingen von Röhren zu Transistoren, integrierten Schaltkreisen, VLSIs, ultraskalaren integrierten Schaltkreisen und so weiter. Wir stellen fest, dass der Prozessortransistor

Die Zahlen sind dank des Moore'schen Gesetzes um etwa 32 bis 40 % pro Jahr gestiegen. Das Moore'sche Gesetz wurde im Grunde vorgeschlagen.
von Gordon Moore von Intel im Jahr 1965 und er schlug vor, dass die Transistordichten alle 18 Monate verdoppelt werden.
auf 24 Monate und das hat sich wirklich bewährt. Die Speicherkapazität ist ebenfalls auf etwa 60 % gestiegen pro
Jahr. All diese technologischen Fortschritte bieten Raum für bessere oder neue Anwendungen. Die Anwendungen verlangen
Immer mehr und die Prozessoren werden immer besser und dies ist ein Teufelskreis. Die Leistung
hat sich von 1978 bis 2005 erheblich verbessert. Nach 2005 stellt man fest, dass die Leistung aufgrund von tatsächlich nachgelassen hat.
Was wird als Power-Wall und Memory-Wall bezeichnet.

Sie haben verschiedene Klassen oder verschiedene Typen von Computersystemen, die verfügbar sind.

Eines ist der Desktop- und Notebook-Computer, der kompetenteste Markt. Hier betrachten wir allgemeine Zwecke.
Anwendungen, bei denen Sie viele Anwendungen ausführen möchten und der Hauptfaktor der Kosten-Nutzen-Handel ist.

Die nächste Kategorie von Computersystemen sind die Serversysteme, die über eine hohe Kapazität verfügen müssen und
Leistung ist sehr wichtig. Für Server sind Zuverlässigkeit und Verfügbarkeit sehr wichtig. Der Durchsatz muss gewährleistet sein.
hoch für solche Systeme.

Wir haben auch eingebettete Systeme, bei denen die Computer als Teil eines größeren Systems verborgen sind. Zum Beispiel, wenn
Wenn du auf ein Mobiltelefon schaust, bemerkst du nicht, dass es ein Computersystem ist, aber du weißt, dass es viele gibt.
Prozessoren in Ihrem Mobiltelefon. Eine Waschmaschine ist ein einfaches Beispiel für ein eingebettetes System. Diese
Eingebettete Computer haben strenge Anforderungen an die Energieeffizienz, sie haben strenge Kostenbeschränkungen und
Sie sind speziell für eine bestimmte Anwendung gedacht. Es ist ein Prozessor, der dazu bestimmt ist, eine bestimmte Aufgabe zu erfüllen.
Anders als bei einem Desktop-Prozessor werden Sie nicht eine Vielzahl von Anwendungen ausführen. Es wird erwartet, dass er gut funktioniert mit
Respekt gegenüber dieser speziellen Anwendung und dies ist eine Klasse von Computersystemen, die ein breites Spektrum abdeckt.
Anwendungen.

Ihre Anforderungen können von einer sehr kleinen Spielzeugauto-Anwendung bis hin zu einem sehr ausgeklügelten Diagnosesystem reichen für
Beispiel oder ein Überwachungsmechanismus. Je nachdem werden sich all Ihre Anforderungen ändern. Zuletzt,
Sie haben auch die persönlichen mobilen Geräte, die heute sehr verbreitet sind, wo Kosten wichtig sind, Energie ist
Wichtige und Medienleistung wird sehr wichtig. Mobiles Personal muss auch viel leisten.
Wichtigkeit der Reaktionsfähigkeit. Sobald Sie eine Anfrage an ein PMD stellen, erwarten Sie sofort eine Antwort.
Die Reaktionsfähigkeit ist also sehr wichtig, wenn man sich persönliche mobile Geräte ansieht. Und natürlich heutzutage
Sie haben auch Cluster und lagergroße Computer, die immer beliebter werden.

Sie haben eine große Anzahl von Computern zusammengestellt und nennen das einen Cluster. Auch hier wird das Preis-Leistungs-Verhältnis wichtig.
sehr wichtig und der Durchsatz ist wichtig. Die Anzahl der Transaktionen, die pro Zeiteinheit durchgeführt werden oder die Anzahl von
Webdienste, die gewartet wurden, werden sehr wichtig, wenn man sich Cluster ansieht. Es ist wieder
das gleiche wie das Ihrer Server und die Energieproportionalität gewinnt ebenfalls an Bedeutung, wenn Sie dies betrachten
Arten von Computersystemen.

The main driving forces of computer systems are energy and cost. Today everybody is striving to design computer
Systeme, die Ihren Energie- und Kostenverbrauch minimieren. Außerdem müssen wir uns die verschiedenen Arten der Parallelität ansehen.
dass Ihre Anwendungen dieses Parallelismus zeigen und versuchen, diesen in den von uns entworfenen Computersystemen auszunutzen. Damit
wird zur primären treibenden Kraft eines Computersystems. Die verschiedenen Arten des Parallelismus, die Programme haben können
Ausstellungen werden als Datenebeneparallelismus und Aufgabenebeneparallelismus bezeichnet. Sie müssen Systeme entwerfen, die diese ausnutzen.
Es gibt verschiedene Techniken, die Prozessoren verwenden, um Parallelität auszunutzen. Selbst in einer sequenziellen Ausführung gibt es
verschiedene Techniken, die zur Ausnutzung der instruktionalen Parallelität (ILP) verfügbar sind, d.h. unabhängige Ausführung
Anweisungen parallel. Wenn Datenebenenparallelität in Programmen verfügbar ist, können Vektorprozessoren und SIMD-Stil
Architekturen versuchen, sie auszunutzen. Prozessoren berücksichtigen auch die Verwendung mehrerer Ausführungsstränge. Thread-Ebene
Parallelismus wird mehr im Hinblick auf die Aufgabenebenenparallelität ausgenutzt und wenn es in einer lockereren Kopplung erfolgt.
architecture we call it a request level parallelism. So, applications exhibit different types of parallelism and the
Die Computerhardware, die Sie entwerfen, sollte versuchen, diese Parallelität auszunutzen und eine bessere Leistung zu bieten.

Die Befehlssatzarchitektur

Die Ziele dieses Moduls bestehen darin, die Bedeutung der Befehlssatzarchitektur zu verstehen und zu diskutieren
Merkmale, die bei der Gestaltung der Befehlssatzarchitektur einer Maschine berücksichtigt werden müssen, und einen Blick darauf werfen
Beispiel ISA, MIPS - Millionen Instruktionen pro Sekunde.

Wir haben bereits gesehen, dass der Kurs über Computerarchitektur aus zwei Komponenten besteht – dem Befehlssatz
Architektur und die Computerorganisation selbst.

Die Daten, auf denen Operationen durchgeführt werden, sind im Computer gespeichert. Verschiedene Computer haben ihre eigene Reihe.
von Anweisungen. Die CPU oder der Prozessor nimmt all diese Anweisungen aus dem Speicher und decodiert die Bits, um sie auszuführen.
Die Anweisungen. Das Layout der Anweisungsbits wird als Anweisungsformat bezeichnet.

Das Instruktionsformat ist einfach eine Folge von Bits (0 oder 1), die in einer Maschineninstruktion enthalten sind und die definieren, das
Layout der Anweisung. Die Maschinenanweisung enthält eine Anzahl von Bits (Muster aus 0 und 1). Diese Bits sind
zusammengefasst genannt Felder

Der Befehl hat eine variable Länge, abhängig von der Anzahl der enthaltenen Adressen. Im Allgemeinen ist die CPU-Organisation
hat drei Typen basierend auf der Anzahl der Adressfelder:
{"Single Accumulator organization":"Einzel-Akkumulator-Organisation","General register organization":"Allgemeine Registerorganisation","Stack organization":"Stack-Organisation"}

Computer haben drei Formate für den Befehlscode:


Speicherreferenz, Register und Ein/Ausgabe.
Ein Instruktionsformat definiert die verschiedenen Komponenten einer Anweisung. Die Hauptkomponenten einer Anweisung sind
sind Opcode (welche Anweisung ausgeführt werden soll) und Operanden (Daten, auf denen die Anweisung ausgeführt werden soll).

Es gibt vier verschiedene Arten von Anweisungen.


• Datenübertragungsanweisungen.
• Datenmanipulationsanweisungen.
• Programmiersequenz und Steueranweisungen.
• Eingabe- und Ausgabeanweisungen

Die ISA legt fest, was der Prozessor in der Lage ist zu tun, und die ISA, wie dies erreicht wird.

Die Instruktionssatzarchitektur ist im Grunde die Schnittstelle zwischen Ihrer Hardware und der Software. Die einzige
Die Möglichkeit, mit der Hardware zu interagieren, ist der Befehlssatz des Prozessors.

To command the computer, you need to speak its language and the instructions are the words of a computer’s
language and the instruction set is basically its vocabulary. Unless you know the vocabulary and you have a very
gutes Vokabular, du kannst keine guten Vorteile aus der Maschine ziehen.

ISA ist der Teil der Maschine, der entweder für den Assembler-Programmierer oder einen Compiler sichtbar ist.
Schriftsteller oder Anwendungsprogrammierer.

Es ist die einzige Schnittstelle, die Sie haben, da die Befehlssatzarchitektur die Spezifikation dafür ist, was die
Computer können und die Maschine muss so konstruiert sein, dass sie alles ausführen kann, was vorgegeben ist.
in Ihrem ISA spezifiziert. Der einzige Weg, wie Sie mit Ihrer Maschine kommunizieren können, ist über das ISA. Das gibt Ihnen eine Vorstellung davon
die Schnittstelle zwischen der Hardware und der Software.

Angenommen, Sie haben ein High-Level-Programm in C geschrieben, das unabhängig von der Architektur ist, auf der Sie
möchte arbeiten. Dieses hochgradige Programm muss in ein Assemblersprachprogramm übersetzt werden, das spezifisch für
eine bestimmte Architektur. Angenommen, Sie stellen fest, dass dies aus einer Reihe von Anweisungen wie LADEN, SPEICHERN, HINZUFÜGEN besteht,
usw., wo, was auch immer Sie in Bezug auf Hochsprache geschrieben haben, jetzt in eine Menge von
Anweisungen, die spezifisch für die spezifische Architektur sind. Alle diese Anweisungen, die hier angezeigt werden, sind
Teil des Befehlssatzarchitektur der MIPS-Architektur. Diese sind alle englischähnlich und dies ist nicht.
verständlich für den Prozessor, da der Prozessor schließlich aus digitalen Komponenten besteht, die können
versteht nur Nullen und Einsen. Daher muss die Assemblersprache genau in Maschinensprache übersetzt werden.
Sprache, Objektcode, der aus Nullen und Einsen besteht. Die Übersetzung von Ihrer Hochsprache in Ihren
Die Assemblersprache und der Binärcode müssen mit dem Compiler und dem Assembler erstellt werden.

Wir werden uns die Merkmale des Befehlsatzes ansehen und herausfinden, was in die 0en und 1en kommt und wie man die 0en interpretiert.
und 1s, als Daten, oder Anweisungen oder Adressen. Die entworfene ISA sollte durch viele Implementierungen bestehen bleiben, sie
Es sollte Portabilität haben, es sollte Kompatibilität haben, es sollte auf viele verschiedene Arten verwendet werden können, also sollte es haben
Allgemeinheit und es sollte auch bequem Funktionalität auf anderen Ebenen bieten. Die Taxonomie der ISA ist unten angegeben.

Taxonomie

ISAs unterscheiden sich basierend auf dem internen Speicher in einem Prozessor. Dementsprechend kann die ISA wie folgt klassifiziert werden, basierend auf

wo die Operanden gespeichert sind und ob sie ausdrücklich oder implizit benannt werden:

Single accumulator organization, which names one of the general-purpose registers as the accumulator and uses
Es ist notwendig, einen der Operanden zu speichern. Dies deutet darauf hin, dass einer der Operanden implizit in dem
Akkumulator und es genügt, wenn der andere Operand zusammen mit der Anweisung angegeben wird.

Allgemeine Registerorganisation, die alle Operanden ausdrücklich angibt. Je nachdem, ob die Operanden
sind im Speicher oder in Registern verfügbar, kann weiter unterteilt werden in:
• Register–Register, wo Register zum Speichern von Operanden verwendet werden. Solche Architekturen sind in der Tat auch
als Lade-Speicher-Architekturen bezeichnet, da nur Lade- und Speicheranweisungen Speicheroperanden haben können.
• Register-Speicher, wo ein Operand in einem Register und der andere im Speicher ist.
• Speicher-Speicher, wo alle Operanden als Speicheroperanden angegeben sind.
Stapelspeicherorganisation, bei der die Operanden in den Stapel gelegt werden und die Operationen an der Spitze ausgeführt werden.
der Stapel. Die Operanden sind hier implizit angegeben.

Angenommen, Sie müssen die Operation A = B + C ausführen, wobei alle drei Operanden Speicheroperanden sind.

Im Fall einer speicherbasierten ISA, in der wir annehmen, dass eines der allgemeinen Register verwendet wird, wird.
als Akkumulator bezeichnet; einer der Operanden wird im Akkumulator verfügbar sein, Sie müssen zunächst laden
Einen Operanden in den Akumulator und die ADD-Anweisung wird nur die Adresse des Operanden angeben.

In der GPR-basierten ISA haben Sie drei verschiedene Klassifikationen:

• Im Register-Speicher-ISA muss ein Operanden ein beliebiges Register sein und der andere kann ein Speicher sein.
Operand
• Im Register-Register-ISA müssen beide Operanden in zwei Registern vorhanden sein, und die ADD-Anweisung wird
Arbeiten Sie nur an den Registern.

• Im Speicher-Speicher-ISA gibt es beide Speicheroperanden. Sie können also direkt addieren.


• In a stack-based ISA, you’ll have to first of all push both operands onto the stack and then simply give an
Fügen Sie eine Anweisung hinzu, die die obersten beiden Elemente des Stacks addiert und das Ergebnis dann im Stack speichert.
Sie können also aus diesen Beispielen sehen, dass Sie verschiedene Möglichkeiten haben, dieselbe Operation auszuführen, und es
Offensichtlich hängt es von der ISA ab. Unter all diesen ISAs ist die Register-Register-ISA sehr beliebt und
in allen RISC-Architekturen verwendet.

Wir werden uns nun die verschiedenen Merkmale ansehen, die bei der Gestaltung der Anleitung berücksichtigt werden müssen.
Set-Architektur. Sie sind:
• Arten von Anweisungen (Operationen im Befehlsatz)
• Arten und Größen der Operanden
• Addressing Modes
• Adresseierung des Speichers
• Codierung und Instruktionsformate
• Compilerbezogene Probleme
Zuerst müssen Sie sich über die Arten von Anweisungen entscheiden, d.h. welche verschiedenen Anweisungen Sie möchten.
Unterstützung im ISA.

Die Aufgaben, die von einem Computerprogramm ausgeführt werden, bestehen aus einer Folge kleiner Schritte:

• wie das Multiplizieren von zwei Zahlen,


• Bewegen von Daten von einem Register zu einem Speicherort,
• testing for a particular condition like zero,
• ein Zeichen vom Eingabegerät lesen oder ein Zeichen senden, um es auf dem Ausgabegerät anzuzeigen, usw.
Ein Computer muss die folgenden Arten von Anweisungen haben:
• Data transfer instructions
• Datenmanipulationsanweisungen
• Programmsequenzierung und Steueranweisungen
• Eingabe- und Ausgabeanweisungen

Datenübertragungsanweisungen führen die Datenübertragung zwischen den verschiedenen Speicherorten im Computersystem durch, d.h.
Register, Speicher und I/O. Da sowohl die Instruktionen als auch die Daten im Speicher abgelegt sind, benötigt der Prozessor
um die Anweisungen und Daten aus dem Speicher zu lesen. Nach der Verarbeitung werden die Ergebnisse im Speicher abgelegt. Daher,
Zwei grundlegende Operationen, die den Speicher betreffen, sind erforderlich, nämlich Laden (Lesen oder Abrufen) und Speichern (Schreiben).
TheLoad operationtransfers a copy of the data from the memory to the processor and the Store operation
überträgt die Daten vom Prozessor in den Speicher. Weitere Datenübertragungsanweisungen sind erforderlich, um Daten zu übertragen von
einen Register zu einem anderen oder von/zu I/O-Geräten und dem Prozessor.

Datenmanipulationsanweisungen führen Operationen auf Daten durch und geben die Berechnungsfähigkeiten für die
Prozessor. Diese Operationen können arithmetische Operationen, logische Operationen oder Verschiebeoperationen sein.

Arithmetische Operationen umfassen: Addition (mit und ohne Übertrag), Subtraktion (mit und ohne Entnahme)
Multiplikation, Division, Inkrement, Dekrement und das Finden des Komplements einer Zahl.

Die logischen und Bitmanipulationsanweisungen umfassen: UND, ODER, XOR, Tragestatus löschen, Tragestatus setzen usw. In ähnlicher Weise können Sie
perform different types of shift and rotate operations.

Allgemein nehmen wir einen sequenziellen Fluss von Anweisungen an. Das heißt, Anweisungen, die in aufeinanderfolgender Reihenfolge gespeichert sind.

locations are executed one after the other.However, you have program sequencing and control instructionsthat
Hilf dir, den Fluss des Programms zu ändern. Dies lässt sich am besten mit einem Beispiel erklären. Betrachte die Aufgabe, eine Liste hinzuzufügen.
von n Zahlen. Eine mögliche Sequenz ist unten angegeben.
Bewege DATEN1, R0
Füge DATA2, R0 hinzu
Füge DATA3, R0 hinzu
DATAn, R0 hinzufügen

Bewege R0, SUM


Die Adressen der Speicherorte, die die n Zahlen enthalten, werden symbolisch als DATA1, DATA2,… angegeben.
DATAn und eine separate Add-Anweisung werden verwendet, um jede Daten zu den Inhalten des Registers R0 hinzuzufügen. Nachdem alle
Zahlen wurden hinzugefügt, das Ergebnis wird im Speicherort SUM abgelegt.

Anstelle einer langen Liste von Add-Anweisungen ist es möglich, eine einzige Add-Anweisung in eine Programmschleife zu setzen, wie
unten angezeigt:
Bewege N, R1
R0 löschen
LOOP Adresse der "Nächsten" Zahl bestimmen und "Nächste" Zahl zu R0 hinzufügen
R1 verringern
Zweig > 0, SCHLEIFE
Bewege R0, SUM
Die Schleife ist eine gerade sequenz von Anweisungen, die so oft ausgeführt werden, wie es nötig ist. Sie beginnt an der Stelle LOOP
und endet bei dem Befehl Branch>0.

Bei jedem Durchlauf dieser Schleife wird die Adresse des nächsten Listeneintrags bestimmt, und dieser Eintrag wird abgerufen und
hinzugefügt zu R0.

Die Adresse eines Operanden kann auf verschiedene Weise angegeben werden, wie im nächsten Abschnitt beschrieben wird. Für den Moment, Sie
Ich muss wissen, wie man eine Programmschleife erstellt und steuert. Angenommen, die Anzahl der Einträge in der Liste, n, ist
im Speicherort N gespeichert. Der Register R1 wird als Zähler verwendet, um die Anzahl der Durchläufe der Schleife zu bestimmen.
ausgeführt. Daher werden die Inhalte des Standorts N zu Beginn des Programms in das Register R1 geladen. Dann,
Innerhalb des Körpers der Schleife verringert die Anweisung Decrement R1 den Inhalt von R1 bei jedem Durchlauf um 1.
loop. The execution of the loop is repeated as long as the result of the decrement operation is greater than zero.

Sie sollten jetzt in der Lage sein, Zweiganweisungen zu verstehen. Diese Art von Anweisung lädt einen neuen Wert in die
Programmzähler. Infolgedessen ruft der Prozessor die Anweisung an dieser neuen Adresse ab und führt sie aus, die als
branch target, instead of the instruction at the location that follows the branch instruction in sequential address
Befehl. Die Sprunganweisung kann bedingt oder unbeding sein.

Eine bedingungslose Sprunganweisung führt einen Sprung zur angegebenen Adresse unabhängig von irgendwelchen Bedingungen durch.
Aconditional branch instructioncauses a branch only if a specified condition is satisfied. If the condition is not
Zufrieden wird der PC auf die normale Weise erhöht, und die nächste Anweisung in der sequenziellen Adressreihenfolge wird abgerufen.
und ausgeführt.

Im obigen Beispiel ist die Anweisung Branch>0 LOOP (verzweigen, wenn größer als 0) eine bedingte Sprunganweisung.
das einen Sprung zur Position LOOP verursacht, wenn das Ergebnis der unmittelbar vorhergehenden Anweisung, die die
Der um eins verringerte Wert im Register R1 ist größer als null. Das bedeutet, dass die Schleife wiederholt wird, solange es
Einträge in der Liste, die noch zu R0 hinzugefügt werden müssen.
Am Ende des n-ten Durchlaufs der Schleife ergibt die Dekrement-Anweisung einen Wert von Null, und daher,
Das Verzweigen erfolgt nicht. Stattdessen wird die Move-Anweisung abgerufen und ausgeführt. Sie verschiebt das Endergebnis von R0.
in den Speicherort SUM.
Einige ISAs bezeichnen solche Anweisungen als Sprünge. Der Prozessor verfolgt Informationen über die Ergebnisse von
verschiedene Operationen zur Verwendung durch nachfolgende bedingte Sprungbefehle. Dies wird erreicht, indem die
erforderliche Informationen in einzelnen Bits, oft als Zustandscode-Flags bezeichnet. Diese Flags werden normalerweise zusammengefasst
in einem speziellen Prozessorregister, das als Bedingungsregister oder Statusregister bezeichnet wird.
Einzelne Bedingungscode-Flags werden je nach Ergebnis der durchgeführten Operation auf 1 gesetzt oder auf 0 gelöscht.
Einige der häufig verwendeten Flags sind: Vorzeichen, Null, Überlauf und Übertrag.
Thecall and return instructionsare used in conjunction with subroutines. A subroutine is a self-contained
Folge von Anweisungen, die eine gegebene Berechnungsaufgabe ausführt.
Während der Ausführung eines Programms kann eine Unterroutine mehrfach aufgerufen werden, um ihre Funktion auszuführen.
verschiedene Punkte im Hauptprogramm. Jedes Mal, wenn eine Unterroutine aufgerufen wird, wird ein Sprung zum Beginn der
Unterprogramm, um mit der Ausführung seines Satzes von Anweisungen zu beginnen. Nachdem das Unterprogramm ausgeführt wurde, erfolgt ein Sprung.

Zurück zum Hauptprogramm durch die Rückgabebefehls. Interruptscan kann auch den Fluss eines Programms ändern.
Ein Programminterrupt bezieht sich auf den Transfer der Programmsteuerung von einem aktuell laufenden Programm zu
ein weiteres Dienstprogramm als Ergebnis einer externen oder intern erzeugten Anfrage. Die Kontrolle kehrt zur ursprünglichen zurück.
Programm nach der Ausführung des Dienstprogramms.

Das Interruptverfahren ist prinzipiell ziemlich ähnlich einem Unterprogrammaufruf, mit Ausnahme von drei Abweichungen:
(1) Der Interrupt wird normalerweise von einem internen oder externen Signal ausgelöst, das unabhängig von der Ausführung einer Anweisung ist.
(2) Die Adresse des Interrupt-Service-Programms wird von der Hardware oder aus einigen Informationen bestimmt.
das Interruptsignal oder die Anweisung, die das Interruptsignal auslöst; und
(3) Eine Interrupt-Prozedur speichert normalerweise alle Informationen, die notwendig sind, um den Zustand der CPU zu definieren, anstatt
nur den Befehlszähler speichern.
Wenn der Prozessor unterbrochen wird, speichert er den aktuellen Status des Prozessors, einschließlich der Rückkehr.
Adresse, die Registerinhalte und die Statusinformationen, die als Prozessorstatuswort (PSW) bezeichnet werden, und dann
springt zum Interrupt-Handler oder zur Interrupt-Service-Routine. Nach Abschluss dessen kehrt es zur Hauptroutine zurück.
Programme. Unterbrechungen werden im nächsten Abschnitt über Eingabe/Ausgabe detailliert behandelt.

Eingabe- und Ausgabeanweisungen werden verwendet, um Informationen zwischen den Registern, dem Speicher und der Eingabe zu übertragen.
/ Ausgabegeräte. Es ist möglich, spezielle Anweisungen zu verwenden, die ausschließlich E/A-Übertragungen durchführen, oder den Arbeitsspeicher zu verwenden -

verwandte Anweisungen für I/O-Übertragungen.

Angenommen, Sie entwerfen einen eingebetteten Prozessor, der dafür gedacht ist, eine bestimmte Anwendung auszuführen, dann
Definitiv musst du Anweisungen mitbringen, die spezifisch für diese bestimmte Anwendung sind. Aber beim Entwerfen eines
Allzweckprozessor, bei dem Sie nur alle allgemeinen Anweisungsarten berücksichtigen.

Beispiele für spezialisierte Anweisungen können medien- und signalverarbeitungsbezogene Anweisungen sein, sagen wir, Vektor-Typ.
Anweisungen, die versuchen, die Daten-Ebenen-Parallelität auszunutzen, bei der die gleiche Operation der Addition oder Subtraktion durchgeführt wird.
wird auf anderen Daten durchgeführt und dann müssen Sie möglicherweise auf saturierende arithmetische Operationen schauen, multiplizieren
and accumulator instructions.
Die Datentypen und Größen geben die verschiedenen von der CPU unterstützten Datentypen und deren Längen an. Häufig
Operandtypen sind:
Zeichen (8 Bit) Halbes Wort (16 Bit), Wort (32 Bit) Einzelpräzisions-Gleitkomma (1 Wort)
Doppelte Präzision Gleitkommazahl (2 Wörter) Ganzzahlen – Zweierkomplement binäre Zahlen, ASCII-Zeichen,
Gleitkommazahlen gemäß dem IEEE-Standard 754 und Packierte / entpackte Dezimalzahlen.

Adressierungsmodi (AM)

Das Betriebsfeld einer Anweisung gibt die auszuführende Operation an. Diese Operation muss durchgeführt werden auf
einige Daten, die sofort bereitgestellt oder in Computerregistern oder Speicherwörtern abgelegt werden. Die Art und Weise, wie die Operanden

are chosen during program execution is dependent on theaddressing mode of the instruction. The AM specifies
a rule for interpreting or modifying the address field of the instruction before the operand is actually referenced.
In diesem Abschnitt werden Sie die wichtigsten Adressierungsmodi kennenlernen, die in modernen Prozessoren zu finden sind.

Computer verwenden Adressierungsmodus-Techniken mit dem Ziel, eines oder beide der folgenden zu berücksichtigen:

1. Dem Benutzer Programmiervielfalt zu bieten, indem solche Einrichtungen wie Zeiger auf den Speicher und Zähler bereitgestellt werden.
Steuerung von for-Schleifen, Indizierung von Daten und Programmumsiedlung.

2. Um die Anzahl der Bits im Adressfeld der Anweisung zu reduzieren.

Wenn Sie Programme in einer Hochsprache schreiben, verwenden Sie Konstanten, lokale und globale Variablen, Indizes und
Arrays. Beim Übersetzen eines Hochsprachenprogramms in Assembler muss der Compiler in der Lage sein, ...
Implementieren Sie diese Konstrukte mit den Funktionen, die im Instruktionssatz des Computers bereitgestellt werden, in dem die
Das Programm wird ausgeführt. Die verschiedenen Möglichkeiten, wie der Standort eines Operanden in einem Befehl angegeben wird, sind
als Adressierungsmodi bezeichnet. Variablen und Konstanten sind die einfachsten Datentypen und kommen in fast
Jedes Computerprogramm. In der Assemblersprache wird eine Variable durch die Zuweisung eines Registers oder eines Speichers dargestellt.
Ort, um seinen Wert zu halten.

Registermodus—Das Operanden ist der Inhalt eines Prozessorregisters; der Name (Adresse) des Registers ist angegeben.
in der Anleitung.

Absoluter Modus - Der Operand befindet sich an einem Speicherort; die Adresse dieses Standorts wird explizit angegeben in der
Anweisung. Dies wird auch direkt genannt.

Adressen und Datenkonstanten können in der Assemblersprache im Immediate-Modus dargestellt werden.

Unmittelbarer Modus - Der Operand wird explizit in der Anweisung angegeben. Zum Beispiel die Anweisung:
Bewege 200 sofort, R0 dies platziert den Wert 200 im Register R0.
Offensichtlich wird der Immediate-Modus nur verwendet, um den Wert eines Quelloperanden anzugeben. Eine gängige Konvention ist es, ...
Verwenden Sie das Rautezeichen (#) vor dem Wert, um anzuzeigen, dass dieser Wert als unmitteloperandes verwendet werden soll.
Daher schreiben wir die obige Anweisung in der Form:
Bewege #200, R0.
Konstantenwerte werden häufig in Programmen höherer Programmiersprachen verwendet. Zum Beispiel die Anweisung A = B + 6
enthält die Konstante 6.
Vorausgesetzt, dass A und B zuvor als Variablen deklariert wurden und über den Absoluten Modus zugegriffen werden kann, dies
Die Aussage kann wie folgt zusammengefasst werden:

Bewege B, R1
Füge #6, R1 hinzu

Bewege R1, A
Konstanten werden auch in der Assemblersprache verwendet, um einen Zähler zu inkrementieren, nach einem bestimmten Bitmuster zu testen usw.
Indirekter Modus – Hier gibt die Anweisung den Operanden oder seine Adresse nicht ausdrücklich an. Stattdessen wird er bereitgestellt.
Information, aus der die Speicheradresse des Operanden bestimmt werden kann. Wir bezeichnen diese Adresse als die
effektive Adresse (EA) des Operanden.

In diesem Modus ist die EA des Operanden der Inhalt eines Registers oder eines Speicherortes, dessen Adresse
erscheint in der Anleitung.
Wir kennzeichnen Indirektion, indem wir den Namen des Registers oder die im Befehl angegebene Speicheradresse angeben.
(in Klammern. Zum Beispiel, betrachten Sie die Anweisung:)
Addiere (R1), R0.
Um die Add-Anweisung auszuführen, verwendet der Prozessor den Wert im Register R1 als die effektive Adresse des Operanden.
Es fordert eine Leseoperation aus dem Speicher an, um den Inhalt dieses Ortes zu lesen. Der gelesene Wert ist der
gewünschter Operand, den der Prozessor zu den Inhalten des Registers R0 addiert.
Indirekte Adressierung über einen Speicherort ist ebenfalls möglich, wie in der Anweisung angegeben:
Addiere (A), R0.
In diesem Fall liest der Prozessor zuerst den Inhalt der Speicheradresse A und fordert dann einen zweiten Lesevorgang an.
diesen Wert als Adresse verwenden, um den Operanden zu erhalten.
Das Register oder der Speicherort, der die Adresse eines Operanden enthält, wird als Zeiger bezeichnet.
Indirektion und die Verwendung von Zeigern sind wichtige und leistungsfähige Konzepte in der Programmierung. Die Änderung des Inhalts
Des Standorts A im Beispiel ruft unterschiedliche Operanden ab, um sie in das Register R0 zu addieren.

Indexmodus – Dieser Adressierungsmodus bietet eine andere Art von Flexibilität beim Zugriff auf Operanden. Er ist nützlich in
Umgang mit Listen und Arrays.

In diesem Modus wird die effektive Adresse des Operanden durch Hinzufügen eines konstanten Wertes (Abweichung) generiert.
zu den Inhalten eines Registers. Das verwendete Register kann entweder ein spezielles Register sein, das für diesen Zweck bereitgestellt wird, oder es kann

sein irgendeiner der allgemeine Register im Prozessor. In jedem Fall wird er als Indexregister bezeichnet.

Wir kennzeichnen den Indexmodus symbolisch als X(Ri).

wobei X den konstanten Wert darstellt, der in der Anweisung enthalten ist, und Ri der Name des beteiligten Registers ist.
Die effektive Adresse des Operanden wird durch EA = X + [Ri] gegeben.
Der Inhalt des Indexregisters wird im Verlauf der Generierung der effektiven Adresse nicht geändert.
In einem Assemblerspracheprogramm kann die Konstante X entweder als explizite Zahl oder als eine
symbolischer Name, der einen numerischen Wert darstellt.
Wenn die Anweisung in Maschinencode übersetzt wird, wird die Konstante X als Teil der Anweisung angegeben.
und wird normalerweise mit weniger Bits dargestellt als die Wortlänge des Computers.
Da X ein ganzzahliger Wert ist, muss er vor der Addition auf die Registerlänge sign-erweitert werden.
Inhalt des Registers.

Relativer Modus – Das oben definierte den Indexmodus unter Verwendung von Register der allgemeinen Prozessoren. Eine nützliche Version
Dieser Modus wird erreicht, wenn der Programmzähler (PC) anstelle eines allgemeinen Registers verwendet wird.

Then, X (PC) can be used to address a memory location that is X bytes away from the location presently pointed
den PC kaufen.

Da der angesprochene Speicherort "relativ" zum Programmzähler identifiziert wird, der immer den aktuellen
Der Ausführungspunkt in einem Programm, der Name Relativer Modus ist mit dieser Art der Adressierung verbunden.

In diesem Fall wird die effektive Adresse durch den Indexmodus unter Verwendung des Programmzählers anstelle von
Allzweckregister Ri.
Diese Adressierungsart wird allgemein mit Steuerflussanweisungen verwendet.
Obwohl dieser Modus verwendet werden kann, um Datenoperanden zuzugreifen, ist seine häufigste Verwendung, das Ziel anzugeben.
Adresse in Zweigbefehlen.
Eine Anweisung wie: Branch > 0 LOOP, die wir zuvor besprochen haben, führt dazu, dass die Programmausführung zu der
Zielort des Zweigs, identifiziert durch den Namen LOOP, wenn die Zweigbedingung erfüllt ist.
Dieser Standort kann berechnet werden, indem er als Offset vom aktuellen Wert des PC angegeben wird.
Da das Ziel des Sprungs entweder vor oder nach der Sprunganweisung liegen kann, wird der Offset als signiert angegeben.
Zahl.
Erinnern Sie sich daran, dass der Prozessor während der Ausführung einer Anweisung den PC erhöht, um auf die nächste Anweisung zu zeigen.
Die meisten Computer verwenden diesen aktualisierten Wert, um die effektive Adresse im Relativ-Modus zu berechnen.

Die beiden im Folgenden beschriebenen Modi sind nützlich, um auf Datenobjekte an aufeinanderfolgenden Speicherorten zuzugreifen.

Autoincrement-Modus—Die EA des Operanden ist der Inhalt eines in der Anweisung angegebenen Registers. Nach
Beim Zugriff auf das Operand wird der Inhalt dieses Registers automatisch inkrementiert, um auf den nächsten Punkt in einem zu zeigen
Liste. Wir kennzeichnen den Autoincrement-Modus, indem wir das angegebene Register in Klammern setzen, um zu zeigen, dass das
Der Inhalt des Registers wird als EA verwendet, gefolgt von einem Pluszeichen, um anzuzeigen, dass dieser Inhalt verwendet werden soll.
incremented after the operand is accessed.

Somit wird der Autoincrement-Modus als (Ri)+ geschrieben.

Automatische Dekrementierungsmodus – Als Begleiter des automatischen Inkrementierungsmodus greift ein weiterer nützlicher Modus auf die Elemente zu.

of a list in the reverse order. In the autodecrement mode, the contents of a register specified in the instruction
werden zuerst automatisch dekrementiert und dann als die effektive Adresse des Operanden verwendet.
Wir bezeichnen den Autodecrement-Modus, indem wir das angegebene Register in Klammern setzen, das von einem Minuszeichen vorangestellt wird.

um anzuzeigen, dass der Inhalt des Registers vor der Verwendung als effektive Adresse verringert werden soll.
Somit schreiben wir – (Ri).
In this mode, operands are accessed in descending address order.
Sie fragen sich vielleicht, warum die Adresse vor ihrer Verwendung im Autodekrement-Modus dekrementiert und inkrementiert wird.
nachdem es im Autoincrement-Modus verwendet wurde. Der Hauptgrund dafür ist, dass diese beiden Modi verwendet werden können
Gemeinsam ein Stapel implementieren.

Die Abschnitte haben Ihnen gezeigt, dass der Prozessor verschiedene Arten von Instruktionen ausführen kann und es gibt
verschiedene Möglichkeiten zur Spezifizierung der Operanden. Sobald dies alles entschieden ist, müssen diese Informationen dem
Prozessor in Form eines Instruktionsformats. Die Anzahl der Bits in der Instruktion wird in Gruppen unterteilt, die genannt werden
Die häufigsten Felder, die in Instruktionsformaten vorkommen, sind:

1. Ein Operationscode-Feld, das die durchzuführende Operation angibt. Die Anzahl der Bits wird anzeigen, dass
Anzahl der durchführbaren Operationen.

2. Ein Adressfeld, das eine Speicheradresse oder ein Prozessorregister bezeichnet. Die Anzahl der Bits hängt ab
auf die Größe des Speichers oder die Anzahl der Register.

3. Ein Modusfeld, das angibt, wie das Operanden oder die effektive Adresse bestimmt wird. Dies hängt von
the number of addressing modes supported by the processor.

Die Anzahl der Adressfelder kann drei, zwei oder eins betragen, abhängig von der verwendeten ISA. Beachten Sie auch, dass,
Basierend auf der Anzahl der unterstützten Operanden und der Größe der verschiedenen Felder beträgt die Länge des
Die Anweisungen werden variieren. Einige Prozessoren fassen alle Anweisungen in ein einheitliches Format, während andere Gebrauch machen von
von Formaten unterschiedlicher Größen. Dementsprechend haben Sie ein festes Format oder ein variables Format.
Die Interpretation von Speicheradressen – Sie haben im Grunde zwei Arten der Interpretation der Speicheradressen – Big
Endianness und die Little-Endian-Anordnung. Speicher werden normalerweise als Bytes angeordnet und eine einzigartige
Die Adresse eines Speicherorts kann 8 Bit Informationen speichern. Aber wenn man sich die Wortlänge anschaut von
Der Prozessor, die Wortlänge des Prozessors kann mehr als ein Byte betragen. Angenommen, Sie betrachten einen 32-Bit
Prozessor, er besteht aus vier Bytes. Diese vier Bytes erstrecken sich über vier Speicherorte. Wenn Sie das angeben
Adresse eines Wortes, wie Sie die Adresse des Wortes angeben würden – werden Sie die Adresse des
Das bedeutendste Byte als Adresse des Wortes (Big End) oder die Adresse des am wenigsten signifikanten Bytes angeben (Little End)
Ende) als die Adresse des Wortes. Das unterscheidet zwischen einer Big-Endian-Anordnung und einer Little-Endian.
Anordnung. IBM, Motorola, HP folgen der Big-Endian-Anordnung und Intel folgt der Little-Endian.
Anordnung. Außerdem, wenn ein Datenbereich über verschiedene Speicherorte verteilt ist, und Sie versuchen, auf ein Wort zuzugreifen, das ist
Wenn wir mit der Wortgrenze ausgerichtet sind, sagen wir, es gibt eine Ausrichtung. Wenn Sie versuchen, auf die Wörter zuzugreifen, die nicht an einem beginnen.

Wortgrenze, Sie können weiterhin darauf zugreifen, aber sie sind nicht ausgerichtet. Ob es Unterstützung gibt, um auf Daten zuzugreifen, die ...

misaligned is a designissue. Even if you’re allowed to access data that is misaligned, it normally takes more
Anzahl der Speicherzyklen zum Zugriff auf die Daten.

Das könnte Ihnen auch gefallen