Hallo, ich würde gerne eine CPU mit einer eigenen Architektur, die möglichst wenige Transistoren benötigt, diskret selber bauen, um die grundlegende Funktionsweise besser zu verstehen. Natürlich In-Order-Execution und nur ein diskreter Halb-Addierer neben AND/OR/XOR/NOT. Also eher minimal, aber dennoch nutzbar. Der Einfachheit halber sollen die Befehle nicht in einem RAM landen, sondern direkt aus dem ROM. Da EEPROM Chips wie der 24AA16I/P mit diskreter Logik wahrscheinlich nur schwer anzusteuern wären, würde ich wahrscheinlich eine Matrix aus steckbaren Drähten als EPROM-Ersatz nutzen. Und aufgrund des Transistorbedarfs nur 1-bit Register -> nur Halb-Addierer nötig. Die Befehle sind sicher länger als 1 bit, den Befehlszähler würde ich 3bit oder 4bit lang machen, also 8 oder 16 Befehle max. Wie sieht es denn mit den Zyklen aus? Warum werden nicht fetch->decode->execute in einem Schritt erledigt? Also im Sinne Befehlszähler erhöht sich->Adresse neu->neuer Befehl->Dekoder->ALU, denn der Dekoder müsste doch logisch arbeiten können, also mit minimaler Verzögerung, ohne Takt, die ALU ebenso logisch ohne Takt... Hat jemand Schaltungstipps, wie ich die ALU u.ä. Teile mit wenig Transistoren realisieren kann? Oder wie grundlegend simple Architekturen aufgebaut sind? Danke im Voraus cpubuilder
cpu_builder schrieb: > Hat jemand Schaltungstipps, wie ich die ALU u.ä. Teile mit wenig > Transistoren realisieren kann? Oder wie grundlegend simple Architekturen > aufgebaut sind? https://de.wikipedia.org/wiki/Intel_4004 cpu_builder schrieb: > Da EEPROM Chips wie der 24AA16I/P mit diskreter Logik wahrscheinlich nur > schwer anzusteuern wären, würde ich wahrscheinlich eine Matrix aus > steckbaren Drähten als EPROM-Ersatz nutzen. Die zugehörige 4001 hat ein 2048 bit ROM. Viel Spass mit den Drähten ;-/
:
Bearbeitet durch User
Hmmm... mit wenigen Transistoren wird das wohl nix. Ein paar 1000 wirst du auch für die einfachste 4 Bit CPU brauchen. Würde eher versuchen das mit den 74xx Logikbausteinen zu machen, das hat noch eher Aussicht auf Erfolg. Grüsse
cpu_builder schrieb: > ich würde gerne eine CPU mit einer eigenen Architektur, die möglichst > wenige Transistoren benötigt Man braucht keinen Transistoren. https://de.wikipedia.org/wiki/OPREMA
Das mit Transistoren zu bauen ist viel zu aufwendig. Dabei lernst du nichts außer löten und das Projekt wird am Ende aus Zeit- und Kostengründen scheitern. Mindest mit 4-bit ALU und Flashspeicher für die Statemaschine solltets du starten. https://www.bigmessowires.com/nibbler/ Wenn du eh VHDL gelernt hast, dann entwickle und simuliere das in VHDL. Das ist eigentlich der beste Weg.
Ich wuerd's mit einem FPGA probieren. Resp ohne FPGA. Bei den FPGA Herstellern kann man einen Simulator herunterladen, und das Design bis zur Funktionsreife durchziehen. Dann schreibst du noch einen Assembler, resp Compiler fuer einen CPU Simulator und hast nachher wahrscheinlich gar keine Lust mehr das Alles effektiv auch laufen zu lassen.
:
Bearbeitet durch User
Teo D. schrieb: > Schau mal hier rein: > Beitrag "Rechner aus einzelnen BC547 Transistoren" Sieht interessant aus! Wegstaben V. schrieb: > cpu_builder schrieb: > Hat jemand Schaltungstipps, wie ich die ALU u.ä. Teile mit wenig > Transistoren realisieren kann? Oder wie grundlegend simple Architekturen > aufgebaut sind? > > https://de.wikipedia.org/wiki/Intel_4004 > Interessanter Chip... > cpu_builder schrieb: > Da EEPROM Chips wie der 24AA16I/P mit diskreter Logik wahrscheinlich nur > schwer anzusteuern wären, würde ich wahrscheinlich eine Matrix aus > steckbaren Drähten als EPROM-Ersatz nutzen. > > Die zugehörige 4001 hat ein 2048 bit ROM. Viel Spass mit den Drähten ;-/ ... wobei das Takten über einen Taster und Eingeben des Befehls ebenso über Taster möglich wäre Vielleicht kaufe ich mir den Teo D. schrieb: > Schau mal hier rein: > Beitrag "Rechner aus einzelnen BC547 Transistoren" Ich dachte da eher an eine CPU, die nicht nur addieren, sondern auch logische Operationen, je nach Befehl, ausführen kann. Sehe ich mir dennoch an.
Ich weiß, FPGAs und CPLDs sind verlockend... aber ich würde es gerne erstmal bare metal mäßig machen. Einfach weil auch das Bauen spaß macht. Nur 1bit. Und später 4 oder 8bit im FPGA
Als einfache Architektur werfe ich mal die "Turing Maschine" in den Raum. https://hackaday.com/2018/03/08/mechanical-wooden-turing-machine/ Das geht bestimmt mit weniger als 100 Transistoren, wenn du den Speicher nicht mit zählst. Ist allerdings schwierig, darauf etwas Sinnvolles zu programmieren.
Ein halb-mechanischer Aufbau der Grund-Variante mit Lego Mindstorms: http://www.cs.cmu.edu/~soonhok/building-a-lego-turing-machine.html Oder hier eine etwas anspruchsvollere Variante der Turing Maschine in der Theorie: http://mathworld.wolfram.com/TuringMachine.html Noch eine Variante mit Logik IC's: https://hackaday.com/2018/02/23/a-two-tapes-turing-machine/
Ich glaube Dir ist nicht klar wie groß das wird. Hier hat das mal jemand für den MOS6502 gemacht, das ist ein noch recht einfacher Prozessor (z.B. aus dem C64): https://monster6502.com/ Das sind >3k Transistoren. Mit 4 Bits spart man da kaum was, 1-Bit wäre IHMO entweder nicht turing-mächtig oder spart nix gegenüber 4-Bit. cpu_builder schrieb: > Wie sieht es denn mit den Zyklen aus? Warum werden nicht > fetch->decode->execute in einem Schritt erledigt? Weil Du dann Taktraten im niedriegen kHz Bereich hättest, und keine MHz. Außerdem müsste man sich ernsthaft Gedanken über Glitches machen.
aus dem Wiki: "Zum 35. Jahrestag des 4004 wurde im November 2006 in Santa Clara die Ausstellung „Intel Museum“ nahe der Firmenzentrale eröffnet. Intel hat im Zuge dessen einen 4004 aus 2300 diskret aufgebauten Transistoren im Maßstab 130:1 nachgebaut.[4] Das voll funktionsfähige Modell verarbeitet zur Demonstration Programme aus dem Jahre 1971" 2300 Transistoren sind überschaubar.... hier gibt es Schaltbilder vom 4004: http://www.4004.com/
@cpu_builder Ich bin allerdings der Ansicht, dass Dich die praktischen Probleme beim Aufbau aus realen Bauelementen auf Transistorebene sehr in Anspruch nehmen werden. Energie, Zeit und Nervenaufwand beim Aufbau (und glaube mir, Du wirst schimpfen wie ein Rohrspatz) sind (in etwa) vergleichbar mit dem Aufwand für das Verständnis von CPUs. Ich würde Dir daher doch raten, so eine Schaltung lieber zu simulieren. Das hätte den Vorteil, dass Du Dich auf die logische Funktion konzentrieren kannst.
Wobei ... Naja ... Ich erinnere mich, dass wir damals (schon länger her) auch solche "Träume" hatten. :-)
Thomas V. schrieb: > aus dem Wiki: > "Zum 35. Jahrestag des 4004 wurde im November 2006 in Santa Clara die > Ausstellung „Intel Museum“ nahe der Firmenzentrale eröffnet. Intel hat > im Zuge dessen einen 4004 aus 2300 diskret aufgebauten Transistoren im > Maßstab 130:1 nachgebaut.[4] Das voll funktionsfähige Modell verarbeitet > zur Demonstration Programme aus dem Jahre 1971" > > 2300 Transistoren sind überschaubar.... > > hier gibt es Schaltbilder vom 4004: > http://www.4004.com/ Da werden reine MOS-Transistoren verwendet. Wer glaubt er könnte da billige VDMOS-Transistoren einsetzen der irrt, denn hier wird ein Teil der Transistoren als Transfergate verwendet. Dazu werden echte MOS-Transistoren benötigt die heutzutage fast niemand mehr einsetzt und entsprechend teuer wird das. Wenn man das dann nur nachbaut hat man übrigens noch gar nichts über die Funktion gelernt. Die muss man erst mit "reverse engineering" aus dem Schaltplan herausfinden. Wer das kann der spendiert besser gleich die Zeit in seine eigene CPU.
:
Bearbeitet durch User
Wahrscheinlich hast du Recht. Dennoch habe ich Probleme beim Erstellen eines Blockschaltbildes.. Was genau benötigt eine CPU? Taktquelle, Befehlszähler, ALU, Register inkl. Befehlsregister, Befehlsdekoder, etwas zum Ansteuern des Speichers... Kann mir jemand da helfen?
Theor schrieb: > Wobei ... Naja ... Ich erinnere mich, dass wir damals (schon länger her) > auch solche "Träume" hatten. :-) Ja, ich will's nicht leugnen. :) Gemacht habe ich's aber nicht. (Und das ist auch gut so!) Zum Verständnisgewinn würde ich einen anderen Weg empfehlen: - Bau auf Transistorebene einzelne Gatter und Flipflops auf. - Bilde daraus kleine (nicht zu komplexe) Systeme. - komplexere Systeme würde ich dann aus Logik-ICs zusammenbasteln, und wenn es dann richtig komplex werden soll: - Doch FPGAs. Aus meiner Sicht ist das der effizienteste Weg, um Erkentnisse zu gewinnen. Eine komplette CPU aus Einzeltransistoren: Ich würd's lassen (aber jedem das seine!). PS: Eine CPU auf der Basis von Logik-ICs, solche Projekte gibt es/gab es schon. Z.B. dieses: http://www.mycpu.eu/ (Einer Life-Vorführung davon durfte ich vor Jahren auf dem Bralug-Treffen an der Uni-Potsdam beiwohnen.)
:
Bearbeitet durch User
> Was genau benötigt eine CPU? > Taktquelle, Befehlszähler, ALU, Register inkl. Befehlsregister, > Befehlsdekoder, etwas zum Ansteuern des Speichers... Damit bist du bei den bekannten Architekturen. Aber du wolltest doch eine komplett eigene bauen. Dann lies Dich wirklich mal zum Turing Automat ein, nur so als Anreiz, dass man auch völlig anders "Computen" kann, als es die derzeit üblichen Mikrocomputer tun.
cpu_builder schrieb: > Und aufgrund des Transistorbedarfs nur 1-bit Register cpu_builder schrieb: > Ich weiß, FPGAs und CPLDs sind verlockend... aber ich würde es gerne > erstmal bare metal mäßig machen. Einfach weil auch das Bauen spaß macht. > Nur 1bit. Ein 1 bit Prozessor, zwar ohne Detailschaltplan, aber so komplex sind die Elemente nicht: http://www.brouhaha.com/~eric/retrocomputing/motorola/mc14500b/mc14500brev3.pdf
M.A. S. schrieb: > - Bau auf Transistorebene einzelne Gatter und Flipflops auf. > - Bilde daraus kleine (nicht zu komplexe) Systeme. > - komplexere Systeme würde ich dann aus Logik-ICs zusammenbasteln, > und wenn es dann richtig komplex werden soll: > - Doch FPGAs So mache ich es! Zurzeit habe ich keine Elektronik zur Hand, deshalb denke ich gerade über eine eigene, eher exotische Architektur nach... Nur muss es ja am Ende funktionieren... i2c habe ich schon gebitbanged, aber wie man den Sendeablauf in Hardware macht... ein Mysterium
cpu_builder schrieb: > Wahrscheinlich hast du Recht. Dennoch habe ich Probleme beim Erstellen > eines Blockschaltbildes.. Was genau benötigt eine CPU? > > Taktquelle, Befehlszähler, ALU, Register inkl. Befehlsregister, > Befehlsdekoder, etwas zum Ansteuern des Speichers... > > Kann mir jemand da helfen? Ich würde Dir raten, an dieser Stelle nicht vom Ganzen ins Einzelne zu gehen, sondern umgekehrt. Und zwar weil: (Ich gehe da von meinen eigenen Lernfortschritten aus. Das muss für Dich nicht so sinnvoll sein.) Ich vermute mal, Du hast Dir solche Blockschaltbilder von CPUs schon angeschaut. Du weisst, - vermutlich -, an sich, wie eine Taktquelle im Detail aufgebaut ist; ein Zähler, ein Register. Auch eine ALU ist Dir zumindest grundsätzlich klar. Ich vermute weiter, Dir ist "im Prinzip" klar, wann, welche Daten woher und wohin transportiert werden. (Falls nicht, schreibe das bitte). Es gibt an dieser Stelle mindestens zwei Wege auf denen Du, meiner Meinung nach, sinnvoll weitermachen kannst. Die ALU oder der Datentransport. Der Datentransport ist deswegen interessant, weil er relativ schnell zu den Grundlagen der Befehlsabarbeitung (also dem Befehlsdekoder) führt. Nimm einmal an, Du hast drei Register, einen Eingabeport, einen Ausgabeport und eine Taktquelle. Die Aufgabe ist, die Daten vom Eingabeport, zu dem ersten Register, von dort zu dem zweiten, von dort zu dem dritten und von dort zum Ausgabeport zu leiten. Ich würde Dir raten, sowas in einer Simulation zu versuchen. Dann die ALU. Beschränke Dich vielleicht zunächst auf einfache Operationen wie die Negation und im zweiten Schritt auf Operationen wie "Oder", "Und" oder "XOR". Versuche mal, in Simulation, eine Schaltung zu bauen, die eine von Vier Operationen ausführt. Im Falle der Negation mit nur einem Operanden, sonst mit zwei Operanden. Dann: Ausgehend von den Versuchen über den Datentransport, nimm an, Du hast einen zweiten und einen dritten Eingangsport, nimm an, Du müsstest Daten von zwei Eingangsports zu zwei Register und im zweiten Schritt von dort zur ALU transportieren. Gleichzeitig wird am dritten Eingangsport die Operation der ALU ausgewählt und in einem Register gespeichert (muss also von dort zur ALU weitergegeben werden). Vielleicht fängst Du, bevor Du Simulationen aufbaust, in beiden Fällen mit einem Blockdiagramm an und überlegst Dir einen zeitlichen Ablauf. Wenn Du das hier postest, werde ich das kommentieren und Fragen dazu beantworten. (Je nachdem wie ich Zeit habe, allerdings). Viel Erfolg.
Für solche Spielereien bietet sich das kostenlose aber mächtige Logisim an. Das bietet alle erdenklichen Gatter, Tasten, Taktquellen, RAM und ROM. Man kann auch einzelne Schaltungen zu einer Blackbox kapseln, welche dann wieder mit anderen verbunden werden kann. So kann man beispielsweise erst die ALU, dann RAM, dann Statemachine und was noch so dazu gehört ans Laufen kriegen und separat "durchspielen". Daraus kann man, wenn man DANN noch Lust hat, recht einfach mit 74er Logik auf die Platinenebene wechseln. Es gibt auch Modelle von fast allen 74er zum Download, frag mal Google nach dem Link dazu - ich habe in gerade nicht parat.
Alle Jahre wieder... Ich hatte beruflich viel mit auszubildenden Elektrotechnikern zu tun, und darunter waren auch immer einige Hypergeeks, die den Biss für solche Projekte und mehrere Jahre Zeit in der Reserve hatten. Ich mach's mal kurz: Die Komplexität wird so klassischerweise zu 90% überschätzt, der Frustration zu 75% nachgegeben. Optionen: a) Du machst dir die Sache so einfach wie möglich: - Modelliere den Kram erst mal funktional in Python/MyHDL - Mach die Sache synthesefähig für's FPGA (Ausgabe in Verilog oder VHDL) und lass es auf einem Billigboard (30€) laufen b) Mach dir das Leben schwer und beginne mit asynchronen TTL-Designs a la MyCPU, dabei wirst du viele schmerzhafte Lernprozesse durchmachen Dazwischen gibt es eine Menge andere Wege, mit denen man sich gehörig verzetteln kann. Dementsprechend performen viele der Hyper-Geeks in der Industrie schlecht, weil sie sich mit ihrem ganz eigenen Schädel in Details verzetteln. Schadet nicht, wenn du klar weisst, wo du stehst/stehen willst. Wenn du mit a) angefangen hast, und dein Konzept verifiziert hast, kannst du immer noch den Weg gehen, alles mit diskreter Logik aufzubauen - und dich dann entscheiden, ob du es als Lötübung oder als Geekprojekt aufziehst (a la 'because I can'). Lustig ist das schon, einem einfachen 6502-Redesign auf einem pizzagrossen PCB beim Blinken zuzusehen. Aber es gibt SO viele davon...
Danke Theor! Deine Beschreibung dessen, was ich weiß und was nicht, ist exakt zutreffend! Nur eine Frage bevor ich die Situationen versuche zu lösen: [Frage 1] Was ist der große Datenbus, mit dem fast alles in CPUs verbunden ist, in realen Schaltungen? bidirektional? Viele kleine Verbindungen, deren Gesamtheit den Bus ergibt? Oder zapfen die vielen Teile die Informationen im Bus an, um zu funktionieren? [Frage 2] Und werden Befehl+Daten parallel oder nacheinander über den Bus gesendet? [letzte Frage 3] Was für Arten von Registern sind sinnvoll? Also dass ich, auch wenn Addition das einzige hardwareseitig vorhandene außer Logik ist, Subtraktion, Multiplikation,... dennoch machen kann? Brauche ich Carry-Bits,...? Wieviele? Diese Fragen habe ich mir schon lange gestellt. Antworten darauf würden mir sehr helfen. Und jetzt mache ich erstmal die Hausaufgaben von Theor ;)
Fitzebutze schrieb: > Aber es gibt SO viele davon... ... aber keines davon steht in meiner Wohnung B-)
Theor schrieb: > Dir ist "im Prinzip" klar, wann, welche Daten woher und wohin > transportiert werden. (Falls nicht, schreibe das bitte). Im Prinzip Ja, im Detail nein...
Der Gigatron ist nen vollständiger Computer (inkl CPU) aus TTL-ICs (74er): https://gigatron.io/ Gibt auch einiges dazu auf YouTube (unter anderem im EEVBlog[1]). MMn ist es nicht so sinnvoll, nen Computer ausschließlich aus diskreten Transistoren aufzubauen. Nach den ersten paar Logikgattern ist einem klar, wie sie aufgebaut sind und danach ist es nur noch mühsam. Mittels der 74er-Logik-ICs kann man sich mehr auf den Aufbau eines Computers konzentrieren als auf den der einzelnen Gatter. [1] https://www.youtube.com/watch?v=6vbI-r5aXJI
cpu_builder schrieb: > Danke Theor! > > Deine Beschreibung dessen, was ich weiß und was nicht, ist exakt > zutreffend! Nur eine Frage bevor ich die Situationen versuche zu lösen: > Gut. Danke für die Antwort. > [Frage 1] > Was ist der große Datenbus, mit dem fast alles in CPUs verbunden ist, in > realen Schaltungen? > > bidirektional? Das ist eine der Möglichkeiten. Soweit mein Überblick reicht, die häufigste, weil platzsparendste. Andererseits macht das eine Ablaufsteuerung notwendig. > Viele kleine Verbindungen, deren Gesamtheit den Bus > ergibt? Nein. > Oder zapfen die vielen Teile die Informationen im Bus an, um zu > funktionieren? Ja. Wer wann "anzapft" ist eine Aufgabe der Ablaufsteuerung oder in anderen Wort der "Befehlsdekodierung". > [Frage 2] > Und werden Befehl+Daten parallel oder nacheinander über den Bus > gesendet? Sowohl als auch. Beides kommt vor. Im AVR z.B. sind Konstanten Teil bestimmter Befehle. Das muss aber nicht zwingend so sein. Der 6502 z.B. hat das nicht. > [letzte Frage 3] > Was für Arten von Registern sind sinnvoll? > Also dass ich, auch wenn Addition das einzige hardwareseitig vorhandene > außer Logik ist, Subtraktion, Multiplikation,... dennoch machen kann? > Brauche ich Carry-Bits,...? Wieviele? Das ist zu summarisch gefragt um es abschliessend zu beantworten. Im Prinzip lassen sich alle denkbaren Funktionen aus einer Kombination von zwei Operationen zusammensetzen. 1. Der Negation und 2. entweder "Und" oder "Oder" oder "Exklusiv-Oder". Es müsste also z.B. kein Übertragsbit physisch als Flip-Flop existieren. Sinnvoll ist allerdings, einiges in Hardware zu ermöglichen. Das geht einfach schneller. Nur kann man diese Absicht nicht endlos weit treiben, da die CPU damit immer grösser und teurer wird. Auch Sand (oder eher Silizium) kostet Geld. > Diese Fragen habe ich mir schon lange gestellt. Antworten darauf würden > mir sehr helfen. > > Und jetzt mache ich erstmal die Hausaufgaben von Theor ;) Gut. Da wird sich, wenn Du über Deine Ergebnisse nachdenkst, einiges von selbst beantworten.
cpu_builder schrieb: > Zum Datentransport: Also "formal" ist die Aufgabe damit erfüllt. :-) Allerdings zeigt das nicht, wie und wann der Transport zwischen den Registerstufen gesteuert wird. Das ist aber gerade das, was interessiert, weil es zur Befehlsausführung führt. Nimm mal folgende Vorlage bitte: +------+ | Takt +->- +------+ +----------+ -->-+ Register +->-- +----------+ Welche Signale brauchst Du noch am Register und wie erzeugst Du sie aus der Taktquelle?
Ich empfehl mal das Studium einer ALU : SN74xx181, SN74xx283, und dann sollte deren Funktionalitaet klar sein, auch was das Carry und Borrow betrifft.
Theor schrieb: > Allerdings zeigt das nicht, wie und wann der Transport zwischen den > Registerstufen gesteuert wird. Das ist aber gerade das, was > interessiert, weil es zur Befehlsausführung führt. An sich doch nur die 3 FlipFlops im Schieberegister. Oder? Welche weiteren Signale? Sorry, aber im Gebiet von Registern/CPUs/... bin ich Anfänger, keine Ahnung was da fehlt. Ich könnte die FlipFlips, die das Schieberegister bilden, zeichnen, aber das bringt ja kein weiteres Signal hervor
cpu_builder schrieb: > Theor schrieb: >> Allerdings zeigt das nicht, wie und wann der Transport zwischen den >> Registerstufen gesteuert wird. Das ist aber gerade das, was >> interessiert, weil es zur Befehlsausführung führt. > > An sich doch nur die 3 FlipFlops im Schieberegister. Oder? > > Welche weiteren Signale? Sorry, aber im Gebiet von Registern/CPUs/... > bin ich Anfänger, keine Ahnung was da fehlt. Ich könnte die FlipFlips, > die das Schieberegister bilden, zeichnen, aber das bringt ja kein > weiteres Signal hervor Hm. Mit dem Ziel einer CPU im Auge sollte der Mechanismus universeller als ein Schieberegister sein. Ein Schieberegister ist eine spezialisierte Form bei der bei genau einem Ereignis des Taktes, die Daten vom Eingang in das erste FF, vom ersten FF in das zweite etc. übernommen werden und das gleichzeitig für alle FFs. In einer CPU ist aber die Abfolge möglicherweise zeitlich voneinander getrennt. Oder es sollen nur Daten vom Eingang ins erste Register und zwei Sekunden später Daten vom zweiten ins dritte Register übernommen werden ohne das die anderen Register verändert werden. Man muss also die Erzeugung der Steuersignale für die Register von der Struktur des Datenflusses trennen. Im Effekt muss es möglich sein, die Signale zur Datenübernahme (und später auch zur Ausgabe) getrennt voneinander zu steuern. Ein Schieberegister ist aber per Definition ein Ganzes, bei dem das nicht möglich ist. Was Register und Flip-Flops betrifft, solltest Du Dich informieren. Allgemein gibt es mindestens ein Signal, das bei einer Flanke oder einem Zustand die Eingangssignale speichert. Im Detail sind das die verschiedenen Flip-Flops. Also RS-FF, oder D-FF oder andere. Gehe mal von einem flankengesteuerten D-FF aus.
Gabs hier nicht mal ein Projekt einer eigenen CPU für en FPGA? War das Kurt Bindl? Hab was von Bomeranz-Projekt in Erinnerung
>Was für Arten von Registern sind sinnvoll? >Also dass ich, auch wenn Addition das einzige hardwareseitig vorhandene >außer Logik ist, Subtraktion, Multiplikation,... dennoch machen kann? >Brauche ich Carry-Bits,...? Wieviele? Rein theoretisch braucht man sehr wenig, nämlich einen Speicher und eine ALU, die lediglich eine einzige Instruktion ausführen kann, etwa "subleq" für "SUBtract and branch if Less-than or EQual to zero" [*]. Wie Patterson und Hennessy zeigten ist ein solcher OISC (one instruction set computer) turing-vollständig und damit prinzipiell genauso mächtig wie Dein PC. Ein Programm, das etwas "Vernünftiges" tut, etwa Primzahlen berechnet, würde allerdings in einem aberwitzig großen Code resultieren. Hier findest Du mehr Infos dazu, einschließlich einiger Beispiele für die Synthese höherer Instruktionen aus "subleq"s: https://en.wikipedia.org/wiki/One_instruction_set_computer https://esolangs.org/wiki/OISC ------------------- [*] Subleq is a simple one instruction language. Each implied subleq instruction has 3 memory address operands "A, B, C". The execution of one instruction subtracts the value in memory address A from the value in memory address B, assigning the result into memory address B. If the subtraction result assigned into memory address B is less than or equal to zero, the execution jumps to the memory address C; otherwise it continues to the next instruction. Each value has its own address so each instruction is three addresses long. (Quelle: https://esolangs.org/wiki/Subleq)
LostInMusic schrieb: > Subleq Sehr interessant. Auch wenn ich das mit Turing nicht ganz verstanden habe. Vielleicht kann mir jemand das ja so erklären als wäre ich ein 2jähriger? :) Was die Aufgabe von Theor betrifft: Ich schreibe jetzt einfach mal was ich denke (sonst kommen nur unlogische Resultate meiner Gedankengänge an): Register sind FlipFlops D-FlipFlops Und übernehmen bei einer Taktflanke den aktuellen Wert am D-Eingang 3 davon habe ich Jetzt brauche ich einen Multiplexer der je einen D-Eingang nach "außen" führt und einen zweiten Multiplexer, der den Port oder das vorherige Register auswählt. Am Ende wird das Register 3 über den einen Multiplexer an Port B (Ausgabe) geführt. Jetzt müssen die Multiplexer gesteuert werden. Aber ich weiß ja nicht ob die einfach von 1-4 durchlaufen oder ob sie eine andere Art Steuersignal brauchen... Die sind auch eine Art Mysterium für mich
So sehr ich solche Rätselaufgaben auch mag, bin ich jetzt ratlos und benötige einen Tipp..
Jetzt ist G. schrieb: > Ich empfehl mal das Studium einer ALU : SN74xx181, SN74xx283, und dann > sollte deren Funktionalitaet klar sein Das ist jetzt mein nächster Schritt, aber die Register beschäftigen mich noch
cpu_builder schrieb: > So sehr ich solche Rätselaufgaben auch mag, bin ich jetzt ratlos und > benötige einen Tipp.. Das mag auch an meinem didaktischen Ansatz liegen. Vielleicht passt er für Dich nicht. Ich bin nämlich gerade versucht zu sagen: "Mach es nicht so kompliziert". Aber zuvor habe ich gesagt: "Mach es ein wenig komplizierter". Und das geht doch nicht! Oder doch? :-) Naja. Also ich habe mir das so vorgestellt.
1 | +----------+ +----------+ +----------+ |
2 | -->-+ Register +->-- -->-+ Register +->-- -->-+ Register +->-- |
3 | +-----+----+ +----+-----+ +----+-----+ |
4 | ^ ^ ^ |
5 | +---+ | | |
6 | | | | |
7 | +------+ +--+----------------+--------------------+-------+ |
8 | | Takt +->-+ z.B. Ein Zähler mit Logik | |
9 | +------+ +------------------------------------------------+ |
Die "Übernahme"-Signale sehen dann zeitlich so aus:
1 | _ |
2 | Reg 1 ___________| |_____________________________________ |
3 | _ |
4 | Reg 2 __________________________| |______________________ |
5 | _ |
6 | Reg 3 ________________________________________| |________ |
Den Zähler mit Logik hätte ich mir vielleicht etwas detaillierter gewünscht, als ich ihn gezeichnet habe, aber das ist nebensächlich. [Mod] ASCII-Zeichnungen neu formatiert.
:
Bearbeitet durch Moderator
Aus den Zeichnungen werde ich nicht ganz schlau.. was || oder ||| z.B. bedeutet Aber du meinst Eingabeport->-Register1->-Register2->-Register3->-Ausgabeport Und Übernahmesteuerung über einen durch FlipFlops als Zähler verzögerten Takt Oder?
cpu_builder schrieb: > Aus den Zeichnungen werde ich nicht ganz schlau.. was || oder ||| z.B. > bedeutet Öh. Wo kommt da "||" oder "|||" vor? Wie auch immer. "|", "_" und "-" sind einfach Linien einer Zeichnung. "^" und ">" sind Pfeile. "+" sind Ecken. > Aber du meinst > > Eingabeport->-Register1->-Register2->-Register3->-Ausgabeport > > Und Übernahmesteuerung über einen durch FlipFlops als Zähler verzögerten > Takt > > Oder? Richtig.
Ich will auch eine CPU bauen. Am besten einen Pentium... Habe aber null Ahnung. Reicht eine 9V Batterie oder bruuche ich ein AKW? Oh Gott ...schmeiß Hirn! Roger
cpu_builder schrieb: > ich würde gerne eine CPU mit einer eigenen Architektur, die möglichst > wenige Transistoren benötigt, diskret selber bauen, um die grundlegende > Funktionsweise besser zu verstehen Kann man machen, ist eher doof. Ich empfehle dir stattdessen einen Simulator. Vor vielen Jahren gab es mal KLogic (als Teil von KDE), mit dem man sowas machen konnte. Das wäre deinem Wissensstand angemessen, und wenn du in diesem Simulator den gesamten digitalen Kram verstanden und korrekt umgesetzt hast, kannst du dich in die analoge Welt mit echten Transistoren begeben. Und du musst dazu nichts wegschmeißen. cpu_builder schrieb: > Der Einfachheit halber sollen die Befehle nicht in einem RAM > landen, sondern direkt aus dem ROM. Das spielt aus Sicht der CPU keine Rolle. Die eigentliche Logik kippt eine Adresse und ein paar Steuerdaten auf den Bus und erwartet, dass die restliche Schaltung damit klarkommt. Ein ROM wird genauso angesprochen wie ein SRAM. cpu_builder schrieb: > Da EEPROM Chips wie der 24AA16I/P Ja, den zu benutzen wäre reichlich bescheuert. Nimm ein paralleles EEPROM (oder EPROM), damit ist das kein Problem. Du kannst da sogar einen Großteil deiner Logik reinstopfen. Das ROM (bzw. das RAM) diskret aufbauen zu wollen, ist größenwahnsinnig. cpu_builder schrieb: > Und aufgrund des Transistorbedarfs nur > 1-bit Register -> nur Halb-Addierer nötig. Damit ist das Teil nicht nur extrem aufwändig, sondern auch extrem ineffizient. Du brauchst nämlich viele Befehle, um deine winzigen Register auszugleichen. > Die Befehle sind sicher länger als 1 bit, den Befehlszähler > würde ich 3bit oder 4bit lang machen, also 8 oder 16 > Befehle max. Damit ist das Teil nicht nur extrem aufwändig und extrem ineffizient, sondern auch extrem nutzlos. Denn du verbietest die Möglichkeit, "viele Befehle" auszuführen. Daraus folgt, dass du effektiv auch keine Peripherie ansteuern kannst. Ohne Ein- und Ausgaben bringt der Spaß aber auch nichts... cpu_builder schrieb: > Wie sieht es denn mit den Zyklen aus? Warum werden nicht > fetch->decode->execute in einem Schritt erledigt? Das kann man schon machen. Ergibt halt eine geringere Auslastung der Hardwareeinheiten und eine geringe Taktfrequenz. Für dich wäre das ein besserer Ansatz. cpu_builder schrieb: > Hat jemand Schaltungstipps, wie ich die ALU u.ä. Teile mit wenig > Transistoren realisieren kann? Oder wie grundlegend simple Architekturen > aufgebaut sind? Eine CPU ist ein großer Zustandsautomat. Vorne fallen einige Dinge rein (z.B. aktuelle Instruktion, die Operanden, irgendwelche Flags, die derzeitigen Registerwerte, ...) und hinten fallen einige Dinge raus (z.B. die Adresse der nächsten Instruktion und die Steuersignale, die Rechenergebnisse, die nächsten Flags, die folgenden Registerwerte, ...) Eine 2 Bit-CPU mit 4 simplen Befehlen und 2 Registern sollte sich in ein paar EPROMs implementieren lassen. Da braucht man dann keine große Logik für. Im Prinzip trägst du in die EPROMs alle möglichen Ein- und Ausgaben ein, statt irgendwas zu berechnen. Für "mehr Bits", "mehr Register", "mehr Befehle" usw. explodiert der Zustandsraum aber so schnell, dass man aber lieber Logik benutzen möchte.
Habe gerade keinen PC zur Hand. Auf dem Smartphone sieht es seltsam aus. Also ... Nächste Aufgabe für mich der Teil mit der ALU? Logikgatter kenne ich in- und auswendig. Inzwischen ist mein Ziel zu "CPU aus Logik-ICs und ALU-IC bauen" mutiert. Welche ALU-ICs sind denn heutzutage leicht zu bekommen? Dann wird das Projekt realistischer. Zumindest weiß man bei denen was drin ist. Meine Ziele: 1. Theor's zweite Aufgabe lösen (undzwar diesmal richtig) 2. Architektur entwickeln (Blockschaltbild) 3. Schaltplan (mit Logikgattern) entwickeln 4. Auf Steckbrettern Teile aufbauen und auf Funktionalität prüfen 5. Zusammenbauen Dabei benötige ich weiterhin Hilfe von euch. Danke auf jeden Fall dass ihr mich bis hierher gebracht habt (v.a. Theor)!
Bevor du dich beim Entwickeln deiner eigenen CPU Architektur in noch mehr Anfängerfragen verzettelst, empfehle ich Dir dringend, zunächst wenigstens eine einfache bestehende CPU zu analysieren. Ich empfehle den 6502, Z80 oder 8051. Die sind noch gut überschaubar.
cpu_builder schrieb: > Habe gerade keinen PC zur Hand. Auf dem Smartphone sieht es seltsam aus. Ach so. > Also ... Nächste Aufgabe für mich der Teil mit der ALU? [...] Das würde ich so nicht sehen. Ich empfehle Dir, Dich erst mal ausführlich mit der ersten Aufgabe zu beschäftigen. Variiere die Struktur. Nimm z.B. an Du hättest einen Bus statt einer einfachen sequentiellen Struktur. Also ein Eingang, drei Register, ein Ausgang. Was fehlt noch an Einheiten? Welche Steuersignale brauchst Du? Oder einen Baum. Dann: Was müsstest Du tun, damit Du die Datenpfade mit einem binären Wort steuern kannst? D.h. Du gibst einen der möglichen Datenpfade vor und die vom Takt getriebene Logik durchläuft die erforderlichen Schritte. Das nennt übrigens einen Sequenzer. Deine Idee mit den Multiplexern oben lässt sich für so etwas verwenden. Dann würde ich mir mal konkrete, einfach CPUs anschauen. Vom AVR gibts es glaube ich so eine Blockzeichnung und von einigen anderen CPUs auch. Spiel da mal gedanklich ein paar Daten-Transporte zwischen Registern durch.
cpu_builder schrieb: > Habe gerade keinen PC zur Hand. Auf dem Smartphone sieht es seltsam aus. Das liegt daran, dass die Webseite bei Smartphones eine Proportionalschrift verwendet. Aus diesem Grunde solltest Du ASCII-Zeichnungen in
1 | [pre] |
2 | ..... |
3 | [/pre] |
einfassen. Damit werden sie mit einem Font fester Schriftbreite ausgegeben und auch weitestgehend nicht umbrochen. Ich habe Deinen obigen Beitrag mal dementsprechend angepasst, s.o.
Theor schrieb: > Bus statt einer einfachen sequentiellen Struktur Okay Theor schrieb: > Also ein Eingang, drei Register, ein Ausgang. Wie zum Anfang Theor schrieb: > Was fehlt noch an Einheiten? Welche Steuersignale brauchst Du? Also alle hängen an demselben Bus. Dann brauche ich AND-Gatter. Die schalte ich zwischen die Ein- und Ausgänge der FlipFlops (Register) und den Bus und mit einer Control Unit / Steuerwerk sende ich entsprechend an den zweiten AND-Eingang "HIGH", wenn ich den dort befindlichen Eingabe-Port z.B. mit einem Register-Eingang verbinden möchte. Und damit das nicht so kompliziert in Logikform gebaut werden muss, bzw. es updatefähig ist, gibt es den Mikrocode, oder? Wenn das alles richtig bis hier ist, habe ich es verstanden
> Dann brauche ich AND-Gatter. > Die schalte ich zwischen die Ein- und Ausgänge der FlipFlops (Register) Wieso das? Die D-Register übernehmen die Daten vom Bus bei einer Taktflanke bzw. Impuls. Und sie liefern den gespeicherten Wert ab, wenn der Output-Enable Pin aktiviert wird. Sag bloß, du kennst den 74HC573 nicht? Den würde ich jedenfalls als Register benutzen.
Schau Dir die Simulation des 6502 (auf Transistorebene) an, einfacher kommst du nicht an Infos: http://visual6502.org/
cpu_builder schrieb: > Theor schrieb: >> Bus statt einer einfachen sequentiellen Struktur > > Okay > > Theor schrieb: >> Also ein Eingang, drei Register, ein Ausgang. > > Wie zum Anfang > > Theor schrieb: >> Was fehlt noch an Einheiten? Welche Steuersignale brauchst Du? > > Also alle hängen an demselben Bus. > Dann brauche ich AND-Gatter. > > Die schalte ich zwischen die Ein- und Ausgänge der FlipFlops (Register) > und den Bus > > und mit einer Control Unit / Steuerwerk sende ich entsprechend an den > zweiten AND-Eingang "HIGH", wenn ich den dort befindlichen Eingabe-Port > z.B. mit einem Register-Eingang verbinden möchte. > > Und damit das nicht so kompliziert in Logikform gebaut werden muss, bzw. > es updatefähig ist, gibt es den Mikrocode, oder? > > Wenn das alles richtig bis hier ist, habe ich es verstanden Naja. Wie gesagt. Mach eine Zeichnung. Dann sieht man es ja, ob Du es verstanden hast. Das mit dem Mikrocode lassen wir mal am besten aussen vor. Das ist ein späterer Schritt. Du solltest um Schaltwerke realisieren zu können in boolscher Algebra mindestens befriedigend fähig sein. D.h. eine Wertetabelle aufstellen können, eine boolsche Gleichung aufstellen oder aus der Wertetabelle gewinnen können, die disjunktive und konjunktive Normalform aufstellen können, sie vereinfachen können, ein Karnaugh-Diagramm aufstellen und in Gleichungen umsetzen können. Einfache Fälle bis zu drei oder vier Variablen sollten Dir irgendwann in wenigen Minuten von der Hand gehen. Das ist Basis-Handwerk wie das Schraubendrehen.
Theor schrieb: > Was müsstest Du tun, damit Du die Datenpfade mit einem binären Wort > steuern kannst? Die einzelnen Bits des Wortes mit den AND-Gattern (2. Eingang, wie eine Art "enable") verbinden? Bzw. bei dem zweiten verbundenen AND-Gatter, das low-aktiv sein soll, noch NOT davor? Theor schrieb: > Du gibst einen der möglichen Datenpfade vor und die vom Takt getriebene > Logik durchläuft die erforderlichen Schritte. Und das Steuerwerk muss noch im Programmzähler den Zyklus (fetch, decode, execute, store) berücksichtigen
cpu_builder schrieb: > Theor schrieb: >> Was müsstest Du tun, damit Du die Datenpfade mit einem binären Wort >> steuern kannst? > > Die einzelnen Bits des Wortes mit den AND-Gattern (2. Eingang, wie eine > Art "enable") verbinden? Bzw. bei dem zweiten verbundenen AND-Gatter, > das low-aktiv sein soll, noch NOT davor? > > Theor schrieb: >> Du gibst einen der möglichen Datenpfade vor und die vom Takt getriebene >> Logik durchläuft die erforderlichen Schritte. Ein Bild sagt mehr als tausend Worte! :-) Im übrigen wirst Du vermutlich mit dem AND nicht glücklich. Das siehst Du dann wahrscheinlich schon von selbst in der Skizze. Verbal ist so vieles möglich, was in einer Skizze ganz offensichtlich nicht geht, weil dort der Gesamtzusammenhang offenbar wird. Verbal kann man immer nur einen Teilaspekt in den Focus rücken. Versuche es mit der Skizze. Das sind alles Schritte, die Du machen solltest, denke ich.
Jürgen S. schrieb: > Ben Eater hat ein schönes Projekt, eine CPU aus Logikbausteinen: > https://eater.net/8bit/ Hmm. Videos über Videos. Schaltpläne "coming soon". Wo wird das hinführen?
cpu_builder schrieb: > Welche weiteren Signale? Sorry, aber im Gebiet von Registern/CPUs/... > bin ich Anfänger, keine Ahnung was da fehlt. > "eine CPU mit einer eigenen Architektur" Meinst du, du bist bereit dafür? Du versuchst einen Hürdenlauf bevor du überhaupt stehen kannst. fang an, AND OR NOT ... "diskret selber [zu] bauen" in einer Art "die möglichst wenige Transistoren benötigt" dann einen HA dann FlipFlops, SR/D/JK/T dann Register, dann einen n*m Speicher weiter mit Schieberegister, Zähler (Up/Down) MUX/DeMUX dann den ganzen Packen nochmal, diesmal aber taktgesteuert dann klöter das peu a peu beisammen erst n*HA->VA dann die Register davor und dahinter, Speicher dran, Zähler dran, Taktgenerator dran und dann im 0,x Hz Takt alle Varianten durchprobieren, viel GLÜCK dabei! Und wenn du das hast, darfst du Steckbrücken als Eingabe durch ne Tastatur und LEDs als Ausgaben durch LCDs ersetzen, vorher DBC/BCD-Wandler zusammenlöten Ich empfehle dann noch einen Blick auf https://www.youtube.com/watch?v=z71h9XZbAWY https://www.youtube.com/watch?v=lNa9bQRPMB8 und www.megaprocessor.com wenn du das alles beisammen hast, hast du noch nicht mal einen 4001. Ich wünsch Dir aber viel Erfolg und Ausdauer und eine steile Lernkurve.
Theor schrieb: > Ein Bild sagt mehr als tausend Worte! :-) Ich habe heute nicht mwhr genug Zeit dafür. Morgen sende ich ein Bild davon, was ich gezeichnet habe. Wieso geht AND nicht? Nicht dass ich alles umsonst zeichne...
Ein AND Gatter ist eine logische Verknüpfung. Du brauchst aber eine Ablaufsteuerung, die getaktete Speicherzellen in der richtigen Reihenfolge taktet.
Wie wär's für den Anfang mit der diskreten Nachbildung des MC14500B mit Beschaltung für Speicher und Sequencer?
Aber den Takt kann man doch über AND-Gatter an den CLK-Eingang eines D-FlipFlops leiten. Oder nur 1/2 Transistoren? Was würde das bringen?
cpu_builder schrieb: > Theor schrieb: >> Ein Bild sagt mehr als tausend Worte! :-) > > Ich habe heute nicht mwhr genug Zeit dafür. Morgen sende ich ein Bild > davon, was ich gezeichnet habe. > > Wieso geht AND nicht? Nicht dass ich alles umsonst zeichne... Naja. So viel ist das ja nicht. Ausserdem sind Fehler wesentlich lehrreicher als auf Anhieb Funktionierendes. Aber wenn ich Dich richtig verstehe, und Du die Bus-Version zeichnen willst, dann werden die Ausgänge mehrerer AND-Gatter zusammen geschaltet. Falls das so ist: Was passiert, wenn ein AND-Gatter eine log. '1' und ein anderes eine log. '0' ausgeben will? Das gibt Aua!
Stefanus F. schrieb: > getaktete Speicherzellen in der richtigen Reihenfolge taktet Also so etwas wie 1000 0100 0010 0001 1000 0100 was immer weiterläuft?
Theor schrieb: > Falls das so ist: Was passiert, wenn ein AND-Gatter eine log. '1' und > ein anderes eine log. '0' ausgeben will? Das gibt Aua! Aber nur wenn man einen IC als Vorlage für den diskreten Aufbau verwendet. Praktisch ausgeführte RTL / DTL wie sie in den 60er Jahren gebaut wurde kann ausgangsseitig problemlos wired -OR oder -ANDs bilden.
Theor schrieb: > Naja. So viel ist das ja nicht. Ausserdem sind Fehler wesentlich > lehrreicher als auf Anhieb Funktionierendes. Dann sieh nochmal vor 20 Uhrvorbei. Ich mache den Schaltplan noch heute. MIT ANDs!! Theor schrieb: > Aber wenn ich Dich richtig verstehe, und Du die Bus-Version zeichnen > willst, dann werden die Ausgänge mehrerer AND-Gatter zusammen > geschaltet. Nein, je Ausgang+Eingang wie benötigt
Ja mach das mal. Nach der Zeichnung siehst die Situation vielleicht schon viel besser aus. Deine Textbeiträge stimmen mich bisher eher hoffnungslos, ich habe nämlich nicht das Gefühl, dass du weißt, wovon du da schreibst. Aber das könnte auch schlicht eine sprachliche Sache sein. Die primäre Sprache der Elektronik ist jedenfalls der Schaltplan, darin kann man solche Zusammenhänge gewiss deutlicher formulieren. Hast du schon einmal ein flankengesteuertes Flipflop aus Transistoren oder Relais gebaut? Also selber entwerfen, nicht einfach nur nachbauen. Mach das mal, könnte sehr lehrreich sein. https://de.wikipedia.org/wiki/Flipflop#Taktzustands-_und_taktflankengesteuerte_Flipflops
cpu_builder schrieb: > Und das Steuerwerk muss noch im Programmzähler den Zyklus (fetch, > decode, execute, store) berücksichtigen Vorhin schriebst du von "fetch, decode, execute" und jetzt von "fetch, decode, execute, store". Lege dich mal irgendwo fest. Und nein, du brauchst überhaupt keine Zyklen machen. Du kannst die drei Dinge auch gnadenlos hintereinanderschalten. cpu_builder schrieb: > Ich habe heute nicht mwhr genug Zeit dafür. Morgen sende ich ein Bild > davon, was ich gezeichnet habe. Du wirst noch echt viel Zeit für dein Projekt brauchen... cpu_builder schrieb: > Wieso geht AND nicht? Nicht dass ich alles umsonst zeichne... ...und dabei noch so dermaßen viele Fehler und falsche Zeichnungen machen, dass es auf ein Bild mehr oder weniger auch nicht ankommt. Ich verweise nochmals auf Programme wie z.B. KLogic, wo man Gatter einfach verdrahten kann und sieht, was eigentlich passiert.
Stefanus F. schrieb: > Hast du schon einmal ein flankengesteuertes Flipflop aus Transistoren > oder Relais gebaut? Also selber entwerfen, nicht einfach nur nachbauen. > Mach das mal, könnte sehr lehrreich sein. > https://de.wikipedia.org/wiki/Flipflop#Taktzustands-_und_taktflankengesteuerte_Flipflops Leider noch nicht. Das mache ich demnächst mal. Stefanus F. schrieb: > Deine Textbeiträge stimmen mich bisher eher hoffnungslos, ich habe > nämlich nicht das Gefühl, dass du weißt, wovon du da schreibst. Ich bin auch irgendwie hoffnungslos gestimmt. Denn in der Schule hat man nicht mal annähernd etwas mit Elektronik gemacht, im Studium beschäftige ich mich nicht mit CPUs und ähnlichem,... Und woher soll ich all das mal schnell lernen? Ich weiß nur wie AND OR XOR NOT NAND NOR XNOR, RS JK D FlipFlop, Zähler,... funktionieren... Aber wie Schaltungen in "echten" nicht erträumten CPUs aussehen... Keine Ahnung.
S. R. schrieb: > Vorhin schriebst du von "fetch, decode, execute" und jetzt von "fetch, > decode, execute, store". Lege dich mal irgendwo fest. Woher soll ich wissen wie CPUs das machen? Ich habe beides schonmal gelesen S. R. schrieb: > Ich verweise nochmals auf Programme wie z.B. KLogic, wo man Gatter > einfach verdrahten kann und sieht, was eigentlich passiert. Ohne PC auf Android schwer machbar...
S. R. schrieb: > Vorhin schriebst du von "fetch, decode, execute" und jetzt von "fetch, > decode, execute, store". Lege dich mal irgendwo fest. Woher soll ich wissen wie CPUs das machen? Ich habe beides schonmal gelesen S. R. schrieb: > Ich verweise nochmals auf Programme wie z.B. KLogic, wo man Gatter > einfach verdrahten kann und sieht, was eigentlich passiert. Ohne PC auf Android schwer machbar... Deshalb morgen
cpu_builder schrieb: > Woher soll ich wissen wie CPUs das machen? Es gibt Bücher, da steht sowas drin. cpu_builder schrieb: > Ich habe beides schonmal gelesen Das ist eine super Grundlage, um etwas völlig anderes selbst zu entwickeln... cpu_builder schrieb: > Ohne PC auf Android schwer machbar... Deshalb morgen Ich fürchte, du hast mehr als ein Problem. Allerdings würde es mich wundern, wenn es keine App für sowas gäbe. Andererseits habe ich nicht das Gefühl, dass es dir helfen würde, wenn ich jetzt nach sowas suche. cpu_builder schrieb: > Kann es sein dass Prozessoren heutzutage unnötig kompliziert sind? Das hängt davon ab, was du unter "unnötig" verstehst.
:
Bearbeitet durch User
@ cpu_builder Bleib einfach mutig und hartnäckig. Das Ganze ist sicher etwas schwerer als Du es Dir vorgestellt hast, aber das ist nichts Ungewöhnliches. Geht uns allen so.
S. R. schrieb: > Andererseits habe ich nicht das Gefühl, dass es dir helfen würde, wenn > ich jetzt nach sowas suche. Du hast Recht. Ich muss dieses Zeugs mit Ablaugsteuerung,... verstehen. S. R. schrieb: > Das ist eine super Grundlage, um etwas völlig anderes selbst zu > entwickeln... Soll das ironisch gemeint sein?
> Denn in der Schule hat man nicht mal annähernd etwas mit Elektronik > gemacht, im Studium beschäftige ich mich nicht mit CPUs und ähnlichem > Keine Ahnung. Was treibt Dich dann dazu, als Anfangsprojekt einen Mikrocontroller designen zu wollen? Ich komme doch auch nicht auf Idee, ein ganzes Haus bauen zu wollen, bloß weil ich eins bewohnen kann und weiß wie man Gips anrührt. > Kann es sein dass Prozessoren heutzutage unnötig kompliziert sind? Auf jeden Fall. Jeder Mikroprozessor ist universell und kann daher mehr als im jeweiligen Anwendungsfall nötig. Niemand würde einen Mikroprozessor verwenden, der gerade eben ausreicht. Denn dann müsste man ihn Anwendungsspezifisch designen und könnte später keine Änderungen vornehmen. Es gibt anwendungsspezifische Logikschaltungen, zum Beispiel digitale Armbanduhren. Und es gibt programmierbare Logikschaltungen. Früher PAL und GAL, heute eher FPGA. Das ist eher etwas für die Entwicklungsphase. Wenn die Anwendung fertig ist, kann man sie immer noch in eine physische Schaltung (Mikrochip) übertragen.
cpu_builder schrieb: > Soll das ironisch gemeint sein? Ja. Du wirfst mit Worten umher, die du offensichtlich selbst nicht verstehst. Auf Erklärungen dazu reagierst du nicht, weil du sie auch nicht verstehst (oder trollst). Besorge dir ein paar gute Bücher zum Thema Digitaltechnik, Zustandsautomaten (denn nichts anderes ist eine CPU) und CPUs selbst. Die Entwicklungen der letzten 30 Jahre spielen für dein Projekt keine Rolle. Beschäftige dich mit Projekten wie MyCPU oder HomebrewCPU und verstehe, was die gemacht haben, wie sie es gemacht haben und vor allem: warum sie es so gemacht haben, wie sie es gemacht haben. Schau dir Projekte wie den Jugend+Technik-Computer ("JU+TE Computer", "TINY", "COMP JU+TER"), Z1013 oder andere Selbstbau-Systeme an. Da ist zwar eine fertige CPU drin, aber eine CPU ohne "Rest des Systems" ist auch wertlos. Verstehe die CPUs, die in solchen Projekten verbaut sind. Das sollte dich ein paar Wochen beschäftigen. Komme dann wieder, zeige, dass du verstanden hast, und du hast eine Chance. Sonst ist das Projekt jetzt schon tot.
Ich kann Dir nur dringend raten, dieses flankengesteuerte Flipflop selbst du entwerfen. Dabei lernst du einiges über Logik Schaltungen. Außerdem solltest du irgend einen Mikrocontroller in Assembler programmieren lernen, denn dabei lernt man auch eine Menge über seine Funktionsweise. Erst danach scheint es mir sinnvoll, sich mit Blockschaltbildern von CPU's zu beschäftigen.
Theor schrieb: > @ cpu_builder > > Bleib einfach mutig und hartnäckig. > Das Ganze ist sicher etwas schwerer als Du es Dir vorgestellt hast, aber > das ist nichts Ungewöhnliches. Geht uns allen so. Na gut. Aber nur im Gegenzug für einen Tipp: Soll die Taktquelle für die Aufgabe (1 Bus, 3 Register, Ein- & Ausgabeport) direkt an die CLK-Pins am FlipFlop? Wie ungefähr ist das Gerüst außenherum um diese Teile? Was genau ist eine Ablaufsteuerung?
Stefanus F. schrieb: > Außerdem solltest du irgend einen Mikrocontroller in Assembler > programmieren lernen, denn dabei lernt man auch eine Menge über seine > Funktionsweise. Erst danach scheint es mir sinnvoll, sich mit > Blockschaltbildern von CPU's zu beschäftigen. Genau das habe ich gemacht, mit ATtinies! Und um eben das innere VOLLKOMMEN zu verstehen, ohne dass ich daraus Industriegeheimnisse mache, möchte ich eine CPU selbst bauen
S. R. schrieb: > . Du wirfst mit Worten umher, die du offensichtlich selbst nicht > verstehst. Auf Erklärungen dazu reagierst du nicht, weil du sie auch > nicht verstehst (oder trollst). Ich versuche, so sehr es geht, alles zu verstehen! Worauf habe ich nicht reagiert? Es sind seeehr viele Beiträge. Ich habe definitiv ein ernstes Anliegen. Der Typ mit seinem Pentium ist ein Troll, ich keineswegs!
Die Ablaufsteuerung erzeugt die Taktsignale für sämtliche Funktionseinheiten. Sie interpretiert den aktuellen Befehl und erzeugt je nach Befehl eine andere Sequenz von Taktsignalen. Du musst Dir eine ausreichende Menge von Befehlen ausdenken. Wenn der Befehl "ld a,b" zum Beispiel den Wert von Register a ins Register b übertragen würde, dann müsste die Ablaufsteuerung die Ausgänge von Register a auf den Bus legen (Output-Enable aktivieren) und dann dem Register b einen Taktimpuls senden, damit es die Daten lädt. Wenn der Befehl lauten würde "jmp +12" bedeuten würde, dass der Programmzähler um 12 erhöht werden soll, dann muss die Ablaufsteuerung entweder 12 Taktimpulse an den Programmzähler senden oder den aktuellen Wert als Operand 1 in die ALU laden, dann 12 als Operand 2 in die ALU laden, dann die beiden Werte addieren, dann das Ergebnis zurück in den Programmzähler übertragen. Auch dazu sind eine Menge Taktimpulse nötig, die in der richtigen Reihenfolge an viele Einheiten gesendet werden müssen. Bei den ersten Mikrocontrollern konnte man noch nicht beliebig viele Transistoren unterbringen, deswegen haben die Hersteller viel Grips hinein gesteckt, diese Logik zu optimieren. Dennoch kannst du im Foto des 6502 sehen, dass die Ablaufsteuerung gut ein drittel der ganzen CPU ausmacht, also einige tausend Transistoren. Diese Logik kann man hier nicht in ein paar Zeilen Text erklären. Es würde mich nicht wundern, wenn die Details dieser Schaltung bei den allermeisten Prozessoren geheim gehalten wird. Aber schau Dir ruhig mal diese Projekte mit den selbstgebauten CPUs an. Da wird sicher eins dabei sein, welches die Ablaufsteuerung im Detail zeigt. Und schau Dir doch mal die oben genannten Varianten Turing Maschine an, die enthalten nämlich auch Ablaufsteuerungen. Die originale Turing Maschine enthält die einfachste denkbare Ablaufsteuerung. Davon ausgehend kann man sich komplexere ausdenken, was ja auch getan wurde.
Zu dem Thema gibt es Bücher, zum Beispiel: https://books.google.de/books?isbn=3322940489 Das solltest du auch lesen, falls noch nicht getan: https://de.wikipedia.org/wiki/Ablaufsteuerung
Stefanus F. schrieb: > Ich kann Dir nur dringend raten, dieses flankengesteuerte Flipflop > selbst du entwerfen. Ist ja albern, das beherrscht du selbst nicht!
Vielen Dank Stefanus F.! Das hilft mir deutlich beim Verstehen. Hier meine Lösung mit AND-Gattern:
Ich habe jetzt eh vor mit ICs zu arbeiten, wenn einer mit 4 Gattern oder programmierbarem 4-bit-Zähler genauso viel wie ein einzelner Transistor kostet. Theor, kann es sein dass du Lehrer bist?
cpu_builder schrieb: > Vielen Dank Stefanus F.! > > Das hilft mir deutlich beim Verstehen. > > Hier meine Lösung mit AND-Gattern: Ja. Schon nicht schlecht. Die Ablaufsteuerung kommt noch, oder? Jedenfalls ist das Problem mit den ANDs, wie ich erwartet habe, vorhanden. Du hast mir auf meinen Einwand, dass die Ausgänge mehrerer ANDs zusammen geschaltet werden, geantwortet, dass: "Nein, je Ausgang+Eingang wie benötigt". Tatsächlich ist aber ist das dennoch der Fall. In der Skizze sehe ich, dass die Ausgänge aller AND Gatter auf die Busleitung gehen. Damit sind sie "zusammengeschaltet" und es entstehen Konflikte wenn ein AND eine '1' und ein anderes eine '0' ausgibt. Siehst Du es?
Theor schrieb: > dass die Ausgänge aller AND Gatter auf die Busleitung gehen Verdammt, hast Recht... Wie sonst?!
> Ist ja albern, das beherrscht du selbst nicht!
Doch tue ich. Ich habe so etwas aus Transistoren und Relais selbst
entwickelt und dabei viel gelernt.
Mache das mal ohne Kondensatoren, damit es mit annähernd beliebigen
Taktfrequenzen funktioniert.
cpu_builder schrieb: > Theor schrieb: >> dass die Ausgänge aller AND Gatter auf die Busleitung gehen > > Verdammt, hast Recht... Wie sonst?! Dafür gibt es mehrere Lösungen: Eine hast Du im Prinzip schon genannt. Ein Multiplexer. Im Prinzip je Eingang ein AND-Gatter, - insofern hast Du schon in die richtige Richtung gedacht, prima -, aber dazu ein OR-Gatter mit mehreren Eingängen an den Ausgängen der ANDs. Ein andere Lösung sind besondere Gatter die sich in einen Hochohmigen Zustand, genannt 'Z' schalten lassen. Gibts als "Bustreiber" mit einem Enable-Eingang. Die kann man beliebig kombinieren, solange man dafür sorgt, dass immer nur ein Treiber zur Zeit aktiviert ist. Es gibt noch andere Varianten. Lasse ich aber erstmal aussen vor. Versuch mal die Multiplexer-Lösung, wenn Du magst.
Soll ich jetzt eine Schaltung mit MOSFETs oder bipolaren Transistoren zeichnen? Wie realisiere ich hier eine Ablaufsteuerung? Das bekomme ich ohne Hilfe nicht hin...
Ein Blick auf https://www.mikrocontroller.net/topic/2069927 (gläserner 65C02 aus Standardgattern inkl. Schaltplan, Dokumentation und lauffähiger Simulation) könnte für den Anfang ganz hilfreich sein. Gruß microprocessor
cpu_builder schrieb: > Soll ich jetzt eine Schaltung mit MOSFETs oder bipolaren Transistoren > zeichnen? Wie realisiere ich hier eine Ablaufsteuerung? Das bekomme ich > ohne Hilfe nicht hin... Ich würde Dir raten, auch diese Frage erst einmal zu vertagen. Es geht zunächst mal darum die Strukturen zu verstehen. Im Prinzip ist jedes Gatter lediglich eine gewisse, immer gleich bleibende Kombination von Transistoren/MOSFETs. Die zu zeichnen heisst in gewisser Weise erstmal einen Wald zu zeichnen, wenn Du ein Holzhaus bauen willst. Tut mir leid, aber wenn Du Dir vorstellst, in drei Tagen mit der CPU anzufangen, halte ich das für illusorisch. Setze mal, wenn ich von dem Tempo heute ausgehe, ein paar Wochen an, ehe Du Dich an einen ersten Entwurf wagen kannst, der von Anfang an einen gewissen praktischen Wert hat und in dem die deutlich überwiegende Zahl der Details sinnvoll ist.
Theor schrieb: > Versuch mal die Multiplexer-Lösung, wenn Du magst. Nur mal eine Frage: was hast du demnächst noch mit mir vor, bis ich eine eigene CPU-Architektur entwerfen kann? (ich mag deine didaktische Methode ;-)) Ich mache die Multiplexerschaltung heute noch.
Theor schrieb: > Tut mir leid, aber wenn Du Dir vorstellst, in drei Tagen mit der CPU > anzufangen, halte ich das für illusorisch Hatte ich nicht vor (naja doch :-P ) Ich folge deiner Anleitung
cpu_builder schrieb: > Theor schrieb: >> Versuch mal die Multiplexer-Lösung, wenn Du magst. > > Nur mal eine Frage: was hast du demnächst noch mit mir vor, bis ich eine > eigene CPU-Architektur entwerfen kann? (ich mag deine didaktische > Methode ;-)) > > Ich mache die Multiplexerschaltung heute noch. Ach, mein Lieber. Immer schon beim Morgen und kaum im Hier-Und-Jetzt. :-) Warts ab. So. Aber für heute mal Schluss. War leider sowieso ein Glückstag, dass ich heute so oft Zeit hatte. Damit Du was zu tun hast, suche mal nach Bustreiber mit Tri-State-Ausgang und versuche das als zweite Lösung. Auch kannst Du Dich mal nach einer Simulation umschauen.
> Wie realisiere ich hier eine Ablaufsteuerung? Zum Beispiel mit einer Diodenmatrix. Ich bin erstaunt, wie schnell du die genannten Dokumente und Webseiten studiert hast. Es wundert mich aber gar nicht, dass davon nichts hängen geblieben ist so dass du die selbe Frage immer wieder wiederholst. Das ist jetzt mein letzter Versuch, eine mögliche Ablaufsteuerung zu skizzieren. Bedenke, dass es auch andere Methoden gibt. Sagen wir mal, dein Mikrocontroller hat zwei Register A und B, die man lesen (rd) und schreiben (wr) kann. Dann gibt es für die ALU noch die beiden Operanden (auch Register) X und Y. Die ALU unterstützt vier Operationen: add, sub, mul und div. Das Ergebnis der ALU sei Z. Der Datenaustausch zwischen den Komponenten findet über einen Bus statt, mit dem sie alle bidirektional verbunden sind. Als Register werden 74HC573 verwendet. Wie die Register A und B initial befüllt werden, lasse ich hier mal aus. Das Programm soll die Zahlen in A und B addieren und das Ergebnis in A speichern. A = A + B Die Diodenmatrix erzeugt für jeden Arbeitsschritt das nötige Signal:
1 | Schritt Mikrocode |
2 | rdA rdB wrA wrB wrX wrY rdZ add sub mul div |
3 | 0 1 0 0 0 1 0 0 0 0 0 0 Übertrage A nach X |
4 | 1 1 0 0 0 0 0 0 0 0 0 0 |
5 | 2 0 1 0 0 0 1 0 0 0 0 0 Übertrage B nach Y |
6 | 3 0 1 0 0 0 0 0 0 0 0 0 |
7 | 4 0 0 0 0 0 0 0 1 0 0 0 Addiere |
8 | 5 0 0 1 0 0 0 1 0 0 0 0 Übertrage Z nach A |
9 | 6 0 0 0 0 0 0 1 0 0 0 0 |
10 | 7 0 0 0 0 0 0 0 0 0 0 0 fertig |
11 | 8 0 0 0 0 0 0 0 0 0 0 0 |
12 | 9 0 0 0 0 0 0 0 0 0 0 0 |
13 | 10 0 0 0 0 0 0 0 0 0 0 0 |
14 | 11 0 0 0 0 0 0 0 0 0 0 0 |
15 | 12 0 0 0 0 0 0 0 0 0 0 0 |
16 | 13 0 0 0 0 0 0 0 0 0 0 0 |
17 | 14 0 0 0 0 0 0 0 0 0 0 0 |
18 | 15 0 0 0 0 0 0 0 0 0 0 0 |
Die Operation ist nach 7 Schritten abgeschlossen. Der Mikrocode umfasst aber der Einfachheit halber 16 Schritte für jeden Befehl, deswegen bleiben einige Zeilen ungenutzt. rdA: sorgt dafür, dass Register A seinen gespeicherten Wert auf den Bus legt, ist also negiert und dann mit dessen Output-Enable Eingang verbunden. wrA: sorgt dafür, dass Register A den aktuellen Wert vom Bus einliest, ist also mit dessen Latch-Eingang verbunden. Das gleiche Prinzip gilt für die Signale rdB, wrB, wrX, wrY und rdZ. Dass add Signal befiehlt der ALU, die beiden Operanden zu addieren, und das Ergebnis in Z zu speichern. Irgendwo muss dieser Mikrocode gespeichert werden, also ein ROM. Das kann man mit einer Diodenmatrix machen, oder mit DIP Schaltern, oder wie auch immer. Die unteren 4 Adressbits dieses Mikrocode ROM werden mit einem Binärzähler verbunden, der fortlaufend von 0 bis 15 zählt. Die oberen 6 Adressbits werden mit dem Befehlsregister verbunden, somit kann die CPU bis zu 64 unterschiedliche Befehle ausführen, jeder mit bis zu 16 Mikroschritten. Das wäre mal eine Anregung für den Anfang - aber noch lange nicht vollständig und ganz sicher nicht die einzige denkbare Lösung. [Mod] Formatierung angepasst.
:
Bearbeitet durch Moderator
Der 6502 macht es übrigens ganz anders, ohne Mikrocode: http://forum.6502.org/viewtopic.php?f=1&t=2657
Stefanus F. schrieb: > Ich bin erstaunt, wie schnell du die genannten Dokumente und Webseiten > studiert hast. Es wundert mich aber gar nicht, dass davon nichts hängen > geblieben ist so dass du die selbe Frage immer wieder wiederholst. > > Das ist jetzt mein letzter Versuch, eine mögliche Ablaufsteuerung zu > skizzieren. Und er ist gelungen. Das waren echt viele Links, irgendwie zu viel für einen halben Tag für mich. Stefanus F. schrieb: > Sie interpretiert den aktuellen Befehl und erzeugt > je nach Befehl eine andere Sequenz von Taktsignalen. Ist dann die Ablaufsteuerung im Mikroprozessor gleich dem Befehlsdekoder? Denn sie interpretiert ja die Befehle...
> Ist dann die Ablaufsteuerung im Mikroprozessor gleich dem Befehlsdekoder? In diesem Fall ja. Aber bei der MT15 CPU ist es wieder ganz anders gelöst, und sicher nicht uninteressant. Hier ist eine sehr detaillierte Beschreibung: http://6502.org/users/dieter/mt15b/mt15b_1.htm
Stefanus F. schrieb: > Die oberen 6 > Adressbits werden mit dem Befehlsregister verbunden, somit kann die CPU > bis zu 64 unterschiedliche Befehle ausführen, jeder mit bis zu 16 > Mikroschritten. Wie kommst du auf die 64?
> Wie kommst du auf die 64?
Frei erfunden, unter der Annahme, dass 64 Befehle für eine sinnvolle CPU
genügen. Man könnte auch 7 Bits für 128 Befehle verwenden, oder 8 Bits
für 256 Befehle.
Du willst doch eine eigene CPU designen. Dann obliegt es Dir, den
Befehlssatz festzulegen.
Ja. Ich habe ja geschrieben, dass das nur der Anfang ist. Ich kann Dir hier keine vollständige Lösung beschreiben, das ist einfach zu umfangreich. Außerdem haben andere darüber Bücher geschrieben. Lies die doch mal. Hier ist auch noch ein interessanter minimalistischer Ansatz: https://bradrodriguez.com/papers/piscedu2.htm
Auf Papier habe ich auch mal eine CPU gebaut. Natürlich fand ich die sozusagen genial (war sie aber natürlich nicht, viele Sachen nicht beachtet). Ich wäre aber nie auf die Idee gekommen, die wirklich zu bauen. Wozu auch?
microprocessor schrieb: > Ein Blick auf > > https://www.mikrocontroller.net/topic/2069927 > > (gläserner 65C02 aus Standardgattern inkl. Schaltplan, Dokumentation > und lauffähiger Simulation) könnte für den Anfang ganz hilfreich > sein. > > Gruß microprocessor Korrektur: Der Link scheint nicht mehr zu funktionieren. Die Seite ist über die Suchfunktion in mikrocontroller.net oder Google durch Eingabe von "Visualisierbarer Schaltplan eines 65C02" zu erreichen.
Warte mal... Also werden durch den Maschinecode, den man z.B. nach dem Kompilieren eines Assembkerprogrammes sieht, der im Befehlsregister landet, entsprechend Mikroprogramme gestartet? Mir ist irgendwie unklar, wie das Befehlsregister mit dem Mikrocode verbunden wird... Wozu dienen z.B. Zeilen 1 und 3 in deiner letzten Erklärung? Ich merke schon, eine komplexe, komplizierte Sache... Ich lese mal das Buch im Link von dir dazu
Ja, aber nur wenn die CPU mit Mikrocodes arbeitet. Es gibt ja auch welche ihne Mikrocode. Im einfachsten Fall wird das Befehlsregister bei jedem 16. Mikroschritt mit dem nächsten Befehl aus dem Programmspeicher gefüllt, bzw dem Befehl auf den der PC zeigt. Die Zeilen 1 und 3 halten die Ausgänge der Quell-Register länger offen. Beim 74HC573 muss erst das Latch-enable Signal beendet werden, erst danach darf man die Daten auf dem Eingang/Bus wegnehmen.
Ähhh, ich sehe gerade dass ich die pre tags falsch herum eingefügt habe. Auf Smartphones ist der Beitrag somit unlesbar. Jetzt kann ich das nicht mehr korrigieren. Wäre bitte ein Moderator so nett...?
Um kurz zusammenzufassen, was ich jetzt glaube zu wissen: - Eine CPU besteht allgemein aus einer ALU, Control Unit und Registern - Die CPU holt zunächst den Befehl, der an der Adresse des Befehlszählers/Programmzählers liegt, und legt diesen im Befehlsregister ab - Danach wird durch den Befehl im Befehlsregister ein Teil des Mikrocodes, "Mikroprogramm", ausgewählt, das die Datenübertragung über den Bus koordiniert, und den Befehl somit in kleinen Schritten ausführt. - Wenn der Befehl ausgeführt wurde, wird der Befehlszähler um 1 erhöht und der nächste Befehl geladen Mache ich da irgendeinen Denkfehler? Meine Idee wäre da, irgendwie diese Sache mit dem Mikrocode weitestgehend zu umgehen, da es ja scheinbar alles nur komplizierter macht.. Meine CPU soll nur rechnen können, nicht wie mit der branch prediction herumzaubern können.
Stefanus F. schrieb: > Jetzt kann ich das nicht mehr korrigieren. Wäre bitte ein Moderator so > nett...? Habs angepasst.
Wie gesagt gibt es auch CPUs ohne Mikrocode. Außerdem wird der Programmzähler bei manchen Befehlen nicht um 1 erhöht, z.b. bei Sprüngen. Du siehst dass die Ablaufsteuerung der komplexeste Teil der CPU ist. Mein verkürztes Beispiel mit Mikrocode ist noch die einfachste Variante aber auch die langsamste.
Microcode erleichtert bzw ermöglicht komplexe Befehlssätze. Einfache sehr schematische Befehlsstrukturen ohne komplexe Befehlsabläufe benötigen das nicht. Das beschriebene Schema trifft auf einfache CPUs zu, wie man sie heute nur noch in Mikrocontrollern findet. Komplexe CPUs lassen sich so nicht beschreiben.
Es war sehr interessant, mehr über diese Techniken in Prozessoren zu erfahren. Aber ich denke dass ich erstmal keine Lust mehr habe, weitere Details zu erfahren. Ich würde eh nicht genug Zeit haben, mich damit in der Freizeit ausführlich zu beschäftigen. Mal sehen, was daraus wird.
Sorry Stefanus F. Und Theor, aber das ist alles irgendwie zu hoch für mich. Ich werde dran bleiben, auch wenn ich demnächst eher wenig Zeit dafür finden Ihr habt mir sehr geholfen. Danke dafür!
Alex W. schrieb: > Gabs hier nicht mal ein Projekt einer eigenen CPU für en FPGA? War das > Kurt Bindl? Hab was von Bomeranz-Projekt in Erinnerung Meinst du das? Beitrag "8bit-Computing mit FPGA"
cpu_builder schrieb: > Sorry Stefanus F. Und Theor, aber das ist alles irgendwie zu hoch für > mich. Ich werde dran bleiben, auch wenn ich demnächst eher wenig Zeit > dafür finden Ihr habt mir sehr geholfen. > Danke dafür! Ich war gestern etwas genervt von den vielen komplizierten Dingen. Aber heute mache ich gerne weiter. Un die Schaltung mit dem Multiplexer zu bauen: Wie wird der MUX bei z.B. 4:1 gesteuert? Mit 2 Steuer-Anschlüssen? Den mit 2bit kann man ja 1 von 4 Bit adressieren
Alex W. schrieb: > Gabs hier nicht mal ein Projekt einer eigenen CPU für en FPGA? War > das Kurt Bindl? Hab was von Bomeranz-Projekt in Erinnerung Es hieß Bomerenz-Projekt. Jetzt heißt es bo8h. Und es ist nicht von Kurt Bindl, sondern von Josef G. (bome). Link zum Artikel: 8bit-Computer: bo8h Link zur Homepage: http://www.bo8h.de/ Link zu den Threads: Beitrag "8bit-Computing mit FPGA" Beitrag "Befehlssatz der bo8-CPU - was ist gut, was ist schlecht" Ist aber nicht jedermans Sache.
cpu_builder schrieb: > Un die Schaltung mit dem Multiplexer zu bauen: Wie wird der MUX bei z.B. > 4:1 gesteuert? Mit 2 Steuer-Anschlüssen? 4:1 - vier Eingänge werden auf einen Ausgang gemultiplext. Um einen aus vier Eingängen auszuwählen, benötigt man zwei Adressbits, da 2^2=4 ist Wenn Du diese Frage stellen musst, dann solltest Du erst mal ein wenig Digitalelektronik auf einem Steckbrett aufbauen und dich über blinkende LEDs freuen - Die Realisation einer CPU ist noch gaaanz weit weg für Dich!
Ich merke schin, dass es schwer ist, daran festzuhalten... Aber Tristate ist schon interessant!
Ich merke schin, dass es schwer ist, daran festzuhalten... Aber Tristate ist schon interessant! Wolfgang R. schrieb: > Wenn Du diese Frage stellen musst, dann solltest Du erst mal ein wenig > Digitalelektronik auf einem Steckbrett aufbauen und dich über blinkende > LEDs freuen - Die Realisation einer CPU ist noch gaaanz weit weg für > Dich! Ich weiß was 2^2 ist, aber man weiß ja nie was irgendwelche Ingenieure für verrückte Sachen erfinden. Mit Multiplexern bin ich eben nicht so vertraut
Alex W. schrieb: > Gabs hier nicht mal ein Projekt einer eigenen CPU für en FPGA? War das > Kurt Bindl? Hab was von Bomeranz-Projekt in Erinnerung Nicht nur diese eine Projekt, da hats im hiesigen SVN-Depot noch das: https://www.mikrocontroller.net/articles/PiBla
Interessant ist das alles - nur mit reiner Theorie kommst Du nicht weiter! Du musst das auch mal in Hardware aufbauen, wenn Du die Technik wirklich begreifen willst. Taktgenerator, Schieberegister, Zähler, Multiplexer... Das macht Spaß und bildet weiter. Auch wenn Du das mit "alten" 74LSxxx Bausteinen aufbaust - grundlegend hat sich an der Technik bis heute nichts geändert.
Digital-Elektronik ist sicher interessant zu lernen, aber dann doch bitte nicht anhand einer CPU! Und schon gar nicht solltest du versuchen, ohne Erfahrung mit den Grundlagen eine eigene CPU zu designen. Fang doch mal mit etwas relativ einfachem an, zum Beispiel eine programmierbare Ampelanlage (ohne CPU, aber mit ROM).
cpu_builder schrieb: > Ich weiß was 2^2 ist, aber man weiß ja nie was irgendwelche Ingenieure > für verrückte Sachen erfinden. Mit Multiplexern bin ich eben nicht so > vertraut Alter, um das zu wissen geht man ja in die Schule oder schaut die Sendung mit der Maus. Oder alte Folgen aus dem Bildungsfernsehen (check mal YouTube). https://8bit-museum.de/retro-computersendungen-in-den-1980er/ Selbst als IC ist ein Muxer eine ganz alte Geschichte aus den Siebzigern so als 74xx137, In Relaistechnik bei der Telefonvermittlung noch älter. https://wikivisually.com/lang-de/wiki/Datei:RSW_Frontseite_aufgeklappt_600_388.jpg Am besten die fängst deine Grundlagenausbildung mit der 74-Familie an: https://de.wikipedia.org/wiki/74xx
cpu_builder schrieb: > Es war sehr interessant, mehr über diese Techniken in Prozessoren zu > erfahren. Aber ich denke dass ich erstmal keine Lust mehr habe, weitere > Details zu erfahren. Ich würde eh nicht genug Zeit haben, mich damit in > der Freizeit ausführlich zu beschäftigen. Mal sehen, was daraus wird. War ja klar. Erst große Töne spucken und dann bei den ersten Anzeichen von Komplexität den Schwanz einziehen. Dabei hast du echte Komplexität noch gar nicht gesehen. Schau dir mal die Mikroarchitektur einer halbwegs aktuellen PC-CPU an, etwa eines Core-i von Intel. Mit out-of-order execution, branch prediction, Pipeline, mehrfach assoziativen Caches etc. Und das gibt es teilweise seit über 10 Jahren.
cpu_builder schrieb: > Und woher soll ich all das ... lernen? Aus Büchern zum Beispiel. Ich hatte in meinem E-Technik-Studium (Ende der 80er Jahre) das Fach Hardwaretechnik bei den Dozenten Flick und Liebig. Diese beiden haben über die Jahre einige Grundlagenbücher veröffentlicht, die ich immer recht hilfreich fand. Ein neueres Werk dieser Autoren: Mikroprozessortechnik und Rechnerstrukturen, Flick/ Liebig, Springer Verlag (Kenn ich nicht von innen, habe ich gerade gegoogelt.) Und zahlreiche Bücher ähnlicher Titel, die moderner sind. cpu_builder schrieb: > ... mal schnell ... Überhaupt nicht. Lass Dir Zeit, es ist Dein Hobby. Das Thema ist komplex, da ist man nicht in fünf Minuten drin. Waren wir damals auch nicht. Ich habe das erste mal (in einem Sonderheft von Franzis) gelesen, wie ein Mikroprozessor so ungefähr funktioniert, als ich in der 7. Klasse war. Die größeren geistigen Durchbrüche kamen trotzdem erst an der Uni. Damit will ich nicht sagen, dass das bei Dir genauso lange dauern muss. Aber gehe langsam vom einfachen zum kompilzierten. Dann wird das schon werden (in dem für Dich angemessenen Tempo).
:
Bearbeitet durch User
IT Archivar schrieb: > Oder alte Folgen aus dem Bildungsfernsehen (check > mal YouTube). Das ist eine sehr gute Idee. Als ich mit Elektronik anfing (Experimentierkästen) war ich in der dritten Klasse und ziemlich lesefaul. Lieber habe ich mir von Jean Pütz im Fernsehen (Einführung in die Elektronik) erklären lassen, wie ein Transistor funktioniert. Der hatte noch weitere Sendereihen in diesem Stiel, eine davon auch zum Thema Digitaltechnik. (Dazu gab's auch Begleitbücher, möglicherweise zu finden in Bibliotheken.)
Die Elektronik Bücher von Jean Pütz kann ich nur dringend empfehlen. Es macht nichts, dass sie schon alt sind. Pütz Jean, Einführung in die Digitalelektronik Band 1 -3 https://www.booklooker.de/B%C3%BCcher/Jean-P%C3%BCtz+Einf%C3%BChrung-in-die-Digitalelektronik-B%C3%A4nde-1-3/id/A02kYLoJ01ZZn
Axel S. schrieb: > out-of-order execution, branch prediction, Pipeline, mehrfach > assoziativen Caches Das ist zwar beschleunigend, aber gefährdet ja auch die Sicherheit (5 Arten von Spectre u.ä. & Meltdown) und ist stromverschwendend ARM-CPUs sehen vom Design her noch deutlich "ordentlicher" aus, logischer, simpler, im Gegensatz zu X86 oder dem misslungenen X64 M.A. S. schrieb: > Aber gehe langsam vom einfachen zum kompilzierten. Dann wird das schon > werden (in dem für Dich angemessenen Tempo). Werde ich. Dann werde ich mir mal ein paar Bücher kaufen, statt hier weiter Anfängerfragen zu stellen. Außerdem: statt Youtube bevorzuge ich Webseiten wie dieelektronikerseite.de, die haben sich echt Mühe gegeben eine gute Sammlung an Infos zu bieten. Axel S. schrieb: > War ja klar. Erst große Töne spucken und dann bei den ersten Anzeichen > von Komplexität den Schwanz einziehen. Ich bin nunmal Physiker, kein Elektrotechniker. Es kann mir ja niemamd vorwerfen sich dafür zu interessieren, wie eine CPU arbeitet. Wenn es mir UNNÖTIG KOMPLIZIERT erscheint, wie fast alle Technik heute, dann erfinde ich eben was simpleres, was auch funktioniert. Das bekomm' ich wahrscheinlich auch ohne all die modernen "Weiterentwicklungen" hin
Wobei Computer immer unnötig kompliziert sind, das liegt in der Natur der Sache. So wie ein Glas auch stets unnötig groß ist, Urlaub immer zu kurz und das Gehalt immer zu gering ist.
cpu_builder schrieb: > Wenn es > mir UNNÖTIG KOMPLIZIERT erscheint, Wie kommst du nur immer auf dein "unnötig kompliziert"? Das wirkt lächerlich um dummfrech. Es ist so kompliziert wie nötig um aktuellen Leistungsanforderungen gerecht zu werden. Diese komplexen Techniken haben einen Sinn, sie ermöglichen erst die Leistung welche CPUs heute haben. Da ist nichts unnötig, ausser man benötigt eben diese Leistung nicht. Aber dann formuliere es auch so.
:
Bearbeitet durch User
Mein Laptop ist zu 100% unnötig, ebenso das Smartphone/Handy. Ich konnte meine ersten 17 Jahre ohne diese Dinge überleben. Heißt das nun, dass ich die Geräte der 90er Jahre neu erfinden möchte? Nein!
Auf Transistorebene könnte man Multigatter bauen, meine eigene Erfindung, die AND, OR, NOT, und Kombinationen davon ermöglichen, und das mit deutlich weniger Transistoren als für all die vielen Einzelgatterkombinationen nötig ist. Die noch zu hunderten ider tausenden Stück kombiniert könnten die Rechenleistung drastisch erhöhen. Und die Intel ME ist ja wohl das allerletzte
cpu_builder schrieb: > Auf Transistorebene könnte man Multigatter bauen, meine eigene > Erfindung, die AND, OR, NOT, und Kombinationen davon ermöglichen, und > das mit deutlich weniger Transistoren als für all die vielen > Einzelgatterkombinationen nötig ist. Die noch zu hunderten ider > tausenden Stück kombiniert könnten die Rechenleistung drastisch erhöhen. Schon mal die LUTs eines FPGA angeguckt? Deine Erfindung? Sorry entweder Troll oder Hybris jenseits aller Heilungschancen.
cpu_builder schrieb: > Werde ich. Dann werde ich mir mal ein paar Bücher kaufen, statt hier > weiter Anfängerfragen zu stellen. 1. Bevor Du wild um-dich-kaufst: wenn möglich vorher einen Blick reinwerfen, um zu sehen, ob es auch für Dich geeignet ist, man gibt sonst schnell viel Geld aus und ist enttäuscht. Bibliotheken sind ein guter Ausgangspunkt, da Du ja altes Grundlagenwissen benötigst, solche Bücher sollte es dort geben. cpu_builder schrieb: > Ich bin nunmal Physiker, ... Wenn es mir UNNÖTIG KOMPLIZIERT erscheint, > wie fast alle Technik heute, dann erfinde ich eben was simpleres, was auch funktioniert. :) Dann kennst Du ja sicher Einstein und seine vielen Zitate. Bitte beherzige in diesem Zusammenhang besonders: "...so einfach wie möglich, ABER NICHT EINFACHER!" ;D
cpu_builder schrieb: > meine eigene > Erfindung Sicher dat... Willst Du nicht erst mal anfangen, die einfachsten Grundlagen zu erlernen - vielleicht mal eine einfache Gatterschaltung aufbauen?
Stefanus F. schrieb: > Mein Laptop ist zu 100% unnötig, ebenso das Smartphone/Handy. > Ich konnte meine ersten 17 Jahre ohne diese Dinge überleben. Die sind ja nur Werkzeuge. Auch wenn manche Leute diese Geräte als Sinn ihres Lebens ansehen.. Stefanus F. schrieb: > Heißt das nun, dass ich die Geräte der 90er Jahre neu erfinden möchte? > Nein! Auch wenn ich da noch nicht gelebt habe, war damals nicht alles krankhaft übertechnisiert. Das was es an Technik gab ist greifbarer als die ganzen superkomplizierten Sachen heute. Ich will nunmal ne überschaubare CPU selber bauen. Eines Tages erstelle ich einen neuen Thread hier und zeig euch was draus geworden ist. Jetzt mache ich aber erstmal ohne eure Hilfe weiter.
cpu_builder schrieb: > Ich will nunmal ne überschaubare CPU selber bauen. Eines Tages erstelle > ich einen neuen Thread hier und zeig euch was draus geworden ist. Jetzt > mache ich aber erstmal ohne eure Hilfe weiter. Viel Glück, wir sind gespannt.
cpu_builder schrieb: > Ich will nunmal ne überschaubare CPU selber bauen. Eines Tages erstelle > ich einen neuen Thread hier und zeig euch was draus geworden ist. Jetzt > mache ich aber erstmal ohne eure Hilfe weiter. Blöd, wenn die Antworten nicht so sind, wie man sie gerne gehabt hätte... Viel Erfolg trotzdem - Vorschläge und Hinweise hast Du ja hier zuhauf bekommen!
Wolfgang R. schrieb: > Willst Du nicht erst mal anfangen, die einfachsten Grundlagen zu > erlernen - vielleicht mal eine einfache Gatterschaltung aufbauen? Ich habe bereits einige Gatter aufgebaut. Und das nicht nur vor 2 Tagen, sondern auch schon vor 2 Jahren.
cpu_builder schrieb: > Ich habe bereits einige Gatter aufgebaut. Und das nicht nur vor 2 Tagen, > sondern auch schon vor 2 Jahren. Deine Überraschten Antworten auf die Themen Tristate oder Multiplexer haben Anderes vermuten lassen...
cpu_builder schrieb: > Auch wenn ich da noch nicht gelebt habe, war damals nicht alles > krankhaft übertechnisiert. Das was es an Technik gab ist greifbarer als > die ganzen superkomplizierten Sachen heute. Das denkst du nur. Schon ein C64 würde dich aktuell überfordern. Und das waren noch lange nicht die 90er. 90er waren 486er, Pentium usw. Die waren schon heftig komplex im Vergleich zu einer 4 Bit Bastel- und Lern CPU an der du ja schon gut zu knabbern hast.
Wolfgang R. schrieb: > cpu_builder schrieb: >> Ich habe bereits einige Gatter aufgebaut. Und das nicht nur vor 2 Tagen, >> sondern auch schon vor 2 Jahren. > > Deine Überraschten Antworten auf die Themen Tristate oder Multiplexer > haben Anderes vermuten lassen... Vielleicht meint er ja nicht Logikgatter, sondern Ziegengatter oder sonst was Alltägliches aus dem ländlichen Umland.
Ich habe ein 1 Gatter entwickelt. Block-Symbol:
1 | _____ |
2 | | | |
3 | in o----| 1 |----o out |
4 | |_____| |
Schaltplan:
1 | in o---------------o out |
Funktioniert analog, digital und mit fast jeder beliebigen Spannung. Benötigt keine Stromversorgung. Ich nenne es 74XX000. :-)
Stefanus F. schrieb: > Ich habe ein 1 Gatter entwickelt. Block-Symbol: Also an der Rückwirkungsfreiheit deines Erzeugnisses musst Du aber noch ein Bisschen arbeiten! :D Früher hatten wir im Digitallabor eine Liste mit lauter ulkigen Digitalblöcken, ich finde es im Netz leider auf die Schnelle nicht. Da gab es so Sachen wie: 1-Bit-Perverter, Nie-Glied, Nie-und-nimmer-Glied, WOM-Speicher (write-only-speicher), etc. PS: Etwas in der Art http://donaupeter.de/logik/logik.htm
:
Bearbeitet durch User
cpu_builder schrieb: > Das ist zwar beschleunigend, aber gefährdet ja auch die Sicherheit (5 > Arten von Spectre u.ä. & Meltdown) und ist stromverschwendend Mit einem Raspi als Desktoprechner will man trotzdem nicht arbeiten. Zudem gibt's auch noch x86-CPUs ohne OOE, und die will man ebenfalls nicht auf dem Desktop haben - aus demselben Grund. Zu lahm. > ARM-CPUs sehen vom Design her noch deutlich "ordentlicher" aus, > logischer, simpler, im Gegensatz zu X86 oder dem misslungenen X64 Du verwechselst Architektur mit Befehlssatz. Heutige x86-CPUs sind intern keine x86-Architektur, weil sie die x86-Befehle intern in Micro-Ops zerlegen, die dann erst ausgeführt werden. Der Befehlssatz ist nur eine externe Codierung, und der Die-Anteil für den Decoder war schon vor 10 Jahren vernachlässigbar.
@ cpu_builder > Ist dann die Ablaufsteuerung im Mikroprozessor gleich dem > Befehlsdekoder? Denn sie interpretiert ja die Befehle... Man könnte das so sagen. Sagen wir mal, das ist richtig. Dennoch versteht man im allgemeinen unter einem "Dekoder" etwas anderes als unter einer "Ablaufsteuerung". Ein "Dekoder" ist eine Mimik die einem Code einen anderen Code zuordnet. Z.B. 'A' -> 1, 'B' -> 2, 'C' -> 3 usws. Statt 1, 2, 3 etc, könnte die Ergebnisse auch Steuersignale für Datenpfade sein. Und die Eingabe die Codes für Maschinenbefehle, also LDI, ADC usw. Eine Ablaufsteuerung tut ungefähr das selbe (mag also auch Dekoder enthalten) aber zusätzlich in der zeitlichen Dimension. Sie erhält einen Takt und Eingangsdaten und gibt an ihren Ausgängen, eine Abfolge von Signalen. Diese wiederum können Steuersignale für Datenpfade sein. Der Unterschied liegt zum Teil in der Betrachtungsweise - nicht so sehr in der realen Bauweise. Man muss dazu wissen, das bei frühen CPUs die Befehlsdekodierung häufig als reine Kombinatorik betrachtet und gebaut wurde, die in ihrer Wirkung vom Takt abhängig war. Der Befehl wurde in alle notwendigen Steuersignale dekodiert und der Takt hat dafür gesorgt, dass sie in den folgenden ein, zwei oder drei Takten wirksam wurden. Später wurde die Befehlsdekodierung zusammen mit der taktabhängigen Ausführung als eine Einheit betrachet - der "Ablaufsteuerung" (man nennt das auch Microprogrammeinheit, den Ablauf ein "Microprogramm"). Das hatte eher Gründe in der Übersicht, der Organisation, als darin, dass die beiden Varianten effektiv etwas wesentlich Unterschiedliches sind. Aber das führt hier im Moment noch weit hinter Deinen Horizont, denke ich und man sollte das erst einmal verschieben. Das Verständnis ergibt sich aus der Betrachtung der tatsächlichen Abläufe viel besser, meine ich. Also nun erst einmal der Multiplexer. Ich habe Dir oben eigentlich schon den Multiplexer verbal beschrieben. Theor schrieb: > Ein Multiplexer. Im Prinzip je Eingang ein AND-Gatter, - insofern hast > Du schon in die richtige Richtung gedacht, prima -, aber dazu ein > OR-Gatter mit mehreren Eingängen an den Ausgängen der ANDs. Und zwar, damit Du die Konflikte zwischen unterschiedlichen Ausgangswerten der AND-Gatter auflöst. Zwei AND-Gatter mit zusammengeschalteten Ausgängen gehen kaputt wenn sie unterschiedliche Werte ausgeben. Ein ODER-Gatter aber verträgt es, wenn an seinen Eingängen unterschiedliche Werte liegen und es kann diese zwei unterschiedlichen Werte einem ganz bestimmten zuordnen, so das der Konflikt aufgelöst ist. Du solltest Dich jetzt ernsthaft um ein Simulationsprogramm kümmern und das einfach mal versuchen. Wichtig ist, dass Du praktische Dinge machst. Wertetabellen aufstellst und boolsche Gleichungen. Schaltungen zeichnest und ausprobierst. Entweder real oder in Simulation. Bei Schaltungen überlegst, was passiert, wenn Du gewisse Eingangswerte anlegst. Auch lesen. Aber das Gelesene auch nachvollziehen. Ich halte es übrigens durchaus nicht für sinnlos, wenn Du jetzt schon "Entwürfe" für Deine Super-CPU machst, die besser als Intel oder AMD ist. Sammle Material und Ideen. Daraus kannst Du auch lernen. Es ist aber äusserst wichtig, dass Du die realen, aber so kleinen, unwichtigen, murksigen und anstrengenden Sachen lernst und übst. Und das Du vorerst damit viel mehr Zeit verbringst als mit Deinen Ideen. Schaue mal alle paar Wochen Deine Ideen an, ob Du inzwischen einen Kenntnisstand erreicht hast, um eine davon etwas konkreter zu machen. Verfeinere einen Blockschaltplan oder eine Gleichung. Zeichne eine neue, bessere Gatterschaltung (oder in Transistoren). So, - Schritt für Schritt -, näherst Du Dich Deinem Ziel.
cpu_builder schrieb: [...] > > Ich weiß was 2^2 ist, aber man weiß ja nie was irgendwelche Ingenieure > für verrückte Sachen erfinden. Mit Multiplexern bin ich eben nicht so > vertraut Noch eine Bemerkung hierzu: Ich verstehe das so, dass Du es vermeidest, Fehler zu machen. In diesem Fall, weil Du etwas noch nicht wissen könntest, was andere schon wissen. Das ist aber nicht sinnvoll, weil Du auf diese Weise gar nichts machst. Du machst so zwar keine Fehler, aber auch nichts Richtiges. Aber das ist doch Dein Ziel: Etwas Richtiges zu machen. Oder? (Und, wie gesagt: Fehler sind auch wertvoll.) Es gibt immer Leute in Deiner Umgebung, die Deine Fehler unsachlich kritisieren. Das Beste ist, meiner Meinung nach, sich mit diesen Menschen nicht auf Gespräche einzulassen. Das tut nur weh. Es bringt Dich nicht weiter. Selbst wenn diese Kritik auch sachliche Aspekte hat; es gibt keinen guten Grund sich nach jemandem zu richten, der sachliche Kritik mit persönlichen Herabsetzungen verbindet. Jemand der Dir wirklich helfen will, wird Dich auf Fehler hinweisen und gut. Und manche werden Dich ermutigen und auch kleine Fortschritte bemerken und Dich dafür loben. Halte Dich am besten an diese Leute. Ich weiss auch nicht ob Du das packen wirst. Aber ich richte mich hauptsächlich danach, ob Du es wenigstens versuchst - und wenn es noch so murksig ist. Erinnere Dich an Deinen ersten Versuch zum Datentransport. Wie habe ich darauf reagiert? Wie ging es Dir damit?
cpu_builder schrieb: >> out-of-order execution, branch prediction, Pipeline, mehrfach >> assoziativen Caches > > Das ist zwar beschleunigend, aber gefährdet ja auch die Sicherheit (5 > Arten von Spectre u.ä. & Meltdown) und ist stromverschwendend Das Gerät, auf dem ich soeben tippe, hat des Stroms wegen beides. 4x Cortex A57, die in Komplexität mit x86-64 mithalten können und von Spectre&Co betroffen sind. Und 4x Cortex A53, die das kalt lässt. Assoziative Caches und Branch Prediction haben jedoch alle in dieser Klasse, geht nicht anders. Der Kern des Problems mit Spectre&Co ist nur OOO. IMHO war bisher noch kein in order Design betroffen, wie Cortex A53/55 und Intels Atoms vor Silvermont. > ARM-CPUs sehen vom Design her noch deutlich "ordentlicher" aus, > logischer, simpler, im Gegensatz zu X86 oder dem misslungenen X64 Die Befehlsatzarchitektur schon. Im internen Aufbau schenken sich die Cortex A7x, AMDs und Intels wenig.
Wenn du es ganz einfach haben möchtest, dann versuche es doch mal mit einem Analogrechner. Die gab es mal und haben funktioniert. Da muß man sich aber in die OPV reinknien. http://www.robotrontechnik.de/index.htm?/html/computer/analogrechner_e.htm Vielleicht wäre der APS2 mit nur acht OPV etwas für dich.
michael_ schrieb: > versuche es doch mal mit > einem Analogrechner. :) Ja, die gab es mal. Allerdings können solche Geräte wirklich nur rechnen und nichts anderes. Programmierbar waren sie durch Stöpseln von Verbindungskabeln, ich vermute, das ist nicht das, was der TO möchte. ;)
Cyblord -. schrieb: > Schon mal die LUTs eines FPGA angeguckt? > > Deine Erfindung? Sorry entweder Troll oder Hybris jenseits aller > Heilungschancen. Es gibt immer wieder einen, der sowas "erfindet." Ich habe selber bei der Siemens einen Projektleiter gehabt, der ganz super stolz drauf war, dass er auf die Idee gekommen ist, dass man die Delays und Kombinationen von LUTs in FPGAs dazu verwenden könnte, Delays für seine analogen Leistungsverstärker zu verwenden. Hat er sogar durchgesetzt dass es patentiert wird.
Ich dachte eher an digital, aber gut zu wissen dass es sowas gibt. Jetzt beiße ich mir die Zähne am Bauen von zwei 4:1-Multiplexern in KLogic aus. Oder vielleicht in Logism. Mal sehen.
cpu_builder schrieb: > ARM-CPUs sehen vom Design her noch deutlich "ordentlicher" aus, > logischer, simpler, im Gegensatz zu X86 oder dem misslungenen X64 Das glaubst aber auch nur du. Schau dir mal RISC-V an, wenn du etwas ordentliches-logisches-simples ohne Ballast haben willst. Davon abgesehen sind "Befehlssatz" und "Implementation" völlig unterschiedliche Dinge. Intel-CPUs führen seit 20 Jahren (Pentium Pro) keinen x86-Code mehr aus. > M.A. S. schrieb: > Werde ich. Dann werde ich mir mal ein paar Bücher kaufen, statt hier > weiter Anfängerfragen zu stellen. Gehe lieber in die nächste Bibliothek und leihe dir ein paar Dutzend passende Bücher aus. Kaufen kannst du die drei Relevanten später auch noch. >> War ja klar. Erst große Töne spucken und dann bei den ersten Anzeichen >> von Komplexität den Schwanz einziehen. > > Ich bin nunmal Physiker, kein Elektrotechniker. Es kann mir ja niemamd > vorwerfen sich dafür zu interessieren, wie eine CPU arbeitet. Nö, du bist ein Quatschkopf. Wenn du Physiker wärst, also mal Wissenschaft gemacht hättest, dann hättest du dich erstmal informiert, bevor du deine absolute Unwissenheit zur Schau stellst. > Wenn es mir UNNÖTIG KOMPLIZIERT erscheint, wie fast alle > Technik heute, dann erfinde ich eben was simpleres, > was auch funktioniert. Das kannst du machen. Hab ich auch schon gemacht. Das Ergebnis kann sich durchaus sehen lassen, aber... naja, wenn man ein Design mit den Fähig- und Fertigkeiten von vor 30 Jahren aufbaut, bekommt man auch die Leistung von vor 30 Jahren. > Das bekomm' ich wahrscheinlich > auch ohne all die modernen "Weiterentwicklungen" hin Wenn du dich intelligenter anstellst als bisher, dann ist das kein großes Problem. Aber darauf sinnvoll einen Webbrowser laufenzulassen (d.h. das Teil in dieser Welt produktiv einsetzen) wirst du nie im Leben.
Da ich mich entschieden habe, in Logisim fortzufahren, bis ich irgendwann die simulierte Schaltung baue, erstelle ich gleich einen neuen Thread
Um die Funktionsweise einer CPU besser zu verstehen, baue ich in Logisim nun Schritt für Schritt einige Schaltungen auf. (Teil 1: Beitrag "diskrete CPU") Später werde ich die CPU mit Logikbausteinen nachbauen.
Hältst du es nicht für sinnvoller, das in VHDL oder Verilog zu machen? Da kannst du alles genauso schrittweise aufbauen und dir die Gatter ansehen, aber du kannst es auch mit wenig Aufwand direkt auf einen Chip bringen. Außerdem ist HDL-Erfahrung kein Nachteil
Wenn du weder eine Frage noch eine coole Lösung zu präsentieren hast, warum hast du dann einen neuen Thread eröffnet? Lust auf Bullshit-Diskussionen?
Da ich bisher öfter Logisim genutzt habe, versuche ich es erstmal in einer gewohnten Umgebung. Aber wenn es klappt bin ich offen für andere Arten.
Stefanus F. schrieb: > Wenn du weder eine Frage noch eine coole Lösung zu präsentieren hast, > warum hast du dann einen neuen Thread eröffnet? Lust auf > Bullshit-Diskussionen? Ich habe demnächst eine Lösung. Abgesehen davon: (a) trifft der Threadname "diskrete CPU" nicht mehr zu (b) ist das laden der über 100 Beiträge auf dem Handy langsam
Dussel schrieb: > Hältst du es nicht für sinnvoller, das in VHDL oder Verilog zu machen? Beim geschätzten Wissensstand des TO: Nein.
M.A. S. schrieb: > Allerdings können solche Geräte wirklich nur rechnen und nichts anderes. > Programmierbar waren sie durch Stöpseln von Verbindungskabeln, Bei Digitalrechnern war das damals auch nicht anders. cpu_builder schrieb: > Ich dachte eher an digital, aber gut zu wissen dass es sowas gibt. > Für digital hast du aber keine Change! Ich lese hier schon eine Weile belustigt mit. > Jetzt beiße ich mir die Zähne am Bauen von zwei 4:1-Multiplexern in > KLogic aus. Oder vielleicht in Logism. Mal sehen. Deine Zähne sind schneller raus, als wie du denkst. Was dann? Mach das auf dem Bildschirm. Vor paar Jahren wollte hier das auch schon mal einer machen. Nichts mehr davon gehört. Ich habe damals empfohlen, mit einem entsprechendem fetten Netzteil anzufangen.
Muss für dieses Rumgestöpsel jetzt noch ein zweiter Thread her? Zweimal null Inhalt ist halt immer noch null Inhalt. Mach doch erst mal was Praktisches und lerne...
@ cpu_builder Ich habe mir jetzt auch mal Logisim installiert. Ich könnte dann Deine Entwürfe vom Multiplexer usw. auch laden und ausprobieren, falls Du sie hier als Anhang postest.
cpu_builder schrieb: > ich würde gerne eine CPU mit einer eigenen Architektur, die möglichst > wenige Transistoren benötigt, diskret selber bauen, um die grundlegende > Funktionsweise besser zu verstehen. Noch mal zum Eingangspost - hier ist eindeutig die Rede vom bauen, nicht simulieren, nicht theoretisieren... Warum ist es heutzutage so unattraktiv, einfach mal ein Steckbrett, ein 5V-Netzteil, ein paar ICs der 74er Reihe und LEDs mit Vorwiderstand zu beschaffen und endlich mal die reale Welt zu erfahren? Ich meine, geile Freundinnen, die alle Jpg mit Nachnamen heißen, sind auch nicht der Weisheit letzter Schluss, oder?
Theor schrieb: > @ cpu_builder > > Ich habe mir jetzt auch mal Logisim installiert. Ich könnte dann Deine > Entwürfe vom Multiplexer usw. auch laden und ausprobieren, falls Du sie > hier als Anhang postest. Helfersyndrom?
> Helfersyndrom?
Wenn es dich stört, bist du hier falsch. Du kannst deinen Account wieder
löschen.
cpu_builder schrieb: > Da ich mich entschieden habe, in Logisim fortzufahren, bis ich > irgendwann die simulierte Schaltung baue, erstelle ich gleich einen > neuen Thread Das finde ich durchaus sinnvoll.
Axel S. schrieb: > Theor schrieb: >> @ cpu_builder >> >> Ich habe mir jetzt auch mal Logisim installiert. Ich könnte dann Deine >> Entwürfe vom Multiplexer usw. auch laden und ausprobieren, falls Du sie >> hier als Anhang postest. > > Helfersyndrom? Dies ist ein Forum. Leute eröffnen Threads um mit anderen Leuten über etwas zu diskutieren. Ein Forum lebt davon, dass manche sich hier einbringen möchten. Das ist völlig in Ordnung. Wenn ganz andere Leute keinen Bock auf ein bestimmtes Thema haben oder ihnen das Niveau zu gering ist, steht es ihnen frei, diesen Thread weiträumig zu umfahren. Warum machst Du das nicht einfach und lässt diejenigen, die das anders sehen, in Ruhe?!
:
Bearbeitet durch User
M.A. S. schrieb: > Warum machst Du das nicht einfach und lässt diejenigen, die das anders > sehen, in Ruhe?! Naja, ich als Helfer käme mir jetzt schon ein wenig verarscht vor.
1 | TO: Ich will eine CPU bauen - nur aus Transistoren! |
2 | Helfer: Da hast Du aber eine Menge vor... |
3 | .... |
4 | (160 Beiträge weiter) |
5 | TO: Puh... ist das kompliziert! |
6 | ... |
7 | TO: Ich will eine CPU in Logisim simulieren! |
8 | .... |
Was ich damit sagen will: Der TO bindet eine Menge KnowHow und Arbeit von potentiellen Helfern. Am Ende sagt er dann: "Verarscht! Verarscht! Das mit den Transistoren lasse ich! Jetzt nehme ich einen neuen Thread und machs mit Logisim!". Nach 2 Tagen schmeisst er schon alles hin, bevor er überhaupt angefangen hat. Ich kann mir schon vorstellen, wie es weiter geht:
1 | TO: Ich will eine CPU in Logisim erstellen - habe aber keinen Plan! |
2 | Helfer: Da hast Du aber eine Menge vor... |
3 | .... |
4 | (Nochmals 160 Beiträge weiter) |
5 | TO: Puh... ist das kompliziert! |
6 | ... |
7 | TO: Ich will eine fertige CPU verwenden! Wo bekomme ich noch einen Z80? |
8 | .... |
9 | (Nochmals 160 Beiträge weiter) |
10 | TO: Wie schließe ich den an? |
11 | (Nochmals 160 Beiträge weiter) |
12 | TO: Zu kompliziert, ich mach jetzt Urlaub! |
Wie ich den TO einschätze: Er hat keinen Plan und offenbar nicht die Fähigkeiten oder den Willen, sich besondere Kenntnisse durch Selbststudim anzueignen. Stattdessen will er sich alles im Detail vorkauen lassen, um dann morgen fertig zu sein. Ich schätze das ein als verlorene Liebesmüh. Hier werden einfach Ressourcen unnütz gebunden und auch verschwendet. Besser wäre es, wenn der TO sich selbst in die erforderlichen Themen einarbeiten würde. Man kann nur hoffen, dass irgendein späterer interessierter Leser mit den Infos, die hier bereitwillig gegeben wurden, mehr anfangen kann.
M.A. S. schrieb: > Axel S. schrieb: >> Theor schrieb: >>> >>> Ich habe mir jetzt auch mal Logisim installiert. Ich könnte dann Deine >>> Entwürfe vom Multiplexer usw. auch laden und ausprobieren, falls Du sie >>> hier als Anhang postest. >> >> Helfersyndrom? > > Dies ist ein Forum. > Leute eröffnen Threads um mit anderen Leuten über etwas zu diskutieren. > Ein Forum lebt davon, dass manche sich hier einbringen möchten. Das ist > völlig in Ordnung. Zieh dir mal den Stock aus dem Arsch. Es ist ein himmelweiter Unterschied, ob man diskutiert und sein vorhandenes Wissen weiter vermittelt. Oder ob man sich eine obskure(?) Software installiert, um im Falle des Falles helfen zu können. Nicht daß ich die Wahrscheinlichkeit dafür besonders hoch schätzen würde. Unser toller anonymer TE wird vermutlich auch in Logisim an Trivialitäten wie einem Multiplexer scheitern oder daran, daß er Logik-Ausgänge direkt zusammenschaltet. Ernsthaften Willen (von Befähigung ganz zu schweigen!) zu eigenständigem Lernen hat er bislang jedenfalls nicht demonstriert. Frank M. schrieb: > Was ich damit sagen will: Der TO bindet eine Menge KnowHow und Arbeit > von potentiellen Helfern. Am Ende sagt er dann: "Verarscht! Verarscht! Genau so. Außer daß ich Hanlons Razor heranziehen würde. M.a.W. keine böse Absicht unterstellen, sondern schlicht Blödheit. https://de.wikipedia.org/wiki/Hanlon%E2%80%99s_Razor
Frank M. schrieb: > Ich schätze das ein als verlorene Liebesmüh. Hier werden einfach > Ressourcen unnütz gebunden und auch verschwendet. Man könnte auch auf gut Deutsch sagen: Der Thread ist - sowohl was Austausch wie auch Knowhow-Aspekte angeht - völlig fürn Arsch. Liegt das an Syndrom Facebook, die ganze Welt am eigenen Laut Denken/Lernprozess teilhaben lassen zu müssen? Gerade weil sich auch kaum einer die Müh macht, nach älteren bzw. wertvolleren Beiträgen zu dem Thema zu recherchieren, wird das Forum mit immer mehr Posts dieser Art zugemüllt und wird damit unlesbar.
Frank M. schrieb: >> sehen, in Ruhe?! > > Naja, ich als Helfer käme mir jetzt schon ein wenig verarscht vor.TO: > Ich will eine CPU bauen - nur aus Transistoren! > Helfer: Da hast Du aber eine Menge vor... > .... > (160 Beiträge weiter) > TO: Puh... ist das kompliziert! > ... > TO: Ich will eine CPU in Logisim simulieren! > .... > > Was ich damit sagen will: Der TO bindet eine Menge KnowHow und Arbeit > von potentiellen Helfern. Am Ende sagt er dann: "Verarscht! Verarscht! > Das mit den Transistoren lasse ich! Axel S. schrieb: > Es ist ein himmelweiter Unterschied, ob man diskutiert und sein > vorhandenes Wissen weiter vermittelt. Oder ob man sich eine obskure(?) > Software installiert, um im Falle des Falles helfen zu können. N > ... > Ernsthaften Willen (von Befähigung ganz zu schweigen!) zu eigenständigem > Lernen hat er bislang jedenfalls nicht demonstriert. Ist ja gut, ihr habe ja recht. Trotzdem: (1) Axel S. schrieb: > Helfersyndrom? Wenn es hier einen gibt, der aus welchen Gründen auch immer, Lust auf dieses (aus Eurer Sicht sinnlose) Unterfangen hat, dann soll er es doch machen. (2) Axel S. schrieb: > Zieh dir mal den Stock aus dem Arsch. Mäßijen se ma jefälligst Ihre Ausdrucksweise! ;D
Fitzebutze schrieb: > Liegt das an Syndrom Facebook, die ganze Welt am eigenen Laut > Denken/Lernprozess teilhaben lassen zu müssen? > Gerade weil sich auch kaum einer die Müh macht, nach älteren bzw. > wertvolleren Beiträgen zu dem Thema zu recherchieren, wird das Forum mit > immer mehr Posts dieser Art zugemüllt und wird damit unlesbar. Ja, OK, das ist ein Punkt!
:
Bearbeitet durch User
cpu_builder schrieb: Beitrag "Re: diskrete CPU" > ... > Subtraktion, Multiplikation,... dennoch machen kann? > Brauche ich Carry-Bits,...? Wieviele? Zur Abrundung dieses Threads möchte ich alle künftigen Leser auf folgende Seite von Logikfunktionen hinweisen: http://www.brix.de/computer/logiksymbole_anders.html
Beitrag #5539305 wurde von einem Moderator gelöscht.
2. Thread gelöscht?! kann ihn nicht mehr finden ... egal, dennoch: meine CPU in Logisim ist fertig. u.a. mit Kenntnissen die ich hier erworben habe. Danke für die Hilfe! (auch wenn manche, im Gegensatz zu z.B. Theor, es mir eher schwer gemacht haben) Multiplexer machen es kompliziert in Bezug auf Gattermenge, später es aus Gattern zu bauen -> 2 Eingabe- & 1 festes Ausgaberegister (ALU), + 1 Register, an dem eine LED hängen könnte
cpu_builder schrieb: > egal, dennoch: meine CPU in Logisim ist fertig. u.a. mit Kenntnissen die > ich hier erworben habe. Glaubt keiner, das mit fertig, zeig mal .log oder screenshot.
IT-Archivar schrieb: > cpu_builder schrieb: > egal, dennoch: meine CPU in Logisim ist fertig. u.a. mit Kenntnissen die > ich hier erworben habe. > > Glaubt keiner, das mit fertig, zeig mal .log oder screenshot. Mir ist es eigentlich vollkommen egal was ihr über mich zu wissen glaubt. Aber ich kann es ja senden.
cpu_builder schrieb: > 2. Thread gelöscht?! kann ihn nicht mehr finden ... Der wurde nicht gelöscht, sondern mit diesem Thread zusammengeführt. Du musst nur mal ein paar Beiträge nach oben blättern.
cpu_builder schrieb: > Aber ich kann es ja senden. Ich würde das nicht tun. Die Stimmung hier ist inzwischen so aufgeladen, dass hier kaum noch gute-laune Kommentare zu erwarten sind. Vielleicht lässt du das Thema besser einfach ein halbes Jahr lang ruhen und präsentierst dein Projekt dann.
cpu_builder schrieb: > meine CPU in Logisim ist fertig. Hätte ich so schnell nicht erwartet - zeig doch bitte mal!
cpu_builder schrieb: > 2. Thread gelöscht?! kann ihn nicht mehr finden ... > > egal, dennoch: meine CPU in Logisim ist fertig. u.a. mit Kenntnissen die > ich hier erworben habe. > > Danke für die Hilfe! > ... Ah. Magst Du das mal posten, bitte? Das würde mich interessieren.
Wolfgang R. schrieb: > cpu_builder schrieb: > meine CPU in Logisim ist fertig. > > Hätte ich so schnell nicht erwartet - zeig doch bitte mal! Theor schrieb: > Ah. Magst Du das mal posten, bitte? Das würde mich interessieren. Stefanus F. schrieb: > cpu_builder schrieb: > Aber ich kann es ja senden. > > Ich würde das nicht tun. Die Stimmung hier ist inzwischen so aufgeladen, > dass hier kaum noch gute-laune Kommentare zu erwarten sind. Vielleicht > lässt du das Thema besser einfach ein halbes Jahr lang ruhen und > präsentierst dein Projekt dann. Da es offensichtlich Interessierte gibt, sende ich die CPU. Ich habe jetzt etwas spät erst nach Antworten, deshalb morgen früh. Vielleicht hilft mir ja jemand bei der Verbesserung. Ansonsten komme ich gerne in 1/2 Jahr wieder mit dem Thema an. Aber einen Versuch ist es doch Wert ;-)
Korrektur: ich wollte schreiben dass es jetzt schon spät ist, und ich deswegen morgen früh die Datei vom PC hole. Ich habe leider im Moment am PC zu Hause keine Internetverbindung, nur am Handy
Ist ja jetzt schon wieder ein Tag weiter - hat die Katze den Source Code gefressen?
Wolfgang, du kennst das doch sicher, wie es nach solchen Ankündigungen üblicherweise weiter geht. Ich sage nur: Pfffffft, heiße Luft.
Also ich bin ja mal gespannt was da kommt. Ne CPU zu bauen ist ja nunmal nicht so einfach. Wobei wirs ja mit 32Bit MIPS auch gleich komplett übertrieben haben ;) http://www.fritzler-avr.de/spaceage2/index.htm (Der eingebundene Webring ist SEHR zu empfehlen!) Aber in klein geht sowas ja auch: http://digitarworld.uw.hu/ttlcpu.html Der Nibbler wurde hier ja schon verlinkt.
cpu_builder schrieb: > Da es offensichtlich Interessierte gibt, sende ich die CPU. Ich habe > jetzt etwas spät erst nach Antworten, deshalb morgen früh. Ich warte immer noch gespannt auf die geistigen Ergüsse dieses "cpu_builder". Ehrlich gesagt gehen mir die Hirnfurze dieses Typen am Arsch vorbei!
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.