Darvekirina spekulatîf teknîkek xweşbînkirina performansê ye ku ji hêla pêvajoyên nûjen ve tê bikar anîn da ku rêwerziya rêwerzê û karbidestiya giştî ya hesabkirinê baştir bike. Ew tê de ye ku pêvajo di derheqê rêwerzên pêşerojê de texmînên xwenda dike û wan di pêş de bicîh tîne. Ev înfazkirina pêşîlêgirtinê paralelîzma xwerû ya di nav mîmariya pêvajoyê de dixebitîne da ku yekîneyên darvekirinê mijûl bihêle, dema bêkar kêm bike û bi vî rengî performansê zêde bike. Lêbelê, tevî avantajên wê, darvekirina spekulatîf bi bêhemdî qelsiyên ewlehiyê yên girîng destnîşan kiriye, nemaze pergalên êrişên demkî yên wekî Spectre eşkere dike.
Ji bo têgihîştina darvekirina spekulatîf, pêdivî ye ku meriv têgîna rêwerzkirina rêwerzanê, ku aliyek bingehîn a mîmariyên CPU-ya nûjen e, fêm bike. Di pêvajoyek lûlekirî de, çend rêwerzan di cîbicîkirinê de têne hev, digel qonaxên cihêreng ên lûleyê ku beşên cihêreng ên çerxa rêwerzê (hilanîn, dekodkirin, darvekirin, gihîştina bîranînê, û vegerandin) vedigire. Darvekirina spekulatîf vê têgehê bi pêşbînkirina encamên şaxên şertî û pêkanîna rêwerzên paşîn li ser bingeha van pêşbîniyan berî ku encamên rastîn werin zanîn berfireh dike.
Pêşbîniya şaxê hêmanek bingehîn a darvekirina spekulatîf e. CPU-yên nûjen algorîtmayên pêşbînkirina şaxê sofîstîke bikar tînin da ku rêwerziya şaxên şertî texmîn bikin (mînak, daxuyaniyên heke-yên din) di bernameyekê de. Dema ku pêvajo bi rêwerzek şaxê re rû bi rû bimîne, ew daneyên dîrokî û heurîstîkî bikar tîne da ku pêşbîn bike ka dê şax were girtin an na. Ger pêşbînî rast be, encamên darvekirina spekulatîf têne kirin, û pêvajoker bê navber darvekirinê didomîne. Ger pêşbînkirin xelet be, encamên spekulatîf têne avêtin, û pêvajoker vedigere ser riya rast a darvekirinê, bi bandor karê spekulatîf betal dike.
Digel ku darvekirina spekulatîf di baştirkirina performansê de pir bi bandor e, ew di heman demê de kanalek aliyek jî diafirîne ku bi navgîniya agahdariya hesas dikare were derxistin. Li vir êrîşên demkî, yên wekî Spectre, dileyizin. Êrîşên demdirêj guhertoyên demê yên di pêkanîna talîmatan de bikar tînin da ku agahdariya li ser daneyên ku têne hilanîn derxînin. Spectre, bi taybetî, mekanîzmaya darvekirina spekulatîf bikar tîne da ku cîhên bîranînê yên keyfî bixwîne, potansiyel daneyên hesas ên wekî şîfre, bişkojkên şîfrekirinê, û agahdariya nepenî ya din eşkere dike.
Specter bi teşwîqkirina pêvajoyê tevdigere da ku bi spekulatîf rêwerzên ku xwe digihînin cîhên bîranînê li ser bingeha têketina êrîşkar bicîh tîne. Êrîşker bi baldarî têketinan çêdike da ku pêşbînkerê şaxê manîpule bike, dibe sedem ku pêvajo bi spekulatîf rêzek rêwerzan ku xwe bigihîne cîhek bîranînê ya armanckirî bicîh tîne. Her çend encamên darvekirina spekulatîf di dawiyê de têne avêtin, bandorên alî yên van operasyonên spekulatîf dikarin bi pîvandinên demê ve werin dîtin.
Teknîkîyek hevpar a ku di êrişên Specter de tê bikar anîn kanala kêleka wextê cache ye. Dema ku pêvajo bi spekulatîf rêwerzek barkirina bîranînê dimeşîne, dibe ku ew daneyên gihîştî bîne nav cache CPU. Tewra ku darvekirina spekulatîf paşê were avêtin jî, hebûna daneyê di cache de dikare bi pîvandina dema ku pêdivî ye ji bo gihîştina heman cîhê bîranînê paşê were tesbît kirin. Ger dane di cache de bin, dema gihîştinê dê li gorî gihîştina daneya ji bîranîna sereke pir kurttir be. Bi bi baldarî pîvandina van cûdahiyên demkî, êrîşkar dikare nirxên cîhên bîranînê yên ku di dema darvekirina spekulatîf de têne gihîştin derxe holê.
Ji bo ronîkirina ka Specter çawa darvekirina spekulatîf bikar tîne, mînaka hêsan a jêrîn bifikirin:
c if (x < array1_size) { y = array2[array1[x] * 4096]; }
Di vê perçeya kodê de, `x` têketinek bikarhêner-kontrolkirî ye, `array1` rêzek daneyên hesas vedihewîne, û `array2` rêzek duyemîn e ku ji bo zêdekirina cûdahiyên demê tê bikar anîn. Şertê `x < array1_size` piştrast dike ku `x` di nav sînorên `array1` de ye. Lêbelê, Specter dikare pêvajoyê bixapîne ku bi spekulatîf gihandina bîranînê `array1[x]` bixebitîne tewra dema ku `x` li derveyî sînor be.
Êrîşkar bi perwerdekirina pêşbînkerê şaxê ku li bendê ye ku şerta `x < array1_size` rast be, êrîşê dest pê dike. Ev bi dubarekirina koda bi nirxên derbasdar ên `x` ve tête kirin. Dema ku pêşbînkerê şaxê were perwerde kirin, êrîşkar nirxek xirab a `x` peyda dike ku li derveyî sînor e, lê dîsa jî dibe sedem ku pêvajo bi spekulatîf gihandina bîranînê `array1[x]` pêk bîne. Pêkanîna spekulatîf nirxa `array1[x]` tîne nav cache, û gihîştina dûv re ya `array2[array1[x] * 4096]` di cacheyê de şopek diyarkirî dihêle.
Bi pîvandina demên gihîştina ciyên cihêreng ên di `array2` de, êrîşkar dikare diyar bike ka kîjan cîhê bîranînê di `array1` de bi spekulatîf gihîştiye kîjan cîhê bîranînê. Ev dihêle ku êrîşkar nirxa `array1[x]` derxe holê, bi bandor kontrola sînoran derbas bike û cîhên bîranînê yên kêfî bixwîne.
Encamên ewlehiyê yên Specter kûr in, ji ber ku ew bandorê li cûrbecûr pêvajoyên nûjen dike, di nav de yên ji hilberînerên sereke yên wekî Intel, AMD, û ARM. Êrîş aliyên bingehîn ên darvekirina spekulatîf û pêşbîniya şaxê bikar tîne, û kêmkirina wê bêyî danûstendinên girîng ên performansê dijwar dike.
Kêmkirina Specter û qelsiyên darvekirinê yên spekulatîf ên mîna hev, pêdivî bi tevheviyek nêzîkatiyên hardware û nermalavê heye. Ji hêla hardware ve, hilberînerên pêvajoyê taybetmendiyên mîkroarchitectural nû destnîşan kirine da ku înfaza spekulatîf sînordar bikin û potansiyela lerizîna kanala alî kêm bikin. Mînakî, talîmata "LFENCE" ya Intel wekî astengiyek li hember darvekirina spekulatîf tevdigere, û piştrast dike ku rêwerzên paşîn bi spekulatîf nayên darve kirin heya ku rêwerzên berê neyên teqawidkirin.
Ji hêla nermalavê ve, pêşdebir dikarin teknîkên wekî "retpoline" (trampolîna vegerê) bikar bînin da ku êrişên derzîlêdana armanca şaxê kêm bikin. Retpoline bi şûna bazdan û bangên nerasterast bi rêzek rêwerzan ku pêşî li darvekirina spekulatîf digire ku li pey armanca şaxê bigire dixebite. Wekî din, pêşdebirên nermalavê dikarin teknolojiyên dorpêçkirina bîranînê û vegirtina daneyan bikar bînin da ku îhtîmala gihîştina daneyên hesas bi spekulatîf kêm bikin.
Tevî van hewildanên kêmkirinê, qelsiyên darvekirina spekulatîf di warê ewlehiya sîber de fikarek girîng e. Tevliheviya pêvajoyên nûjen û hewcedariya performansa bilind dijwar e ku meriv van qelsiyan bi tevahî ji holê rabike bêyî ku karîgeriya hesabkerî tawîz bide. Wekî encamek, lêkolîn û pêşkeftina domdar ji bo destnîşankirina vektorên êrîşê yên nû û pêşvebirina tedbîrên bi bandortir hewce ne.
Pirs û bersivên din ên vê dawiyê di derbarê Êrîşên dema CPU:
- Hin ji dijwarî û danûstendinên ku di pêkanîna kêmkirina hardware û nermalavê de li hember êrişên demkî digel domandina performansa pergalê de têkildar in çi ne?
- Rola pêşbînkerê şaxê di êrişên dema CPU de çi dilîze, û êrîşkar çawa dikarin wê manîpule bikin da ku agahdariya hesas derxînin?
- Meriv çawa dikare bernamesaziya dem-domdar arîkariya kêmkirina xetera êrişên demkî di algorîtmayên krîptografî de bike?
- Êrîşên demkî çawa cûdahiyên di dema darvekirinê de bikar tînin da ku agahdariya hesas ji pergalê derxînin?
- Êrîşa demkî çi ye?