Jo, gut, oder nicht ganz so gut. Fangen wir erstmal an, gibt Fragen von Eurer Seite?
Keine Fragen? Alle glücklich und zufrieden? Okay.
Dann soll es weitergehen mit Caches. Ihr erinnert Euch, Dienstag große Tafel rappelvoll mit in der Mitte Registern.
Rechts eine Ausleselogik, links irgendwas, um was in die Register reinzukriegen.
Und wir hatten da ganz oben, wenn Ihr Euch erinnert, Daten und Adressen von der CPU zum Beschreiben bzw. Adresse von der CPU und Daten zurück vom Cache.
Irgendjemand hat da auch schon richtig gefragt, aber das muss ja noch irgendwie eine Verbindung zum Speicher geben.
Nur der Cache ohne Speicher ist ein bisschen witzlos.
Jo, also muss es doch irgendwie, wenn es eine CPU gibt und einen Speicher, und wir haben gesagt, wir wollen das Ganze beschleunigen durch unseren Cache.
Wie verkabeln wir denn die? Eins gebe ich Euch mal vor. Die CPU muss ja wohl Adressen liefern. Ohne Adressen ein bisschen doof.
Die CPU muss wohl, was noch? Daten? Solange oder solange?
Jawohl, letztendlich muss das hier unten wohl so ähnlich sein. Reicht aber noch nicht. Was brauchen wir noch?
Auf jeden Fall mal. CPU muss schon sagen, was er dann eigentlich will. Und genau so muss wohl auch der Cache sagen, ich möchte schreiben bzw. ich möchte lesen.
Das reicht immer noch nicht.
Entweder eine Stall im Sinne von Warte mal oder andersrum gesagt fertig. Jetzt kann es weitergehen.
Da hatten wir ja schon mal was in der Art, haben wir mal Hit genannt. Passt. Jetzt ist es natürlich nicht notwendigerweise immer ein Hit.
Manchmal ist es ein Hit, wenn Cash sagt, habe ich. Das kann aber natürlich auch sein, Cash hat eigentlich nicht. Aber dann wartet er so lange, bis er dann das, also normalerweise nennt man es dann eher als ready.
Das könnte so eine Hierarchie sein. Und das interessante, was man sieht, ist, dass dieses Interface genauso aussieht wie das.
Der einzige Unterschied, da dauert es ein bisschen länger im Allgemeinen.
Jetzt haben wir ja irgendwann mal gesagt, man kann ja auch noch in der Hierarchie einen zweiten Cash einbauen.
Auch da kann man sagen, der kann im Prinzip genau das gleiche Interface kriegen.
Wir haben auch gesagt, eine MMU brauchen wir vielleicht auch noch. Auch die kann genau das gleiche Interface kriegen.
Eine MMU kriegt eine Adresse gesagt und soll irgendwelche Daten liefern.
Die Adresse, die oben reingeht in die MMU, ist halt eine andere, als die Adresse, die unten rauskommt. Aber es ist und bleibt eine Adresse.
Wenn man das so bastelt, dass das Interface immer gleich aussieht, hat natürlich den Vorteil, in VHDL kann man die Dinger dann einfach zusammenstöpseln, wie man sie gerade braucht.
Brauche ich einen First Level Cash, nehme ich ihn hier, stecke ihn rein. Second Level Cash kann ich in die Liste mit reinstecken, muss ich aber gar nicht.
Habe ich eine MMU, stecke sie dazwischen, will ich sie nicht, lasse sie halt weg. Das kann man so richtig schön wie so ein Lego-Baukasten zusammenstöpseln.
Überall kommen die gleichen Nippel raus, passt alles zusammen.
Und für euch heißt das natürlich, wenn ihr eine CPU baut, die braucht einen First Level Cash oder zwei sogar.
Jetzt kann sie noch einen Second Level Cash kriegen. Da könnt ihr einfach euren First Level Cash einfach 1 zu 1 recyceln.
Der sieht einfach identisch aus. Ihr schreibt es einmal in VHDL hin.
Und dann instanziert ihr das Ding einmal als First Level Daten, einmal als First Level Code Cash und noch ein drittes Mal als Second Level Cash. Sieht immer gleich aus.
Das war die eine Folie, die ihr heute nicht da seht, sondern erzählt kriegt.
Die nächste Folie im Netz ist ja, war eine Frage.
Nämlich, wenn man im Internet liest oder sich irgendwelche bunten Flyer von Intel, Siemens, keine Ahnung, so anguckt, dann steht da was drauf.
Werbungsmäßig, unsere CPU hat einen 5 Kilo Byte First Level Cash.
Da sag ich immer, 5 Kilo Byte First Level Cash, ne, das könnt ihr nicht. Warum nicht?
Also wahrscheinlich haben Sie einen 4 Kilo Byte Daten Cash und einen 1 Kilo Byte Code Cash.
Also das erste, wir haben uns angeguckt bei den Adressen. Wir sägen immer in der Mitte irgendwie einen Teil raus mit so und so viele Bits.
Und die Bits haben wir genommen als Index in unsere Tabelle.
Und wenn wir eine Handvoll Bits nehmen, völlig wurscht, wie viele wir nehmen, es ist eine Zweierpotenz.
Eine Zweierpotenz, so viele Einträge gibt es.
Ja und 5 Kilo Byte ist nun mal keine Zweierpotenz.
Eine Lösung wäre zu sagen, naja gut, dann haben Sie einen 1 Kilo Byte Code Cash und 4 Kilo Byte Daten Cash.
Könnte noch sein. Ich habe es aber auch schon bei Spezialisten gelesen, da stand First Level Code Cash 5 Kilo Byte.
Wenn man das Tech-Fail einrichtet, dann ist das ja keine Zweierpotenz.
Es gibt Spezialisten, die sagen, hier hinten die Daten, die eigentlichen Daten, da ist es eine Zweierpotenz.
Es wird auch immer eine bleiben, da bin ich mir sehr, sehr, sehr, sehr sicher.
Aber die Management-Werbungs-Fuzzies rechnen natürlich alles zusammen, was man irgendwie als Bit bezeichnen könnte.
Die rechnen hier die Bits, die im Tech mit drin stecken halt noch dazu.
Dann sind es halt nicht 4 Kilo Byte, dann sind es plötzlich 5 Kilo Byte.
Presenters
Zugänglich über
Offener Zugang
Dauer
01:32:55 Min
Aufnahmedatum
2013-06-13
Hochgeladen am
2019-04-06 16:29:03
Sprache
de-DE