PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : CPU inside


Kladderadatsch
2006-06-21, 17:42:04
hi,
ich versuche gerade, die genauere funktionsweise der cpu zu verstehen;)
leider ist das, was ich per google und wikipedia finden konnte, sehr oberflächlich und geht kaum ins detail. bilder zum exemplarischen aufbau einer cpu finde ich erst gar nicht.
ich wäre also sehr dankbar, wenn mir jemand öffentlich (im internet) zugängliche 'literatur' zur cpu geben könnte. falls es so etwas im deutschen nicht gibt (und mir das im englischen als hobby zu anstregend wird), fang ich gleich hier mal an:

welcher begriff beschreibt den teil der cpu, in dem mux, indexregister, stachpointer und programmcounter arbeiten?
die sind mit dem rechenwerk (alu, auch flags + akkumulator?) über den datenbus verbunden. warum wird dort die alu wahlweise direkt oder über den akkumulator angesprochen? wie wird das geregelt, wenn doch nur der datenbus (und nicht adress/steuerbus) anspricht?
wer bildet den level1/2 cache? die hilfsregister den..?
gerade im zusammenhang mit dem cache habe ich was von der harvard-architektur gelesen. wie ist das zu verstehen? ich denke, auch aktuelle prozessoren bauen auf der von-neumann-architektur auf? oder ist das kombiniert?
etc. etc.

ihr seht, es hapert an allen ecken und enden. wenn sich da nichts bereits detailiert geschriebenen findet, wäre es natürlich schön, wenn der ein oder andere selbst hand anlegen könnte;)

san.salvador
2006-06-21, 18:14:33
Hier (http://www.jeckle.de/vorlesung/sysarch/script.html) steht auf jeden Fall verdammt viel, ich hoff es kann die eine oder andere Frage beantworten - ich selber verstehs nicht. :D



btw. google 15 sec. ;)

3d
2006-06-21, 20:52:27
man ist das viel.

sowas hätte ich gerne zum thema GPU.
gibts da was?

Kladderadatsch
2006-06-21, 21:00:47
san.salvador[/POST]']Hier (http://www.jeckle.de/vorlesung/sysarch/script.html) steht auf jeden Fall verdammt viel, ich hoff es kann die eine oder andere Frage beantworten - ich selber verstehs nicht. :D



btw. google 15 sec. ;)
dankeschön!

fragen dazu folgen dann in diesem thread;)

so, wie ich das bis jetzt sehe, geht auch diese website nicht sonderlich genau auf das zusammenspiel der komponenten (einer cpu, wie auch cpu+ram etc.) ein.
aber der aufbau ist mal gut dargestellt, wobei ich da ein paar probleme bei der zuordnung habe:

http://www.jeckle.de/images/sysarch/cpu.png

das, was mir vorliegt:
http://img527.imageshack.us/img527/8638/scannen9xv.jpg

rechenwerk ist klar. das leitwerk umfasst ir und decoder, was an den steuerbus geht? der registersatz offensichtlich indexregister, sp, pc und mux. wobei "indexregister" von meinem scan dem adreß- und datenregister von dem script entspricht?
und das mikroprogramm?:confused:

aha, zur abarbeitung von programmen gerade etwas verwertbares gefunden:):
Das Steuerwerk (auch Leitwerk) ist der Kern des Mikroprozessors. Im Steuerwerk befinden sich Befehlsregister und Befehlsdecoder. Seine Aufgabe ist die Abarbeitung des Programms, d.h. Befehl für Befehl eines Programmes werden durch das Steuerwerk des Mikroprozessors ausgeführt. Das Steuerwerk folgt bei der Abarbeitung eines Maschinenprogrammes dem Von-Neumann-Zyklus mit den Phasen FETCH, DECODE, FETCH OPERANDS, EXECUTE und UPDATE INSTRUCTION POINTER.

san.salvador
2006-06-22, 18:51:24
3d[/POST]']man ist das viel.

sowas hätte ich gerne zum thema GPU.
gibts da was?
Bin ich die Forenpost? :D


@insane.:
Freut mich, dass ich als ahnungsloser Licht ins Dunkel bringen konnte. :)

Kladderadatsch
2006-06-22, 19:08:01
wirklich hell ist noch immer nicht.;)
ich habe jetzt aber noch das (http://www.netzmafia.de/skripten/dvs/dvs2.html) und das (http://www.wi.uni-muenster.de/wi/studieren/ewi/ws04-05/PC-Technik.pdf) gefunden, wobei letzteres aber wieder ziemlich oberflächlich bleibt.

ps.: ich wäre trotzdem froh, wenn mir jemand erklären könnte, was es genau mit mux, indexregister, sp und pc, die an den adressbus angebunden sind, auf sich hat.
(hier gibts irgendwie mehrere unterschiedliche bezeichnungen und aufteilungen. indexregister habe ich z.b. lediglich auf meinem blatt gelesen.)

Gast
2006-07-02, 02:43:00
Vorab: Dein Scan zeigt praktisch einen minimalistischen CPU Kern einer "Akkumaschine" (es gibt nur ein echtes Arbeitsregister, nämlich den Akkumulator). Alte 8-Bit-Microprozessoren waren so aufgebaut. Typiche Vertreter dieser Art waren der Motorola M6800 (nicht MC68000!) und der MOS 6502.

> ich wäre trotzdem froh, wenn mir jemand erklären könnte, was es genau mit mux, indexregister, sp und pc, die an den adressbus angebunden sind, auf sich hat.

"Mux" ist eine Abkürzung für Multiplexer, d.h. eine Auswahlschaltung. Damit wird lediglich gesagt, dass zu einem Zeitpunkt nur eines der Register auf den Daten- bzw. Addressbus zugreifen kann. Über den Adressbus kann eines der Register dann eine Speicherstelle ansprechen.
- Der Program Counter (PC) wird dazu verwendet um den nächsten Befehl zu laden
- Der Stackpointer (SP) dient zum laden/speichern von Daten und Rücksprungadressen
- Über die Indexregister kann man auf beliebige Speicherzellen zugreifen. In den alten Zeiten dienten die Indexregister auch dazu den Speicherort von zusätzlichen Operanden zu bestimmen.

> welcher begriff beschreibt den teil der cpu, in dem mux, indexregister, stachpointer und programmcounter arbeiten?

Es gibt viele klassifizierungen nach denen du eine CPU beschreiben kannst. Heutzutage würde man das wohl Register-File nennen, früher waren die Register aber mehr nach Funktion benannt.

> warum wird dort die alu wahlweise direkt oder über den akkumulator angesprochen?

Weil es doch einige Arithmetisch-Logische Operationen (z.B. Addition) gibt die zwei Operanden erfordern. Der eine ist im Akku gespeichert, der andere kommt über den Datenbus in die ALU.

> wie wird das geregelt, wenn doch nur der datenbus (und nicht adress/steuerbus) anspricht?

Dafür ist das Leitwerk zuständig, es sorgt dafür, dass die richtigen Busse/Busteilnehmer aktiv werden.

> wer bildet den level1/2 cache?

:-) In deinem Bild gibt es keinen Cache.

> gerade im zusammenhang mit dem cache habe ich was von der harvard-architektur gelesen. wie ist das zu verstehen?

Das kennzeichen der Harvard-Architektur ist eine strikte Trennung von Daten- und Programmspeicher. Bei Caches bedeutet dies, dass man einen speziellen Cahche nur für Programmdaten (D-Cache) und einen weiteren nur für den Programmcode (I-Cache) hat. Vorteil ist, dass auf beide gleichzeitig zugegriffen werden kann und dass man besser auf die (Speicher)nutzung optimieren kann; z.B. liegen Befehle i.d.R. sequenziell im Speicher, je nach CPU Architektur ist die Instruktions-Größe fix oder man weis, dass kein Schreibzugriff benötigt wird -- all diese vorher bekannten Informationen kann man dazu nutzen die Cache-Logik einfacher und schneller zu machen.

> ich denke, auch aktuelle prozessoren bauen auf der von-neumann-architektur auf? oder ist das kombiniert?

Jup, von-Neumann-Architektur heist im wesentlichen Speicherprogrammierbar im Gegensatz zu festverdrahteten Programmen. D.h. eigentlich alle Universalrechner sind von-Neumann-Maschienen.

Kladderadatsch
2006-07-02, 08:31:00
ich danke dir für deine ausführliche antwort!:)
(und danke an leonidas(; )

mittlerweile konnte ich mir die ein oder andere frage zwar bereits selbst erklären, aber jetzt habe ich eine bestätigung;)


eine frage fällt mir allerdings gerade ein:
die wortlänge des internen datenbuses gibt an, ob der prozessor mit 32 oder 64 bit (etc.) arbeitet. kommuniziert der 'externe' datenbus mit ram und grafikkarte etc. dann ebenfalls mit dier wortlänge? der datentransfer/synchronisation läuft doch über die ('angepasste') north/southbridge ab, weswegen ich von dem in der frage vermuteten ausgehe. aber warum arbeitet der selbe speicher dann in 32 bit wie in 64 bit systemen?

BlackBirdSR
2006-07-02, 09:50:33
eine frage fällt mir allerdings gerade ein:
die wortlänge des internen datenbuses gibt an, ob der prozessor mit 32 oder 64 bit (etc.) arbeitet. kommuniziert der 'externe' datenbus mit ram und grafikkarte etc. dann ebenfalls mit dier wortlänge? der datentransfer/synchronisation läuft doch über die ('angepasste') north/southbridge ab, weswegen ich von dem in der frage vermuteten ausgehe. aber warum arbeitet der selbe speicher dann in 32 bit wie in 64 bit systemen?

Nein, die externen I/O Schnittstellen arbeiten nicht mit der internen Busbreite. (Die übrigens in ein und der selben CPU unterschiedlich sein kann. ALU 64Bit, FPU 80Bit, SSE 128Bit)

Das Speichermodul selbst wird generell mit 64-Bit Busbreite angesprochen. So läuft das seit dem Pentium. Ob die CPU nun 32-Bittig oder 64-Bittig ist ändert daran nichts.
Beim Pentium kommuniziert der externe Datenbus mit der Northbridge über einen 64Bit breiten Bus, und diese spricht dann den Speicher mit 64Bit oder 128Bit (DualChannel) an.

Beim K8 ist es anders, dort kommuniziert die CPU direkt mit dem Speicher über einen 128Bit breiten Bus. Mit dem Rest des Systems wird die CPU über einen 16-Bit breiten Hypertransportlink verbunden.

Kladderadatsch
2006-07-02, 09:53:43
ach so ist das. danke dir für die erklärung.

Beim Pentium kommuniziert der externe Datenbus mit der Northbridge über einen 64Bit breiten Bus, und diese spricht dann den Speicher mit 64Bit oder 128Bit (DualChannel) an.
Beim K8 ist es anders, dort kommuniziert die CPU direkt mit dem Speicher über einen 128Bit breiten Bus.
beim k8 reglementiert die northbridge nur den bus ziwschen cpu und grafikkarte?:confused:

wie hängt das noch mit dem im a64 integrierten speichercontroller zusammen?

Gast
2006-07-02, 09:57:24
> die wortlänge des internen datenbuses gibt an, ob der prozessor mit 32 oder 64 bit (etc.) arbeitet. kommuniziert der 'externe' datenbus mit ram und grafikkarte etc. dann ebenfalls mit dier wortlänge?

Das ist nicht notwendiger Weise der Fall. Üblich sind heute mit 64 bzw. 128 bit breit angeschlossene Hauptspeicher, Peripherie ist nach wie vor schmaler Angebunden. Im Microcontroller-Segment gibt es noch 16 und 32 Bit Datenbusse anzutreffen. Ausserdem gibt es Verfahren wie "dynamic bus sizing" bei der die Datenbreite eines Zugriffs dynamisch wechseln darf. Steuersignale legen dann fest welche/wieviele Datenleitungen beim Zugriff aktiv werden.

> der datentransfer/synchronisation läuft doch über die ('angepasste') north/southbridge ab

Ja, zumindest in der PC Welt ist das so. In modernen Systemen gibt es aber viele Stellen an denen so eine Busanpassung passiert:

- Im Cache: Gepufferte Werte sind in Zeilen organisiert, der Cachecontroller sorgt beim Speicherzugriff automatisch dafür, dass nur gesamte Zeilen gelesen/geschrieben werden (=> Typische Zeilengröße sind heute 128 Bit, d.h. der Cache wird vom Memoryconroller immer 128 Bit lesend/schreibend anfordern).

- Im Systembus-Controller werden die Anforderungen des CPU Kerns an die Linkbreite des Systemsbusses angepasst. Um solche Anpassungen zu erleichtern findet man heute recht komplexe Busprotokolle (z.B. Intel's GTL+ oder AMD's HyperTransport)

- Im Memoryconroller wird zwischen vom CPU Kern angefragter Datenbreite und physikalisch realisierter Speicherdatenbreite adaptiert

- Im IO-Controller wird zwischen vom CPU Kern angefragter Datenbreite und physikalisch realisierter Gerätebusbreite (PCI/ISA/etc.) adaptiert.

- Die einzelnen Devicecontroller (z.B SATA Controller, FD Controller, USB Controller) wanden wiederum IO-Bus-Breite in die Gerätespezifische interne Busbreite.

Das ist nur ein kleiner Ausschnitt von dem was in modernen Systemen alles an Bussen verwendet wird... Guck doch einfach in dein Mainboard Handbuch und zähl nach wieviele verschiedene Busse es gibt...

> aber warum arbeitet der selbe speicher dann in 32 bit wie in 64 bit systemen?

Weil der MC den Speicher immer so anspricht wie es der Speicher braucht, aber die Daten so liefert wie es der CPU Kern anfordert.

Kladderadatsch
2006-07-02, 10:02:47
Weil der MC den Speicher immer so anspricht wie es der Speicher braucht, aber die Daten so liefert wie es der CPU Kern anfordert.
wie im letzten post geschrieben ist mir das immer noch ein wenig schleierhaft. wo ist da die northbrige involviert? sind das zwei (mc, northbridge -->ram) getrennte busse?

Gast
2006-07-02, 10:23:52
> wo ist da die northbrige involviert? sind das zwei (mc, northbridge -->ram) getrennte busse?

Üblicherweise ist der MC Bestandteil der Northbridge.

Klassisch/Intel:
CPU <=FSB=> Northbridge (MCH) <=> Speicher
^
|| (Vendor dependent z.B. VIALink)
v
Southbridge (IOH)<=> IO


AMD K8:
CPU mit integrierter Northbridge <=> Speicher
^
|| (Immer Hypertransport)
v
Southbridge (IOH)<=> IO

BTW. welche Funktionalität in der North- oder Southbridge genau implementiert wird ist Sache des Chipset-Herstellers.

Kladderadatsch
2006-07-02, 10:27:26
AMD K8:
CPU mit integrierter Northbridge <=> Speicher
^
|| (Immer Hypertransport)
v
Southbridge (IOH)<=> IO


in die cpu ist doch blos der mc, der vorher in der nb integriert war, untergebracht, und nicht die ganze nb?!

Gast
2006-07-02, 11:20:55
> in die [K8] cpu ist doch blos der mc, der vorher in der nb integriert war, untergebracht, und nicht die ganze nb?!

Kommt darauf an, wie man die NB versteht. Es gibt da eigentlich keine genaue Definition. Vieleicht hilft es dir wenn du den historischen Hintergrund besser kennst:

Die Namen "Northbridge" und "Southbridge" kamen von der ursprünglichen Anordnung der Chips auf dem Mainboard: Die Northbridge war überhalb (Oben= auf Landkarten Norden) , die Southbrige unterhalb des Prozessors angeordnet.
Bridge=Brücke bedeutet hier, das die Funktion dieser Chips das überbrücken verschiedener IO-Busse war. Eingeführt hat Intel dieses Schema zu 486er Zeiten mit dem Saturn (82420). Damals stiegen Komplexität/Anforderungen an das Chipsets so weit, das es unpraktikabel war einen integrierten Chip zu verwenden. Intel hat also die Funktionalität des bisherigen "Chipsets" in zwei Chips untergebracht: In der Northbridge war der Speichercontroller und der PCI Bus Controller untergebtacht, der Rest wurde in der Southbridge untergebracht, die ihererseits über den PCI Bus angesprochen wurde. Zwischenzeitlich wurde PCI zu langsam, worauf die Chipset entwickler vom PCI Bus abrückten und properitäre Busse (Hub Link, V-Link, MuTIOL, IMB, etc.) verwendet wurden.
Auch was die Funktionen betrifft werden die Grenzen immer mehr verwischt. Es gibt Southbridges die binden PCI und PCIe an, oder Northbridges mit SATA und USB Ports.... Einzig der Memorycontroller war bisher immer in der Northbridge zu finden. Sich darüber zu streiten, was man genau unter Northbridge versteht ist müßig. Spätestens mit der Rückkehr der integrierten Chipsets ist diese Einteilung vollkommen überflüßig.

P.S. Der Name Chipset stammt aus der Zeit des IBM PC in der für jede Funktion noch diskrete Chips verbaut wurden (Tastaturcontroller, Floppycontroller, serielle Schnittstellen, parallele Schnittstellen, etc...). Erst mit "Chips und Technology" kam eine Firma auf die Idee all diese Funktionen in einem Chip zu integrieren. Raus kam das NEAT "Chipset" für 286er.