La LVI-protekta programaro de Google montris 14x-efikecsukceson

Zola Bridges de Guglo sugestis por la kompililo LLVM, flikaĵo kun la efektivigo de SESES (Speculative Execution Side Effect Suppression) protekto, kiu helpas bloki atakojn sur la konjekta ekzekutmekanismo en Intel-CPUoj, kiel ekzemple LVI. La protekta metodo estas efektivigita ĉe la kompilila nivelo kaj baziĝas sur aldonado de instrukcioj de la kompililo dum generado de maŝinkodo LFENCE, kiuj estas enmetitaj antaŭ ĉiu memoro legi aŭ skribi instrukcion, same kiel antaŭ la unua branĉinstrukcio en la grupo de instrukcioj kiu finas la blokon.

La LFENCE-instrukcio atendas ĉiujn antaŭajn memorlegojn por transigi kaj malŝaltas antaŭzorgon de postaj instrukcioj post LFENCE ĝis la transigo estas kompleta. La uzo de LFENCE kondukas al signifa malkresko en efikeco, tiel ke protekto estas proponita esti uzita en ekstremaj kazoj por precipe kritika kodo. Krom plena protekto, la flikaĵo ofertas tri flagojn, kiuj ebligas al vi selekteme malŝalti certajn nivelojn de protekto por redukti la negativan efikon al agado.

En la testoj faritaj, la uzo de SESES-protekto por la pakaĵo BoringSSL kaŭzis redukton de la nombro da operacioj je sekundo faritaj de la biblioteko je 14 fojojn - la agado de la protektita versio de la biblioteko estis averaĝe nur 7.1% de la senprotekta versio (vario depende de la testo de 4% ĝis 23%).

Por komparo, proponis Antaŭe, por GNU Assembler, mekanismo kiu elfaras LFENCE-anstataŭigon post ĉiu operacio de ŝarĝo de memoro kaj antaŭ kelkaj branĉaj instrukcioj montris rendimenton malpliiĝon de ĉirkaŭ 5 fojojn (22% de la kodo sen protekto). La protekta metodo estas ankaŭ proponis и efektivigita de Intel-inĝenieroj, sed agado-testrezultoj por ĝi ankoraŭ ne estis publikigitaj. Komence, la esploristoj, kiuj identigis la LVI-atakon, antaŭdiris 2- ĝis 19-oblan malkreskon de rendimento kiam aplikante plenan protekton.

fonto: opennet.ru

Aldoni komenton