{"id":10254,"date":"2014-07-04T00:00:17","date_gmt":"2014-07-03T22:00:17","guid":{"rendered":"http:\/\/www.bernd-leitenberger.de\/blog\/?p=10254"},"modified":"2014-07-03T09:04:05","modified_gmt":"2014-07-03T07:04:05","slug":"die-pipeline","status":"publish","type":"post","link":"https:\/\/www.bernd-leitenberger.de\/blog\/2014\/07\/04\/die-pipeline\/","title":{"rendered":"Die Pipeline"},"content":{"rendered":"<p class=\"western\">So, ich komme mal Niels Wunsch nach mehr Grundlagenaufs&auml;tzen zum Thema Computeerarchitekturen nach. Heute geht es um die Pipeline. Nein es handelt sich nicht um ein Spiel wo ein Klempner lecke Rohre verbinden muss und auch nicht um den Ukraine-Gas Konflikt. Es handelt sich um eine Ma&szlig;nahme dem Prozessor Beine zu machen.<\/p>\n<p class=\"western\">Die erste Verbesserung der Geschwindigkeit hat mit der Verarbeitung der Befehle zu tun. Dies ist f&uuml;r jeden Befehl folgender Ablauf:<\/p>\n<ul>\n<li>\n<p class=\"western\">Hole den Befehl (oder bei CISC Architekturen oft auch nur das erste Byte des Befehls) vom Speicher. Dies wird als Fetch bezeichnet.<\/p>\n<\/li>\n<\/ul>\n<ul>\n<li>\n<p class=\"western\">Dekodiere den Befehl (decode)<\/p>\n<\/li>\n<li>\n<p class=\"western\">Eventuell, hole weitere Daten, die zum Befehl geh&ouml;ren. (Get Data, Memory Read)<\/p>\n<\/li>\n<li>\n<p class=\"western\">F&uuml;hre den Befehl aus (Execute)<\/p>\n<\/li>\n<li>\n<p class=\"western\">Lege Daten im Zielregister ab (Write Back)<\/p>\n<\/li>\n<\/ul>\n<p><!--more--><\/p>\n<p class=\"western\">Die einzelnen Teile k&ouml;nnen unterschiedlich lang dauern, das h&auml;ngt von der Architektur, aber auch dem Befehl ab, so sind logische Verkn&uuml;pfungen zweier Register meistens sehr schnell erledigt und Divisionen dauern sehr lange. Bei der 8086 CPU, dem Urvater des heutigen PC, dauerten die Teile bei einem typischen Befehl z.B. so lange:<\/p>\n<ul>\n<li>\n<p class=\"western\">Fetch: 4 Takte<\/p>\n<\/li>\n<li>\n<p class=\"western\">Decode: 2 Takte<\/p>\n<\/li>\n<li>\n<p class=\"western\">Get Data: 7 Takte<\/p>\n<\/li>\n<li>\n<p class=\"western\">Execute und Write Back: 3 Takte<\/p>\n<\/li>\n<\/ul>\n<p class=\"western\">Bei jedem Takt durchl&auml;uft ein Signal ein Netz von Gattern vom Eingang zum Ausgang. Der Takt wird zum einen auf die interne Architektur (in jedem Falle muss eine Teilaufgabe in dem Takt zu Ende gef&uuml;hrt werden) aber auch auf das Speichersystem abgestimmt werden. Die 4 Takte bei Fetch entsprechen z.B. genau einem Speicherzyklus, der aus den Schritten Adresse anlegen, Read Signal setzen, Daten holen, Read Signal r&uuml;cksetzen besteht.<\/p>\n<p class=\"western\">Nach diesem seriellen Modell arbeiteten die meisten Computer bis in die sechziger Jahre. Ein Prozessor ist in Funktionsbl&ouml;cke unterteilt und die haben unterschiedliche aufgaben. So gibt es den Block, der f&uuml;r Ein\/Ausgabe zum Speicher zust&auml;ndig ist (Load\/Store Unit), den Befehlsdecoder, die Recheneinheit (Arithmetric-Logical Unit = ALU) und die Register als Speicher. W&auml;hrend der Ausf&uuml;hrung ist aber nur jeweils eine Einheit aktiv. Bei Fetch und Get Data die Load\/Store Unit, bei Decode der Befehlsdekoder, bei Execute die ALU und bei Write Back die Register.<\/p>\n<p class=\"western\">Es lag nahe, dass man die Geschwindigkeit steigern kann, wenn diese Einheiten parallel arbeiten anstatt hintereinander. Das ist die Idee der Pipeline. Sie wurde schon rudiment&auml;r bei der IBM Stretch eingef&uuml;hrt, setzte sich aber erst Mitte der Sechziger Jahre durch.<\/p>\n<p class=\"western\">Eine Pipeline wartet nicht, bis der erste Befehl ausgef&uuml;hrt wird, sondern sie holt bei jedem Takt einen neuen Befehl, startet also einen Fetch bei jedem Takt. Die CPU braucht dann einen Speicher f&uuml;r diese Befehle wie auch die folgenden Schritte. Bei jedem Takt durchwandert der Befehl die Pipeline, die eine bestimmte L&auml;nge (man spricht von Stufen) hat. Beim Durchwandern werden dann die gesamten Aktionen durchgef&uuml;hrt, bis schlie&szlig;lich am Ende der Pipeline der Befehl ausgef&uuml;hrt ist. Die Befehlsausf&uuml;hrung wird nicht verk&uuml;rzt, aber der zweite Befehl ben&ouml;tigt dann viel weniger Takte, im Idealfall nur einen. So k&ouml;nnte der zeitliche Ablauf bei einer Pipeline so aussehen:<\/p>\n<table width=\"100%\" cellspacing=\"0\" cellpadding=\"5\">\n<colgroup>\n<col width=\"64*\" \/>\n<col width=\"64*\" \/>\n<col width=\"64*\" \/>\n<col width=\"64*\" \/> <\/colgroup>\n<thead>\n<tr valign=\"TOP\">\n<th width=\"25%\">\n<p class=\"western\">Takt<\/p>\n<\/th>\n<th width=\"25%\">\n<p class=\"western\">Befehl 1\/4<\/p>\n<\/th>\n<th width=\"25%\">\n<p class=\"western\">Befehl 2\/5<\/p>\n<\/th>\n<th width=\"25%\">\n<p class=\"western\">Befehl 3<\/p>\n<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr valign=\"TOP\">\n<td width=\"25%\">\n<p class=\"western\">1<\/p>\n<\/td>\n<td width=\"25%\">\n<p class=\"western\">Befehl 1 holen<\/p>\n<\/td>\n<td width=\"25%\"><\/td>\n<td width=\"25%\"><\/td>\n<\/tr>\n<tr valign=\"TOP\">\n<td width=\"25%\">\n<p class=\"western\">2<\/p>\n<\/td>\n<td width=\"25%\">\n<p class=\"western\">Befehl 1 dekodieren<\/p>\n<\/td>\n<td width=\"25%\">\n<p class=\"western\">Befehl 2 holen<\/p>\n<\/td>\n<td width=\"25%\"><\/td>\n<\/tr>\n<tr valign=\"TOP\">\n<td width=\"25%\">\n<p class=\"western\">3<\/p>\n<\/td>\n<td width=\"25%\">\n<p class=\"western\">Befehl 1 ausf&uuml;hren<\/p>\n<\/td>\n<td width=\"25%\">\n<p class=\"western\">Befehl 2 dekodieren<\/p>\n<\/td>\n<td width=\"25%\">\n<p class=\"western\">Befehl 3 holen<\/p>\n<\/td>\n<\/tr>\n<tr valign=\"TOP\">\n<td width=\"25%\">\n<p class=\"western\">4<\/p>\n<\/td>\n<td width=\"25%\">\n<p class=\"western\">Befehl 4 holen<\/p>\n<\/td>\n<td width=\"25%\">\n<p class=\"western\">Befehl 2 ausf&uuml;hren<\/p>\n<\/td>\n<td width=\"25%\">\n<p class=\"western\">Befehl 3 dekodieren<\/p>\n<\/td>\n<\/tr>\n<tr valign=\"TOP\">\n<td width=\"25%\">\n<p class=\"western\">5<\/p>\n<\/td>\n<td width=\"25%\">\n<p class=\"western\">Befehl 4 dekodieren<\/p>\n<\/td>\n<td width=\"25%\">\n<p class=\"western\">Befehl 5 holen<\/p>\n<\/td>\n<td width=\"25%\">\n<p class=\"western\">Befehl 3 ausf&uuml;hren<\/p>\n<\/td>\n<\/tr>\n<tr valign=\"TOP\">\n<td width=\"25%\">\n<p class=\"western\">6<\/p>\n<\/td>\n<td width=\"25%\">\n<p class=\"western\">Befehl 4 ausf&uuml;hren<\/p>\n<\/td>\n<td width=\"25%\">\n<p class=\"western\">Befehl 5 dekodieren<\/p>\n<\/td>\n<td width=\"25%\">\n<p class=\"western\">Befehl 6 holen<\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p class=\"western\">In diesem Beispiel wird so die Ausf&uuml;hrungszeit pro Befehl von drei auf einen Takt erniedrigt. Komplexere Befehle, wie z.B. Multiplikationen k&ouml;nnen dann auch mehrere Takte zur Ausf&uuml;hrung ben&ouml;tigen. Ebenso wenn ein Datenzugriff auf den Speicher ben&ouml;tigt wird (Get Data). Im Beispiel habe ich auch den Write Back Teil weggelassen, der in der Theorie ein eigener Schritt ist, aber in praktischen Umsetzungen meist Bestandteil des Execute Teils ist (so auch beim obigen Beispiel der 8086 CPU).<\/p>\n<p class=\"western\">In jedem Falle steigert die parallele, aber zeitversetzte Bearbeitung mehrerer Befehle es die Geschwindigkeit. Allerdings verkompliziert die Pipeline die Rechnerarchitektur. Es gibt hier drei Probleme:<\/p>\n<p class=\"western\">Der Inhalt der Pipeline ist zu verwerfen und ung&uuml;ltig: Alle Prozessoren realisieren Schleifen, also Wiederholungen von Codeteilen, durch Spr&uuml;nge zu anderen Adressen. Ebenso haben sie Befehle um Unterprogramme die woanders im Speicher liegen aufzurufen. Da in der Pipeline schon die n&auml;chsten Befehle stehen, diese nun aber gar nicht mehr ausgef&uuml;hrt werden, ist der gesamte Inhalt ung&uuml;ltig und zu verwerfen. Die Pipeline wird neu gef&uuml;llt und nun ist der Geschwindigkeitsvorteil erst mal dahin. Intel hatte beim Pentium 4 eine sehr lange Pipeline mit 20 Stufen eingef&uuml;hrt. Die vielen Stufen erlaubten es pro Takt sehr wenig zu tun, das bedeutete, die Taktfrequenz konnte hoch sein. Das war ein Vorteil. In Programmen mit vielen Spr&uuml;ngen war der Pentium 4 aber deutlich langsamer als sein Vorg&auml;nger, eben weil erst diese lange Pipeline wieder gef&uuml;llt werden musste.<\/p>\n<p class=\"western\">Als Zweites sind die Befehle nicht unabh&auml;ngig voneinander. Es gibt Abh&auml;ngigkeiten. So kann ein Befehl Daten ben&ouml;tigen, die ein anderer Befehl erst berechnet, diese aber zu dem Zeitpunkt, wo der Befehl die Daten braucht, noch nicht vorliegen. Ein\/Ausgabeoperationen zu Peripherieger&auml;ten oder dem Speicher k&ouml;nnen einen Befehl aufhalten und damit die Folgenden die mit seinem Ergebnis weiter arbeiten. Verhindert muss auch werden, dass sich Befehle &uuml;berholen und ein langsamer Befehl ein Register &uuml;berschreibt, das eigentlich durch einen nachfolgenden, schneller ausgef&uuml;hrten, Befehl schon ver&auml;ndert wurde.<\/p>\n<p class=\"western\">Als Drittes gibt es strukturelle Verz&ouml;gerungen: die Wege im Schaltnetz des Prozessors sind unterschiedlich lang und die Ausf&uuml;hrung einer Stufe kann je nach Aufgabe unterschiedlich lang dauern. Es muss gew&auml;hrleistet sein, dass jeder m&ouml;gliche Weg, innerhalb der Zeit die f&uuml;r eine Stufe zur Verf&uuml;gung steht, durchlaufen werden kann.<\/p>\n<p class=\"western\">Die L&ouml;sung dieser Probleme, die mit einer Pipeline zu tun haben, ist also relativ aufwendig, weshalb viele fr&uuml;he Implementationen nicht die oben beschriebene Instruktionspipeline implementierten, sondern eine funktionelle Pipeline. Bei dieser beschr&auml;nkt man sich auf den Teil des Befehles, der ausgef&uuml;hrt wird, also den \u201eexecute\u201c Teil. Bekanntestes Beispiel sind die Rechner von Seymour cray, die zwischen 8 und 12 funktionale Einheiten hatten, die parallel arbeiten konnten. Das war schon geschwindigkeitsteigernd, weil diese Rechner mit Flie&szlig;kommazahlen arbeiteten, bei denen Rechnungen einige Takte erforderten, w&auml;hrend das holen und Dekodieren in jeweils einem Takt erledigt war. Hardwaretechnisch m&uuml;ssen dann nur die einzelnen Stufen der Einheiten voneinander isoliert werden und es muss die M&ouml;glichkeit geben, Konflikte zu erkennen. Das l&ouml;ste man mit Reservierungsflags. Die anzeigten, ob ein Register oder eine Funktionseinheit besch&auml;ftigt\/belegt war oder nicht.<\/p>\n<p class=\"western\">Bei der Instruktionspipeline ist der Aufwand, um die Konflikte ohne zus&auml;tzliche Wartezeiten zu l&ouml;sen erheblich h&ouml;her. Die Problematik, dass nachfolgende Befehle warten m&uuml;ssen, bis ein Ergebnis feststeht, wird durch das Umsortieren der Befehle gel&ouml;st, im Fachwort \u201eour of Order Execution\u201c. Dazu m&uuml;ssen die Abh&auml;ngigkeiten der befehle bekannt sein, was aufwendig ist.<\/p>\n<p class=\"western\">Ein Beispiel:<\/p>\n<p class=\"western\">R1=R2*R3<\/p>\n<p class=\"western\">R4=R1+R5<\/p>\n<p class=\"western\">R6= R7-R8<\/p>\n<p class=\"western\">Die Addition wird bei allen Prozessoren schneller ausgef&uuml;hrt als die Multiplikation. So muss der zweite Befehl warten, bis das Ergebnis der Multiplikation feststeht, sonst w&uuml;rde er mit dem alten Registerinhalt arbeiten. Diese Blockade kann man aufl&ouml;sen, wenn man die n&auml;chste Anweisung vorzieht, die andere Register nutzt.<\/p>\n<p class=\"western\">Nicht jeder Mikroprozessor verf&uuml;gt &uuml;ber diese M&ouml;glichkeit. Beim Atom Prozessor hat Intel z.B. auf dieses Feature verzichtet, das in den leistungsst&auml;rkeren Prozessoren von Intel standardm&auml;&szlig;ig eingebaut ist. Das Spr&uuml;nge den Pipelineinhalt &uuml;berfl&uuml;ssig machen hat dazu gef&uuml;hrt, dass man eine \u201eSprungvorhersage\u201c (Branch Prediction\u201c) eingef&uuml;hrt hat. Diese Logik versucht vor einem Sprung das Ergebnis zu \u201eraten\u201c was heute mit 90+% Wahrscheinlichkeit gelingt und l&auml;dt dann die Befehle die nach dem Sprung durchgef&uuml;hrt werden vorausschauend in die Pipeline.<\/p>\n<p class=\"western\">Die Abh&auml;ngigkeit von Registern, das z.B. ein Register als Quellregister f&uuml;r einen Befehl ben&ouml;tigt wird, das bei einem nachfolgenden Befehl als Zielregister dient, dieser Befehl aber den Ersten &uuml;berholen k&ouml;nnte l&ouml;st man am besten durch Schattenregister. Das sind Register, die im Prozessor vorhanden sind, aber nach au&szlig;en nicht in Erscheinung treten. Sie nehmen Zwischenergebnisse oder Kopien von Registern auf. Im Allgemeinen ist es von Vorteil m&ouml;glichst viele Register zu haben, weil so zum einen Konflikte seltener sind und zum anderen man weniger Zugriffe auf den Speicher braucht, die die Ausf&uuml;hrung von Befehlen verlangsamen.<\/p>\n<p class=\"western\">Die Pipeline ist das m&auml;chtigste Werkzeug um die Geschwindigkeit eines Rechners nicht nur bei Spezialoperationen, sondern allgemein zu erh&ouml;hen. Der 8086 hatte noch keine Pipeline, aber einen einfachen Vorl&auml;ufer der Zugriff auf den Speicher und Rechnen entkoppelte. Der 8086 brauchte im Schnitt 7,66 Takte pro Befehl. Der 80486 hatte eine f&uuml;nfstufige Pipeline, er konnte 80% der Befehle in einem Takt durchfuhren und erreichte bei 25 MHz 20 MIPS, ben&ouml;tigte also durchschnittlich 1,25 Takte pro Befehl. Die Pipeline hat (mit anderen Technologien) die Geschwindigkeit pro Takt also versechsfacht.<\/p>\n<p class=\"western\">Praktisch alle ab 1985 vorgestellten neuen Prozessoren setzten Pipelines ein. M&ouml;glich wurde dies auch durch Mikrocode, darunter versteht man einen noch einfacheren Code, der jeden Befehl in kleinere elementare Bestandteile zerlegt und diese ausf&uuml;hrt. Der Mikrocode steckt in einem kleinen Festwertspeicher auf dem Prozessor. Er kann leicht ge&auml;ndert werden und die einfachen Instruktionen k&ouml;nnen in einer Stufe ausgef&uuml;hrt werden. Die fr&uuml;her eingesetzte Hardwareverdrahtung ist zwar schneller, aber erheblich aufwendiger. So verwundert es nicht, das die IBM 360 Serie gleichzeitig Pipelines und Mikrocode einf&uuml;hrte.<\/p>\n<p class=\"western\">&Uuml;ber die optimale L&auml;nge einer Pipeline gibt es einige theoretische Untersuchungen. Ist sie zu kurz, so verzichtet man auf einen Geschwindigkeitsgewinn. Daneben hat jede Stufe aber auch eine eigene Verz&ouml;gerung, denn der Inhalt der Pipeline muss auch weitergeschoben werden. Am Schaltnetzwerk muss der Ursprungszustand vor dem Takt wiederhergestellt werden. Wird die Pipeline zu lang, so wird der Anteil dieser Vorg&auml;nge an der zur Verf&uuml;gung stehenden Zeit pro Takt immer gr&ouml;&szlig;er. Die meisten Autoren halten eine Pipeline von 6-8 Stufen f&uuml;r optimal.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/vg03.met.vgwort.de\/na\/23e07c82daa34b6b9c77b254137d9de7\" width=\"1\" height=\"1\" alt=\"\"\/><\/p>\n","protected":false},"excerpt":{"rendered":"<p>So, ich komme mal Niels Wunsch nach mehr Grundlagenaufs&auml;tzen zum Thema Computeerarchitekturen nach. Heute geht es um die Pipeline. Nein es handelt sich nicht um ein Spiel wo ein Klempner lecke Rohre verbinden muss und auch nicht um den Ukraine-Gas Konflikt. Es handelt sich um eine Ma&szlig;nahme dem Prozessor Beine zu machen. Die erste Verbesserung [&hellip;]<\/p>\n","protected":false},"author":169,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[4],"tags":[3697,3695,3698,3696],"class_list":["post-10254","post","type-post","status-publish","format-standard","hentry","category-computer","tag-3697","tag-3695","tag-pentium-4","tag-pipeline","entry"],"a3_pvc":{"activated":false,"total_views":1411,"today_views":0},"jetpack_featured_media_url":"","jetpack-related-posts":[{"id":18612,"url":"https:\/\/www.bernd-leitenberger.de\/blog\/2026\/03\/28\/galileos-cds-teil-2\/","url_meta":{"origin":10254,"position":0},"title":"Galileos CDS \u2013 Teil 2","author":"Bernd Leitenberger","date":"28. M\u00e4rz 2026","format":false,"excerpt":"So, heute geht es weiter mit Teil 2 \u00fcber Galileos CDS, dieser Beitrag schlie\u00dft nahtlos an den ersten Beitrag von gestern an, wie man schon an der ersten Textzeile sieht. Nach der Einleitung im ersten Teil geht es heute weiter damit warum der RCA 1802 genutzt wurde und was seine\u2026","rel":"","context":"In &quot;Raumfahrt&quot;","block_context":{"text":"Raumfahrt","link":"https:\/\/www.bernd-leitenberger.de\/blog\/category\/raumfahrt\/"},"img":{"alt_text":"","src":"https:\/\/vg07.met.vgwort.de\/na\/191e4b0728de42829cf656027b84dc82","width":350,"height":200},"classes":[]},{"id":18676,"url":"https:\/\/www.bernd-leitenberger.de\/blog\/2026\/05\/31\/die-glorreichen-10-programmiersprachen\/","url_meta":{"origin":10254,"position":1},"title":"Die glorreichen 10 \u2013 Programmiersprachen","author":"Bernd Leitenberger","date":"31. Mai 2026","format":false,"excerpt":"Ich wollte mal eine Reihe in dieser Rubrik \u00fcber Programmiersprachen machen. Zuerst dachte ich daran eine Liste nach meinen pers\u00f6nlichen Favoriten zu erstellen. Anfangs bef\u00fcrchtete ich, dass ich gar nicht auf 10 komme, aber es sind tats\u00e4chlich mehr, wenngleich ich in vielen Sprachen nur kleine Programme verfasst habe oder mich\u2026","rel":"","context":"In &quot;Die Glorreichen 10&quot;","block_context":{"text":"Die Glorreichen 10","link":"https:\/\/www.bernd-leitenberger.de\/blog\/category\/allgemein\/die-glorreichen-10\/"},"img":{"alt_text":"","src":"https:\/\/vg09.met.vgwort.de\/na\/4073c4f9dc6943a08702cdde13605d43","width":350,"height":200},"classes":[]},{"id":18683,"url":"https:\/\/www.bernd-leitenberger.de\/blog\/2026\/06\/01\/die-glorreichen-10-programmiersprachen-2\/","url_meta":{"origin":10254,"position":2},"title":"Die glorreichen 10 \u2013 Programmiersprachen (2)","author":"Bernd Leitenberger","date":"1. Juni 2026","format":false,"excerpt":"Der heutige Teil schlie\u00dft nahtlos an den ersten Teil an, der gestern erschien. Es geht um 10 Kriterien anhand derer man Programmiersprachen kategorisieren kann. Maschinennah oder universell, aber komplex Als eine maschinennahe Sprache bezeichnet man eine Sprache, die nahe den M\u00f6glichkeiten von Prozessoren ist. Das Paradebeispiel ist C. Alle Prozessoren\u2026","rel":"","context":"In &quot;Die Glorreichen 10&quot;","block_context":{"text":"Die Glorreichen 10","link":"https:\/\/www.bernd-leitenberger.de\/blog\/category\/allgemein\/die-glorreichen-10\/"},"img":{"alt_text":"","src":"https:\/\/vg09.met.vgwort.de\/na\/7f5d9cf5265047179df05b778bf455b5","width":350,"height":200},"classes":[]},{"id":18610,"url":"https:\/\/www.bernd-leitenberger.de\/blog\/2026\/03\/27\/galileos-cds-teil-1\/","url_meta":{"origin":10254,"position":3},"title":"Galileos CDS &#8211; Teil 1","author":"Bernd Leitenberger","date":"27. M\u00e4rz 2026","format":false,"excerpt":"Hall\u00f6chen, es wird Zeit das ich mich mal wieder melde. Es gab zwei Gr\u00fcnde, warum ich mich so rar gemacht habe. Das eine ist das es gerade nicht so viel aktuelles gibt, au\u00dfer einem Update zu Artemis, zu dem ich vielleicht noch etwas schreibe. W\u00e4hrend Trump das ganze Programm nach\u2026","rel":"","context":"In &quot;Raumfahrt&quot;","block_context":{"text":"Raumfahrt","link":"https:\/\/www.bernd-leitenberger.de\/blog\/category\/raumfahrt\/"},"img":{"alt_text":"","src":"https:\/\/vg07.met.vgwort.de\/na\/4fb81c7bafbd4d9d88b5695abdb33d29","width":350,"height":200},"classes":[]},{"id":18614,"url":"https:\/\/www.bernd-leitenberger.de\/blog\/2026\/03\/29\/galileos-cds-teil-3\/","url_meta":{"origin":10254,"position":4},"title":"Galileos CDS &#8211; Teil 3","author":"Bernd Leitenberger","date":"29. M\u00e4rz 2026","format":false,"excerpt":"So nun zum dritten Teil \u00fcber das prim\u00e4re Computersystem von Galileo, das CDS. Nachdem sich die ersten beiden Teile nur mit dem RCA 1802, warum er gew\u00e4hlt wurde und seiner Architektur befassten geht es heute um das Computersystem selbst. Der Artikel schlie\u00dft so an seine beiden Vorg\u00e4nger gestern und vorgestern\u2026","rel":"","context":"In &quot;Raumfahrt&quot;","block_context":{"text":"Raumfahrt","link":"https:\/\/www.bernd-leitenberger.de\/blog\/category\/raumfahrt\/"},"img":{"alt_text":"","src":"https:\/\/vg07.met.vgwort.de\/na\/6e7f572a246b4ac395de9c260733b707","width":350,"height":200},"classes":[]},{"id":18419,"url":"https:\/\/www.bernd-leitenberger.de\/blog\/2025\/10\/02\/der-neue-rekordhalter-bei-der-bemannten-raumfahrt\/","url_meta":{"origin":10254,"position":5},"title":"Der neue Rekordhalter bei der bemannten Raumfahrt","author":"Bernd Leitenberger","date":"2. Oktober 2025","format":false,"excerpt":"\u2026 ist unfreiwillig Oleg Popolow. Die Geschichte zeigt, wo Russland heute in der Raumfahrt steht. Sie beginnt am 22. September 2022. Russland f\u00fchrt seit rund sieben Monaten Krieg gegen die Ukraine und hat Tausende Gefallene, Verwundete und gefangene Soldaten zu beklagen. Um die Verluste auszugleichen, wurde an diesem Tag eine\u2026","rel":"","context":"In &quot;M\u00fcnchhausens Kolumne&quot;","block_context":{"text":"M\u00fcnchhausens Kolumne","link":"https:\/\/www.bernd-leitenberger.de\/blog\/category\/satire\/muenchhausen\/"},"img":{"alt_text":"","src":"https:\/\/vg01.met.vgwort.de\/na\/6566478af4c24587a85b9f439288056d","width":350,"height":200},"classes":[]}],"jetpack_sharing_enabled":true,"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/www.bernd-leitenberger.de\/blog\/wp-json\/wp\/v2\/posts\/10254","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.bernd-leitenberger.de\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.bernd-leitenberger.de\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.bernd-leitenberger.de\/blog\/wp-json\/wp\/v2\/users\/169"}],"replies":[{"embeddable":true,"href":"https:\/\/www.bernd-leitenberger.de\/blog\/wp-json\/wp\/v2\/comments?post=10254"}],"version-history":[{"count":0,"href":"https:\/\/www.bernd-leitenberger.de\/blog\/wp-json\/wp\/v2\/posts\/10254\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.bernd-leitenberger.de\/blog\/wp-json\/wp\/v2\/media?parent=10254"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.bernd-leitenberger.de\/blog\/wp-json\/wp\/v2\/categories?post=10254"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.bernd-leitenberger.de\/blog\/wp-json\/wp\/v2\/tags?post=10254"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}