Funktionsweise von Computer-Chips
Ein moderner Mikroprozessor ist ein enorm kompliziertes Gebilde, und es hat jahrzehntelange Arbeit von Tausenden von Menschen genommen, um es zu bekommen, wo es heute ist. Es ist fast unmöglich, alle abzudecken, aber ich werde trotzdem versuchen. Und machen Sie sich einen Eimer Popcorn bereit – denn dies wird lang sein.
Jedem modernes System arbeitet auf der Grundlage guter Abstraktionen, d.h. einfacher Module auf der komplexere Dinge aufbauen. Meiner Meinung nach kann der moderne Prozessor in die folgenden sehr breiten Schichten unterteilt werden:
- Geräte (Transistoren)
- Schaltungen
- Logik-Gatter
- Einfache Logik-Bausteine
- Prozessor
- Software
Zunächst beginnen wir vom einen "Mittelweg" ist weder kompliziert zu verstehen, noch zu weit von einem tatsächlichen Prozessor: Logikgatters. Ein Logikgatter dauert einige Anzahl der Eingänge, von denen alle 0 oder 1 sind, und wird die wieder 0 oder 1 ist etwas Ausgabebild nach einigen Regel. Beispielsweise wird eine AND-Gate Ausgang 1 nur, wenn alle Eingänge 1 sind.
Anfangen Sie könnten jetzt, Frage mich ", aber was meinst du mit 0 und 1? Was bedeutet das in Bezug auf Strom? ". Die Antwort ist unglaublich kompliziert. Es kann bedeuten, dass ein Maß an Spannung (0 ist 0V, 1 1V), einen elektrischen Impuls (0 ist kein Impuls, 1 ist ein Puls von 1V für 1 Nanosekunde, ein Milliardstel einer Sekunde), ein Photon (0 ist kein Photon, 1 1000 Photonen), und so weiter, je nachdem, wie die Schaltung entworfen wurde. Das ist die Macht der Abstraktion. Du musst nicht wissen, was die 0 und 1 bedeutete, um Dinge, die weiter oben zu gestalten (aber Sie machen schlechte Entscheidungen weiter oben wenn Sie nicht wissen, so ist die Abstraktion natürlich nicht perfekt).
Nun, diese ganz einfache Dinge tatsächlich lassen Sie uns tun Sachen? Lassen Sie uns vorgeben, dass Sie dabei sind, Ihre eigenen Prozessor-Firma zu gründen, und Sie möchten einen einfachen Block zu machen, der zwei Zahlen, die mit diesen Toren allein hinzufügt.
"Aber festhalten," sagen Sie, "Was ist eine Zahl in Bezug auf 0 und 1? Ich kenne nur Zahlen wie 57 und 42, die Ziffern von 0-9, nicht nur 0 und 1" gemacht werden. Stimmt, aber sehen, 57 ist nur eine Darstellung der Zahl darunter, das ist wirklich 5 * 10 + 7. Sie können auch darstellen 57 1 * 2 ^ 5 + 1 * 2 ^ 4 + 1 * 2 ^ 3 + 0 * 2 ^ 2 + 0 * 2 ^ 1 + 1 * 2 ^ 0. Voila! Dort haben Sie es; 57 ist dasselbe wie 111001 in diesem neuen System. Sie können sich überzeugen, dass beliebig viele in dieser Form dargestellt werden kann.
Nun gehen wir zu den Addierer... Zunächst einmal müssen wir bauen eine "halbe Adder", oder nimmt an zwei Bits und fügt ihnen letztlich Ausgabe zwei Bits. Also, wenn die beiden Bits beide 0 sind, wird es 00, ausgeben, wenn nur einer von ihnen 1 ist, es 01 gibt und wenn beide 1 sind es 10 gibt. Lassen Sie uns denken Sie ein Bit gleichzeitig zu und das erste Bit erste. Nach einiger Zeit herausfinden wir, "Oh!" Das Bit ist 1 nur, wenn beide die Eingangsbits 1 sind. Damit wir durch ein Tor und erhalten können. "Awesome!" Jetzt haben wir die Hälfte unserer Arbeit. Nur ein Bit übrig.
Jetzt sitzen wir um noch einmal zu überdenken. Hmm, scheint diese andere etwas härter. Es ist fast wie ein oder-Gatter, aber nicht 1 Ausgang, wenn beide Eingänge 1 sind. OK, lasst uns nicht darüber nachdenken Sie diese mehr und nur nennen es eine neue Art von Tor, einem exklusiven oder Tor entscheiden.
"Mach dir keine Sorgen," sage ich, "Wir stocken einige super genial Schaltungen-Ingenieure, die solch ein Tor im Schlaf gestalten können." Jetzt wir ein Bild von unsere erstaunliche neue Schaltung zeichnen: eine halbe Addierer.
Aber jetzt können Sie sagen, "Wir können nur 1-Bit-Zahlen. Unsere Konkurrenzfirma kann Zahlen über 1 Milliarde hinzufügen. Wie tun wir das?" Die Antwort ist – Überraschung Überraschung — Abstraktionen. Sie sehen, unsere aktuelle Design können nur zwei 1-Bit-Zahlen, und der Ausgang ist eine Summe und eine "tragen", die jetzt auf die nächste höhere Bit hinzugefügt werden muss. Dies braucht die Zugabe von drei Bits, was unsere kleinen Kerl nicht möglich.
So nach ein weiterer Tag voller Kopf darüber zerbrechen, wir dies herauszufinden, werden eine gute Schaltung dazu und nennen es "voll" Addierer.
Jetzt haben wir die Zugabe macht der Welt in unseren Händen. Seht ihr, jetzt wir können nur Kette 32 dieser kleinen Kerle zusammen wie folgt und wir haben in unseren Händen ein Monster, die Zahlen mehr als 1 Mrd., in der ein Wimpernschlag hinzufügen können.
Und hier ist die gute Nachricht: Sie können nur gehen auf die bessere Tore, und Ihre Schaltung werden besser und besser. Das ist die Macht der Abstraktion.
Natürlich, wie es sich herausstellt, ist unsere Weise des Hinzufügens Dinge nicht wirklich so toll. Sie besser machen können – viel besser, in der Tat. Aber wegen unserer Freund Abstraktion kann, unabhängig von den Toren erfolgen. Wenn Ihre neuere Schaltung zweimal ist besser als das alte, und haben Sie zwei Mal schneller Tore, Sie haben eine viermal bessere Schaltung!
Das ist einer der wichtigsten Faktoren, wie wir in ein paar Jahrzehnten tausendfach besser geworden. Wir gebaut kleiner, schneller, weniger Strom verbrauchen Tore. Und wir haben herausgefunden, bessere Möglichkeiten die gleiche Berechnung zu tun. Und nach dem zusammenfügen, es funktionierte wie ein Zauber!
Wir jetzt Schufterei für ein Jahr in unserer Garage und Schaltungen, die können multiplizieren, hinzufügen, subtrahieren, dividieren, vergleichen und alle Arten von Arithmetik, alle innerhalb 1 Nanosekunde tun zu bauen. Wir machen noch eine kleine Schaltung, die "einen Wert speichern kann", (d.h. seine Ausgabe hängt was Wert darauf früher geschrieben wurde). Nennen wir es ein Flip-flop.
Aber seht ihr, eines haben alle unsere Schaltungen gemein ist, dass sie nur bei den Eingängen und den gleichen Vorgang über sie, um die Ausgabe zu tun. Was passiert, wenn ich wollte, ein anderes Mal, um hinzuzufügen oder etwas zu multiplizieren?
Wir müssen in diesem Fall nicht Bits als nur Zahlen betrachten. Lassen Sie uns versuchen Sie, die "Aktionen" selbst in den Bits repräsentieren. 0 bedeutet "hinzufügen", 1 bedeutet "Multiplizieren" lassen Sie uns sagen. Nun, lasst uns bauen Sie eine kleine Schaltung, die sieht ein bisschen wie ein "Befehl" und wählt zwischen zwei Eingängen, I0 und I1, I0 ausgibt, wenn der Befehl ist 0 und I1, wenn es 1. Dies ist ein multiplexer.
"Wow," sagen Sie: "jetzt brauchen wir nur einen multiplexer, zwischen den Ausgängen ein Addierer und einen Multiplikator zu wählen, und wir haben unsere Lösung!" In der Tat können wir haben viele diese Multiplexer zwischen so vielen Ausgänge wählen – dann haben wir uns eine wirklich erstaunliche Maschine.
Aber halt – wir haben eine andere Idee. Denken Sie daran, diese lustige kleine Flip Flops, die wir früher gebaut? Nun, was passiert, wenn wir eine 1024-1 multiplexer am Ausgang des 1024 Flip-flops einstecken? Jetzt haben wir, was einen 1 KBit Speicher genannt wird. Wir können ihm eine "Adresse", und es wird uns ein wenig zurück geben, die das Bit an diesem nummerierten Position gespeichert wurde. Darüber hinaus kann diese Bits jetzt entweder "Zahlen" (Daten) oder "Befehle" (Anleitung).
Hier ist die wirklich erstaunliche Sache: Wir haben alles was wir brauchen, um einen Prozessor zu bauen:
- Zunächst einmal haben wir eine Speicher-Array MEM hält die "Befehle" (Anleitung) und "Zahlen" (Daten).
- Zweitens haben wir eine Reihe namens "Program Counter," eine, die wir verwenden, um die Anweisung von MEM ausführen auswählen. Es wird normalerweise nur um 1 in jedem Schritt erhöht.
- Drittens haben wir einen arithmetischen Block mit Multiplexer.
- Viertens, generieren wir beide Eingänge zu unserem arithmetischer Block von MEM.
- Schließlich gibt es zwei Arten von Anweisungen: Daten Anweisungen und Steuerbefehle. Jede Anweisung Daten enthält vier Dinge: zwei Adressen angeben, die zwei Zahlen zur Abholung MEM, einem Befehl sagen welche Operation durchführen und einen anderen Ort sagen, wo das Ergebnis zurück zu setzen. Die Steueranweisungen setzen einfach eine andere Adresse zurück in den "Program Counter."
Diese Sache, die Sie gerade erstellt haben nennt man eine Von-Neumann-Maschine (ja, verrückte Leute wie er dachte all das Zeug, 1945). Heutzutage sind Menschen beginnen zu Fragen, ob dies ist der beste Weg, um Dinge zu bauen, aber das ist der normale Weg baute heutzutage jeder Prozessor.
Nun, wenn ich bereits sagte, dass dies ist, wie alle Prozessoren gebaut sind, ich meinte "theoretisch" und von "theoretisch", meine ich "lassen Sie uns betrachten, dass eine Kuh ist eine Kugel" theoretisch. Sie sehen, Ihr Konkurrent CPU Kreise um Ihre grundlegende Von-Neumann-CPU ausgeführt werden kann. Sie haben nur 1000 Kbit Speicher, Ihr Konkurrent kann soviele Milliarden behandeln (Gb) oder Billionen (Tb) von Bits des Speichers. Aber jetzt können Sie sagen, kein Weg in die Hölle die Jungs können erstellen 1 Milliarde multiplexer und seine Daten innerhalb 1 Nanosekunde. Wahren. Ihr Geheimrezept ist etwas Ortschaftgenannt.
Was dies bedeutet, dass Ihr Programm normalerweise nur wenige Standorte Daten und Unterweisung Speicher gleichzeitig verwendet. Also was willst du ist einen großen Speicher, bestehend aus GB an Daten haben, dann bringen Sie in einem kleinen Teil davon – der Teil, der derzeit zu einer viel kleineren Palette (vielleicht 1 MB) verwendet wird genannt den Cache. Natürlich, jetzt haben Sie einen noch kleineren Cache unter diesen Cache, und so weiter, bis Sie etwas erreichen können, die Sie lesen oder schreiben können, in etwa die gleiche Menge an Zeit möglich eine arithmetische Berechnung.
Eine weitere starke Idee, die Sie tun können, nennt man aus der Auftragsbearbeitung. Das Konzept dahinter lässt sich durch das folgende Programm, X berechnet = (A+B)*(C+D).
- Add A und B und bewahren Sie es an U
- Fügen Sie C und D hinzu und speichern Sie es in V
- U und V zu multiplizieren und in X gespeichert
Auf die übliche Weise werden Sie es nur tun, sequentiell, gehen eine Anweisung nach der anderen und schlichten Ausführung in 3 Schritten. Aber wenn Sie zwei Kreuzottern in Ihrem System haben, Sie können Anweisungen 1 und 2 parallel laufen, und dann in 2 Schritten erfolgen. Ihr habt so viel wie möglich jeden Schritt ausführen und Ihre Ausführung schneller zu beenden.
Denken Sie zurück in die Zeit, als alles, was Sie wußte, war, eine einfache und-Gatter. Diese Sache baute Sie scheint so fremd aus. Aber es ist wirklich nur Schichten über Schichten von Blöcken und Wiederverwendung von einer einfachen Block um eine komplexere Block zu bauen. Das ist die Kernidee: A CPU ist gebaut nur durch das Ausbessern miteinander teilen, das ist durch das Ausbessern gemeinsam kleinere Teile. Am Ende wenn Sie nur auf die Sache starren, aber es sieht folgendermaßen aus:
Das sind natürlich nur die Grundlagen. Was sagen Sie über ist die gleichwertige Ofresponding, "wie eine F1-Auto funktioniert?" mit "Es hat Räder und eine Lenkung, die Räder und einen Motor auf die Räder laufen führt". Wahrlich, entwirft und baut eine CPU ist eines der Wunder der modernen Technologie, der eine große Anzahl von ingenieurwissenschaftlichen Disziplinen (einschließlich z. B. Quanten-Physik, Metallurgie, Photonik etc.) beinhaltet. So, jetzt wollen wir versuchen, ein wenig mehr ins Detail zu erhalten.
Herstellung
Eines der erstaunliche Kunststücke der Technik wurde die Fähigkeit zum Erstellen und verbinden von Milliarden von winzigen Transistoren, jeweils weniger als 100 nm (ja das Nano, d. h. ein Milliardstel eines Meters) breit, in einem genauen Muster definiert durch die Schaltung und die CPU-Architekten – und machen es noch unglaublich billig. Es ist klar, dass das Erstellen und verbinden wie eine riesige Anzahl von Transistoren eins nach dem anderen von hand praktisch unmöglich ist, oder sogar durch irgendeine Form der Mechanik, wirklich.
Um das zu überwinden, wir fertigen Chips mit einer Methode namens Photolithographie, und es ist der Grund für den extrem niedrigen Preis von Prozessoren im Vergleich zu ihrer Komplexität. Die Idee ist ähnlich wie eine analoge Foto "entwickelt werden" zur (wenn jemand diejenigen erinnert). Zuerst werde ich beschreiben, wie erstelle ich eine Muster von Siliciumoxid auf Silizium (Dies ist bei Toren von Transistoren verwendet). Zuerst wird eine Schicht aus Siliziumoxid auf dem Silikon hinterlegt. Dann wird ein Photoresist Material oben drauf aufgetragen. Dieses Material ist empfindlich gegen Licht, aber ist resistent gegen "Radierung". Die Umkehrung des Musters zu erstellenden erfolgt ebenfalls in Form einer "Maske" durch das UV-Licht auf den Fotolack leuchtete ist. Doch wirft dann die Frage auf wie die Maske in erster Linie erstellt wurde.
Hier ist die Magie der Photolithographie: die Maske ist tatsächlich viel größer als die Größe des Musters geätzt werden. Das Licht schien durch die Maske konzentriert sich einfach durch eine Linse, um die richtige Größe, wenn es auf dem Silikon fällt. Sobald das Licht der Fotolack wechselt, ist es durch eine Explosion von Plasma, so dass nur das gewünschte Muster auf Siliziumoxid weggeätzt.
Erstellen Sie eine Metallschicht, folgt auf der anderen Seite ein ähnliches Verfahren. Aber jetzt ist die Umkehrung des Musters auf SiO2 geätzt und Metall lagert sich dann auf den "Furchen", erstellt von der SiO2.
Der Grund, warum dies so sparsam ist, weil sobald Sie die "Maske" haben, können Sie sehr große Anzahl von Chips daraus erstellen. So zwar eine Maske ziemlich teuer (einige Millionen $), seine Kosten viele Chips, gliedert sich in die macht jeder Chip sehr billig (keine Wortspiel).
Arten von Erinnerungen
Wie ich bereits sagte, können Sie eine Erinnerung erstellen, indem Sie Flip-flops auf Multiplexer. Das ist jedoch keine besonders effiziente Möglichkeit Dinge zu tun. Ein Flip-flop verbraucht ca. 15-20 Transistoren. Allerdings in der Praxis gibt es zwei Arten von Speicherstrukturen: Statisches RAM (oder SRAM kurz), die verwendet 6 Transistoren pro Bit, und dynamischen RAM (oder DRAM kurz), die nur ein Transistor und einem Kondensator pro Bit verwendet. Ein statisches RAM ist im Wesentlichen zwei nicht Tore in einer Schleife wie folgt verbunden.
Klar, gibt es zwei mögliche Zustände für A und B, A = 1, B = 0 oder A = 0, B = 1. Die Idee ist, einige externe Spannung zu schieben die Schleife in einem Staat oder anderen gelten, dann ist die "gespeicherte" Biss, und dann lesen Sie einfach die Spannung bei A oder B, um "das bisschen lesen".
Auf der anderen Seite dynamische RAM oder DRAM, ist sogar noch simpel und sieht etwa wie folgt aus.
In diesem Entwurf, der Transistor wirkt einfach als Schalter zum Speichern von Ladung im Kondensator, in welchem Fall es als 1, ansonsten 0 gelesen wird. Allerdings verliert die Ladung im Kondensator aus der Transistor jeder so oft. So gelesen und in festen Intervallen neu geschrieben werden muss, und das ist, warum es heißt dynamisches RAM.
Die Caches in einem Chip sind in der Regel SRAM, da sie schneller sind. Die wichtigsten Erinnerungen in einem Computer sind jedoch in der Regel DRAM, da sie viel kleiner sind und damit eine größere Menge an Arbeitsspeicher in einem einzigen Chip passen.
[Weiterführende Literatur: Static random access memory, Dynamic random access memory, Addierer (Elektronik), Von-Neumann-Architektur, CPU-Cache, Photolithographie, Out-of-Order Execution, Arche | Intel® Core™ i7-3960 X Prozessor Extreme Edition (15 M-Cache, bis zu 3,90 GHz)]
Bild: Shutterstock/Volodymyr Wladár
Wie funktioniert ein Computerchip? erschien ursprünglich auf Quora. Folgen Sie Quora auf Facebook Twitter, , und Google +.
Diese Antwort wurde leicht bearbeitet, für Grammatik und Klarheit.