- Prozessorarchitekturen
- RISC- und CISC-Befehlssatzarchitektur
- Complex Instruction Set Computing (CISC)
- Reduziertes Befehlssatz-Computing (RISC)
Das eingebettete System ist das Herz und der Kern der meisten auf dem Markt erhältlichen elektronischen Produkte. Es ist die Implementierung von Engineering, bei der Hardware auf Software trifft. Wir sind von einer Welt eingebetteter Systeme umgeben, mit Mini-Computern in biometrischen Türschlössern, Flugzeugen, Autos, Herzschrittmachern usw. Diese ressourcenbeschränkten, kleinen, intelligenten und leistungsstarken Systeme helfen uns bei unseren täglichen Aufgaben.
Haben Sie schon einmal darüber nachgedacht, wie unser Körper funktioniert, wie das Nervensystem, das Gehirn und die Multitasking-Fähigkeit. Wenn Sie all diese Funktionen kombinieren, erhalten Sie ein grobes Bild eines biologischen eingebetteten Systems. Unser Gehirn verbirgt das komplexe Detail seiner Funktionsweise, das in ihm stattfindet, ermöglicht es uns jedoch, es auf maximales Potenzial zu steuern. Die gleiche Komplexität gilt für den in eingebetteten Systemen verwendeten Prozessor oder Controller. Sie verbergen komplexe Details und bieten uns eine übergeordnete Schnittstelle, an der wir arbeiten können. Für die Abstraktionsebene kann man in Beziehung setzen, wie der Code zum Hinzufügen von zwei Zahlen in einer Programmiersprache auf hoher Ebene bewirkt, dass die Register in den Chips Bits verarbeiten und dem Benutzer eine Ausgabe zurückgeben.
Prozessorarchitekturen
Die Zentraleinheit, die sich sowohl auf den Mikroprozessor als auch auf den Mikrocontroller bezieht, führt mithilfe einer Steuereinheit (CU) und einer arithmetischen Logikeinheit (ALU) bestimmte Aufgaben aus. Wenn die Anweisungen aus dem RAM geliefert werden, handelt die CPU mit Hilfe ihrer beiden Hilfseinheiten, indem sie Variablen erstellt und ihnen Werte und Speicher zuweist. Es ist wirklich wichtig zu wissen, wie die CPU all diese Aktionen mithilfe ihrer Architektur ausführt. Wenn Sie mehr über die Funktionsweise eines Mikrocontrollers erfahren möchten, lesen Sie diesen Artikel über Grundlagen des Mikrocontrollers.
Jeder CPU ist ein Speicher zum Speichern des Programms und der Daten zugeordnet. Programm und Daten arbeiten mit der CPU zusammen, um die Ausgabe zu erhalten. Das Programm liefert die Anweisung, während die Daten die Informationen liefern, an denen gearbeitet werden soll. Für den Zugriff auf das Programm und die Daten verwendet die CPU Busse. Diese Busse sind Drähte. Genauer gesagt sind dies die Drahtspuren, die Sie möglicherweise auf den Leiterplatten gesehen haben. In diesen Jahren haben sich Mikrocontroller und Mikroprozessoren durch Anpassung verschiedener Architekturen entwickelt, basierend auf den Anwendungs- oder Entwurfsanforderungen. Die Auswahl des Mikrocontrollers wird von der Art der darin verwendeten Architektur beeinflusst. Werfen wir einen Blick auf die beliebten Architekturen.
Von-Neumann / Princeton Architektur
Die Art und Weise, wie die CPU Zugriff auf das Programm und die Daten erhält, gibt Auskunft über die Architektur der CPU. Früher wurde ein einzelner Bus verwendet, um Zugriff auf das Programm und die Daten zu erhalten. Diese Art von Architektur ist als Von Neumann-Architektur oder einfacher als Princeton-Architektur bekannt. Ein einziger Bus zum Abrufen des Codes und der Daten bedeutet, dass sie sich gegenseitig in die Quere kommen und die Verarbeitungsgeschwindigkeit der CPU verlangsamen, da jeder auf den anderen warten musste, um das Abrufen abzuschließen. Diese Einschränkung wird auch als Von-Neumann-Engpassbedingung bezeichnet.
Harvard-Architektur
Um den Prozess zu beschleunigen, wurde Harvard Architecture vorgeschlagen. In dieser Architektur sind separate Datenbusse für Daten und Programm vorhanden. Diese Architektur schlug also die Verwendung von vier Bussen vor
- Ein Satz von Datenbussen, die die Daten in die CPU hinein und aus dieser heraus befördern.
- Ein Satz von Adressbussen für den Zugriff auf die Daten.
- Ein Satz von Datenbussen zum Übertragen von Code in die CPU.
- Ein Adressbus für den Zugriff auf den Code.
Die Verwendung eines separaten Adressbusses und Datenbusses bedeutete eine geringe Ausführungszeit für die CPU, dies geht jedoch zu Lasten der Komplexität beim Entwurf der Architektur. Die Von Neumann-Architektur mag etwas faul klingen, hat aber den Vorteil ihres einfachen Designs.
Die Harvard-Architektur ist sehr einfach zu implementieren, wenn sich die CPU und die Speichereinheiten den gleichen Speicherplatz teilen oder RAM und ROM in die Verarbeitungseinheit integriert (auf dem Chip) sind, z. B. in einem Mikrocontroller, bei dem die Abstände in Mikrometern und Millimetern angegeben sind. Dieselbe Architektur ist jedoch schwer zu implementieren, wenn sich der Speicher, in dem sich der Code befindet, außerhalb der Verarbeitungseinheit befindet, z. B. in x86-IBM-PCs. Ein Satz separater Kabelbahnen für die Daten und die Adresse auf der Hauptplatine würde die Platine komplex und teuer machen. Lassen Sie es uns anhand eines Beispiels eines Prozessors verstehen.
Ein Prozessor mit 64-Bit-Datenbus und 32-Bit-Adressbus würde ungefähr 100 Busse (96 für den Daten- und Adressbus und wenige andere für die Steuersignale) für die Implementierung der Von-Neumann-Architektur benötigen. Dieselbe Struktur würde bei Implementierung mit der Harvard-Architektur die Doppeldraht-Leiterbahnen ungefähr 200 kosten, wenn eine große Anzahl von Pins aus dem Prozessor austritt. Aus dem gleichen Grund wird keine reine Harvard-Architektur für PCs und Workstations implementiert. Stattdessen wird eine modifizierte Harvard-Architektur verwendet, in der die Speicherhierarchie mit dem CPU-Cache-Speicher zum Trennen des Programms und der Daten verwendet wird. Die Speicherhierarchie trennt den Speicher basierend auf der Hierarchie der Antwortzeit der Prozesse.
Befehlssatz-Architektur
Wenn das Programm (Code) in den Speicher des Systems (RAM) geladen wird, wird es von der CPU (die sowohl den Mikroprozessor als auch den Mikrocontroller referenziert) abgerufen, um auf die Daten zu reagieren. Es ist sehr ähnlich, da wir Anweisungen geben, wenn wir den Hund trainieren bestimmte Aktionen und Befehle. Wenn diese Anweisungen auf bestimmte Transistoren angewendet werden, wechseln sie von einem Logikpegel zum anderen, um dies zu ermöglichen. Im Grunde genommen kommuniziert der menschliche Programmierer mit Hilfe von Anweisungen mit dem Prozessor. Jede CPU verfügt über einen eigenen Befehlssatz, eine Sammlung von Befehlen, die auf ihrer Architektur und ihren Funktionen basieren.
Die CPU versteht diese Anweisungen in der Kombination von Nullen und Einsen, die auch als Opcode bezeichnet werden. Für einen menschlichen Programmierer ist es wirklich schwierig, sich die Kombination von Nullen und Einsen für jeden Befehl zu merken, der der CPU zugeordnet ist. Um die Arbeit eines menschlichen Programmierers zu vereinfachen, werden uns übergeordnete Schnittstellen dieser Anweisungen bereitgestellt, und der Compiler konvertiert sie in Form von Nullen und Einsen für ihre Verarbeitung. Außerdem enthält der Befehlssatz jeder CPU eine begrenzte Anzahl von Befehlen, die sie verstehen kann.
Leistung der CPU
Möglicherweise haben Sie den Begriff Taktrate der CPU in Bezug auf die Leistung der CPU gehört. CPUs haben im Allgemeinen eine Taktrate in MHz (Mega-Hertz) oder GHz (Giga-Hertz) wie eine Taktrate von 25 GHz. Die mit der Taktrate verknüpfte Zahl gibt an, wie oft der Takt in der CPU in Zyklen pro Sekunde tickt. Die Praktikabilität der Taktrate kann durch die Tatsache verstanden werden, dass Anweisungen basierend auf Taktzyklen der CPU ausgeführt werden, die proportional zur Anzahl der Programme sind, die die CPU gleichzeitig ausführen kann.
Die Leistung der CPU hängt von der Anzahl der Anweisungen ab, die in das Programm geschrieben werden, mehr von den Anweisungen, mehr von der Zeit, die die CPU benötigt, um sie auszuführen. Dies hängt auch von der Anzahl der Taktzyklen ab, in denen jeder Befehl ausgeführt wird. Bestimmte Befehle benötigen mehr Taktzyklen als andere, sodass sie der Leistung der CPU hinterherhinken. Anweisungen in einem Programm und Zyklen, die zur Ausführung jeder Anweisung erforderlich sind, sind umgekehrt proportional zueinander. Das Ändern eines wirkt sich auf das andere aus. Dies ist der Punkt, an dem die CPU-Branche gespalten ist.
RISC- und CISC-Befehlssatzarchitektur
Wie oben erwähnt, hängt die Ausführung eines Programms und die Leistung der CPU von der Anzahl der Befehle in einem Programm ab, wobei die Befehle dieser bestimmten CPU als Teil des Befehlssatzes vorgeschlagen werden und der zweite Faktor die Anzahl der Taktzyklen in ist welche jeder Befehl ausgeführt wird. Basierend auf diesen beiden Faktoren stehen derzeit zwei Befehlssätze zur Verfügung. Das früheste davon ist Complex Instruction Set Computing (CISC), während das andere Reduced Instruction Set Computing (RISC) ist. Lassen Sie uns jede dieser Architekturen im Detail diskutieren, um den Unterschied zwischen RIC- und CISC-Architektur zu verstehen.
Complex Instruction Set Computing (CISC)
CISC steht für Complex Instruction Set Computing. Das Hauptmotiv von CISC besteht darin , die Anzahl der von einem Programm ausgeführten Anweisungen zu verringern. Dazu werden viele einfache Anweisungen wie Adressmodus, Laden usw. kombiniert und eine einzige komplexe Anweisung gebildet. Der CISC-Befehl enthält eine Reihe einfacher Befehle sowie einige spezielle Befehle, deren Ausführung mehr als einen Taktzyklus dauert. Die CISC-Anweisungen können ohne Eingreifen von Registern direkt auf den Speicher angewendet werden, was bedeutet, dass einige grundlegende Anweisungen wie das Laden von Werten und der Speicherbedarf (RAM) nicht mehr erforderlich sind. CISC-Anweisungen legen mehr Wert auf Hardware als auf Software, was bedeutet, dass die Compiler nicht belastet werden, sondernCISC verwendet Transistoren als Hardware zum Decodieren und Implementieren von Anweisungen. Da der Befehl jedoch komplex ist und aus mehreren Schritten besteht, werden sie in einer größeren Anzahl von Taktzyklen ausgeführt.
Eine einfache Analogie zu beziehen ist, wenn Sie gesagt werden, das Buch zu öffnen und das 3 lesen rd Kapitel 2 nd Seite. In dieser Reihe von Aktivitäten, haben Sie mehrere Schritte wie das Buch aus der Tasche zu finden, als die Seite zu Kapiteln 3 schlurfend und dann zur 2 ging nd Seite des Kapitels und dann anfangen zu lesen. Die Serie von einem Schritt in einem einzelnen Befehl kombiniert, wenn das Lesen der Seite 44 (die der 2 nd Seitenzahl von 3 rd Kapitel), erhalten wir eine CISC - Instruktion.
Reduziertes Befehlssatz-Computing (RISC)
Der erste integrierte Chip wurde 1958 von Jack Kilby als Oszillator entworfen, und in den 1970er Jahren kam der erste kommerzielle Mikroprozessor von Intel heraus. Obwohl es zu Beginn der Prozessoren keine CISC gab. Mit den hohen Anforderungen an die Datenverarbeitung wurde die CISC-Architektur jedoch immer komplexer und schwieriger zu handhaben. Eine vollständige Neugestaltung der CISC-Architektur, bekannt als RISC, wurde von John Coke von IBM veröffentlicht. Um zwischen den beiden Architekturen zu unterscheiden, wurden die Begriffe RISC und CISC eingeführt.
RISC steht für Reduced Instruction Set Computing. Das Hauptmotiv von RISC war die Einführung einer einheitlichen Größe und Ausführung von Anweisungen. Dies wurde durch Einführen eines einfachen Befehlssatzes erreicht, der als ein Befehl pro Zyklus ausgeführt werden konnte. Dies erfolgt durch Aufbrechen komplexer Befehle wie Laden und Speichern in verschiedene Befehle, wobei jeder Befehl ungefähr einen Taktzyklus benötigt, um ausgeführt zu werden. Die RISC-Architektur enthält einfache Anweisungen derselben Größe, die in einem einzigen Taktzyklus ausgeführt werden können. RISC-basierte Maschinen benötigen mehr RAM als CISC, um die Werte zu speichern, wenn jeder Befehl in Register geladen wird. Die Ausführung eines einzelnen Befehls pro Zyklus bietet RISC-basierten Maschinen den Vorteil des Pipelining(Pipelining ist der Prozess, bei dem der nächste Befehl geladen wird, bevor der erste Befehl ausgeführt wird. Dies erhöht die Effizienz der Ausführung.) RISC-Architektur betont