Algorithme de mise en cache

Un algorithme de mise en cache (ou politique de remplacement du cache) est un algorithme de gestion de mémoires caches optimal. Le principe de fonctionnement de la majorité de ces algorithmes repose sur le principe de localité. Un algorithme de remplacement de ligne de cache choisit en général la ligne qui sera expulsée et remplacée. Il existe une variété de tels algorithmes, avec chacun leurs avantages et inconvénients. Ces algorithmes sont en général divisés en deux grandes catégories :

  • les algorithmes dépendants de l'utilisation des données : LRU, LFU, etc.
  • les algorithmes indépendants de l'utilisation des données : aléatoire, FIFO.

Les mémoires caches dans les matériels informatiques sont le plus souvent partiellement associatives : une ligne de la mémoire principale ne peut être rangée que dans une partie bien définie de la mémoire cache. Dans le cas d'un cache logiciel, il est possible qu'elle soit totalement associative et gérée globalement. Dans les deux cas, se pose le problème de devoir évicter une place dans la mémoire cache, ou dans la partie de celle-ci concernée, lorsque celle-ci est pleine et qu'on veut y charger des données de la mémoire principale.

Algorithme optimal

Cet algorithme, formalisé par L.A. Belady[1], utilise la mémoire cache de manière optimale : il remplace la ligne de mémoire cache qui ne sera pas utilisée pour la plus grande période de temps. Par conséquent, cet algorithme doit connaître les accès futurs afin de désigner la ligne à évincer. Cela est donc impossible à réaliser dans un système réel, mais constitue néanmoins un excellent moyen afin de mesurer l'efficacité d'un algorithme de remplacement en fournissant une référence.

Algorithmes usuels

LRU (Least Recently Used)

Cet algorithme remplace la ligne utilisée le moins récemment. L'idée sous-jacente est de garder les données récemment utilisées, conformément au principe de localité. Tous les accès aux différentes lignes de la mémoire cache sont enregistrés ; ce qui explique que cet algorithme coûte cher en termes d'opérations de traitement de liste. De plus, ce coût, qui est un élément vital des systèmes embarqués notamment, augmente exponentiellement avec le nombre de voies de la mémoire cache.[réf. nécessaire]

Plusieurs implémentations de cet algorithme sont possibles. L'une d'entre elles est assez simple et se fonde sur l'utilisation d'une matrice triangulaire NxN (où N est le nombre de voies de la mémoire cache). Quand une ligne i est référencée, la ligne i de la matrice est fixée à 1 et la colonne i à 0. La ligne accédée le moins récemment est ainsi la ligne dont la ligne est entièrement égale à 0 et dont la colonne est entièrement égale à 1. Cette définition peut paraître étrange mais par ligne et colonne de la matrice triangulaire, il est entendu tous les éléments non nuls par définition de la matrice (i.e. pour lesquels le numéro de ligne est inférieur au numéro de colonne). Cet algorithme s'exécute rapidement et est assez facile à implémenter en hardware mais sa complexité croît rapidement avec la taille de la mémoire cache. Ainsi, avoir un nombre de voies limité semble préférable mais un faible nombre de voies est source de nombreux conflits… La solution n'est donc pas évidente.

FIFO (First In First Out)

Comme il vient d'être présenté, l'implémentation de l'algorithme LRU est compliquée pour un nombre de voies important. Une approximation de cet algorithme a donc été développée, il s'agit d'un algorithme FIFO : les lignes de la mémoire cache sont effacées dans l'ordre où elles sont arrivées dans la mémoire cache, utilisant ainsi le principe de localité de la manière la plus simple possible. Cette simplicité de conception, qui lui a valu un franc succès dans l'industrie, est malheureusement obtenue au détriment de l'efficacité. Ainsi, selon Smith[2], le nombre de défauts de cache obtenus par cet algorithme est entre 12 et 20 % plus important que pour le LRU.

L'implémentation hardware est assez simple car elle ne requiert que bits par ensemble de lignes de mémoire cache. Ces bits permettent de désigner la ligne à évincer. Ce compteur est incrémenté à chaque défaut de cache. Si le compteur est initialisé à 0 lors d'un nettoyage de cache, les lignes sont ainsi évincées dans l'ordre où elles ont été enregistrées dans le cache. Cette relation d'ordre n'est valable que pour deux lignes d'un même ensemble.

Malgré sa simplicité, cet algorithme présente l'inconvénient majeur de ne pas relier directement performance et taille de la mémoire cache. Ainsi augmenter la taille du cache peut avoir un effet négatif sur la performance pour certaines séquences d'accès. Ce phénomène est connu sous le nom d'anomalie de Belady.

Algorithme aléatoire

L'algorithme aléatoire est le plus simple : la ligne évincée est choisie au hasard. Cette méthode ne requiert que peu de ressources mais son efficacité est limitée car elle n'est pas fondée sur l'usage des données. Cela peut être implémenté de manière assez simple à l'aide de registres à décalage avec rétroaction linéaire. Selon Al-Zoubi et al.[3], cet algorithme est en moyenne 22 % moins efficace que LRU.

Cet algorithme possède un avantage indéniable sur l'algorithme FIFO car ses variations dépendent faiblement de la taille de l'ensemble des données, du nombre de lignes de cache…

LFU (Least Frequently Used)

Alors que LRU enregistre l'ordre d'accès des différentes lignes de mémoire cache, LFU quant à lui garde trace de la fréquence d'accès de ces lignes et remplace la moins fréquemment utilisée. Le point faible de cet algorithme est une pollution du cache. En effet, des lignes qui ont été accédées très fréquemment mais qui ne sont plus utilisées dans le futur tendent à rester dans la mémoire cache. Une solution habituelle est l'ajout d'une politique d'ancienneté : au-delà d'un certain temps, la ligne est désignée comme ligne à remplacer. Néanmoins, en raison de sa complexité d'implémentation, cet algorithme est peu utilisé dans l'industrie.

Approximations de l'algorithme LRU

En raison de la complexité d'implémentation de l'algorithme LRU, qui influe de manière négative sur le temps moyen d'accès à la mémoire cache, des approximations de l'algorithme LRU, souvent appelées « pseudo-LRU », ont été développées afin de pallier ces problèmes. Les différents algorithmes présentés dans cette section utilisent tous le fait que dans le bas de la liste d'accès, la probabilité que le processeur requière une de ces lignes est quasiment identique. Par conséquent, désigner une de ces lignes pour l'éviction donne des résultats très proches. Un ordre partiel à l'intérieur de ces ensembles est donc suffisant.

Les algorithmes « pseudo-LRU » ont une performance pratique voisine de celle du LRU[4].

Toutes les figures dessinées ici respectent la convention suivante : le vert correspond à des lignes protégées de l'éviction et le jaune aux lignes considérées comme LRU.

PLRUt (Arbre de décision binaire)

La première approximation est fondée sur un arbre de décision binaire. Elle ne requiert que N-1 bits par ensemble dans un cache associatif de N voies. Ces différents bits pointent la ligne considérée comme pseudo-LRU. Les bits de l'arbre de décision binaire pointant sur la voie hitée sont inversés pour protéger cette ligne de l'éviction. Prenons l'exemple d'un cache de 4 voies représenté sur la figure ci-dessous. Chaque dessin correspond au résultat de l'accès mémoire présenté.

La nature binaire de cet algorithme est également la faiblesse de l'algorithme : le nœud en haut de l'arbre binaire ne contient qu'une information et ne peut donc pas refléter suffisamment bien l'histoire des différentes voies.

Arbre de décision binaire de PLRUt
Séquence avec l'algorithme PLRUt

PLRUm

À chaque ligne de mémoire cache est assigné un bit. Lorsqu'une ligne est écrite, son bit est mis à 1. Si tous les bits d'un ensemble sont égaux à 1, tous les bits sauf le dernier sont réinitialisés à zéro. Cet algorithme est populaire dans de nombreux caches. Selon Al-Zoubi et al.[3], ces deux pseudo-algorithmes sont de très bonnes approximations et PLRUm donne même de meilleurs résultats que LRU sur certains algorithmes.

Séquence avec l'algorithme PLRUm

1-bit

C'est probablement la plus simple des approximations de l'algorithme LRU et ne requiert qu'un bit par ensemble. Ce bit partage l'ensemble en deux groupes :

  • l'un qui contient le MRU (Most Recently Used)
  • l'autre non.

Lors d'un hit ou d'un défaut de cache, ce bit est réévalué pour pointer sur la moitié qui ne contient pas le MRU. La ligne à remplacer est ensuite choisie au hasard parmi ce groupe.

LRU améliorés

Les algorithmes LRU et pseudo-LRU fonctionnent bien mais sont faiblement efficaces lors d'accès en burst : les données qui ne sont accédées qu'une fois occupent la mémoire cache et polluent donc cette dernière. Les algorithmes LRU améliorés tentent de résoudre ce problème. Ces algorithmes sont donc très utiles pour les caches de disque ou les copies de fichiers. Tous les algorithmes présentés dans cette section utilisent la même idée : partitionner le cache en deux parties :

  • l'une contient les données utilisées une et une seule fois,
  • l'autre les données utilisées au moins deux fois.

Les tailles relatives de ces deux groupes sont fixes ou dynamiques, suivant les algorithmes.

2Q

L'idée de cet algorithme est de créer deux queues de taille fixe afin d'éviter la pollution de la mémoire cache. La première liste, qui contient les données accédées une seule fois, est gérée comme une liste FIFO et la seconde comme une liste LRU. La première queue est également partitionnée en deux sous-queues A1in et A1out car les résultats expérimentaux démontrent que la taille optimale de cette queue dépend fortement de la trace.

Selon John et al[5]., cet algorithme donne de meilleurs résultats que LRU, de l'ordre de 5-10 %. Le problème est que deux queues doivent être gérées ainsi que les migrations de l'une à l'autre ; ce qui requiert beaucoup de hardware et consomme de nombreux cycles d'horloge et d'énergie. Ces raisons expliquent que cet algorithme n'apparaît pas dans les systèmes embarqués mais est une solution utilisée dans les mémoires caches de disque.

LRU-K

Cet algorithme, proposé par O'Neil et al.[6], découpe la mémoire cache en différents groupes qui correspondent aux lignes qui ont été accédées récemment entre 1 et K fois. L'idée de base est la même que celle présentée pour l'algorithme 2Q. Un historique des K derniers accès de chaque ligne de la mémoire principale doit donc être maintenu, ce qui nécessite beaucoup de logique et augmente notablement la consommation. Lors d'un défaut de cache, la ligne à remplacer est choisie en explorant ces listes et en cherchant la donnée qui n'a pas été accédée récemment et dont le K-ème accès est la LRU de la liste K. Cependant, cet algorithme n'est réellement justifié que pour les caches de taille importante.

Analyse statique

On peut vouloir, par analyse statique, établir quels accès sont forcément des succès ou des échecs de cache, par exemple pour borner rigoureusement le temps d'exécution du programme[7]. La sortie de l'analyse statique est ainsi, pour chaque accès du programme, l'indication de s'il es|autyhort forcément en cache, forcément hors cache, ou de statut indéterminé. Des raffinements sont possibles : on peut par exemple indiquer que tel accès est en cache si la procédure qui le contient est utilisée dans certains contextes d'appel, que tel accès est hors cache lors de la première itération d'une boucle mais en cache pour les suivantes, etc Ceci est notamment utile pour borner le temps d'exécution dans le pire cas de programmes de contrôle de systèmes embarqués critiques (avionique, etc.).

Une approche classique de l'analyse de propriétés de cache LRU est d'associer à chaque bloc possiblement présent dans le cache un âge (0 pour le bloc le plus récemment inséré, etc. jusqu'à l'associativité du cache) et calculer des intervalles d'âges possibles[8]. Cette analyse peut être raffinée pour distinguer automatiquement des cas où le même point de programme est accessible par des chemins qui provoquent pour certains des accès en cache, pour d'autres des accès hors cache[9]. On peut même obtenir une analyse exacte (par rapport à un modèle d'exécution ne considérant que le flot de contrôle syntaxique du programme, sans sémantique des conditions) et en même temps efficace en abstrayant les ensembles d'états de cache par des antichaînes elles-mêmes représentées par des diagrammes binaires de décision compacts[10].

Cette bonne propriété de la politique LRU du point de vue de l'analyse ne se généralise pas aux politiques pseudo-LRU. On démontre notamment que, du point de vue de la théorie de la complexité algorithmique, les problèmes d'analyse statique posés par les algorithmes pseudo-LRU et l'algorithme FIFO appartiennent à des classes de complexité supérieures à celles des algorithmes LRU[11],[12].

Voir aussi

Notes

  1. (en) L.A. Belady, « A study of replacement algorithms for a virtual-storage computer », IBM Systems Journal, vol. 5, no 2,‎ .
  2. (en) J.E. Smith et J.R. Goodman, « A study of instruction cache organizations and replacement policies », SIGARCH Computer Architecture News, ACM Press, vol. 11, no 3,‎ , p. 132-137.
  3. a et b (en) H. Al-Zoubi, A. Milenkovic et M. Milenkovic, « Performance evaluation of cache replacement policies for the SPEC CPU2000 benchmark suite », ACM-SE 42: Proceedings of the 42nd annual southeast regional conference, ACM Press,‎ , p. 267-272.
  4. (en) Hussein Al-Zoubi, Aleksandar Milenkovic et Milena Milenkovic, « Performance evaluation of cache replacement policies for the SPEC CPU2000 benchmark suite », dans ACM-SE 42: Proceedings of the 42nd annual Southeast regional conference, (DOI 10.1145/986537.986601).
  5. T. Johnson and D. Shasha, 2Q: A Low Overhead High Performance Buffer Management Replacement Algorithm, VLDB '94: Proceedings of the 20th International Conference on Very Large Data Bases, Morgan Kaufmann Publishers Inc., p. 439-450, 1994
  6. (en) E.J. O'Neil, P.E. O'Neil et G. Weikum, « The LRU-K page replacement algorithm for database disk buffering », SIGMOD '93: Proceedings of the 1993 ACM SIGMOD international conference on Management of data, ACM Press,‎ , p. 297-306.
  7. (en) Christian Ferdinand et Reinhard Wilhelm, « Efficient and precise cache behavior prediction for real-time systems », Real-Time Syst., vol. 17, nos 2–3,‎ , p. 131–181 (DOI 10.1023/A:1008186323068)
  8. (en) Christian Ferdinand, Florian Martin, Reinhard Wilhelm et Martin Alt, « Cache Behavior Prediction by Abstract Interpretation », Science of computer programming, Springer, vol. 35, nos 2-3,‎ (DOI 10.1016/S0167-6423(99)00010-6)
  9. (en) Valentin Touzeau, Claire Maïza, David Monniaux et Jan Reineke, « Ascertaining Uncertainty for Efficient Exact Cache Analysis », dans Computer-aided verification (2), (DOI 10.1007/978-3-319-63390-9_2)
  10. (en) Valentin Touzeau, Claire Maïza, David Monniaux et Jan Reineke, « Fast and exact analysis for LRU caches », Proc. {ACM} Program. Lang, vol. 3, no POPL,‎ , p. 54:1--54:29
  11. (en) David Monniaux et Valentin Touzeau, « On the complexity of cache analysis for different replacement policies », Journal of the ACM, Association for Computing Machinery, vol. 66, no 6,‎ (DOI 10.1145/3366018, lire en ligne)
  12. (en) David Monniaux, « The complexity gap in the static analysis of cache accesses grows if procedure calls are added », Formal Methods in System Design, Springer Verlag,‎ (DOI 10.1007/s10703-022-00392-w, lire en ligne)

Read other articles:

Artikel ini sebatang kara, artinya tidak ada artikel lain yang memiliki pranala balik ke halaman ini.Bantulah menambah pranala ke artikel ini dari artikel yang berhubungan atau coba peralatan pencari pranala.Tag ini diberikan pada Februari 2023. Udang mabuk yang dimakan hidup-hidup Udang mabuk setengah matang Udang mabuk adalah hidangan populer dari beberapa daerah di Tiongkok yang dibuat dari udang air tawar. Hidangan ini terkadang dimakan masak atau mentah. Udang biasanya direndam dalam min...

Нові Білокоровичі Коростенська дирекція Південно-Західна залізниця зупинний пунктРозташуванняРозташування с. БілокоровичіКоординати 51°07′21″ пн. ш. 28°01′17″ сх. д. / 51.12250° пн. ш. 28.02139° сх. д. / 51.12250; 28.02139СтруктураЛінія(ї) Коростень — �...

Definisi kata Aperture di Glossographia Anglicana Nova tahun 1707[1] Diagram tingkapan dengan nilai menurun (nilai bukaan naik) pada jeda 1 stop Tingkapan atau apertur (bahasa Inggris: aperture) adalah lubang pada bidang diafragma tempat berlalunya sinar pendar kilau. Watak bentuk dan ukuran tingkapan menentukan bentuk zona Fresnel dan difraksi Fresnel yang terjadi. Nilai atau nisbah tingkapan (aperture value, aperture ratio) pada jeda 1 stop berkisar antara: f/1, f/1.4, f/2, f/2....

New Zealand's Wyatt Crockett, who retired after 202 Super Rugby matches, the most played for any centurion. Stephen Moore is the top Australian centurion, retiring after 175 Super Rugby matches. Tendai Mtawarira is the top South African centurion, retiring after 159 Super Rugby matches. Aaron Smith is the 2nd most capped centurion, playing 185 times, all for the Highlanders. Liam Messam played 179 Super Rugby matches before retiring, all for the Chiefs. Kevin Mealamu played 175 Super Rugby ma...

التمريض عن بعد (بالإنجليزية: Telenursing)‏ هو استخدام الاتصالات عن بعد، وتكنولوجيا المعلومات في خدمات التمريض، كلما وجدت مسافة فعلية بين المريض والممرض أو بين عدد من الممرضين والممرضات. وهي جزء من الرعاية الصحية عن بعد أو التطبيب عن بعد. ويتصل التمريض عن بعد بالتطبيقات الطبية و�...

You can help expand this article with text translated from the corresponding article in Japanese. (December 2009) Click [show] for important translation instructions. View a machine-translated version of the Japanese article. Machine translation, like DeepL or Google Translate, is a useful starting point for translations, but translators must revise errors as necessary and confirm that the translation is accurate, rather than simply copy-pasting machine-translated text into the English W...

بيفتقر محتوى هذه المقالة إلى الاستشهاد بمصادر. فضلاً، ساهم في تطوير هذه المقالة من خلال إضافة مصادر موثوق بها. أي معلومات غير موثقة يمكن التشكيك بها وإزالتها. (مارس 2016) عبد المحسن فائق معلومات شخصية تاريخ الميلاد القرن 20  تاريخ الوفاة سنة 1988  الحياة العملية المهنة عسكر�...

Questa voce o sezione sugli argomenti fiumi e Africa non cita le fonti necessarie o quelle presenti sono insufficienti. Puoi migliorare questa voce aggiungendo citazioni da fonti attendibili secondo le linee guida sull'uso delle fonti. Segui i suggerimenti dei progetti di riferimento 1, 2. Coordinate: 6°04′30″S 12°27′00″E / 6.075°S 12.45°E-6.075; 12.45 CongoIl fiume Congo vicino a KisanganiStati RD del Congo Rep. del Congo Angola Lunghezza4 ...

Local government election in Northern Ireland 1986 Upper Bann by-election← 19831987 →South Down constituency   First party Second party   Candidate Harold McCusker Tom French Party Ulster Unionist Workers' Party Popular vote 29,311 6,978 Percentage 80.8% 19.2 Swing 23.9 13.7% Location of South Down within Northern Ireland MP before election Harold McCusker Ulster Unionist Party Elected MP Harold McCusker Ulster Unionist Party The 1986 Upper Bann by-electio...

Hak LGBT di NigeriaNigeriaAktivitas sesama jenis legal?Ilegal di bawah hukum federal sejak 1901 (sebagai Protektorat Nigeria Utara dan Protektorat Nigeria Selatan)[1]Hukuman:Negara-negara bagian di bawah hukum Syariah: Hukuman mati(Penerapan kepada orang-orang yang berada di bawah yurisdiksi pengadilan Syariah ditambah seluruh Muslim)Negara-negara bagian yang tidak berada di bawah hukum Syariah: 14 tahun penjaraTranseksualIlegal di negara-negara bagian utaraPengakuan pasangan sesama j...

Unincorporated community and Census-designated place in Wisconsin, United StatesPorterfield, WisconsinUnincorporated community and Census-designated placePorterfield welcome sign on Church StreetPorterfield, WisconsinShow map of WisconsinPorterfield, WisconsinShow map of the United StatesCoordinates: 45°09′16″N 87°47′40″W / 45.15444°N 87.79444°W / 45.15444; -87.79444Country United StatesState WisconsinCountyMarinetteElevation203 m (666 f...

Motor vehicle Isotta Fraschini Tipo KMAn Isotta-Fraschini Tipo KM4 Tourer on display at the 2017 Pebble Beach Concours d'EleganceOverviewManufacturerIsotta FraschiniProduction1910-1914AssemblyMilan, ItalyBody and chassisClassLuxury carLayoutFR layoutPowertrainEngine10.6-liter OHC I4 The Isotta Fraschini Tipo KM is a luxury car produced between 1910 and 1914 in Italy. Only 50 were built.[1] Many of those 50 examples were exported to the United States, where the company had a branch on ...

Academic journalChinese Physics LettersDisciplineChemistry & PhysicsLanguageEnglishEdited byZHU Bang-FenPublication detailsHistory1984–presentPublisherChinese Physical Society (China)FrequencyMonthlyImpact factor1.483 (2020)Standard abbreviationsISO 4 (alt) · Bluebook (alt1 · alt2)NLM (alt) · MathSciNet (alt )ISO 4Chin. Phys. Lett.IndexingCODEN (alt · alt2) · JSTOR (alt) · LCCN (alt)MIAR &...

1984 crime drama film The Glitter Dometheatrical posterGenreActionComedyCrimeDramaBased onThe Glitter Domeby Joseph WambaughWritten byJoseph WambaughScreenplay byStanley KalisDirected byStuart MargolinStarringJames GarnerMargot KidderJohn LithgowMusic byStuart MargolinCountry of originUnited StatesOriginal languageEnglishProductionProducerFrank KonigsbergProduction locationsVancouverVictoria, British ColumbiaCinematographyMichael W. WatkinsJon KranhouseEditorM.S. MartinRunning time97 minutesP...

1927 Nelson-class battleship of the Royal Navy For other ships with the same name, see HMS Nelson and HMS Lord Nelson. Aerial view of Nelson, 17 May 1937 History United Kingdom NameNelson NamesakeVice-Admiral Horatio Nelson Ordered1 January 1923 BuilderArmstrong-Whitworth, South Tyneside Cost£7,504,055 Yard number991 Laid down28 December 1922 Launched3 September 1925 Commissioned15 August 1927 DecommissionedFebruary 1948 In service27 October 1927 Out of service20 October 1947 Stricken19 May ...

American musician and songwriter Billy SwanBornWilliam Lance Swan (1942-05-12) May 12, 1942 (age 81)Cape Girardeau, Missouri, U.S.Occupations Singer-songwriter producer Years active1962–presentSpouse Marlu Swan ​ ​(m. 1973; died 2003)​Children Planet Swan Sierra Swan Musical careerOriginNashville, Tennessee, U.S.Genres country rock and roll Instrument(s) Vocals guitar keyboards drums Labels Monument A&M Epic Musical artist Purple...

بيت الدين في قضاء الشوف؛ من عواصم إمارة جبل لبنان «إمارة التعايش الماروني- الدرزي»:[1][2] يتعايش المسيحيين والموحدون الدروز في العديد من بلدات بلاد الشام. العلاقة بين الموحدون الدروز والمسيحية اتسمت بالطيبة والودّ من الناحية التاريخيَّة،[3][4][5][6] وك�...

Paghimo ni bot Lsjbot. Cyathus hortensis Siyentipikinhong Pagklasipikar Kaginharian: Fungi Kabahig: incertae sedis Ka-ulo: Basidiomycota Kahutong: Agaricomycetes Kahanay: Agaricales Kabanay: Agaricaceae Kahenera: 'Cyathus' Espesye: ''Cyathus hortensis'' Siyentipikinhong Ngalan Cyathus hortensisR. Cruz & Baseia, 2014 Kaliwatan sa uhong ang Cyathus hortensis.[1] sakop sa ka-ulo nga Basidiomycota, ug Una ning gihulagway ni R. Cruz ug Baseia ni adtong 2014.[2] Ang Cyathus hort...

Redondo Beach Widok stacji od strony parkingu Park & Ride Państwo  Stany Zjednoczone Data otwarcia 12 sierpnia 1995 Poprzednia stacja Douglas Następna stacja stacja końcowa Położenie na mapie metropolii Los AngelesRedondo Beach Położenie na mapie Stanów ZjednoczonychRedondo Beach Położenie na mapie KaliforniiRedondo Beach 33°53′40,92″N 118°22′09,48″W/33,894700 -118,369300 Multimedia w Wikimedia Commons Redondo Beach – stacja zielonej linii metra w...

  لمعانٍ أخرى، طالع أولاد سلامة (توضيح). أولاد سلامة  -  قرية مصرية -  تقسيم إداري البلد  مصر المحافظة محافظة سوهاج المركز المنشأة المسؤولون السكان التعداد السكاني 14415 نسمة (إحصاء 2006) معلومات أخرى التوقيت ت ع م+02:00  تعديل مصدري - تعديل   قرية أولاد سلامة هي...