Hallo zusammen, wie der Betreff des Beitrags schon verrät, habe ich vor eine CPU selber zu bauen. Zuerst dachte ich, dass man soetwas nie schaffen könnte, aber dann bin ich auf die Seite von Dennis Kuschel ( http://mycpu.mikrocontroller.net/index2.htm ) gestoßen und hab mich sofort an Zeichnen und planen gemacht. Meine geplante CPU hätte: 32 bit Datenbus 32 bit Adressbus 16 MHZ Taktfrequenz "CISC" ähnliche Architektur (ca. 10-16 Takte pro Befehl) 32 Register Stack jede Menge Pointer Der Einfachheit halber wollte ich die Register, Stack und Pointer in einen SRAM packen. Außerdem Würde ich logische Funktionen wie AND OR ... auch alle als Tabelle in einen SRAM packen, deshalb auch die 10-16 Takte pro Befehl. Außerdem könnte man einen SRAM ja noch als "Cache" benutzen!? Hab mal eine grobe Übersicht über den Aufbau gemalt! Da ich erst 15 bin und somit mich nur als Hobby mit Elektronik beschäftigen kann, würde ich gerne eure Meinung dazu hören, ob so ein Projekt verwirklich werden könnte (abgesehen von Signalreflektionen und co.). Würde mich sehr über eure Meinung freuen Freundliche Grüße Tobi
:
Gesperrt durch Moderator
@Achim Den Spruch hättest dir sparen können, da er nicht wirklich etwas mit meiner Frage zu tun hab. Mir gehts ja ned darum was neu zu erfinden, sondern eine CPU selber zu bauen. Das die mit ner Intel CPU ned mithalten kann is mir au klar! Gruß Tobi
Hallo.Muss ich dir recht geben,echt ein saublöder Spruch.Warum setzen Leute Puzzle zusammen,wenns das Bild auch fertig gibt?Warum wird hier im Forum sooft über Temperatursensoren (für Wetterstationen u.s.w)gesprochen,wenn ich so ein Teil mit noch ca. 10 Zusatzfunktionen bei Aldi für 8 euronen bekomme.Hut ab ,wenn sich ein 15 jähriger mit sowas beschäftigt.Ich kann dir bei deinem Problem leider nicht helfen,aber es gibt bestimmt noch ein paar Leute hier,die dir geistreicher als Achim helfen können. mfg Andy
Nimm ein CPLD oder FPGA und klopf dir deine CPUs mit VHDL zusammen. Oder als Anfangsprojekt mit Schematic.
Danke erstmal für eure Antworten! Mit nem FPGA hab ich schon eine 16 bit CPU gebaut und jetzt wollte ich mir eine aus normalen TTL Schaltkreisen aufbauen. Die Seite http://mycpu.mikrocontroller.net ist die von mir oben angegebene Seite, aber trotzdem danke! Gruß Tobi
Also wenn du soweit bist dass du FPGAs programmieren kannst, dann verstehe ich den Schritt zurück zu den Käfern erstmal nicht ;) aber jedem das seine g
Bei einem FPGA hat man intern halt keine Probleme mit Signalreflektionen und co. und deshalb finde ich es interessanter mal eine CPU aus einzelnen TTL Gattern zu bauen*g*. Und außerdem hab ich sonst nix zu tun*g* Gruß Tobi
Mit oder ohne FPGAs oder wenigstens CPLDs? Dann wird's ein ziemlich irrer Aufwand. Dennis Kuschel hat sich nicht ohne Grund auf 8bit beschränkt. Ohne FPGAs hast Du im Wesentlichen die gleiche Technik zur Verfügung, mit der man in den siebziger Jahre die Minicomputer realisierte. Bei dem was Du dir vorstellst tippe ich mal auf etliche gut gefüllte Doppeleuro-Karten (mit einfachen Eurokarten kannst Du 32bit vergessen). Ohne FPGAs ist im Grund nur die Situation bei RAM und ROM einfacher geworden. Und auch die 16MHz sind ein arg anspruchsvolles Ziel. 74HCs sind nicht wesentlich schneller als die TTLs von damals, d.h. Du benötigst 74AC Bausteine. Und die sind ausgesprochen anspruchsvoll hinsichtlich Leitungsführung, Ground/Power-Layern (d.h. Multilayer-Platinen) und dergleichen. Ich denke, die einzige Chance den Aufwand in erträglichen Grenzen zu halten, ist Byte-seriell zu arbeiten. ALU, Datenpfade, Register-RAMs usw nur 8 Bit breit und eben in 4 Zyklen hintereinander operieren. Befehlssatz absolut minimal, RISC pur, ausschliesslich indirekte Adressrechung. Und sei froh, wenn's mit 4MHz läuft.
Ich wollte des eigentlich mit 74 AC aufbauen, aber das sie so anspruchsvoll sind wusst ich ned. Aber das mit dem seriellen Aufbau hört sich auch gut an. Dann muss ich mal überlegen wie ich das mach. Gruß Tobi
Während meiner Lehre (als Meß- und Regeltechniker in einem großen deutschen Chemie-Unternehmen) haben wir mal eine alte Meßwarte in einem explosions-geschützten Betrieb demontiert. Man mag es kaum glauben, aber sämtliche analogen und digitalen Funktionen waren pneumatisch aufgebaut. Aus dem ausgeschlachteten Komponenten lies sich dann ein prima Rechenwerk basteln - also quasi eine "Luft-CPU" Das war ein richtig spannendes erlebnis, den rechner rechnen zu sehen - dei Taktrate war aber nicht wirklich sehr berauschend (so ca. 0,1 - 0,5 Herz :-)
Hi, habe leider nichts wirklich Sinnvolles beizutragen. Aber ich wollte noch sagen "Hut ab" vor einem 15 Jährigen der schon eine 16 Bit CPU realisiert hat. Aber ich habe da noch eine Idee: Lass die 32 Bit Version sein und beschäftige Dich mit Mädels. ;-) Obwohl: mach erst mal die 32 Bit CPU, die ist Logisch, Mädels sind das nicht! ;-) Gruß Bernd
Also ich hatte mit 3 Jahren bereits meine erste 128Bit-CPU mit 50GHz gebaut. Wo ist also das Problem? Das Projekt von Tobias ist doch etwas für Babys. Wenn er da jetzt schon solche Fragen stellt, dann sollte er es lieber bleiben lassen.
@Heman: Bitte keinen falschen Neid hier. Zumindest kann sich Tobias artikulieren - unabhängig davon ob er jetzt wirklich erst 15 ist oder nicht. Er bleibt sachlich und zielstrebig - das gefällt mir. Meist sind solche "Überflieger" sozial/kommunikationstechnisch auf niedrigem Niveau stehengeblieben. Tobias, wenn du wirklich noch so 'jung' bist, dann laß dich nicht entmutigen hier weiterzumachen (evtl. mit den physikalisch machbaren, angepassten Zielen) und bitte ignoriere die unnützen Kommentare und reagiere darauf nicht mit emotionalen Posts. Nochwas fürs Weltbild der 'Älteren': Wenn ein 15jähriger von fertiger 16Bit CPU in FPGA spricht, meint er möglicherweise damit, daß er hier und da fertige Teile zusammengebaut hat. Möglicherweise sehr große Wissenslücken aufweist, aber am Ende doch irgendwie irgendetwas vorzeigbares zusammengebaut hat (oder etwas das in diese Nähe kommt). Der 'Ältere' unterstellt sofort, daß wenn man eine "16-Bit-CPU im FPGA" gebaut hat, daß man bis ins Kleinste alles verstanden und durchgeplant hat. Dem ist sicherlich nicht so. Wer von den AVR-Programmierern kann schon erklären wie das Innenleben des Compilers/Assemblers usw. funktioniert - aber wie man den Stackpointer initalisiert wissen alle... Vielleicht irre ich aber auch und wir haben es hier mit einem großen Wichtigtuer zu tun - Hinweise dafür gibt's aber (noch) keine. ----, (QuadDash) - kann leider technisch nicht weiterhelfen.
http://mycpu.mikrocontroller.net Ein interessanter Ansatz und ein toll umgesetztes Projekt. Aber eben nicht so einfach für 16 oder 32 Bit geeignet. Das muss man seriell machen (wobei Mul und Div dann aber entfallen). Vielleicht wäre das Design des 68000 ein Vorbild, wo damals relativ wenig Hardware und viel Mikrocode verwendet wurde. Zum 68k gibt es auch einiges an verfügbaren Code. Für die 8 Bit CPU (s.o.) wurde ja auch auf abgeänderten Sourcecode zurückgegriffen (s. C64 BASIC). Im Prinzip sollte man sich aber vor Augen halten, daß 32 Bit CPUs von ganzen Heerscharen an Ingenieuren entwickelt wurden. Und man mit einem 8 Bit Design auch alle Softwareanwendungen erledigen kann, wenn man z.B. die Adressregister von 16 auf 24 oder 32 Bit aufpusten würde. (Theoretisch gibts eh die 'Bit-Grenze' nicht - s. http://www.turing-maschine.de/). So ein Design könnte vielleicht auch per Microcode dann einen 68k realisieren. Abstand muss man bei >8 Bit aber sicherlich von der max. Taktrate nehmen. Die Selbstbau 8 Bit CPU nutzt optimal heute verfügbare Hardware aus.
"Wer von den AVR-Programmierern kann schon erklären wie das Innenleben des Compilers/Assemblers usw. funktioniert" Genau, wo kann man das nachlesen? @15Jahre Diskukssion Also ich bin jetzt 17. Letztes Jahr habe ich mir alle Infos über Hardware zusammengetragen und von 13-15 habe ich mich etwas in die Programmierung bis zu Programmen die als OS laufen können beschäftigt. Ich hätte mich gerne schon früher damit beschäftigt, ich hatte aber niemanden, der mich eingeführt hat, bzw der mir gesagt hat, dass es Mikrocontroller gibt. So ist die Leistung ob man etwas mit 10, 15 oder 20 vollbringt davon abhängig, ob man einen Zugang dazu bekommt. Es gibt bei mir zum Beispiel keinen im Bekanntenkreis, der über das Einstecken einer Grafikkarte hinauskommt. Wenn er jetzt zugang zu Informationen hat, dann hat er Glück gehabt(und ist nebenbei auch nicht dumm, da er sie ja versteht) Das Alter spielt eigentlich kaum eine Rolle, da man als junger Mensch besser verstehen kann als wenn man alt wäre.
Hi, > Das Alter spielt eigentlich kaum eine Rolle, da man als junger Mensch > besser verstehen kann als wenn man alt wäre. also ich muß zugeben, das ich mit 16 den wildesten Assembler-Spaghetticode zusammengetippt habe. Die meisten Sachen haben auf anhieb funktioniert, ich habe nie etwas dokumentiert und meine Programme auch nach ein paar Wochen wieder verstanden. Jetzt mit 33 merke ich, das mir die Sache nicht mehr "ganz" so locker von der Hand geht. Von daher wundert es mich kaum das ein "junger" wissbegieriger so einen Start hinlegt. Das mit dem Zugang an Information kann ich unterschreiben. Mich hat damals auch nur der hohe Buchpreis ausgebremst. Ich hatte leider niemand der mir ein paar Dinge hätte zeigen können. Und das Internet gabs in der Form ja noch net. Ich hatte ja nicht mal einen Akustikkoppler. Gruß Bernd
Hallo Tobias, ich bin auch erst 16 Jahre alt und hatte genau die gleiche Idee wie du. Doch deine Idee ist ziemlich hoch dimensioniert. Das wird zu viel mit 16-Bit. Mein Bruder ist Kommunukationselektroniker und arbeitet jetzt als Ingenieur. Die haben da in der Lehre mal einen 4-Bit Prozessor als "Abschlussprüfung" entwickelt. Die waren zu fünft und haben dafür 3 Monate gebraucht. Dabei war die Software das kleinste Problem (und war schnell fertig). Ich empfehle dir deshalb, mach es mit 4 oder maximal 8 Bit, sonst wird der nie fertig. Ich habe mit der Verwirklichung meiner Idee (4-Bit) noch nicht begonnen, aber ich will es irgendwann mal in Angriff nehmen. Im Übrigen: Schön, dass es noch solche Leute in meinem Alter gibt, die sich mit Elektronik auseinandersetzen. Gruß Daniel!
@Einer der Bernds: Also ich habe das auch öfter, dass ich irgendwann im Internet Informationen finde, die ich ganz vergessen habe. "Boar warst du früher mal genial" g Also als Rückblick. Ich habe mit 13 schon sachen gemacht, die meinen Arbeiten jetzt in nichts nachstehen, außer dass ich jetzt mehr mit Hardware mache. " Mich hat damals auch nur der hohe Buchpreis ausgebremst. Ich hatte leider niemand der mir ein paar Dinge hätte zeigen können. Und das Internet gabs in der Form ja noch net. Ich hatte ja nicht mal einen Akustikkoppler." Wenn man 80E für ein Buch bezahlen muss überlegt man sich echt, ob man das unbedingt braucht. Aber besonders bei Formeln usw. kann das Internet nicht ganz so viel hergeben. Ich habe letzte Woche mein Physikbuch dafür entdeckt. Jetzt weiß ich warum das so fett ist. 90% davon werde ich in meiner Schulzeit nie im Klassenverband durchgehen. Dafür mache ich das jetzt einfach mal so(Spulen, Kondensatoren)
@Daniel: Vielleicht sollten wir mal eine art Usermap erstellen, wo man angeben kann, welche Schule man besucht, oder wo man arbeitet. Dann könnte man sich im Zweifelsfall mal organisieren. Auf meine Schule gehen 1000 Schüler und ich kann mir nicht vorstellen, dass ich der einzigste bin, der programmieren kann.
Sorry, dass ich mich erst jetzt wieder melde, aber ich hatte gestern keine Zeit mehr. Ich gebe zu, dass es vielleicht übertrieben klingt eine 32 bit CPU selber zu entwerfen, aber meine CPU würde mit weniger bauteilen auskommen, als die 8 Bit CPU von Dennis Kuschel, da die CPU mit ziemlich vielen Tabellen arbeiten würde, was die bauteilezahl deutlich verkleinert. Das ich dadurch mehr Taktzyklen pro Befehl benötige ist logisch, aber wenn mir die Taktung mit 16 Mhz gelingt, wäre dies auch kein Problem mehr. Das Problem bei Dennis Kuschel war ja, dass er die CPU auf Grund der langsamen EPROM´s nicht schnell takten konnte. Aber bei meiner CPU wäre der Mikrocode z.B. in einem 15 ns SRAM gespeichert, der beim start mit den Daten aus einem Flash geladen wird. Aber dass 74AC so empfindlich ist wusst ich ned und des könnte mir nen strich durch die Rechnung machen, aber mal sehen*g* PS: Ich bin wirklich 15 und ich hab auch genug Zeit für Mädels*g* Gruß Tobi
@ Freak5 Auf meine Schule gehen ca. 1400 Schüler und dort können viele programmieren, was aber daran liegt dass auch Computer AG´s angeboten werden. Dafür habe ich jetzt schon das 2. Jahr Physik und wir hatten noch nichts mit Elektronik, was ich bischen schade finde. Gruß Tobi
@Freak5: Die Internas von Compilern findet man unter dem Stichwort "Compilerbau". Früher hat man da wohl die beiden Drachenbüch (ISBN 3486252941 und 3486252666) empfohlen, keine Ahnung was da heute aktuell ist. Man findet dazu auch im Web einiges an Informationen. Markus
@Tobias Das mit den ACs (und auch AHCs) ist wirklich so schlimm. Ich habe mir mit einem 16bit uC einen mp3 Player gebaut, an den eine Festplatte angeschlossen ist. Die Festplatte wird am Datenbus betrieben, der mit 16MHz getaktet ist. Daher sind HC245 als Bustreiber zu langsam. Da ich nichts anderes da hatte, habe ich erstmal ausgebaute ALS245 verwendet. Die Schaltung lief aber nur, wenn ich den Bus auf 8MHz runtergetaktet habe. Als ich dann endlich die AHC245 bekam und diese reinsteckte, ging garnichtsmehr egal wie langsam ich den Bus auch getaktet habe. Die Dinger benötigen auf jedenfall eine entsprechende Terminierung, ansonsten sehen die Signale übel aus. Viel einfacher geht es mit schnellen TTL ICs. Leider ist der Stromverbrauch bei ALS oder F TTLs um einiges höher als bei CMOS. Wenn du deinen CPU mit F TTLs aufbaust, dann braucht dieser sicher einige Ampere und eine gute Kühlung...
Ich hab mir grad ein paar Datenblätter herunter geladen und die 74 F Reihe müsste eigentlich von der geschwindigkeit auch reichen, nur wirds mit den Bustreibern bischen kritisch. Andere Bauteile der F Reihe sind wiederrum schneller als AC Typen. Sind 15ns SRAM Bausteine und co auch so sensibel, was die Schaltung betrifft? Das mit der Kühlung sollte kein Problem werden, da ich noch jede Menge Kühlkörper rumliegen habe. Gruß Tobi
> Aber bei meiner CPU wäre der Mikrocode z.B. in einem 15 ns > SRAM gespeichert, der beim start mit den Daten aus einem > Flash geladen wird. Interessieren würde mich eher, wie Du diesen Urladevorgang realisieren willst. Flash parallel und extra Addresscounter/Statemachine zum Urladen? Sinnvoller scheint mir da - und damit sind wir beim Thema dieses Boards - wenn statt dessen ein Microcontroller seine Finger da reinsteckt und Initialisieren und Urladen übernimmt. Richtig gemacht wird der nämlich auch beim Debugging eine Menge helfen können. PS: Lass dich nichts ins Bockshorn jagen. Sicher, die Chancen dass da je ein Linux drauf laufen wird, sind recht mau. Aber der Weg dorthin bringt's.
Hallo zusammen, Ich habe meine CPU jetzt nochmal neu überdacht und habe sie auch schon zum Teil aufgebaut und getestet. Das Timing ist an manchen Stellen ziemlich knapp, funktionert aber soweit. Die CPU wird jetzt niedriger getaktet und sollte ca. 1 MIPS schaffen. Außerdem hab ich eine Harvard Architektur genommen. Da meine Speicher aber einen Bustakt von über 15 Mhz schaffen habe ich die Bus-Interface der CPU so ausgelegt, das man bis zu 4 CPU auf dem Bus betrieben kann, dadurch kann ich trotz niedriger Taktfrequenz hohen Befehlsdurchsatz erreichen. Die CPU ist intern jetzt auf 16bit umgebaut und arbeitet so zusagen "seriell". Probleme hab ich bis jetzt nur mit dem Urladen gehabt, deshalb hab ich die SRAM´s erstmal batteriegepuffert, was leider keine richtige Lösung ist :-( Was haltet ihr von dem jetztigen Aufbau und der Idee mit dem "Multiprozessor" System?? Würde mich sehr über eure Meinung freuen! Gruß Tobi
Die verbale Beschreibung eignet sich recht wenig zur Beurteilung. Bischen Schaltung oder Blockschaltbild sagt mir mehr. Zum Multiprozessor: je schneller der Bus, je länger, je mehr Karten dran hängen, desto mehr Ärger wirst Du mit dessen elektrischer Definition kriegen. Bei dem was da alles dran hängen soll, wird m.E. Abschluss nötig, sonst unzuverlässig.
Was hat Euch denn zum Bau einer CISC-CPU bewogen? Ich kann mir vorstellen, das eine Single-Instruction CPU, wie z.B. die MaxQ von Maxim (http://www.maxim-ic.com/appnotes.cfm/appnote_number/3222) einfacher zu realsieren ist. Zumindest benötigt man da keinen Microcode und der Befehls-Decoder ist auch wesentlich einfachen. cu
So, Schaltplan hab ich leider mit Bleistifft gezeichnet, hab aber kurz mal ein Blockschaltbild gemalt. Der Bus der nach außen geht ist so gebaut, dass ich zuerst die Adresse und dann die Daten drauf lege, da mir´s sonst zu viele Anschlüsse geworden wären. Damit ich nicht allzulange Leitungen bekomme baue ich für die CPU´s ein "Motherboard" (50x40cm), auf das ich dann karten stecken kann. Die Zugriffe werden so aufgeteilt, dass die CPU dem Businterface den Befehl zum Lesen oder zum Schreiben gibt. Danach sendet das Interface das Anfrage Signal, wenn der "Verteiler" nun eine Erlaubnis schickt, so setzt die Schnittstelle das Besetzt Signal solange auf High, bis der Schreib-/Lesevorgang beendet ist. Wenn die CPU Das Anfrage Signal schickt, bleibt die Befehlsabarbeitung solange stehen, bis sie eine Erlaubnis bekommt! Gruß Tobi PS: ADR=Adressregister ABL=Ablaufsteuerung
Die MaxQ Architektur habe ich mir mal angesehen. Schon weil sie meinem Faible für schräge Architekturen in fast idealer Weise entgegen kommt ;-). Mich erinnert das Teil etwas an vertikalen Microcode. Wo andere mit einen einzigen Befehl für Speicherzugriff auskommen, benötigt das Teil bis zu einer halben Seite Programmcode (Akku für Adressrechnung einstellen, Adressrechnung, Adresstransfer, Transfermodus einstellen, Datentransfer, alten Akku wiederfinden). Herrlich. Wer Neumann-Architekturen vorzieht, um transparent auf Daten in RAM und im Flash zugreifen zu können, der kann lesende Speicherzugriffe nur per Rumtime-Lib in einem separaten Utility-ROM durchführen. Weil man zwar mit Code im Flash auf RAM zu greifen kann, aber nicht auf Flash. Oder von Code im RAM auf Flash, nicht aber auf RAM. Nur vom ROM aus geht beides. Wobei die gleichen Flash-Daten vom ROM und vom RAM aus gesehen unterschiedliche Adressen haben. Ein Speicherversteckspiel vom Feinsten. Zudem muss man feststellen, dass die Adresse von Daten von deren Breite abhängt, so dass beispielsweise ein Type-Cast von int* nach char* den Wert vom Pointer umrechnen muss. Das wird lustig, vor allem wenn man zwischendurch mal auf void* gecastet hat.
@Tobias: Häng' mal ein paar Fotos von deinem Aufbau an. Wir wollen ja nicht daß jemand auf die Idee kommt, dir dein "Hobby" zu verbieten, nur weil deine Bastelei vom Kölner Himmel auf Passanten fallen kann, beim Remote-Powerdown mit 3bps abstürzt oder gar verschlüsselte holländische Daten importiert... Naja, wenigstens willst du das nicht verkaufen. ;-) (PS: Ernst gemeint ist nur der erste Satz). ----, (QuadDash - heute mit fiesen, unfairen(?) Anspielungen).
Hallo, schräge Computerarchitekt finde auch ich sehr spannend. Richtig gut wäre es doch mal so ein richtig chaotisches System zu entwickeln, das hocheffizient läuft. Es ist doch so, je mehr man Effiziens will umso komplizierter wird alles, auch wenn es weniger Transistoren werden. Ein "multitronisches" selbstkonfigurierendes System wäre doch mal was neues. Unterschiedliche CPUs sind auf unterschiedliche Aufgaben optimiert. Beim Optimieren von Programmen muss man sich entscheiden was man Speicherplatzoptimiert und was man Speedoptimiert haben möchte. Man müsste einen Computer entwickeln der mit einer Programmbeschreibung in spezieller Maschinensprache gefüttert wird und daraus immer unter Beachtung der schon laufenden Programme das Programm optimiert, kompiliert und so auf die Prozessoren aufteilt, das man eine noch viel höhere Effiziens erreicht als mit einem ARM7TDMI(>12000MIPS/Watt). Wie hoch wäre wohl der Aufwand für so ein System? Wenn man die Entwicklung würde so offen machen wie Linux (opensource), könnte man das Ziel erreichen?
Ich versuche mal die Info zu dekodieren. Korrigiere ggf. - Breite der internen Busse, ALU etc ist 16bit. - Breite der logischen Architektur (ISA) ist 32bit. - Die einzige RAM-Struktur ist das "SRAM" und hängt an einem einzigen internen Bus. Apropos: was ist da alles drin? Warum die Harvard-Architektur? Zumal sie hier etwas auf dem Kopf steht. Traditionell mögen CPU-interne Busse harvard-mässig getrennt laufen, werden aber üblicherweise an der externen Schnittstelle zusammengeführt. Hier ist's grad andersrum.
@Stefan: > Man müsste einen Computer entwickeln der mit einer > Programmbeschreibung in spezieller Maschinensprache gefüttert > wird und daraus immer unter Beachtung der schon laufenden > Programme das Programm optimiert, Im Grunde sind alle aktuellen PC-Prozessoren heute schon ansatzweise so konstruiert. Sie werden mit einer von der Hardware losgelösten Beschreibungssprache gefüttert (nämlich dem x86 Code) und vom Prozessor selbst in ausführbaren Interncode umgesetzt. Der wiederum ist besser als reiner x86-Code zu superskalarer Ausführung geeignet. Auch den optimierende Schritt gibt es bereits. Bei Transmeta-Prozessoren passiert genau das. Abhängig von der Häufigkeit des Codes wird bei der Umsetzung von x86 in den Interncode in unterschiedlichem Ausmass optimiert. Weil natürlich viel Code nur selten ausgeführt wird, daher eine aufwändige Optimierung sinnlos ist. Auch das Verfahren von Transmeta ist nicht neu, neu ist nur, dass es praktisch unsichtbar ist. Schon DEC hat das mit x86-Code auf Alpha-Prozessoren getan, HP macht das mit PA-Code auf Itanium. Solche Translation-Layer werden immer Software sein, das in Hardware zu giessen ist sinnlos. > Ein "multitronisches" selbstkonfigurierendes System > wäre doch mal was neues. Die "Selbstkonfiguration" kann nur Software sein. Auch das gibt's. Eine kleine Variante davon ist das FPGA von AVR mit eingebauten Prozessor. Ansonsten sind dazu garantiert schon ganze Wälder in Form von Forschungsarbeiten abgeholzt worden. Google ist dein Freund. > und so auf die Prozessoren aufteilt, das man eine noch > viel höhere Effiziens erreicht Implizite Parallelisierung ist ein heisses Eisen. Setzt eine entsprechende Programmierung voraus - in C ist das sinnlos. Mit Fortran geht's etwas besser, aber eigentlich braucht man Spezialsprachen. Womit das Hauptproblem schon mal deutlich wird: dank dieser Voraussetzung wird es auf absehbare Zeit eine Nische bleiben, denn Kompatibilität ist ausserhalb der Nische der Supercomputer das allerwichtigste.
Ich hatte auch nicht gemeint, dass man dem Computer beim Programmieren sagen muss, was er mit welchem Prozessor auszuführen hat. Man müsste einfach (fast) jedes beliebige Programm ausführen können und es läuft, egal ob x86, 68k, PowerPC... und wenn der Computer nichts damit anfangen kann oder irgend ein Fehler auftritt oder etwas unlogisches im Programm enthalten ist müsste er das versuch zu verstehen und gegebenenfalls korrigieren. Programme schreiben sollte so einfach gehen wie einem Softwareunternehmen mitzuteilen was für ein Programm entwickelt werden soll und wenn etwas widersprüchlich oder unvollständig ist soll der Computer rückfragen oder die beste Lösung suchen!?
> müsste er das versuch zu verstehen und > gegebenenfalls korrigieren Hehe. Der do-what-I-mean Computer. Funktioniert ja nicht mal bei der Ehefrau Schwester Mutter (nicht anwendbares bitte streichen). Im übrigen hätte ich eine ziemliche Angst vor solchen Kisten. Bei hinreichender Komplexität haben wir arme Menschlein nämlich keine blasse Ahnung mehr, auf was für Interpretationen unserer Intentionen der Computer so alles kommen könnte. > dass man dem Computer beim Programmieren > sagen muss, was er mit welchem Prozessor auszuführen hat Nein. Aber ihm wenigstens eine Chance geben, das selbst herauszufinden. Bloss ein Beispiel: in üblicher C-Programmierung/Compilern werden die gleichen Speicherbytes vom Stack alle zig Befehle neu belegt und wieder verworfen. Damit entstehen kleinräumige Abhängigkeiten, die eine Selbst-Parallelisierung verhindern. > so einfach gehen wie einem Softwareunternehmen mitzuteilen > was für ein Programm entwickelt werden soll Hast Du das schon mal gemacht? In der Praxis ist ebendiese Spezifikation das oft der schwierigste Teil von komplexen Softwareprojekten.
Also: Der interne Datenbus ist wie von dir geschrieben 16bit breit und die logisch Architektur ist 32bit breit. Das SRAM ist als Ersatz von einzelnen Registern und Pointern vorgesehen, da bei 32bit breiten Registern ziemlich viele IC´s zusammen gekommen wären. Stimmt, ich hätte Harvard ähnliche Architektur schreiben sollen. Ich habe diese gewählt, weil ich auf dem einen Bus das ROM ("Bios") und den Hauptspeicher unterbringen will und auf dem anderen Bus dann die IDE Komponenten, Sound, Grafikkarte und noch einen zweiten kleinen Speicher. So kann ich z.B. Bilder per DMA in die Grafikkarte laden und die CPU kann trotzdem weiter ihr Programm abarbeiten, solange sie nicht auf den belegten Bus zugreift. Ich denke dass sich die CPU´s später ziemlich ausbremsen würden, wenn Daten und Programm auf einem Bus leigen würden. Gruß Tobi
@Tobias: Willst du Handelsübliche PC-, ISA-, PCI-, AGP-Karten nehmen? Oder selberbauen?
Hallo, hat gestern keine Zeit zum Antworten. Ich hab grad leider keine Digicam da, aber ich werd übernächste Woche welche reinstellen (nächste bin ich im Urlaub :-) )! Also eigentlich will ich die andere Hardware auch selber bauen, aber zum Test nehm ich wahrscheinlich ISA Karten, was aber noch dauern könnte weil ich grad festgestellt hab, dass 3 Leitungen die zum internen SRAM führen zu langsam sind und ich den CPU Schaltplan wahrscheinlichnochmal verändern musss, aber wenn ich Glück hab reichts wenn ich die Taktfrequenz runter "dreh"? Mal schauen... Gruß Tobi
So, jetzt geht wieder alles. Musste die Taktfrequenz nur auf 10Mhz "runterdrehen" und die Signale sehen wieder in Ordung aus. Gruß Tobi
Hallo Tobias Gibt es Bilder von deiner CPU? Mit 15 schon CPU-Entwickler. Ich frage mich schon, wann du deinen ersten Supercomputer auf den Markt bringst. :-) MfG Holger
Hi Tobi, ich entwickle beruflich FPGA Designs. Kurz gesagt : Deine Vorstellung wird nicht Möglich sein. Zumindestes was den Leistungs- und Platzanforderungen deines Projektes und das vorhandene eines 15 Jährigen angeht. Vorallem frag ich mich, wenn Du schon FPGA nutzen kannst, dann entwickle doch eher an multicore systemen. Da verbringste Deine Zeit sinnvoller als bei der Schaffung eines 3 Kilowatt Taschenrechners. Und hast Du eine Vorstellung was Du an EMF erzeugen wirst? Ich glaube nicht das das Ding ohne gedruckte Schaltungen überhaupt laufen wird. Und da du die eine Seite als Beispiel anführst schau es dir gut an. Das sind 8-Bit und das heißt nicht das dann 32-Bit nur 4 mal so groß werden. Denke eher mal an Factor 256. Probier einfach mal in Deinem FPGA System den Unterschied zwischen 8, 16 und 32 Bit aus und schaue auf die Gatter Zahl. Unter 1000 Gatter kommst Du selten mit 32 Bit. Zeichne erst mal einen Plan. Aber selbst da wird Dir hinterher der Platz zum auslegen fehelen. Aber viel Erfolg falls Du es doch wagen solltest.
Ich bin mir nicht sicher, ob Tobias die entwicklung aufgegeben hat, aber das hier könnte doch von großem Interesse sein: Intel veröffentlicht Schaltpläne des 4004-Prozessors: http://www.golem.de/0611/48962.html Hier sind die Schaltpläne: http://www.intel.com/museum/archives/4004ip.htm
Na, der Thread ist schon 5 Jahre alt. Die 4004 Schaltpläne sind trotzdem interessant: Sie sind nämlich von Hand gezeichnet. Wahnsinn, oder? Aus wie vielen Transistoren besteht der 4004 eigentlich?
Hallo, hier der aktuelle LINK zu My_CPU http://www.mycpu.eu/ Ob Tobias je eine CPU selber entwickelt oder gebaut hat, ist zu bezweifeln. Einmal noch hat er über seine CPU und seine weiteren Pläne berichtet Beitrag "Re: Selbstgebaute CPU" ) und das war es. Wenn schon jemand so was geniales macht, egal wie alt, wird er es auch zeigen wollen. Ich habe mal nach Tobias und sein Projekt(CPU selber bauen) im WEB geforscht und rein gar NICHTS weiter gefunden. reine Zeitverschwendung, aber ich finde die Idee eigendlich faszinierend.
http://www.subfrequenz.net/linklist/index.php?topic=114.0 hier gibts massig DIY CPUs . am verrücktesten ist der MAGIC-1 wärs nicht mal interessant, eine cpu mit möglichst wenig komplexität zu bauen. also ein befehlsdecoder mit 4 oder 8 befehlen und bissl ram
Brechbohne schrieb: > wärs nicht mal interessant, eine cpu mit möglichst wenig komplexität zu > bauen. also ein befehlsdecoder mit 4 oder 8 befehlen und bissl ram hardware brainf*ck son quatsch brainf*ck, wird als spam erkannt
Hallo ich baue gerade eine 1Bit CPU mit 8Befehlen 16Bit RAM aus Relais. Schaltpläne sind fertig, hat jemand Interesse?
@Tobias: Dein Problem mit den Taktfrequenzen wird an dem Verhalten von CMOS auf der Stromversorgung liegen. Die Dinger ziehen beim Schalten heftige Stromspitzen, das muss man beim Leiterplattenlayout berücksichtigen, auf Lochraster u.ä. ist das ab einem gewissen Speed nicht mehr zu beherrschen.
Guido Körber schrieb: > @Tobias: Dein Problem mit den Taktfrequenzen wird an dem Verhalten von > CMOS auf der Stromversorgung liegen. Einfach mal aufs Datum schauen, wann Tobias gepostet hat.
1-Bit: MC14500 - allerdings war das nur der Kern eines Prozessors, die Ablaufsteuerung fehlte vollständig. Ansonsten waren so allerlei Prozessoren, integrierte und diskrete, trotz höherer Datenbreite bitseriell implementiert.
genaus an dem MC14500 habich mich orientiert. Also ich baue -> hab noch nicht mit Löten angefangen, nur Schaltpläne gemalt und Relais gekauft. Aber die Schaltpläne sind soweit fertig.
> Einfach mal aufs Datum schauen, wann Tobias gepostet hat.
Autsch! Voll aufs Glatteis, wer rechnet denn damit, dass so ein alter
Thread noch mal hoch kommt.
Was 1 Bit Prozessoren betrifft: Gabs da nicht auch einen Prozessor der
intern sequenziell arbeitete um nach aussen wie ein 8 Bit auszusehen?
Ja, irgendeine 6805 Variante habe ich da vage in Erinnerung. Auch der SC/MP soll eine bitserielle ALU gehabt haben, was man beim Anblick der Takte pro Befehl auch sofort glaubt.
wäre nach FPGA nicht der nächste Schritt zur Steigerung ASIC? Diskret aufgebaut werden CPU/µC ja Monster.
Also ich habe vor etlichen Jahren mal mit zwei Praktikanten einen 4 Bit Prozessor gebaut, dabei haben wir nur TTL und GAL eingesetzt. Die Dinger hatten Microcode und einen minimalen Befehlssatz, 15 Befehle wenn ich mich richtig erinnere, können aber auch 14 gewesen sein. Benutzung über eine Maschinenkonsole. Hätte mir selber auch ein Exemplar davon bauen sollen...
die st62 Reihe von ST waren 1-bit Prozessoren, welche alles seriell abarbeiteten und 13 Taktzyklen glaube ich brauchten. Mindestens 2 davon waren, daß sich die internen Leitungen wieder beruhigen, zumindest so war es im Handbuch abgedruckt.
extern un Programmtechnisch 8bit mit table-read für den programmspeicher, waren nicht schlecht und sind auch in Massen produziert worden. Als sich dann irgendwas bei den EMC Messungen geändert hat, wurden die CPU´s sogut wie eingestampft, auch wenn man sie derzeit noch beziehen kann.
Hallo, vielleicht interessiert eine Registermaschinen-CPU: http://www.hsg-kl.de/faecher/inf/material/bonsai/index.php Viele Grüße Klaus Merkert
Karl heinz Buchegger schrieb: > Einfach mal aufs Datum schauen, wann Tobias gepostet hat. Und die Zusammenfassung lesen: Beitrag "Re: CPU Selbstbau" No further comment...
Das mit der TTL-Logik klingt, als würdest du eine CPU wirklich selber basteln wollen. Im theoretischen würde mich so ein CPU-Schaltplan auch interessieren, aber wenn ich in wikipedia lese, wieviele Transistoren allein schon der 8-Bit-Proessor (i4004) braucht, denke ich, ist das normal mit löten nicht realisierbar ... abgesehen von den Kosten würdest du also auch SMD-Löttechnik benötigen. Sich über die Zuse zu belesen finde ich da einen guten Ansatz. Allerdings hab ich über die Z4 selbst noch nichts gelesen. Lese momentan ein Dokument über die Z1 ( ist der erste mechanische 'PC' ... naja, egtl. nur ein Rechenwerk :D )
>Das mit der TTL-Logik klingt, als würdest du eine CPU wirklich selber >basteln wollen. Hier gibt es eine TTL-Seblstbau-CPU: ftp://ftp.dreesen.ch/ Hier noch einen Simulator dafür: https://github.com/ChrisMicro/T3_computer_emulation
Tobias schrieb: > Mit nem FPGA hab ich schon eine 16 bit CPU gebaut und jetzt wollte ich > mir eine aus normalen TTL Schaltkreisen aufbauen. Das ist doch ein Super Projekt, warum hilfst du nicht anderen die sowas auch mal machen wollen und stellst es hier als Projekt vor.
Schön, wie das immer wieder funktioniert: da buddelt einer eine 9 Jahre alte Mumie aus und alle nachfolgenden tun so, als sei sie von gestern.
Mist, jetzt bin ich auch reingefallen! Sorry. :-( Der/die Mods sollten am besten alle neuen Beiträge löschen.
Sinus Tangentus schrieb: > Schön, wie das immer wieder funktioniert: da buddelt einer eine 9 Jahre > alte Mumie aus und alle nachfolgenden tun so, als sei sie von gestern. Mumien werden mit zunehmendem Alter immer wertvoller.
sorry, bin erst jetzt in diesen Thread hereingeplatzt. Ich habe eine zeitlang 4-Bit-Controller (Toshiba) in Assembler programmiert. Dabei kam mir eine Idee an eine neue CPU, habe das aber nicht weiterverfolgt: Harvard-Architektur, 8bit Programmspeicher, RAM je nach CPU-Variante 1 oder 2 oder 4 oder 8 ... bit breit. Und zwar deshalb: Ein ADD opcode trägt die Bitbreite im opcode mit sich. Ist es eine CPU mit nur 4-Bit Datenbus, wird eine 8-Bit-Add in 2 Vorgänge aufgespalten, entsprechende Daten-Adresszeiger zwischendrin inkrementiert und wiederholt(im Mikroprogramm der CPU so abgelegt). Damit würde dasselbe Assemblerprogramm auf verschiedenen RAM-Datenbreiten identisch laufen, und auch auf einer kleinen CPU gäbe es native 32bit-Operationen. Oder es würde ausreichen, einen 1-Bit-Addierer in die CPU zu setzen und damit auch "breite" Additionen auszuführen. ist vielleicht langsamer, aber warum nicht. Eine interessante Möglichkeit der Skalierung habe ich an der Motorola 68020 CPU (=uralt) gefunden. Der RAM-Controller hat der CPU mitgeteilt, ob ein Adressbereich mit 8, 16, oder 32bit Daten ausgerüstet ist. Die CPU hat die zB 32Bit Zugriffe auf ein 8bit RAM dann (hardwaremäßig) in 4 Schritte geteilt; Adress-Inkrementieren inklusive. Ebenso, bei 8_Bit Zugriffen auf 32Bit RAM; wurde bei der Datenübernahme das richtige Byte aus den 32bit heraus-'multiplexiert'. Damit ist die Schaltung gut skalierbar, und auch gemischt zu verwenden (8-Bit Boot EPROM, 32Bit im Normalbetrieb, gemischt mit 8-bit memory mapped IO) ... war nur so ein Gedanke.
Die Operandengrösse im Opcode zu speichern ist überaus weit verbreitet. Ungewöhlich wäre eher, sie im Operanden zu speichern. CPUs gleicher Befehlssatzarchitektur intern unterschiedlich aufwändig zu implementieren, von byteweise seriell bis zu voller Breite parallel, war eine der Grundlagen des Erfolgs der IBM 360 Architektur der 60er Jahre.
:
Bearbeitet durch User
Hey Wenn irgendjemand diesen Beitrag list vorallem du Tobi, du bist zwar schon älter mitlerweile aber ich hoffe ich bekomme eine antwort.. Mein anliegen ist es nähmlich einen kompletten pc + betriebssystem zu erstellen.. Ich weiss es klingt verrückt und ich weiss dass das dauert abeeer.. Ich will es unbedingt machen. Man findet leider keine richtige seiten auf denen genauere infos stehen. Vermutlich weil keiner so verrückt ist aber wie wurde der pc erfunden diese leute waren ja auch verrückt zb als steve jobs in der gerage einen pc gebaut hat und dann angefangen hat ein betriebssys zu schreiben die hatten damals überhaupt keine ansätze aber heutzutage gibt es welche, welche die nicht veröffentlicht wurden.. Wenn ich könnte würd ichs ja studieren aber wtf das wären 3 verschiedene studiengänge und ich kann frühestens in 3 jahren studieren nachdem ich mein abi hab also bitte ich jeden der diesen beitrag liest und irgend ein buch oder eine webseite weiss oder ansätze wie man stukturiert und baut und welchen sinn dieses bauteil genau hat diesen beitrag zu kommentieren die webseite von oben wurde leider gelöscht :(( also hilfe bitte.. LG Leon
Details zum Aufbau findet man einfacherweise direkt im Original, in der Technical Reference des IBM PC/XT. Mit Schaltbildern und BIOS Listing. http://www.retroarchive.org/dos/docs/ibm5160techref.pdf Allerdings war IBM nicht grad eine Garagenfirma. Historische Details zum Entstehungsprozess sind folglich nicht ganz so romantisch wie bei Apple. Und ebenso folgerichtig sind konkrete Details über die Firmenentscheidungen eines solchen Konzerns nicht öffentlich verfügbar. Spekulationen schon.
:
Bearbeitet durch User
also hab jetzt nicht alles gelesen, weiß also nicht obs schon gesagt wurde. Eine ALU gibt es als fertigen Logik-Baustein (z.B. 74LS181). Ich weiß auch das es mal eine Studentengruppe gab, die mit solchen Bausteinen eine CPU gebaut hatte. Vlt. hilft dir die Info wenn du mal nach suchst. Konkretes zu dem Projekt weiß ich aber nicht. Wegen den Reflektionen brauchst du dir keine Sorgen machen, da dir die Geschwindigkeit ja egal ist. Solange deine Signalwege kleiner als die Wellenlänge sind treten die nicht auf.
>Eine ALU gibt es als fertigen Logik-Baustein (z.B. 74LS181). >Ich weiß auch das es mal eine Studentengruppe gab An der Stelle ist sogar schon ein Link auf ein Projekt mit einer 12Bit-CPU aus 3x74181 Beitrag "Re: CPU Selbstbau"
Respekt! Mit 15 Schon so Ziele! da ich erst 13 bin (Ja, es ist jung aber ich setze mich schon seit ich 11 bin mit dem Thema Programmieren und Pc Komponenten auseinander) kann ich da noch nicht so viel mitreden, aber ich und mein Cousin (er ist Jetzt 23 Jahre alt und hat angewandte Informatik Studiert) haben mal ein Projekt für ein eigenes OS (Linux basiert) gestartet,und wir sind bald mit der Desktop Oberfläche fertig Vorgang ab dem Anschalten des PCs (vereinfacht): Boot und BIOS Grundlagen überprüfen Anmeldedaten (Benutzername, Passwort usw.) Abrufen und Überprüfen Desktop Verknüpfungen und -Programme starten Und das alles in nem SCHÖNEM HTML design. Wenn du willst kannst du mich gerne Anschreiben: Frederboy123@gmail.com Ps: An alle Hater: ich weiß, dass es noch weit nicht so gut ist, dass es mit SuSe Linux oder Obuntu mithalten kann, weil ich es mit meinem Cousin programmiert hab, aber ich lege viel Wert darauf, dass ich es kann, denn schließlich bin ich nun in der 9. Klasse, und ich will nach der 10. aufs Teschnische Gymnasium wechseln, und mit ETWAS Vorwissen da hin zu gehen is schon nicht schlecht
_______ schrieb: > da ich erst 13 bin ... kann > ich da noch nicht so viel mitreden, aber ich und mein Cousin .oO("Der Esel nennt sich selbst zuerst") > ... haben mal ein > Projekt für ein eigenes OS (Linux basiert) gestartet ... > Und das alles in nem SCHÖNEM HTML design. Aaah ja. Ihr "programmiert" also ein Betriebssystem in HTML Tolle Sache! <grusel/> > An alle Hater: ich weiß, dass es noch weit nicht so gut ist Hater, so so. Ja, die Wahrheit war schon immer unbeliebt.
Na und! ***** Ich bin erst 4 Jahre und kann schon mit der Tastatur umgehen. Weil ich mich auch für Elektronik und Mikroprozessoren interessiere und damit vor 3 Jahren angefangen habe, bin ich nun dabei einen Intelprozessor, der übernächsten Generation, mit diskreten Bauelementen aufzubauen. Ich denke mal, ein Wolkenkratzer, den ich extra dafür angemietet habe, sollte ausreichen, um die Bauteile unterzubringen. Die Taktfrequenz habe ich mit 100GHZ festgesetzt. Hat jemand Vorschläge dazu? ****** Scherz beiseite, ich glaube kaum, dass dieser Tobias jemals irgendetwas ansatzweise gebaut hat. Er hat euch einfach geschickt an der Nase herumgeführt. Deshalb auch ständig diese flüchtigen Ausreden, wenn nach Plänen oder Bildern gefragt wurde. Schöne Grüße Martin
_______ schrieb: > Projekt für ein eigenes OS (Linux basiert) Du musst noch viel lernen. Ein Aufsatz für ein vorhandenes Betriebssystem ist noch lange kein Betriebssystem. Ein schöner Desktop ist zwar sicher nicht ohne, aber die Schwierigkeiten bei einem Betriebssystem liegen ganz woanders. Der Einbau einer alternativen Motormangement-Anzeige qualifiziert dich noch lange nicht zum Autobauer. > An alle Hater: Hater? Hier gibt es keine Hater. Nur Leute, die nicht davor zurückschrecken auch mal die Wahrheit ungeschminkt zu sagen, selbst wenn das gesellschaftlich heute verpönt ist.
:
Bearbeitet durch User
Um die Liste der Selbstbau-CPUs weiter zu vervollständigen: https://hackaday.io/project/12879-weird-cpu
Karl H. schrieb: >> Projekt für ein eigenes OS (Linux basiert) > > Du musst noch viel lernen. > Ein Aufsatz für ein vorhandenes Betriebssystem ist noch lange kein > Betriebssystem Du musst noch viel lernen! Linux ist kein Betriebssystem!
>Um die Liste der Selbstbau-CPUs weiter zu vervollständigen: >https://hackaday.io/project/12879-weird-cpu Die Archtektur dieser CPU ist interessant, weil sie angeblich nur einen Befehl hat: "Move" Das stimmt allerdings nicht ganz, weil sich mehrere Befehle an festen Adressen verstecken. Es ist ein "Transport" Architektur.
>Du musst noch viel lernen! >Linux ist kein Betriebssystem! https://de.wikipedia.org/wiki/Linux "Als Linux (dt. [ˈliːnʊks]) oder GNU/Linux (siehe GNU/Linux-Namensstreit) bezeichnet man in der Regel freie, unix-ähnliche Mehrbenutzer-Betriebssysteme, die auf dem Linux-Kernel und wesentlich auf GNU-Software basieren." Im Internet wird beliebig viel Mist verzapft qed
Beitrag #5276557 wurde von einem Moderator gelöscht.
Beitrag #6567824 wurde von einem Moderator gelöscht.
Dieser Beitrag ist gesperrt und kann nicht beantwortet werden.