Kontentke ótiw

Maǵlıwmatlarǵa baǵdarlanǵan dizayn

Wikipedia — erkin enciklopediya

Esaplaw texnikasında, maǵlıwmatlarǵa baǵdarlanǵan dizayn — bul oraylıq processor keshin nátiyjeli paydalanıw menen motivaciyalanǵan, kóbinese video oyın islep shıǵıwda qollanılatuǵın programmanı optimallastırıw usılı[1]. Bul usıldıń tiykarı maǵlıwmatlardıń jaylasıwına itibar beriw, maydanlardı qashan kerek bolıwına qarap ajıratıw hám sortlaw hám de maǵlıwmatlardıń transformaciyaları haqqında oylaw bolıp tabıladı. Onıń tárepdarlarına Mayk Ekton,[2] Skott Meyers,[3] hám Djonatan Blou kiredi.

Parallel massiv (yamasa massivler strukturası) maǵlıwmatlarǵa baǵdarlanǵan dizaynıń tiykarǵı mısalı bolıp tabıladı. Ol obyektke baǵdarlanǵan dizaynǵa tán strukturalar massivi menen salıstırıladı.

Maǵlıwmatlarǵa baǵdarlanǵan dizaynıń programmalastırıw paradigması retindegi anıqlamasın dawlı dep qarawǵa boladı, sebebi kópshilik onı basqa paradigma menen bir qatarda qollanıwǵa boladı dep esaplaydı,[4] biraq maǵlıwmatlardıń jaylasıwına ayrıqsha itibar berilgenlikten, ol basqa kópshilik paradigmalar menen de sáykes kelmeydi.

Motivler

Bul usıllar ásirese 2000-jıllardıń ortasınan aqırına shekem IBM PowerPC tiykarındaǵı PlayStation 3 (PS3) hám Xbox 360 konsolların óz ishine alǵan video oyın konsollarınıń jetinshi áwladı dáwirinde ataqlı boldı. Tariyxıy jaqtan, oyın konsollarınıń oraylıq processorları (CPU) kóbinese eń joqarı dárejeli desktop kompyuter sıńarlarınan salıstırmalı túrde hálsiz boladı. Bul grafikalıq processorlarǵa (GPU) kóbirek kúsh hám tranzistor byudjetin ajıratıw ushın dizayn tańlawı bolıp tabıladı. Mısalı, 7-áwlad CPUları zamanagóy tártipsiz orınlaw processorları menen islep shıǵarılmaǵan, kerisinshe joqarı saat tezlikleri hám tereń konveyerleri bar tártipli orınlaw processorların paydalanadı. Bunnan tısqarı, kópshilik esaplaw sistemaları túrleriniń tiykarǵı yadları qayta islew elementlerinen júzlegen saat ciklları uzaqlıqta jaylasqan. Onnan da tısqarı, CPUlar tiykarǵı yad sıyımlılıǵınıń úlken ósiwi menen birge tezlesken sayın, ulıwma shinadaǵı kesh qátelikleri itimalın arttıratuǵın úlken maǵlıwmat tutınıwı bar, basqasha aytqanda, Fon Neyman tarılıwı dep ataladı. Nátiyjede, ónimdarlıqtı basqarıw ushın jergilikli silteme usılları qollanıldı, bul tarılıwdı sheshiw ushın yadqa kiriw úlgilerin jaqsılawdı talap etti. Ayırım programmalıq támiynat máseleleri de Itanium-da ushırasqanlarǵa uqsas boldı, aldınnan jobalastırıw ushın cikldi ashıwdı talap etti.

Obyektke baǵdarlanıw menen salıstırıw

Tastıyıqlaw - dástúrli obyektke baǵdarlanǵan programmalastırıw (OBP) dizayn principleri jaman maǵlıwmat lokallıǵına alıp keledi,[5][6] ásirese eger orınlanıw waqtındaǵı polimorfizm (dinamikalıq jiberiw) paydalanılsa (bul ayırım processorlarda ásirese mashqalalı)[7]. Degen menen OBP «kodtı maǵlıwmat dógereginde shólkemlestiretuǵın» sıyaqlı kórinedi, ol negizinde derek kodın maǵlıwmat tipleri átirapında shólkemlestiredi, al jeke maydanlar menen massivlerdi belgili bir funkciyalar tárepinen kiriw ushın nátiyjeli formatta fizikalıq túrde gruppalamaydı. Bunnan tısqarı, ol kóbinese jaylasıw detalların abstrakciya qatlamları astında jasırıp qoyadı, al maǵlıwmatlarǵa baǵdarlanǵan baǵdarlamashı bunı birinshi náwbette qarastırıwdı qáleydi.

Derekler

  1. Llopis. «Data-oriented design». Data-Oriented Design (Or Why You Might Be Shooting Yourself in The Foot With OOP) (2009-jıl 4-dekabr). Qaraldı: 2020-jıl 17-aprel.
  2. «CppCon 2014: Mike Acton "Data-Oriented Design and C++"». YouTube (2014-jıl 29-sentyabr).
  3. «code::dive conference 2014 - Scott Meyers: Cpu Caches and Why You Care». YouTube (2015-jıl 5-yanvar).
  4. Richard Fabian. «Data-Oriented Design». www.dataorienteddesign.com (2018-jıl 8-oktyabr). Qaraldı: 2023-jıl 20-dekabr.
  5. «INTEL ® HPC DEVELOPER CONFERENCE FUEL YOUR INSIGHT IMPROVE VECTORIZATION EFFICIENCY USING INTEL SIMD DATA LAYOUT TEMPLATE (INTEL SDLT)».
  6. SoAx: A generic C++ Structure of Arrays for handling particles in HPC codes.
  7. «What's wrong with Object-Oriented Design? Where's the harm in it?». describes the problems with virtual function calls, e.g., i-cache misses