Der erste programmierte chip

musiclovaa

New member
HI, da man ja zum programmieren eines chips, ein gerät braucht um ihn überhaupt zu programmieren , frage ich mich wie wurde der erste chip programmiert?
Ich finde das ist ein unlösbares rätsel 😀
Haben die vielleicht mit nem stift auf den chip geschrieben oda wie^^?
 
HI, da man ja zum programmieren eines chips, ein gerät braucht um ihn überhaupt zu programmieren , frage ich mich wie wurde der erste chip programmiert?
Ich finde das ist ein unlösbares rätsel 😀
Haben die vielleicht mit nem stift auf den chip geschrieben oda wie^^?


Ein Chip ist nichts anderes als ein integrierter Schaltkreis.
Man muss einen Chip nicht programmieren, sondern nach gewissen Regeln einfach nur bauen.

 
Einfache logische Schaltungen kann man ganz ohne "programmierten Chip" herstellen.

Da sich komplizierte Schaltungen (die immer kleiner werden bis man sie in einem einheltichen Bauteil vereint und "Chip" nennt) aus einfachen zusammensetzen lassen braucht man auch dafür erstmal keine Programmierung 😉
 
Wie schon gesagt muss man da eigentlich nichts programmieren. Es gibt aber wohl auch die Möglichkeit, anstatt Logik(-Teile) in einem Automaten zu realisieren (also Hardware), diese als Software auf einem ROM zu implementieren. Aber fragt mich nicht ob und wo das eingesetzt wird...

Ein Chip braucht eigentlich nur eine Initialisierung, und zwar immer beim Einschalten, damit an logischen Ein-/Ausgängen ein definierter Zustand vorhanden ist.

Btw: Das ganze passt doch ganz gut in den Forenbereich der Prozessoren?
 
oderg0ck.png

So, oder so ähnlich, könnte eine Schaltung aussehen die eine Und-Oder-Funktion realisiert aussehen - sprich die Lampe leuchtet wenn einer oder beide Schalter betätigt sind (das schräge Teilstück geht sozusagen runter und schliesst die Lücke).

Weil nur mit Schalter auf "on" kann ja ein Strom zwischen den Polen fliessen.

So kannst du dir eine Schaltung vorstellen...
Das gibts z.B. auch für Entweder-Oder, Und, oder weder-noch Funktionen. Wenn du die in der richtigen Art und Weise kombinierst kannst du quasi alles an 'Chips' bauen was du möchtest. Musst du dir halt einige hundertmal geschrumpft vorstellen damit das alles in einen Chip gebaut werden kann 😉


Jedenfalls irgendwie stark vereinfacht...


Thread :shift:
 
Wie schon gesagt muss man da eigentlich nichts programmieren. Es gibt aber wohl auch die Möglichkeit, anstatt Logik(-Teile) in einem Automaten zu realisieren (also Hardware), diese als Software auf einem ROM zu implementieren. Aber fragt mich nicht ob und wo das eingesetzt wird...

Ein Chip braucht eigentlich nur eine Initialisierung, und zwar immer beim Einschalten, damit an logischen Ein-/Ausgängen ein definierter Zustand vorhanden ist.

Btw: Das ganze passt doch ganz gut in den Forenbereich der Prozessoren?

pixelflat hat es auf den Punkt gebracht.

Man programmiert bzw. brennt die MCU´s mit den Befehlen und Abläufen die er abarbeiten soll.
Das kann per Assembler, C, oder gar Pascal programmiert werden. Welche Sprache es letzt endlich ist, ist egal da der Code Hexadezimal gebrannt wird und in Maschinensprache übersetzt wird.

So sieht es jedenfalls bei programmierbaren MCU´s wie die Atmel AVR oder PIC Mikrokontroller aus. Diese haben keinen Integrierten Schaltkreis, denen muss man bei bringen was die an welchen Ausgang/Eingang wann und wie machen sollen.


"Normale" x86 CPU´s besitzen einen hochkomplexen integrierten Schaltkreis bestehend aus Transistoren.

Für einfachere Logikschaltungen könntest du auf TTL oder CMOS aufbauen.
Wobei ich MCU´s bevorzuge, da ich diese auch auf der Arbeit benutze und brenne.

EDIT:
So sieht simpler Code aus, der 2 LED´s (bzw. Ausgänge) schaltet:
Spoiler:
Code:
$regfile = "m16def.dat"                                     'definieren des verwendeten Chips

$crystal = 8000000                                          'definieren des verwendeten externen Quarz (8MHz)

Dim A As Byte                                               'dimensionieren der verwendeten Variablen
Dim B As Byte

Ddrd = &B11100000                                           'definieren der verwendeten Ports ( 1 = ausgang; 0= eingang)
Portd = &B00000000                                          'definieren der einzelnen Pins an einem Port ( 0= low level; 1= high level)


Main:                                                       'Hauptprogramm
Do                                                          'Anfang der Schleife

  If Pind.2 = 1 Then                                        'Wenn an Pin 2 von Port D ein high level anliegt, dann...

  Toggle Portd.5                                            '...setze Pin 5 von Port D von high auf low oder umgekehrt
  Bitwait Pind.2 , Reset                                    'warte bis an Pin 2 von Port D wieder ein low level anliegt

  End If                                                    'Ende der Bedingung
  If Pind.3 = 1 Then                                        'Wenn an Pin 3 von Port D ein high level anliegt, dann...

  Toggle Portd.6                                            '...setze Pin 6 von Port D von high auf low oder umgekehrt
  Bitwait Pind.3 , Reset                                    'warte bis an Pin 3 von Port D wieder ein low level anliegt

  End If                                                    'Ende der Bedingung
  If Pind.4 = 1 Then                                        'Wenn an Pin 2 von Port D ein high level anliegt, dann...

  Gosub Beep                                                '...gehe zum Untermenü "Beep"
  Gosub Textausgabe                                         '...gehe zum Untermenü "Textausgabe"
  Bitwait Pind.4 , Reset                                    'warte bis an Pin 4 von Port D wieder ein low level anliegt

[...]
 
Zuletzt bearbeitet:
Die von olf skizzierte Schaltung hat nur den Nachteil, dass diese "Schalter" im klassischen Sinn mechanisch sind. Also "jemand" oder "etwas" müsste physikalisch etwas bewegen. Die größte Revolution an den Transistoren ist ja hier, dass man nichts bewegen muss, sondern alles durch anlegen von Spannungen geschaltet wird.

Die Transistoren kann man dann so anordnen, dass ein logisches Bauteil (NOT, NAND, NOR) entsteht. Diese wiederum kann man zu komplexeren Schaltungen verbinden, wie zB einem Additionswerk. Da man nicht nur Addieren will, baut man um das Additionswerk noch ein bisschen was dazu und außen rum und man kann dann mit fast dem selben Aufbau schon multiplizieren / dividieren (Subtraktion ist ja sowieso nur eine Addition mit negativem Operand).

Speichern kann man mit Transistoren auch, und zwar genau 1 Bit. Dazu werden 2 logische Bauteile (zB NAND) verwendet ( ). NAND besteht aus 2 Transistoren, ein FlipFlop also aus 4 Transistoren. Für 1 Byte ( = 8 Bit) braucht man jetzt schon 8x4, also 32 Transistoren. Auf modernen CPUs sind aber schon mehrere MegaByte an L3 Cache vorhanden. Also gehen schon mehrere Millionen Transistoren alleine dafür drauf (der Core i7 hat 8Mb L3-Cache, also dafür alleine 265 Millionen Transistoren von insgesamt 731). Dann kommt noch der L1 & L2 Cache, die aber weit kleiner sind, und der ganze Rest.

Das nur mal als Begründung, warum man so viele Transistoren braucht. Man möge mich korrigieren, wenn irgendwas falsch ist. 😉


Edit: Wegen der Taktfrequenz: Wenn man mehrere unterschiedliche, logische Bauteile in einer Schaltung verwendet (zB AND, OR), dann brauchen diese unterschiedlich lange für ein Ergebnis am Ausgang (weil eben eine unterschiedliche Anzahl an Transistoren gebraucht wird). Im Endeffekt läufts darauf hinaus, dass am "endgültigen" Ausgang für kurze Zeit ein falscher Wert vorhanden ist (= "Hasard"). Das lässt sich zwar vermeiden, aber dadurch braucht man teilweise wieder mehr Transistoren (= mehr Platz, mehr Geld usw). Aus dem Grund hat man sich darauf geeinigt, die Ausgänge nur zu bestimmten Taktfrequenzen abzulesen, wo sicher ist, dass das Ergebnis stimmt.
 
Zuletzt bearbeitet:
Die von olf skizzierte Schaltung hat nur den Nachteil, dass diese "Schalter" im klassischen Sinn mechanisch sind. Also "jemand" oder "etwas" müsste physikalisch etwas bewegen. Die größte Revolution an den Transistoren ist ja hier, dass man nichts bewegen muss, sondern alles durch anlegen von Spannungen geschaltet wird.
das konnten auch schon elektronenröhren, und das sogar um einiges schneller.
 
Mir ist klar das die Skizze nich so richtig greift, da ich aber die Transistortechnik noch nich ganz durchschaut habe war diese Skizze der schnellste Weg der mir einfiel um ein (möglicherweise für Einsteiger ins Thema leichter nachvollziehbares) Beispiel für eine Schaltung zu geben 😉
 
Grafikkarten rechnen anders als x86 CPU's. Grafikkarten können Unmengen von Daten Parallel verarbeiten, CPU's imho nur in sehr geringen Maße, wenn nicht sogar gar nicht.

Daher werden GPU's immer mehr zur Berechnung hochkomplexer Befehlsabläufen hinzugezogen. Man denke nur an die Entschlüsselung von Passwörtern, CPU´s würden Jahrzehnte oder Jahrhunderte brauchen, GPU's nur Stunden oder max. einige Tage.
 
das eine graka nicht mit einer cpu zu vergleichen ist, sieht man zB an der zahl der kerne. meine cpu hat 4. meine graka 800. außerdem sind das verschiedene kerne. eine graka ist für stream orietierte aufgaben ausgelegt, die sehr gut parallel verarbeitet werden können. eine cpu für eine aneinanderfolgung von sehr unterschiedlichen befehlen. gpu und cpu kann man nicht einfach kreuzen und dann wirds schneller. der anwndungszweg muss auf die graka portierbar sein. mehrere berrechnungen, die immer das egebnis der vorhergehenden wissen muss, kann man nicht starten bevor die alte fertig ist. wenn sie jedoch nicht aktiv miteinander kommunizieren müssen(oder nicht aufenander aufbauen), kann man sie auf solchen rechenenheiten ausführen. da ist jedoch die frage ob sich der zusätzliche aufwandt, immer wieder daten hin und her zu schieben lohnenswert ist. man sieht den unterschied auch in der reinen rechenleistung mit fließkommazahlen. ein aktueller prozessor macht so in etwa 50gflops. meine graka macht 1500gflops, als 1,5tflops
 

Online-Statistiken

Zurzeit aktive Mitglieder
3
Zurzeit aktive Gäste
45
Besucher gesamt
48

Beliebte Forum-Themen

Zurück
Oben Unten