Frage

ich ein Evaluierungs-Kit haben, die eine Implementierung von ARM Cortex-A8-Kern hat. Das Prozessordatenblatt heißt es, dass es hat ein

  

ARM-Cortex A8 ™ Kern, der bei Geschwindigkeiten von bis zu 800 MHz und bis zu 200 MHz DDR2 RAM arbeitet.

Was kann ich von diesem System erwarten? Habe ich Recht davon ausgehen, dass die Speicherzugriffe werden ein Engpass sein, weil es bei nur 200 MHz arbeitet?

Sie benötigen weitere Informationen darüber, wie diese zu interpretieren sind.

War es hilfreich?

Lösung

Der Prozessor arbeitet mit einem internen Cache (eigentlich mehrere), die es auf „full speed“ zugreifen kann. Der Cache ist klein (typischerweise 8 bis 32 Kilobyte) und wird von Chunks ( „Cache-Zeilen“) aus dem externen RAM (eine Cache-Zeile wird ein paar Dutzend aufeinanderfolgenden Bytes), gefüllt. Wenn der Code einige Daten benötigt, die gegenwärtig nicht in dem Cache ist, wird der Prozessor die Zeile vom Haupt-RAM holen; Dies ist eine Cache-Miss genannt .

Wie schnell die Cache-Zeile aus dem Haupt RAM erhalten werden kann, wird durch zwei Parameter beschrieben, die so genannte Latenz und Bandbreite . Latenz ist die Zeitspanne zwischen dem Moment der Prozessor Fragen der Anforderung und der Moment des erste Cache-Line-Byte empfangen wird. Typische Latenzen sind etwa 30 ns. Bei 800 MHz, 30ns Mittelwert von 24 Taktzyklen. Die Bandbreite beschreibt, wie viele Bytes pro ns auf den Bus gesendet werden. „200-MHz-DDR2“ bedeutet, dass der Bus-Takt mit 200 MHz laufen. DDR2 RAM kann zwei Datenelemente pro Zyklus (also 400 Millionen Elemente pro Sekunde) senden. Die Bandbreite hängt dann davon ab, wie viele Drähte gibt es zwischen der CPU und dem RAM: mit einem 64-Bit-Bus und 200 MHz DDR2 RAM, könnten Sie für 3,2 GBytes hoffen / s unter idealen Bedingungen. So dass, während das erste Byte durchaus einige Zeit in Anspruch nimmt, erhalten werden (Latenz hoch ist in Bezug auf das, was die CPU tun kann), der Rest der Cache-Zeile ganz schnell gelesen wird.

In der anderen Richtung. Die CPU einige Daten zu dem Cache schreibt, und einige Schaltung wird die Änderung Haupt-RAM an seiner Freizeit propagieren

Die obige Beschreibung ist zu einfach; Caches und Cache-Management ist ein komplexer Bereich. Bottom-Line ist die folgende: Wenn Ihr Code große Datentabellen im Speicher und greift sie in eine scheinbar zufälligen Art und Weise verwendet wird, dann wird die Anwendung langsam sein, weil die meiste Zeit wird der Prozessor nur für Daten aus dem Hauptspeicher warten. Auf der anderen Seite, wenn Ihr Code mit wenig RAM arbeiten kann, weniger als ein paar Dutzend Kilobyte, dann sind die Chancen, dass sie die meiste Zeit mit dem innersten Cache laufen wird, und externe RAM-Geschwindigkeit unwichtig sein. Die Fähigkeit, Make-Speicherzugriffe in eine Weise, die gut mit dem Cache-Speicher arbeitet heißt Referenzlokalität .

Sehen Sie die Wikipedia-Seite über Caches für eine Einführung und Zeiger auf die Frage des Caches .

(Big vorberechnet Tabellen eine gemeinsame Optimierung Trick während der 80er Jahre waren, weil zu diesem Zeitpunkt Prozessoren waren nicht schneller als RAM und einen Zyklus Speicherzugriff war die Regel. Weshalbimmer 8 MHz Motorola 68000 CPU keinen Cache hatte. aber diese Zeiten sind lange vorbei.)

Andere Tipps

Ja, der Speicher kann auch ein Engpass, aber Sie werden sehr unwahrscheinlich sein, eine Anwendung ausgeführt werden, das tut nichts , aber das Lesen und Schreiben in den Speicher.

Innerhalb der CPU, der Speicher-Engpass wird keinen Effekt haben.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top