Question

I ont un kit d'évaluation qui a une mise en œuvre de noyau ARM Cortex-A8. Les états de feuille de données du processeur qu'il a un

  

noyau de ARM Cortex A8, qui fonctionne à des vitesses aussi élevées que 800 MHz et 200 MHz Jusqu'à RAM DDR2.

Que puis-je attendre de ce système? Ai-je raison de supposer que les accès de mémoire sera un goulot d'étranglement, car il fonctionne à seulement 200MHz?

Besoin d'informations sur la façon d'interpréter.

Était-ce utile?

La solution

Le processeur fonctionne avec un cache interne (en fait, plusieurs) qu'il peut accéder à « pleine vitesse ». Le cache est faible (typiquement 8 à 32 kilo-octets) et est rempli par morceaux (les « lignes de mémoire cache ») à partir de la mémoire RAM externe (une ligne d'antémémoire sera quelques dizaines d'octets consécutifs). Lorsque le code a besoin des données qui n'est pas actuellement dans le cache, le processeur devra chercher la ligne de RAM principale; on appelle cela un cache miss .

Quelle est la vitesse de la ligne de cache peut être obtenu à partir de la RAM principale est décrite par deux paramètres, appelés latence et bande passante . Latence est la quantité de temps entre le moment où les problèmes de traitement de la demande, et le moment où le premier octet de ligne de cache est reçue. latences typiques sont sur 30ns. A 800 MHz, 30ns cycles moyens 24 d'horloge. La bande passante décrit le nombre d'octets par nanosecondes peuvent être envoyés sur le bus. « 200 MHz DDR2 » signifie que l'horloge de bus fonctionnent à 200 MHz. RAM DDR2 peut envoyer deux éléments de données par cycle (d'où 400 millions d'éléments par seconde). La bande passante dépend alors du nombre de fils, il y a entre la CPU et la RAM: avec un bus 64 bits et 200 MHz RAM DDR2, vous pouvez espérer 3.2 GBytes / s dans des conditions idéales. Alors que si le premier octet prend un certain temps à obtenir (temps d'attente est élevé en ce qui concerne ce que l'unité centrale de traitement peut faire), le reste de la ligne de cache est lu assez rapidement.

Dans l'autre sens:. L'unité centrale de traitement écrit des données à son cache, et certains circuits propagera la modification de la RAM principale à loisir

La description ci-dessus est trop simpliste; caches et la gestion du cache sont un domaine complexe. Ligne de fond est la suivante: si votre code utilise de grandes tables de données en mémoire et les accès d'une manière apparemment aléatoire, l'application sera lente, parce que la plupart du temps, le processeur se contenteront d'attendre les données de la mémoire principale. D'autre part, si votre code peut fonctionner avec peu de RAM, moins de quelques dizaines de kilo-octets, il est probable qu'il se déroulera la plupart du temps avec le cache le plus intérieur, et la vitesse de la RAM externe sera sans importance. Capacité à la mémoire de faire des accès d'une manière qui fonctionne bien avec les caches est appelée localité de référence .

Voir la page Wikipédia sur les caches pour une introduction et des pointeurs sur la question des caches.

(grandes tables précalculée étaient un truc d'optimisation commun au cours des années 80 parce que les processeurs de temps ne sont pas plus rapide que la RAM et l'accès à la mémoire d'un cycle était la règle. Ce qui est la raison pour laquelle un 8 MHz Motorola 68000 CPU avait pas de cache. mais ces jours-ci est révolue depuis longtemps.)

Autres conseils

Oui, la mémoire peut bien être un goulot d'étranglement, mais vous serez très peu susceptibles d'être en cours d'exécution d'une application qui ne rien mais lire et écrire à la mémoire.

A l'intérieur du CPU, le goulot d'étranglement de la mémoire ne sera pas avoir un effet.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top